class Hash
Public Instance Methods
map_key() { |k, v| ... }
click to toggle source
Creates a new hash for in which k => v has been mapped to yield(k, v) => v
See also map_value
# File lib/utilrb/hash/map_key.rb, line 5 def map_key result = Hash.new each do |k, v| result[yield(k, v)] = v end result end
map_value() { |k, v| ... }
click to toggle source
Creates a new hash for in which k => v has been mapped to k => yield(k, v)
See also map_key
# File lib/utilrb/hash/map_value.rb, line 5 def map_value result = Hash.new each do |k, v| result[k] = yield(k, v) end result end
recursive_merge(hash) { |k, v1, v2| ... }
click to toggle source
# File lib/utilrb/hash/recursive_merge.rb, line 2 def recursive_merge(hash, &block) merge(hash) do |k, v1, v2| if v1.kind_of?(Hash) && v2.kind_of?(Hash) v1.recursive_merge(v2, &block) elsif block_given? yield(k, v1, v2) else v2 end end end
recursive_merge!(hash) { |k, v1, v2| ... }
click to toggle source
# File lib/utilrb/hash/recursive_merge.rb, line 14 def recursive_merge!(hash, &block) merge!(hash) do |k, v1, v2| if v1.kind_of?(Hash) && v2.kind_of?(Hash) v1.recursive_merge!(v2, &block) elsif block_given? yield(k, v1, v2) else v2 end end end
slice(*keys)
click to toggle source
# File lib/utilrb/hash/slice.rb, line 2 def slice(*keys) keys.inject({}) { |h, k| h[k] = self[k] if has_key?(k); h } end
to_sym_keys()
click to toggle source
Returns a hash for which all keys have been converted to symbols (only valid for string/symbol keys of course)
{ 'a' => 1, :b => '2' }.to_sym_keys => { :a => 1, :b => '2' }
# File lib/utilrb/hash/to_sym_keys.rb, line 6 def to_sym_keys inject({}) { |h, (k, v)| h[k.to_sym] = v; h } end