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
98 99 100 101 102 103 104 105 106 |
# File 'lib/engine2/core.rb', line 98 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
108 109 110 111 112 113 114 115 116 |
# File 'lib/engine2/core.rb', line 108 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
89 90 91 92 93 94 95 96 |
# File 'lib/engine2/core.rb', line 89 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
68 69 70 71 72 73 |
# File 'lib/engine2/core.rb', line 68 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
62 63 64 65 66 |
# File 'lib/engine2/core.rb', line 62 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
75 76 77 78 79 80 |
# File 'lib/engine2/core.rb', line 75 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
82 83 84 85 86 87 |
# File 'lib/engine2/core.rb', line 82 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 |