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