2
module AdvAttrAccessor #:nodoc:
3
def self.included(base)
4
base.extend(ClassMethods)
7
module ClassMethods #:nodoc:
8
def adv_attr_accessor(*names)
12
define_method("#{name}=") do |value|
13
instance_variable_set(ivar, value)
16
define_method(name) do |*parameters|
17
raise ArgumentError, "expected 0 or 1 parameters" unless parameters.length <= 1
19
if instance_variable_names.include?(ivar)
20
instance_variable_get(ivar)
23
instance_variable_set(ivar, parameters.first)