Sha256: d2da73771cc6a0931a9d1f6002bf19cde602ee5461515bd75c0e2c1dda11b318
Contents?: true
Size: 1.49 KB
Versions: 1
Compression:
Stored size: 1.49 KB
Contents
class Class # :nodoc: def inheritable_reader(*syms) syms.each do |sym| class_eval <<-EOS def self.#{sym} read_inheritable_attribute(:#{sym}) end def #{sym} self.class.#{sym} end EOS end end def inheritable_writer(*syms) syms.each do |sym| class_eval <<-EOS def self.#{sym}=(obj) write_inheritable_attribute(:#{sym}, obj) end def #{sym}=(obj) self.class.#{sym} = obj end EOS end end def inheritable_accessor(*syms) inheritable_reader(*syms) inheritable_writer(*syms) end def inheritable_attributes @inheritable_attributes ||= {} end def write_inheritable_attribute(key, value) inheritable_attributes[key] = value end def read_inheritable_attribute(key) inheritable_attributes[key] end def reset_inheritable_attributes inheritable_attributes.clear end private def inherited_with_inheritable_attributes(child) inherited_without_inheritable_attributes(child) if respond_to?(:inherited_without_inheritable_attributes) new_inheritable_attributes = inheritable_attributes.inject({}) do |memo, (key, value)| memo.update(key => (value.dup rescue value)) end child.instance_variable_set('@inheritable_attributes', new_inheritable_attributes) end alias inherited_without_inheritable_attributes inherited alias inherited inherited_with_inheritable_attributes end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
merb-0.0.6 | lib/merb/merb_class_extensions.rb |