class Hash

Public Instance Methods

deep_merge(second) click to toggle source
# File lib/foxy/extensions.rb, line 22
def deep_merge(second)
  merger = proc { |_, v1, v2| v1.is_a?(Hash) && v2.is_a?(Hash) ? v1.merge(v2, &merger) : v2 }
  merge(second, &merger)
end
deep_symbolize_keys() click to toggle source
# File lib/foxy/extensions.rb, line 14
def deep_symbolize_keys
  symbolize_keys.tap { |h| h.each { |k, v| h[k] = v.deep_symbolize_keys } }
end
downcase_keys() click to toggle source
# File lib/foxy/extensions.rb, line 35
def downcase_keys
  each_with_object({}) { |(k, v), h| h.store(k.downcase, v) }
end
recursive_hash() click to toggle source
# File lib/foxy/extensions.rb, line 27
def recursive_hash
  tap { self.default_proc = proc { |h, k| h[k] = Hash.new(&h.default_proc) } }
end
slice(*keys) click to toggle source
# File lib/foxy/extensions.rb, line 31
def slice(*keys)
  Hash[keys.zip(values_at(*keys))]
end
symbolize_keys() click to toggle source
# File lib/foxy/extensions.rb, line 18
def symbolize_keys
  Hash[map { |k, v| [k.to_sym, v] }]
end