Class: Hash
- Defined in:
- lib/aromat/dclone.rb,
lib/aromat/dmerge.rb,
lib/aromat/str_keys.rb,
lib/aromat/sym_keys.rb
Overview
Monkey-patch Hash Class
Instance Method Summary collapse
-
#dclone ⇒ Hash
Deep-Clone: Recursively clones every level of the Hash.
-
#dmerge(a) ⇒ Hash
Deep-Merge: Recursively merges every level of the Hash.
-
#str_keys ⇒ Hash
Stringize Keys: Recursively stringizes hash keys.
-
#sym_keys ⇒ Hash
Symbolize Keys: Recursively symbolizes hash keys.
Instance Method Details
#dclone ⇒ Hash
Deep-Clone: Recursively clones every level of the Hash.
37 38 39 |
# File 'lib/aromat/dclone.rb', line 37 def dclone Hash[*(inject([]) { |a, e| a + e }.collect { |e| e.respond_to?(:dclone) ? e.dclone : Aromat::Dclone.base_clone(e) })] end |
#dmerge(a) ⇒ Hash
Deep-Merge: Recursively merges every level of the Hash.
11 12 13 14 |
# File 'lib/aromat/dmerge.rb', line 11 def dmerge a m = proc { |k, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &m) : Array === v1 && Array === v2 ? v1 | v2 : [:undefined, nil, :nil].include?(v2) ? v1 : v2 } self.merge(a.to_h, &m) end |