aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/lib/action_mailer/adv_attr_accessor.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionmailer/lib/action_mailer/adv_attr_accessor.rb')
-rw-r--r--actionmailer/lib/action_mailer/adv_attr_accessor.rb58
1 files changed, 58 insertions, 0 deletions
diff --git a/actionmailer/lib/action_mailer/adv_attr_accessor.rb b/actionmailer/lib/action_mailer/adv_attr_accessor.rb
new file mode 100644
index 0000000000..47c02ba198
--- /dev/null
+++ b/actionmailer/lib/action_mailer/adv_attr_accessor.rb
@@ -0,0 +1,58 @@
+module ActionMailer
+ module AdvAttrAccessor
+ def self.append_features(base)
+ super
+ base.extend(ClassMethods)
+ end
+
+ module ClassMethods
+
+ def adv_attr_accessor(*names)
+ names.each do |name|
+ define_method("#{name}=") do |value|
+ instance_variable_set("@#{name}", value)
+ end
+
+ define_method(name) do |*parameters|
+ raise ArgumentError, "expected 0 or 1 parameters" unless parameters.length <= 1
+ if parameters.empty?
+ instance_variable_get("@#{name}")
+ else
+ instance_variable_set("@#{name}", parameters.first)
+ end
+ end
+ end
+ end
+
+ end
+ end
+end
+module ActionMailer
+ module AdvAttrAccessor
+ def self.append_features(base)
+ super
+ base.extend(ClassMethods)
+ end
+
+ module ClassMethods
+
+ def adv_attr_accessor(*names)
+ names.each do |name|
+ define_method("#{name}=") do |value|
+ instance_variable_set("@#{name}", value)
+ end
+
+ define_method(name) do |*parameters|
+ raise ArgumentError, "expected 0 or 1 parameters" unless parameters.length <= 1
+ if parameters.empty?
+ instance_variable_get("@#{name}")
+ else
+ instance_variable_set("@#{name}", parameters.first)
+ end
+ end
+ end
+ end
+
+ end
+ end
+end