Class: Class
- Defined in:
- lib/quickbooks/extlib/class.rb,
lib/quickbooks/xsd.rb,
lib/quickbooks/xsd/validation.rb
Overview
Allows attributes to be shared within an inheritance hierarchy, but where each descendant gets a copy of their parents’ attributes, instead of just a pointer to the same. This means that the child can add elements to, for example, an array without those additions being shared with either their parent, siblings, or children, which is unlike the regular class-level attributes that are shared across the entire hierarchy.
Instance Method Summary collapse
- #bit_accessor(*names) ⇒ Object
- #cascading_attr_accessor(*names) ⇒ Object
- #cascading_attr_reader(*names) ⇒ Object
-
#cattr_accessor(*syms) ⇒ Array[#to_s]
Defines class-level (and optionally instance-level) attribute accessor.
-
#cattr_reader(*syms) ⇒ Array[#to_s]
Defines class-level and instance-level attribute reader.
-
#cattr_writer(*syms) ⇒ Array[#to_s]
Defines class-level (and optionally instance-level) attribute writer.
Instance Method Details
#bit_accessor(*names) ⇒ Object
2 3 4 5 6 7 8 9 |
# File 'lib/quickbooks/xsd/validation.rb', line 2 def bit_accessor(*names) names.each do |name,xname| class_eval "def #{name}?; !!@#{name}; end" class_eval "def #{xname}?; !@#{name}; end" class_eval "def #{name}!; @#{name} = true; end" class_eval "def #{xname}!(msg=nil)\n @#{name} = false\n errors << (name ? \"\#{name}: \#{msg}\" : msg) if msg\nend" end end |
#cascading_attr_accessor(*names) ⇒ Object
8 9 10 11 12 13 |
# File 'lib/quickbooks/xsd.rb', line 8 def cascading_attr_accessor(*names) names.each do |name| attr_writer name class_eval "def #{name}; @#{name} || (parent ? parent.#{name} : nil); end" end end |
#cascading_attr_reader(*names) ⇒ Object
2 3 4 5 6 |
# File 'lib/quickbooks/xsd.rb', line 2 def cascading_attr_reader(*names) names.each do |name| class_eval "def #{name}; @#{name} || (parent ? parent.#{name} : nil); end" end end |
#cattr_accessor(*syms) ⇒ Array[#to_s]
Defines class-level (and optionally instance-level) attribute accessor.
94 95 96 97 |
# File 'lib/quickbooks/extlib/class.rb', line 94 def cattr_accessor(*syms) cattr_reader(*syms) cattr_writer(*syms) end |
#cattr_reader(*syms) ⇒ Array[#to_s]
Is this inconsistent in that it does not allow you to prevent an instance_reader via :instance_reader => false
Defines class-level and instance-level attribute reader.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/quickbooks/extlib/class.rb', line 38 def cattr_reader(*syms) syms.flatten.each do |sym| next if sym.is_a?(Hash) class_eval(<<-RUBY, __FILE__, __LINE__ + 1) unless defined? @@#{sym} @@#{sym} = nil end def self.#{sym} @@#{sym} end def #{sym} @@#{sym} end RUBY end end |
#cattr_writer(*syms) ⇒ Array[#to_s]
Defines class-level (and optionally instance-level) attribute writer.
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/quickbooks/extlib/class.rb', line 64 def cattr_writer(*syms) = syms.last.is_a?(Hash) ? syms.pop : {} syms.flatten.each do |sym| class_eval(<<-RUBY, __FILE__, __LINE__ + 1) unless defined? @@#{sym} @@#{sym} = nil end def self.#{sym}=(obj) @@#{sym} = obj end RUBY unless [:instance_writer] == false class_eval(<<-RUBY, __FILE__, __LINE__ + 1) def #{sym}=(obj) @@#{sym} = obj end RUBY end end end |