aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/lib/action_mailer/adv_attr_accessor.rb
diff options
context:
space:
mode:
authorYehuda Katz <wycats@Yehuda-Katz.local>2009-12-25 13:06:11 -0800
committerYehuda Katz <wycats@Yehuda-Katz.local>2009-12-25 13:06:11 -0800
commit8f6da9483b28ec82e4577bf4cbe5209e2c750c84 (patch)
tree4c52a09b3268ff90dae12f8bc525f0b2f3acbace /actionmailer/lib/action_mailer/adv_attr_accessor.rb
parent2e79ec71a542c2d2e7bedbe12eda0b5e177fb0e0 (diff)
parent9f1c359a201bfacff7b89cd1e8579bc1bdf541e2 (diff)
downloadrails-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.rb32
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