Module: EasyCreds::Flatten

Defined in:
lib/easy_creds/flatten.rb

Class Method Summary collapse

Class Method Details

.dot(hash, prefix = nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/easy_creds/flatten.rb', line 5

def self.dot(hash, prefix = nil)
  hash.each_with_object({}) do |(key, value), result|
    full_key = prefix ? "#{prefix}.#{key}" : key.to_s
    if value.is_a?(Hash)
      result.merge!(dot(value, full_key))
    else
      result[full_key] = value
    end
  end
end

.unflatten(flat) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/easy_creds/flatten.rb', line 16

def self.unflatten(flat)
  flat.each_with_object({}) do |(key, value), result|
    parts = key.to_s.split('.')
    leaf  = parts.pop
    node  = parts.reduce(result) { |acc, part| acc[part.to_sym] ||= {} }
    node[leaf.to_sym] = value
  end
end