class Hash
Public Instance Methods
path(*a)
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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