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



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

#rdupObject



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