Class: Hash

Inherits:
Object show all
Includes:
PrettyJSON
Defined in:
lib/engine2/core.rb

Instance Method Summary collapse

Methods included from PrettyJSON

#to_json_pretty

Instance Method Details

#path(*a) ⇒ Object



71
72
73
74
75
76
77
78
79
# File 'lib/engine2/core.rb', line 71

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



81
82
83
84
85
86
87
88
89
# File 'lib/engine2/core.rb', line 81

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

#rdupObject



62
63
64
65
66
67
68
69
# File 'lib/engine2/core.rb', line 62

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



41
42
43
44
45
46
# File 'lib/engine2/core.rb', line 41

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



35
36
37
38
39
# File 'lib/engine2/core.rb', line 35

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



48
49
50
51
52
53
# File 'lib/engine2/core.rb', line 48

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



55
56
57
58
59
60
# File 'lib/engine2/core.rb', line 55

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