Class: Webspicy::Support::DeepMerge
- Inherits:
-
Object
- Object
- Webspicy::Support::DeepMerge
- Defined in:
- lib/webspicy/support/deep_merge.rb
Constant Summary collapse
- DEFAULT_OPTIONS =
{ uniq_on_arrays: false }
Class Method Summary collapse
- .deep_dup(*args, &bl) ⇒ Object
- .deep_merge(*args, &bl) ⇒ Object
- .symbolize_keys(*args, &bl) ⇒ Object
Instance Method Summary collapse
- #deep_dup(x) ⇒ Object
- #deep_merge(h1, h2) ⇒ Object
-
#initialize(options = {}) ⇒ DeepMerge
constructor
A new instance of DeepMerge.
- #symbolize_keys(arg) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ DeepMerge
Returns a new instance of DeepMerge.
9 10 11 |
# File 'lib/webspicy/support/deep_merge.rb', line 9 def initialize( = {}) @options = DEFAULT_OPTIONS.merge() end |
Class Method Details
.deep_dup(*args, &bl) ⇒ Object
17 18 19 |
# File 'lib/webspicy/support/deep_merge.rb', line 17 def self.deep_dup(*args, &bl) new.deep_dup(*args, &bl) end |
.deep_merge(*args, &bl) ⇒ Object
13 14 15 |
# File 'lib/webspicy/support/deep_merge.rb', line 13 def self.deep_merge(*args, &bl) new.deep_merge(*args, &bl) end |
.symbolize_keys(*args, &bl) ⇒ Object
21 22 23 |
# File 'lib/webspicy/support/deep_merge.rb', line 21 def self.symbolize_keys(*args, &bl) new.symbolize_keys(*args, &bl) end |
Instance Method Details
#deep_dup(x) ⇒ Object
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/webspicy/support/deep_merge.rb', line 42 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
38 39 40 |
# File 'lib/webspicy/support/deep_merge.rb', line 38 def deep_merge(h1, h2) merge_maps(deep_dup(h1), deep_dup(h2)) end |
#symbolize_keys(arg) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/webspicy/support/deep_merge.rb', line 25 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 |