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



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

#rdupObject



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