Sha256: 9d29d121331fadae19a3cb7c59522ce00b4b1531cb05906a402fa5d515eaa435

Contents?: true

Size: 981 Bytes

Versions: 7

Compression:

Stored size: 981 Bytes

Contents

# Copied from ActiveSupport because I couldn't get the ones in Facets to work...

# 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|
      class_eval(<<-EOS, __FILE__, __LINE__+1)
        unless defined? @@#{sym}
          @@#{sym} = nil
        end
        
        def self.#{sym}
          @@#{sym}
        end

        def #{sym}
          @@#{sym}
        end
      EOS
    end
  end
  
  def mattr_writer(*syms)
    syms.each do |sym|
      class_eval(<<-EOS, __FILE__, __LINE__+1)
        unless defined? @@#{sym}
          @@#{sym} = nil
        end
        
        def self.#{sym}=(obj)
          @@#{sym} = obj
        end

        def #{sym}=(obj)
          @@#{sym} = obj
        end
      EOS
    end
  end
  
  def mattr_accessor(*syms)
    mattr_reader(*syms)
    mattr_writer(*syms)
  end
end

Version data entries

7 entries across 6 versions & 1 rubygems

Version Path
qualitysmith_extensions-0.0.29 lib/qualitysmith_extensions/module/attribute_accessors.rb
qualitysmith_extensions-0.0.33 lib/qualitysmith_extensions/module/attribute_accessors.rb
qualitysmith_extensions-0.0.24 lib/qualitysmith_extensions/module/attribute_accessors.rb
qualitysmith_extensions-0.0.34 lib/qualitysmith_extensions/module/attribute_accessors.rb
qualitysmith_extensions-0.0.20 lib/qualitysmith_extensions/module/attribute_accessors.rb
qualitysmith_extensions-0.0.17 lib/qualitysmith_extensions/module/attribute_accessors.rb
qualitysmith_extensions-0.0.24 lib/qualitysmith_extensions/module.bak/attribute_accessors.rb