lib/esse/primitives/hash_utils.rb in esse-0.3.4 vs lib/esse/primitives/hash_utils.rb in esse-0.3.5

- old
+ new

@@ -45,7 +45,17 @@ else newval end end end + + def explode_keys(hash, separator = '.') + hash.each_with_object({}) do |(key, value), result| + is_symbol = key.is_a?(Symbol) + keys = key.to_s.split(separator) + last_key = keys.pop + current = keys.reduce(result) { |memo, k| memo[is_symbol ? k.to_sym : k] ||= {} } + current[is_symbol ? last_key.to_sym : last_key] = value + end + end end end