class Hash

Monkey patching hash Adding the below methods and indifferent_access too from active_support with_indifferent_access:

hash = {a: 'a', b: 'b', c: 'c'}.with_indifferent_access
hash[:a] == hash['a']

deep_keys:

hash = {a: b: {c: '123'}}
hash.deep_keys = %i[a b c]

Public Instance Methods

deep_keys() click to toggle source
# File lib/simple_utilities/hash.rb, line 26
def deep_keys
  reduce([]) do |memo, (k, v)|
    memo << (v.is_a?(Hash) ? [k, v.deep_keys] : k)
  end.flatten
end
deep_transform_values() { |v| ... } click to toggle source
# File lib/simple_utilities/hash.rb, line 13
def deep_transform_values(&block)
  transform_values do |v|
    v.is_a?(Hash) ? v.deep_transform_values(&block) : yield(v)
  end
end
deep_transform_values!() { |v| ... } click to toggle source
# File lib/simple_utilities/hash.rb, line 19
def deep_transform_values!(&block)
  each do |k, v|
    self[k] = v.is_a?(Hash) ? v.deep_transform_values!(&block) : yield(v)
  end
  self
end
reject_empty() click to toggle source
# File lib/simple_utilities/hash.rb, line 32
def reject_empty
  reject { |_, v| v.to_s.empty? }
end
reject_empty!() click to toggle source
# File lib/simple_utilities/hash.rb, line 36
def reject_empty!
  reject! { |_, v| v.to_s.empty? }
end