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