Class: Objectable::Resolver
- Inherits:
-
Object
- Object
- Objectable::Resolver
- Defined in:
- lib/objectable/resolver.rb
Overview
The main logic value proposition of this library. An instance of this class can act as a value-get and value-set arbiter for objects.
Constant Summary collapse
- DEFAULT_SEPARATOR =
'.'
Instance Attribute Summary collapse
-
#separator ⇒ Object
readonly
Returns the value of attribute separator.
Instance Method Summary collapse
- #==(other) ⇒ Object
- #eql?(other) ⇒ Boolean
- #get(object, expression) ⇒ Object
-
#initialize(separator: DEFAULT_SEPARATOR) ⇒ Resolver
constructor
A new instance of Resolver.
- #set(object, expression, value) ⇒ Object
Constructor Details
#initialize(separator: DEFAULT_SEPARATOR) ⇒ Resolver
Returns a new instance of Resolver.
20 21 22 23 24 25 |
# File 'lib/objectable/resolver.rb', line 20 def initialize(separator: DEFAULT_SEPARATOR) @interface = Interface.new @separator = separator.to_s freeze end |
Instance Attribute Details
#separator ⇒ Object (readonly)
Returns the value of attribute separator.
18 19 20 |
# File 'lib/objectable/resolver.rb', line 18 def separator @separator end |
Instance Method Details
#==(other) ⇒ Object
35 36 37 |
# File 'lib/objectable/resolver.rb', line 35 def ==(other) eql?(other) end |
#eql?(other) ⇒ Boolean
39 40 41 42 43 |
# File 'lib/objectable/resolver.rb', line 39 def eql?(other) return false unless other.is_a?(self.class) separator == other.separator end |
#get(object, expression) ⇒ Object
27 28 29 |
# File 'lib/objectable/resolver.rb', line 27 def get(object, expression) traverse(object, key_path(expression)) end |
#set(object, expression, value) ⇒ Object
31 32 33 |
# File 'lib/objectable/resolver.rb', line 31 def set(object, expression, value) build_up(object, key_path(expression), value) end |