~michaelforrest/use-case-mapper/trunk

« back to all changes in this revision

Viewing changes to vendor/rails/actionmailer/lib/action_mailer/adv_attr_accessor.rb

  • Committer: Richard Lee (Canonical)
  • Date: 2010-10-15 15:17:58 UTC
  • mfrom: (190.1.3 use-case-mapper)
  • Revision ID: richard.lee@canonical.com-20101015151758-wcvmfxrexsongf9d
Merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
module ActionMailer
2
 
  module AdvAttrAccessor #:nodoc:
3
 
    def self.included(base)
4
 
      base.extend(ClassMethods)
5
 
    end
6
 
 
7
 
    module ClassMethods #:nodoc:
8
 
      def adv_attr_accessor(*names)
9
 
        names.each do |name|
10
 
          ivar = "@#{name}"
11
 
 
12
 
          define_method("#{name}=") do |value|
13
 
            instance_variable_set(ivar, value)
14
 
          end
15
 
 
16
 
          define_method(name) do |*parameters|
17
 
            raise ArgumentError, "expected 0 or 1 parameters" unless parameters.length <= 1
18
 
            if parameters.empty?
19
 
              if instance_variable_names.include?(ivar)
20
 
                instance_variable_get(ivar)
21
 
              end
22
 
            else
23
 
              instance_variable_set(ivar, parameters.first)
24
 
            end
25
 
          end
26
 
        end
27
 
      end
28
 
    end
29
 
  end
30
 
end