Sha256: 434cd66de944825c048403303efd849da449c748aec1fb2cfc19607858ff6a0d
Contents?: true
Size: 1.61 KB
Versions: 1
Compression:
Stored size: 1.61 KB
Contents
class Class # Creates a class-variable attr_reader that can # be accessed both on an instance and class level. # # require 'facet/class/attributes' # # class MyClass # @@a = 10 # cattr_reader :a # end # MyClass.a #=> 10 # mc = MyClass.new # mc.a #=> 10 # def cattr_reader(*syms) syms.each do |sym| class_eval <<-EOS if ! defined? @@#{sym} @@#{sym} = nil end def self.#{sym} @@#{sym} end def #{sym} self.class.#{sym} end EOS end end # Creates a class-variable attr_writer that can # be accessed both on an instance and class level. # # require 'facet/class/attributes' # # class MyClass # cattr_writer :a # def a # @@a # end # end # MyClass.a = 10 # mc = MyClass.new # mc.a #=> 10 # def cattr_writer(*syms) syms.each do |sym| class_eval <<-EOS if ! defined? @@#{sym} @@#{sym} = nil end def self.#{sym}=(obj) @@#{sym} = obj end def #{sym}=(obj) self.class.#{sym}=(obj) end EOS end end # Creates a class-variable attr_accessor that can # be accessed both on an instance and class level. # # require 'facet/class/attributes' # # class MyClass # cattr_accessor :a # end # MyClass.a = 10 # MyClass.a #=> 10 # mc = MyClass.new # mc.a #=> 10 # def cattr_accessor(*syms) cattr_reader(*syms) cattr_writer(*syms) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
facets-0.6.3 | lib/facet/class/cattr.rb |