Class: Berg::Value
Constant Summary
Constants included from Base
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(object, query, debug = false) ⇒ Value
constructor
A new instance of Value.
- #locate ⇒ Object
Methods included from Base
Constructor Details
#initialize(object, query, debug = false) ⇒ Value
Returns a new instance of Value.
5 6 7 8 9 |
# File 'lib/berg/value.rb', line 5 def initialize(object, query, debug = false) @object = object @query = query @debug = debug end |
Class Method Details
.locate(object, query, debug = false) ⇒ Object
11 12 13 |
# File 'lib/berg/value.rb', line 11 def self.locate(object, query, debug = false) new(object, query, debug).locate end |
Instance Method Details
#locate ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/berg/value.rb', line 15 def locate result, _ = keys.inject([@object, ""]) do |(latest, trace), key| found = case key when Base::ARRAY_ID latest[$1.to_i] else latest[key] || latest[key.to_sym] end trace = add(trace, key) unless found fail "#{latest.class} doesn't contain key '#{key}' in '#{trace}'" if @debug return NotFound.new unless found end [found, trace] end return Found.new(result) end |