Method: Hash#recurse

Defined in:
lib/hash_extension.rb

#recurse(include_root = false, depth = [], &block) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/hash_extension.rb', line 24

def recurse(include_root=false, depth=[], &block)
  self.each_pair { |k,v|
    if v.is_a? Hash
      if include_root
        block.call(depth + [k], v)
      end
      depth.push k
      v.recurse(include_root, depth, &block)
    else
      block.call(depth + [k], v)
      #return "#{depth + [k]}: #{v.inspect}"
    end
  }
  depth.pop
end