diff options
author | Jamis Buck <jamis@37signals.com> | 2005-05-29 16:36:22 +0000 |
---|---|---|
committer | Jamis Buck <jamis@37signals.com> | 2005-05-29 16:36:22 +0000 |
commit | 359caef33ca71b37b3ea2feef0960beccfabf4de (patch) | |
tree | fd5598e50baa90e6e84bf0747866d04c8aecb677 /actionmailer/lib/action_mailer/adv_attr_accessor.rb | |
parent | 79d9794f090f02ff56c461893785fbd65877109e (diff) | |
download | rails-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.rb | 58 |
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 |