class Destruct::Resolver
Public Class Methods
new(object, path)
click to toggle source
# File lib/destruct/resolver.rb 3 def initialize(object, path) 4 @object = object 5 @path = path 6 end
Public Instance Methods
to_h()
click to toggle source
# File lib/destruct/resolver.rb 8 def to_h 9 case @path 10 when Array 11 { @path.last => @object.dig(*@path) } 12 when ::Hash 13 resolve_recursively 14 else 15 self.class.new(@object, paths).to_h 16 end 17 end
Private Instance Methods
paths()
click to toggle source
# File lib/destruct/resolver.rb 21 def paths 22 Array(@path) 23 end
resolve(key, values) { |class.new(object, value)| ... }
click to toggle source
# File lib/destruct/resolver.rb 25 def resolve(key, values) 26 @object.dig(key).tap do |object| 27 Array(values).each do |value| 28 yield self.class.new(object, value) 29 end 30 end 31 end
resolve_recursively()
click to toggle source
# File lib/destruct/resolver.rb 33 def resolve_recursively 34 @path.each_with_object({}) do |(key, values), hash| 35 resolve(key, values) do |resolver| 36 hash.update(resolver.to_h) 37 end 38 end 39 end