instiki/vendor/rails/actionmailer/lib/action_mailer/adv_attr_accessor.rb

31 lines
796 B
Ruby
Raw Normal View History

2007-01-22 14:43:50 +01:00
module ActionMailer
module AdvAttrAccessor #:nodoc:
def self.included(base)
2007-01-22 14:43:50 +01:00
base.extend(ClassMethods)
end
module ClassMethods #:nodoc:
def adv_attr_accessor(*names)
names.each do |name|
ivar = "@#{name}"
define_method("#{name}=") do |value|
instance_variable_set(ivar, value)
end
define_method(name) do |*parameters|
raise ArgumentError, "expected 0 or 1 parameters" unless parameters.length <= 1
if parameters.empty?
if instance_variable_names.include?(ivar)
2007-01-22 14:43:50 +01:00
instance_variable_get(ivar)
end
else
instance_variable_set(ivar, parameters.first)
end
end
end
end
end
end
end