module Bencview

Public Class Methods

hash_walk(obj) { |obj| ... } click to toggle source

walk through object, firing `block` on each string leaf

# File bencview.rb, line 12
def self.hash_walk obj, &block
  if obj.respond_to? :to_hash
    r = {}
    obj.to_hash.each do |key, value|
      r[key] = hash_walk value, &block  # recursion
    end
    r
  elsif obj.respond_to? :to_ary
    obj.to_ary.map { |a| hash_walk a, &block } # recursion
  elsif obj.kind_of? String
    yield obj
  else
    obj
  end
end