~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: Michael Forrest
  • Date: 2010-10-15 16:28:50 UTC
  • Revision ID: michael.forrest@canonical.com-20101015162850-tj2vchanv0kr0dun
refrozeĀ gems

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