module KeyFlatten
Constants
- VERSION
Public Class Methods
key_flatten(hash, symbolize_keys: false, delimiter: '.', prefix: nil, result: {})
click to toggle source
# File lib/key_flatten.rb, line 4 def self.key_flatten(hash, symbolize_keys: false, delimiter: '.', prefix: nil, result: {}) hash.each do |k, v| flat_key = prefix.nil? ? k.to_s : "#{prefix}#{delimiter}#{k}" flat_key = symbolize_keys ? flat_key.to_sym : flat_key.to_s if v.is_a?(Hash) self.key_flatten(v, symbolize_keys: symbolize_keys, delimiter: delimiter, prefix: flat_key, result: result) else result[flat_key] = v end end result end
key_unflatten(hash, symbolize_keys: false, delimiter: '.', result: {})
click to toggle source
# File lib/key_flatten.rb, line 19 def self.key_unflatten(hash, symbolize_keys: false, delimiter: '.', result: {}) hash.each do |k, v| keys = k.to_s.split(delimiter) last_key = symbolize_keys ? keys.pop.to_sym : keys.pop h = keys.reduce(result) do |h, k| k = k.to_sym if symbolize_keys h[k] = {} unless h.key? k h[k] end h[last_key] = v end result end
Public Instance Methods
key_flatten(symbolize_keys: false, delimiter: '.', prefix: nil)
click to toggle source
# File lib/key_flatten.rb, line 36 def key_flatten(symbolize_keys: false, delimiter: '.', prefix: nil) ::KeyFlatten.key_flatten(self, symbolize_keys: symbolize_keys, delimiter: delimiter, prefix: prefix) end
key_unflatten(symbolize_keys: false, delimiter: '.')
click to toggle source
# File lib/key_flatten.rb, line 40 def key_unflatten(symbolize_keys: false, delimiter: '.') ::KeyFlatten.key_unflatten(self, symbolize_keys: symbolize_keys, delimiter: delimiter) end