Class: Hash

Inherits:
Object
  • Object
show all
Defined in:
lib/hash_deep_join.rb

Instance Method Summary collapse

Instance Method Details

#deep_join(separator = '_') ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/hash_deep_join.rb', line 4

def deep_join(separator = '_')
  joined_hash = {}
  each do |key, value|
    unless value.is_a? Hash
      joined_hash.merge! key => value
      next
    end

    value.map do |nested_key, nested_value|
      inner_hash = ({ nested_key => nested_value }).deep_join(separator)
      inner_hash.each do |joined_key, joined_value|
        joined_hash.merge! "#{key}#{separator}#{joined_key}" => joined_value
      end
    end
  end
  joined_hash
end

#deep_join!(separator = '_') ⇒ Object



22
23
24
25
26
# File 'lib/hash_deep_join.rb', line 22

def deep_join!(separator = '_')
  _self = dup
  clear
  self.merge! _self.deep_join separator
end