Class: Hash

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

Overview

Allow recursive merging of Hashes thanks to stackoverflow.com/a/25990044

Instance Method Summary collapse

Instance Method Details

#deep_merge(second) ⇒ Object



40
41
42
43
44
45
46
47
48
49
# File 'lib/ruby_wings.rb', line 40

def deep_merge(second)
  merger = proc do |key, v1, v2|
    if Hash === v1 && Hash === v2
      v1.merge(v2, &merger)
    else
      [:undefined, nil, :nil].include?(v2) ? v1 : v2
    end
  end
  self.merge(second, &merger)
end

#symbolizeObject



51
52
53
54
55
56
57
# File 'lib/ruby_wings.rb', line 51

def symbolize
  Hash[
    self.map do |k, v|
      [(k.respond_to?(:to_sym) ? k.to_sym : k), v.class == Hash ? v.symbolize : v]
    end
  ]
end