Class: Webspicy::Support::DeepMerge

Inherits:
Object
  • Object
show all
Defined in:
lib/webspicy/support/deep_merge.rb

Class Method Summary collapse

Class Method Details

.deep_dup(x) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/webspicy/support/deep_merge.rb', line 23

def deep_dup(x)
  case x
  when Array
    x.map{|y| deep_dup(y) }
  when Hash
    x.each_with_object({}){|(k,v),memo| memo[k] = deep_dup(v) }
  else
    x
  end
end

.deep_merge(h1, h2) ⇒ Object



19
20
21
# File 'lib/webspicy/support/deep_merge.rb', line 19

def deep_merge(h1, h2)
  merge_maps(deep_dup(h1), deep_dup(h2))
end

.symbolize_keys(arg) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/webspicy/support/deep_merge.rb', line 6

def symbolize_keys(arg)
  case arg
  when Hash
    arg.each_pair.each_with_object({}){|(k,v),memo|
      memo[k.to_sym] = symbolize_keys(v)
    }
  when Array
    arg.map{|item| symbolize_keys(item) }
  else
    arg
  end
end