Sha256: bf1c737433a78fbe0ecf8ed0fd05b9f205d656fc7621cfc863a76b9d4f64c1c3
Contents?: true
Size: 1.05 KB
Versions: 3
Compression:
Stored size: 1.05 KB
Contents
class Hash # Returns a new hash created by traversing the hash and its subhashes, # executing the given block on the key and value. The block should # return a 2-element array of the form +[key, value]+. # # h = { "A"=>"A", "B"=>"B" } # g = h.traverse { |k,v| [k.downcase, v] } # g #=> { "a"=>"A", "b"=>"B" } # # # CREDIT: Trans # #-- # TODO Testing value to see if it is a Hash also catches subclasses of Hash. # This is probably not the right thing to do and should catch Hashes only (?) #++ def traverse(&b) inject({}) do |h,(k,v)| v = ( Hash === v ? v.traverse(&b) : v ) nk, nv = b[k,v] h[nk] = nv #( Hash === v ? v.traverse(base,&b) : nv ) h end end # In place version of traverse, which traverses the hash and its # subhashes, executing the given block on the key and value. # # h = { "A"=>"A", "B"=>"B" } # h.traverse! { |k,v| [k.downcase, v] } # h #=> { "a"=>"A", "b"=>"B" } # # CREDIT: Trans def traverse!(&b) self.replace( self.traverse(&b) ) end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
facets-2.2.0 | lib/core/facets/hash/traverse.rb |
facets-2.2.1 | lib/core/facets/hash/traverse.rb |
facets-2.3.0 | lib/core/facets/hash/traverse.rb |