module TurboTestRubyRefinements::HashLeafPaths
Public Instance Methods
leaf_paths(hash = {}, memo = [], scope = [])
click to toggle source
Returns an array with a list of nested keys in the hash
h = { key1: “1”, key2: “2”, key3: { key4: { key41: “3”, key42: “4” } h.leaf_paths => [ “key1”, “key2”, “key3.key4.key41”, “key3.key4.key42” ]
# File lib/turbo_test_ruby_refinements/hash/leaf_paths.rb, line 10 def leaf_paths(hash = {}, memo = [], scope = []) case hash when Hash traverse_hash(hash, memo, scope) memo else memo.push scope.join(".") scope.pop end end
traverse_hash(hash, memo, scope)
click to toggle source
# File lib/turbo_test_ruby_refinements/hash/leaf_paths.rb, line 21 def traverse_hash(hash, memo, scope) hash.each_key do |key| leaf_paths(hash[key], memo, scope.push(key)) scope.pop if scope.last == key end end