class Hash
Monkey patches for the ruby Hash
def _deep_transform_keys_in_object(object, &block)
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
-
(Hash
-)
def deep_stringify_keys deep_transform_keys(&:to_s) end
def deep_transform_keys(&block)
-
(Hash
-)
def deep_transform_keys(&block) _deep_transform_keys_in_object(self, &block) end
def slice(*keys)
-
(Hash)
-
Parameters:
-
keys
(Array
) -- the keys to match, Array
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)
-
(Hash)
-
Parameters:
-
keys
(Array
) -- the keys to match, Array
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
-
(Hash
-)
def stringify_keys transform_keys(&:to_s) end
def transform_keys
-
(Hash)
-
def transform_keys result = {} each_key do |key| result[yield(key)] = self[key] end result end