module HashExtensions
Public Instance Methods
deep_merge(hash_to_merge)
click to toggle source
# File lib/hash_extensions.rb, line 12 def deep_merge(hash_to_merge) merger = proc { |_, val1, val2| val1.is_a?(Hash) && val2.is_a?(Hash) ? val1.merge(val2, &merger) : val2 } merge(hash_to_merge, &merger) end
to_nested()
click to toggle source
# File lib/hash_extensions.rb, line 4 def to_nested self unless contains_dotted_key? keys.reduce({}) do |nested, key| nested.deep_merge(build_nested_object(key, self[key])) end end
Private Instance Methods
build_nested_object(key, val)
click to toggle source
# File lib/hash_extensions.rb, line 23 def build_nested_object(key, val) key.to_s .split('.') .reverse .reduce(val) { |nested, key_part| { key_part.to_sym => nested } } end
contains_dotted_key?()
click to toggle source
# File lib/hash_extensions.rb, line 19 def contains_dotted_key? keys.any? { |x| x.to_s.include?('.') } end