Sha256: 73f86024766c3c3d4d404758be66380e8516f0777080637408436a8a368e10f4
Contents?: true
Size: 1023 Bytes
Versions: 1
Compression:
Stored size: 1023 Bytes
Contents
require "active_support/core_ext/hash/deep_merge" class Hash @@namespace = [] def namespace_flatten(separator = ".") hash = {} self.each do |key, value| key = key.to_s if value.is_a?(Hash) @@namespace << key hash.merge! value.namespace_flatten(separator) @@namespace.pop else key = @@namespace + [key] hash[key.join(separator)] = value end end hash end def namespace_unflatten(separator = ".") hash = {} self.each do |key, value| hash.deep_merge! self.class.nested_value(value, key.split(separator)) end hash end def self.nested_value(x, p) hash = { p.pop => x } p.reverse_each do |element| hash = { element => hash } end hash end def recursive_symbolize_keys! symbolize_keys! values.each { |h| h.recursive_symbolize_keys! if h.is_a?(Hash) } values.select { |v| v.is_a?(Array) }.flatten.each { |h| h.recursive_symbolize_keys! if h.is_a?(Hash) } self end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hash_converter-0.0.2 | lib/core_ext/hash.rb |