thefox-ext 1.4.0 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/thefox-ext/ext/hash.rb +8 -5
- data/lib/thefox-ext/version.rb +2 -1
- data/tests/tc_hash.rb +34 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05c9ab324e8e059c18d462f92ec460b1a199963f
|
4
|
+
data.tar.gz: 35c5a477858d7c6acd9f293605106b1ea420ffc9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c99fe019c4277c64c723e706503ece8ade2cb25b8420ef16137d9656b374a284f9fce0ad02599e9d4aa7f34c877f62c5f23d87261fd1d5ed9c320dad41be8471
|
7
|
+
data.tar.gz: 16fadd3276e3cb8164ee74346f381ff82e1245f383a80238ee3c95f60a50039a99afe3c2ff98f0f6564aeb26b3b7168eebcb4f5981864fe162956099e630573e
|
data/lib/thefox-ext/ext/hash.rb
CHANGED
@@ -15,11 +15,14 @@ class Hash
|
|
15
15
|
if v.is_a?(Hash)
|
16
16
|
has_subhashes = true
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
# If Hash 2 also has the same key.
|
19
|
+
if h2.has_key?(k)
|
20
|
+
if h2[k].is_a?(Hash)
|
21
|
+
# Inception! Go one level deeper.
|
22
|
+
h1[k] = v.merge_recursive(h2[k], level + 1)
|
23
|
+
else
|
24
|
+
h1[k] = h2[k]
|
25
|
+
end
|
23
26
|
end
|
24
27
|
else
|
25
28
|
# Value of Hash 1 is no Subhash.
|
data/lib/thefox-ext/version.rb
CHANGED
data/tests/tc_hash.rb
CHANGED
@@ -26,13 +26,20 @@ class TestHash < MiniTest::Test
|
|
26
26
|
assert_equal({'k1' => 2, 'k2' => 2}, h1.merge_recursive(h2))
|
27
27
|
end
|
28
28
|
|
29
|
-
def
|
29
|
+
def test_merge_recursive_clone4a
|
30
30
|
h1 = {'k1' => 1, 'k2' => 1}
|
31
31
|
h2 = {'k1' => 2, 'k2' => {'sk2' => 2}}
|
32
32
|
|
33
33
|
assert_equal({'k1' => 2, 'k2' => {'sk2' => 2}}, h1.merge_recursive(h2))
|
34
34
|
end
|
35
35
|
|
36
|
+
def test_merge_recursive_clone4b
|
37
|
+
h1 = {'k1' => 1, 'k2' => {'sk1' => 1}}
|
38
|
+
h2 = {'k1' => 2, 'k2' => 1}
|
39
|
+
|
40
|
+
assert_equal({'k1' => 2, 'k2' => 1}, h1.merge_recursive(h2))
|
41
|
+
end
|
42
|
+
|
36
43
|
def test_merge_recursive_clone5
|
37
44
|
h1 = {'k1' => 1, 'k2' => {'sk1' => 1}}
|
38
45
|
h2 = {'k1' => 2, 'k2' => {'sk2' => 2}}
|
@@ -47,6 +54,13 @@ class TestHash < MiniTest::Test
|
|
47
54
|
assert_equal({'k1' => 2, 'k2' => 1, 'k3' => 2, 'k4' => {'sk1' => 1, 'sk2' => 2}}, h1.merge_recursive(h2))
|
48
55
|
end
|
49
56
|
|
57
|
+
def test_merge_recursive_clone7
|
58
|
+
h1 = {'k1' => 1, 'k2' => {'sk1' => 1}}
|
59
|
+
h2 = {'k1' => 2}
|
60
|
+
|
61
|
+
assert_equal({'k1' => 2, 'k2' => {'sk1' => 1}}, h1.merge_recursive(h2))
|
62
|
+
end
|
63
|
+
|
50
64
|
def test_merge_recursive_self1
|
51
65
|
h1 = {'k1' => 1, 'k2' => 1}
|
52
66
|
h2 = {'k1' => 2, 'k2' => 2}
|
@@ -74,7 +88,7 @@ class TestHash < MiniTest::Test
|
|
74
88
|
assert_equal({'k1' => 2, 'k2' => 2}, h1)
|
75
89
|
end
|
76
90
|
|
77
|
-
def
|
91
|
+
def test_merge_recursive_self4a
|
78
92
|
h1 = {'k1' => 1, 'k2' => 1}
|
79
93
|
h2 = {'k1' => 2, 'k2' => {'sk2' => 2}}
|
80
94
|
|
@@ -83,6 +97,15 @@ class TestHash < MiniTest::Test
|
|
83
97
|
assert_equal({'k1' => 2, 'k2' => {'sk2' => 2}}, h1)
|
84
98
|
end
|
85
99
|
|
100
|
+
def test_merge_recursive_self4b
|
101
|
+
h1 = {'k1' => 1, 'k2' => {'sk2' => 1}}
|
102
|
+
h2 = {'k1' => 2, 'k2' => 1}
|
103
|
+
|
104
|
+
h1.merge_recursive!(h2)
|
105
|
+
|
106
|
+
assert_equal({'k1' => 2, 'k2' => 1}, h1)
|
107
|
+
end
|
108
|
+
|
86
109
|
def test_merge_recursive_self5
|
87
110
|
h1 = {'k1' => 1, 'k2' => {'sk1' => 1}}
|
88
111
|
h2 = {'k1' => 2, 'k2' => {'sk2' => 2}}
|
@@ -100,4 +123,13 @@ class TestHash < MiniTest::Test
|
|
100
123
|
|
101
124
|
assert_equal({'k1' => 2, 'k2' => 1, 'k3' => 2, 'k4' => {'sk1' => 1, 'sk2' => 2}}, h1)
|
102
125
|
end
|
126
|
+
|
127
|
+
def test_merge_recursive_self7
|
128
|
+
h1 = {'k1' => 1, 'k2' => {'sk1' => 1}}
|
129
|
+
h2 = {'k1' => 2}
|
130
|
+
|
131
|
+
h1.merge_recursive!(h2)
|
132
|
+
|
133
|
+
assert_equal({'k1' => 2, 'k2' => {'sk1' => 1}}, h1)
|
134
|
+
end
|
103
135
|
end
|