Class: Hash
Instance Method Summary collapse
- #path(*a) ⇒ Object
- #path!(*a, v) ⇒ Object
- #rdup ⇒ Object
- #rmerge(other_hash) ⇒ Object
- #rmerge!(other_hash) ⇒ Object
- #rmerge2(other_hash) ⇒ Object
- #rmerge2!(other_hash) ⇒ Object
Methods included from PrettyJSON
Instance Method Details
#path(*a) ⇒ Object
79 80 81 82 83 84 85 86 87 |
# File 'lib/engine2/core.rb', line 79 def path *a h = self i = 0 while h && i != a.length h = h[a[i]] i += 1 end h end |
#path!(*a, v) ⇒ Object
89 90 91 92 93 94 95 96 97 |
# File 'lib/engine2/core.rb', line 89 def path! *a, v h = self i = 0 while i < a.length - 1 h = h[a[i]] ||= {} i += 1 end h[a[i]] = v end |
#rdup ⇒ Object
70 71 72 73 74 75 76 77 |
# File 'lib/engine2/core.rb', line 70 def rdup duplicate = self.dup duplicate.each_pair do |k,v| tv = duplicate[k] duplicate[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? tv.rdup : v end duplicate end |
#rmerge(other_hash) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/engine2/core.rb', line 49 def rmerge(other_hash) r = {} merge(other_hash) do |key, oldval, newval| r[key] = oldval.class == self.class ? oldval.rmerge(newval) : newval end end |
#rmerge!(other_hash) ⇒ Object
43 44 45 46 47 |
# File 'lib/engine2/core.rb', line 43 def rmerge!(other_hash) merge!(other_hash) do |key, oldval, newval| oldval.class == self.class ? oldval.rmerge!(newval) : newval end end |
#rmerge2(other_hash) ⇒ Object
56 57 58 59 60 61 |
# File 'lib/engine2/core.rb', line 56 def rmerge2(other_hash) r = {} merge(other_hash) do |key, oldval, newval| r[key] = oldval.class == self.class ? oldval.rmerge2(newval) : (oldval == nil ? newval : oldval) end end |
#rmerge2!(other_hash) ⇒ Object
63 64 65 66 67 68 |
# File 'lib/engine2/core.rb', line 63 def rmerge2!(other_hash) r = {} merge!(other_hash) do |key, oldval, newval| r[key] = oldval.class == self.class ? oldval.rmerge2!(newval) : (oldval == nil ? newval : oldval) end end |