Sha256: fca443352ac6b4aec50e8ecb31d274593b06e66489d3cdf4ecc0a1b07cff80c4

Contents?: true

Size: 1.01 KB

Versions: 21

Compression:

Stored size: 1.01 KB

Contents

# Extends the module object with module and instance accessors for class attributes, 
# just like the native attr* accessors for instance attributes.
class Module # :nodoc:
  def mattr_reader(*syms)
    syms.each do |sym|
      next if sym.is_a?(Hash)
      class_eval(<<-EOS, __FILE__, __LINE__)
        unless defined? @@#{sym}
          @@#{sym} = nil
        end
        
        def self.#{sym}
          @@#{sym}
        end

        def #{sym}
          @@#{sym}
        end
      EOS
    end
  end
  
  def mattr_writer(*syms)
    options = syms.extract_options!
    syms.each do |sym|
      class_eval(<<-EOS, __FILE__, __LINE__)
        unless defined? @@#{sym}
          @@#{sym} = nil
        end
        
        def self.#{sym}=(obj)
          @@#{sym} = obj
        end
        
        #{"
        def #{sym}=(obj)
          @@#{sym} = obj
        end
        " unless options[:instance_writer] == false }
      EOS
    end
  end
  
  def mattr_accessor(*syms)
    mattr_reader(*syms)
    mattr_writer(*syms)
  end
end

Version data entries

21 entries across 21 versions & 4 rubygems

Version Path
activesupport-2.0.1 lib/active_support/core_ext/module/attribute_accessors.rb
activesupport-2.0.0 lib/active_support/core_ext/module/attribute_accessors.rb
activesupport-2.0.4 lib/active_support/core_ext/module/attribute_accessors.rb
activesupport-2.0.2 lib/active_support/core_ext/module/attribute_accessors.rb
activesupport-2.0.5 lib/active_support/core_ext/module/attribute_accessors.rb
radiant-0.6.5.1 vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb
radiant-0.6.5 vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb
radiant-0.6.6 vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb
radiant-0.6.7 vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb
radiant-0.6.9 vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb
radiant-0.6.8 vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb
spree-0.0.9 vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb
spree-0.2.0 vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb
swivel-0.0.149 vendor/activesupport-2.0.2-/lib/active_support/core_ext/module/attribute_accessors.rb
swivel-0.0.150 vendor/activesupport-2.0.2-/lib/active_support/core_ext/module/attribute_accessors.rb
swivel-0.0.160 vendor/activesupport-2.0.2-/lib/active_support/core_ext/module/attribute_accessors.rb
swivel-0.0.157 vendor/activesupport-2.0.2-/lib/active_support/core_ext/module/attribute_accessors.rb
swivel-0.0.175 vendor/activesupport-2.0.2-/lib/active_support/core_ext/module/attribute_accessors.rb
swivel-0.0.152 vendor/activesupport-2.0.2-/lib/active_support/core_ext/module/attribute_accessors.rb
swivel-0.0.156 vendor/activesupport-2.0.2-/lib/active_support/core_ext/module/attribute_accessors.rb