hashlib 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/hashlib.rb +6 -6
- metadata +1 -1
data/lib/hashlib.rb
CHANGED
@@ -22,12 +22,12 @@ class Hash
|
|
22
22
|
|
23
23
|
path.each do |p|
|
24
24
|
x, key, subfield, subvalue = p.split(/([a-z0-9\@\_\-\+]+)(?:\[([^=]+)(?:=(.+))?\])?/i)
|
25
|
-
root = (root[key.
|
25
|
+
root = (root[key.to_s] rescue nil)
|
26
26
|
#puts key, root.inspect
|
27
27
|
|
28
28
|
if subfield and root.is_a?(Array)
|
29
29
|
root.each do |r|
|
30
|
-
if r.is_a?(Hash) and r[subfield.
|
30
|
+
if r.is_a?(Hash) and r[subfield.to_s] and ( (subvalue && r[subfield.to_s].to_s == subvalue) || true)
|
31
31
|
root = r
|
32
32
|
break
|
33
33
|
end
|
@@ -48,14 +48,14 @@ class Hash
|
|
48
48
|
root = self
|
49
49
|
|
50
50
|
path[0..-2].each do |p|
|
51
|
-
root[p.
|
52
|
-
root = root[p.
|
51
|
+
root[p.to_s] = {} unless root[p.to_s].is_a?(Hash)
|
52
|
+
root = root[p.to_s]
|
53
53
|
end
|
54
54
|
|
55
55
|
if value
|
56
|
-
root[path.last.
|
56
|
+
root[path.last.to_s] = value
|
57
57
|
else
|
58
|
-
root.reject!{|k,v| k.
|
58
|
+
root.reject!{|k,v| k.to_s == path.last.to_s }
|
59
59
|
end
|
60
60
|
|
61
61
|
self
|