class Hash


Monkey patches for the ruby Hash

def _deep_transform_keys_in_object(object, &block)

support methods for deep transforming nested hashes and arrays
def _deep_transform_keys_in_object(object, &block)
  case object
  when Hash
    object.each_with_object({}) do |(key, value), result|
      result[yield(key)] = _deep_transform_keys_in_object(value, &block)
    end
  when Array
    object.map { |element| _deep_transform_keys_in_object(element, &block) }
  else
    object
  end
end

def deep_stringify_keys

Returns:
  • (Hash) -
def deep_stringify_keys
  deep_transform_keys(&:to_s)
end

def deep_transform_keys(&block)

Returns:
  • (Hash) -
def deep_transform_keys(&block)
  _deep_transform_keys_in_object(self, &block)
end

def slice(*keys)

Returns:
  • (Hash) -

Parameters:
  • keys (Array, Array) -- the keys to match
def slice(*keys)
  keys.map! { |key| convert_key(key) } if respond_to?(:convert_key, true)
  keys.each_with_object(self.class.new) { |k, hash| hash[k] = self[k] if key?(k) }
end

def slice!(*keys)

Returns:
  • (Hash) -

Parameters:
  • keys (Array, Array) -- the keys to match
def slice!(*keys)
  keys.map! { |key| convert_key(key) } if respond_to?(:convert_key, true)
  omit = slice(*self.keys - keys)
  hash = slice(*keys)
  hash.default      = default
  hash.default_proc = default_proc if default_proc
  replace(hash)
  omit
end

def stringify_keys

Returns:
  • (Hash) -
def stringify_keys
  transform_keys(&:to_s)
end

def transform_keys

Returns:
  • (Hash) -
def transform_keys
  result = {}
  each_key do |key|
    result[yield(key)] = self[key]
  end
  result
end