Module: Eco::Data::Locations::NodeDiff::Accessors::ClassMethods
- Includes:
- Strings::SnakeCase
- Defined in:
- lib/eco/data/locations/node_diff/accessors.rb
Instance Method Summary collapse
-
#attr_expose(*attrs) ⇒ Object
Creates the defined accessor attributes against
NodeDiff
It also creates a method with question mark that evaluates true if any the attr changed. -
#exposed_attrs ⇒ Object
Keeps track on what attributes have been exposed.
Methods included from Strings::SnakeCase
Instance Method Details
#attr_expose(*attrs) ⇒ Object
Note:
the defined attributes are expected to be the keys within the source Hashes that are being compared.
Note:
accessing src_1
(prev) attributes, will have it's method as prev_[attrName]
Creates the defined accessor attributes against NodeDiff
It also creates a method with question mark that evaluates true if any the attr changed.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/eco/data/locations/node_diff/accessors.rb', line 20 def attr_expose(*attrs) attrs.each do |attr| meth = attr.to_sym methp = :"#{meth}_prev" methq = :"#{meth}?" # current value define_method meth do attr(meth) end alias_method snake_case(meth), meth # prev value define_method methp do attr_prev(meth) end alias_method snake_case(methp), methp # has it changed? define_method methq do diff_attr?(meth) end alias_method snake_case(methq), methq @exposed_attrs = (@exposed_attrs || []) | [meth] end end |
#exposed_attrs ⇒ Object
Keeps track on what attributes have been exposed.
49 50 51 |
# File 'lib/eco/data/locations/node_diff/accessors.rb', line 49 def exposed_attrs @exposed_attrs ||= [] end |