module Anyway::Ext::Hash

Extend Hash through refinements

Public Instance Methods

bury(val, *path) click to toggle source
# File lib/anyway/ext/hash.rb, line 18
def bury(val, *path)
  raise ArgumentError, "No path specified" if path.empty?
  raise ArgumentError, "Path cannot contain nil" if path.compact.size != path.size

  last_key = path.pop
  hash = path.reduce(self) do |hash, k|
    hash[k] = {} unless hash.key?(k) && hash[k].is_a?(::Hash)
    hash[k]
  end

  hash[last_key] = val
end
deep_transform_keys() { |key| ... } click to toggle source
# File lib/anyway/ext/hash.rb, line 31
def deep_transform_keys(&block)
  each_with_object({}) do |(key, value), result|
    result[yield(key)] = value.is_a?(::Hash) ? value.deep_transform_keys(&block) : value
  end
end
stringify_keys!() click to toggle source
# File lib/anyway/ext/hash.rb, line 8
def stringify_keys!
  keys.each do |key|
    value = delete(key)
    value.stringify_keys! if value.is_a?(::Hash)
    self[key.to_s] = value
  end

  self
end