From 359caef33ca71b37b3ea2feef0960beccfabf4de Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Sun, 29 May 2005 16:36:22 +0000 Subject: 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 --- .../lib/action_mailer/adv_attr_accessor.rb | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 actionmailer/lib/action_mailer/adv_attr_accessor.rb (limited to 'actionmailer/lib/action_mailer/adv_attr_accessor.rb') 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 -- cgit v1.2.3