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']
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