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