diff options
author | Yehuda Katz <wycats@Yehuda-Katz.local> | 2009-12-25 13:06:11 -0800 |
---|---|---|
committer | Yehuda Katz <wycats@Yehuda-Katz.local> | 2009-12-25 13:06:11 -0800 |
commit | 8f6da9483b28ec82e4577bf4cbe5209e2c750c84 (patch) | |
tree | 4c52a09b3268ff90dae12f8bc525f0b2f3acbace /actionmailer/lib/action_mailer/adv_attr_accessor.rb | |
parent | 2e79ec71a542c2d2e7bedbe12eda0b5e177fb0e0 (diff) | |
parent | 9f1c359a201bfacff7b89cd1e8579bc1bdf541e2 (diff) | |
download | rails-8f6da9483b28ec82e4577bf4cbe5209e2c750c84.tar.gz rails-8f6da9483b28ec82e4577bf4cbe5209e2c750c84.tar.bz2 rails-8f6da9483b28ec82e4577bf4cbe5209e2c750c84.zip |
Merge remote branch 'jose/am'
Diffstat (limited to 'actionmailer/lib/action_mailer/adv_attr_accessor.rb')
-rw-r--r-- | actionmailer/lib/action_mailer/adv_attr_accessor.rb | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/actionmailer/lib/action_mailer/adv_attr_accessor.rb b/actionmailer/lib/action_mailer/adv_attr_accessor.rb index e77029afdd..be6b1feca9 100644 --- a/actionmailer/lib/action_mailer/adv_attr_accessor.rb +++ b/actionmailer/lib/action_mailer/adv_attr_accessor.rb @@ -1,29 +1,25 @@ module ActionMailer module AdvAttrAccessor #:nodoc: - def self.included(base) - base.extend(ClassMethods) - end - - module ClassMethods #:nodoc: - def adv_attr_accessor(*names) - names.each do |name| - ivar = "@#{name}" + def adv_attr_accessor(*names) + names.each do |name| + ivar = "@#{name}" - define_method("#{name}=") do |value| - instance_variable_set(ivar, value) + class_eval <<-ACCESSORS, __FILE__, __LINE__ + 1 + def #{name}=(value) + #{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) - instance_variable_get(ivar) - end + def #{name}(*args) + raise ArgumentError, "expected 0 or 1 parameters" unless args.length <= 1 + if args.empty? + #{ivar} if instance_variable_names.include?(#{ivar.inspect}) else - instance_variable_set(ivar, parameters.first) + #{ivar} = args.first end end - end + ACCESSORS + + self.protected_instance_variables << ivar if self.respond_to?(:protected_instance_variables) end end end |