class Hash
Public Class Methods
hmap(obj, &block)
click to toggle source
map an Enumerable into a Hash
, like Hash[obj.map … ]
# File lib/hmap/hmap.rb, line 16 def hmap(obj, &block) Hash[ obj.map do |*args| block.call(*args) end.compact ] end
map(obj, &block)
click to toggle source
create Hash
from given keys and mapped values
# File lib/hmap/hmap.rb, line 6 def map(obj, &block) res = obj.map do |*args| block.call(*args) end Hash[obj.zip res] end
Public Instance Methods
hmap(&block)
click to toggle source
map the block's results back to a hash
# File lib/hmap/hmap.rb, line 28 def hmap(&block) clone.hmap!(&block) end
hmap!(&block)
click to toggle source
# File lib/hmap/hmap.rb, line 32 def hmap!(&block) data = Hash.hmap(self, &block) clear merge! data end
kmap(&block)
click to toggle source
map keys, but preserve associated values ie. apidock.com/rails/v4.2.7/Hash/transform_keys
# File lib/hmap/hmap.rb, line 41 def kmap(&block) clone.kmap!(&block) end
kmap!(&block)
click to toggle source
# File lib/hmap/hmap.rb, line 45 def kmap!(&block) hmap! do |k, v| [ block.arity <= 1 ? block.call(k) : block.call(k, v), v ] end end
vmap(&block)
click to toggle source
map values, but preserve associated keys ie. apidock.com/rails/v4.2.7/Hash/transform_values
# File lib/hmap/hmap.rb, line 54 def vmap(&block) clone.vmap!(&block) end
vmap!(&block)
click to toggle source
# File lib/hmap/hmap.rb, line 58 def vmap!(&block) each do |k, v| self[k] = block.arity <= 1 ? block.call(v) : block.call(k, v) end end