class Hash
Public Class Methods
create(initial_hash={}, &block)
click to toggle source
Create a hash given an ‘initial_hash`.
initial_hash - Hash
or hash-like object to use as priming data. block - Procedure used by initialize (e.g. default_proc).
Returns a ‘Hash`.
# File lib/hashery/core_ext.rb, line 11 def self.create(initial_hash={}, &block) o = new &block o.update(initial_hash) o end
Public Instance Methods
rekey(key_map=nil, &block)
click to toggle source
Synonym for Hash#rekey
, but modifies the receiver in place (and returns it).
key_map - Hash
of old key to new key. block - Procedure to convert keys, which can take just the key
or both key and value as arguments.
Examples
foo = { :name=>'Gavin', :wife=>:Lisa } foo.rekey!{ |k| k.to_s } #=> { "name"=>"Gavin", "wife"=>:Lisa } foo.inspect #=> { "name"=>"Gavin", "wife"=>:Lisa }
Returns ‘Hash`.
# File lib/hashery/core_ext.rb, line 58 def rekey(key_map=nil, &block) if !(key_map or block) block = lambda{|k| k.to_sym} end key_map ||= {} hash = {} (keys - key_map.keys).each do |key| hash[key] = self[key] end key_map.each do |from, to| hash[to] = self[from] if key?(from) end hash2 = {} if block case block.arity when 0 raise ArgumentError, "arity of 0 for #{block.inspect}" when 2 hash.each do |k,v| nk = block.call(k,v) hash2[nk] = v end else hash.each do |k,v| nk = block[k] hash2[nk] = v end end else hash2 = hash end hash2 end
rekey!(key_map=nil, &block)
click to toggle source
Synonym for Hash#rekey
, but modifies the receiver in place (and returns it).
key_map - Hash
of old key to new key. block - Procedure to convert keys, which can take just the key
or both key and value as arguments.
Examples
foo = { :name=>'Gavin', :wife=>:Lisa } foo.rekey!{ |k| k.to_s } #=> { "name"=>"Gavin", "wife"=>:Lisa } foo #=> { "name"=>"Gavin", "wife"=>:Lisa }
Returns ‘Hash`.
# File lib/hashery/core_ext.rb, line 114 def rekey!(key_map=nil, &block) replace(rekey(key_map, &block)) end
retrieve(key)
click to toggle source
to_hash()
click to toggle source
Convert to Hash
.
# File lib/hashery/core_ext.rb, line 32 def to_hash dup # -or- `h = {}; each{ |k,v| h[k] = v }; h` ? end
Also aliased as: to_h
to_stash()
click to toggle source
Convert Hash
to Stash.
# File lib/hashery/stash.rb, line 10 def to_stash Hashery::Stash[self] end