Sha256: 152b28ce1a2ea9edac5fd583c63d0938c401f63ba3a9865234c6782010d5b216
Contents?: true
Size: 1.22 KB
Versions: 52
Compression:
Stored size: 1.22 KB
Contents
# Extends the class object with class and instance accessors for class attributes, # just like the native attr* accessors for instance attributes. class Class # :nodoc: def cattr_reader(*syms) syms.each do |sym| class_eval <<-EOS if ! defined? @@#{sym.id2name} @@#{sym.id2name} = nil end def self.#{sym.id2name} @@#{sym} end def #{sym.id2name} @@#{sym} end def call_#{sym.id2name} case @@#{sym.id2name} when Symbol then send(@@#{sym}) when Proc then @@#{sym}.call(self) when String then @@#{sym} else nil end end EOS end end def cattr_writer(*syms) syms.each do |sym| class_eval <<-EOS if ! defined? @@#{sym.id2name} @@#{sym.id2name} = nil end def self.#{sym.id2name}=(obj) @@#{sym.id2name} = obj end def self.set_#{sym.id2name}(obj) @@#{sym.id2name} = obj end def #{sym.id2name}=(obj) @@#{sym} = obj end EOS end end def cattr_accessor(*syms) cattr_reader(*syms) cattr_writer(*syms) end end
Version data entries
52 entries across 52 versions & 10 rubygems