aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/lib/action_mailer/adv_attr_accessor.rb
diff options
context:
space:
mode:
authorJamis Buck <jamis@37signals.com>2005-05-29 16:36:22 +0000
committerJamis Buck <jamis@37signals.com>2005-05-29 16:36:22 +0000
commit359caef33ca71b37b3ea2feef0960beccfabf4de (patch)
treefd5598e50baa90e6e84bf0747866d04c8aecb677 /actionmailer/lib/action_mailer/adv_attr_accessor.rb
parent79d9794f090f02ff56c461893785fbd65877109e (diff)
downloadrails-359caef33ca71b37b3ea2feef0960beccfabf4de.tar.gz
rails-359caef33ca71b37b3ea2feef0960beccfabf4de.tar.bz2
rails-359caef33ca71b37b3ea2feef0960beccfabf4de.zip
A very thorough refactoring, resulting in new mail property setters and support for attachments and multipart messages.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1359 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
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