Class: Sal::Wrapper
- Inherits:
-
Object
- Object
- Sal::Wrapper
- Defined in:
- lib/sal/wrapper.rb
Overview
For logic-less mode, objects can be encased in the Wrapper class.
Instance Attribute Summary collapse
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Instance Method Summary collapse
-
#[](name) ⇒ Object
To find the reference, first check for standard method access by using respond_to?.
-
#empty? ⇒ Boolean
Empty objects must appear empty for inverted sections.
-
#initialize(value, parent = nil) ⇒ Wrapper
constructor
A new instance of Wrapper.
-
#to_s ⇒ Object
Used for output.
Constructor Details
#initialize(value, parent = nil) ⇒ Wrapper
Returns a new instance of Wrapper.
6 7 8 |
# File 'lib/sal/wrapper.rb', line 6 def initialize(value, parent = nil) @value, @parent = value, parent end |
Instance Attribute Details
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
4 5 6 |
# File 'lib/sal/wrapper.rb', line 4 def parent @parent end |
#value ⇒ Object (readonly)
Returns the value of attribute value.
4 5 6 |
# File 'lib/sal/wrapper.rb', line 4 def value @value end |
Instance Method Details
#[](name) ⇒ Object
To find the reference, first check for standard method access by using respond_to?.
If not found, check to see if the value is a hash and if the the name is a key on the hash.
Not a hash, or not a key on the hash, then check to see if there is an instance variable with the name.
If the instance variable doesn’t exist and there is a parent object, go through the same steps on the parent object. This is useful when you are iterating over objects.
22 23 24 25 26 27 28 29 30 |
# File 'lib/sal/wrapper.rb', line 22 def [](name) if value.respond_to?(:has_key?) return wrap(value[name.to_sym]) if value.has_key?(name.to_sym) return wrap(value[name.to_s]) if value.has_key?(name.to_s) end return wrap(value.send(name)) if value.respond_to?(name) return wrap(value.instance_variable_get("@#{name}")) if value.instance_variable_defined?("@#{name}") parent[name] if parent end |
#empty? ⇒ Boolean
Empty objects must appear empty for inverted sections
33 34 35 |
# File 'lib/sal/wrapper.rb', line 33 def empty? value.respond_to?(:empty) && value.empty? end |
#to_s ⇒ Object
Used for output
38 39 40 |
# File 'lib/sal/wrapper.rb', line 38 def to_s value.to_s end |