thefox-ext 1.4.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|