module Gemmy::Patches::HashPatch::InstanceMethods::Rekey
Public Instance Methods
rekey(key_map=nil, &block)
click to toggle source
facets rekey according to a block, i.e. {a: 1}.rekey &:to_s
# File lib/gemmy/patches/hash_patch.rb, line 109 def rekey(key_map=nil, &block) raise ArgumentError, "argument or block" if key_map && block if !(key_map or block) block = lambda{|k| k.to_sym} end if block hash = dup.clear if block.arity.abs == 1 each_pair do |k, v| hash[block[k]] = v #hash[block[k] || k] = v end else each_pair do |k, v| hash[block[k,v]] = v #hash[block[k,v] || k] = v end end else #hash = dup.clear # to keep default_proc #(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 hash = dup # to keep default_proc key_map.each_pair do |from, to| hash[to] = hash.delete(from) if hash.key?(from) end end hash end