hashdiff_sym 0.3.1 → 0.3.2
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/README.md +10 -0
- data/lib/hashdiff_sym/diff.rb +3 -3
- data/lib/hashdiff_sym/util.rb +6 -0
- data/lib/hashdiff_sym/version.rb +1 -1
- data/spec/hashdiff_sym/diff_spec.rb +5 -0
- data/spec/hashdiff_sym/patch_spec.rb +7 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a995af36ade64ace421f4c1f77cbd795503ff396
|
4
|
+
data.tar.gz: 5884eee448ee410b475a2e11d2859e53b874db3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6e5543067e990081a527d7936c2af1116457e797951d6c3b1cc7f05e01ea9a7ba1b8b013f061d53583d81a924cb8404b4c1b0e25eead61f31538f45cbffd2d1
|
7
|
+
data.tar.gz: 416125f2896fd4d3736ca30a4de4358c734d71ee337ab096363e93e6564bf7210b1a89ea0601b97d7cbaa612a7fe414aa6e60b27a2ec3cfc2baca0ccf12db734
|
data/README.md
CHANGED
@@ -17,6 +17,16 @@ diff = HashDiffSym.diff(a, b)
|
|
17
17
|
HashDiffSym.patch!(a, diff).should == b
|
18
18
|
```
|
19
19
|
|
20
|
+
## Installing
|
21
|
+
|
22
|
+
Add this to your Gemfile
|
23
|
+
|
24
|
+
`gem "hashdiff_sym"`
|
25
|
+
|
26
|
+
or just run
|
27
|
+
|
28
|
+
`gem install hashdiff_sym`
|
29
|
+
|
20
30
|
## License
|
21
31
|
|
22
32
|
HashDiffSym is distributed under the MIT-LICENSE.
|
data/lib/hashdiff_sym/diff.rb
CHANGED
@@ -127,7 +127,7 @@ module HashDiffSym
|
|
127
127
|
added_keys = obj2.keys - obj1.keys
|
128
128
|
|
129
129
|
# add deleted properties
|
130
|
-
deleted_keys.
|
130
|
+
deleted_keys.to_s_sort.each do |k|
|
131
131
|
custom_result = custom_compare(opts[:comparison], "#{prefix}#{export_key(k)}", obj1[k], nil)
|
132
132
|
|
133
133
|
if custom_result
|
@@ -138,10 +138,10 @@ module HashDiffSym
|
|
138
138
|
end
|
139
139
|
|
140
140
|
# recursive comparison for common keys
|
141
|
-
common_keys.
|
141
|
+
common_keys.to_s_sort.each {|k| result.concat(diff(obj1[k], obj2[k], opts.merge(:prefix => "#{prefix}#{export_key(k)}"))) }
|
142
142
|
|
143
143
|
# added properties
|
144
|
-
added_keys.
|
144
|
+
added_keys.to_s_sort.each do |k|
|
145
145
|
unless obj1.key?(k)
|
146
146
|
custom_result = custom_compare(opts[:comparison], "#{prefix}#{export_key(k)}", nil, obj2[k])
|
147
147
|
|
data/lib/hashdiff_sym/util.rb
CHANGED
data/lib/hashdiff_sym/version.rb
CHANGED
@@ -149,6 +149,11 @@ describe HashDiffSym do
|
|
149
149
|
diff.should == [['-', 'a.:x', 2], ['-', 'a.:z', 4], ['-', 'b.:x', 3], ["-", "b.:z[0]", 1], ["+", "b.:z[2]", 4], ['+', 'b.:y', 3]]
|
150
150
|
end
|
151
151
|
|
152
|
+
it "should compare hashes with both string and symbols keys" do
|
153
|
+
diff = HashDiffSym.diff({}, { :symbol_key => 1, "string_key" => 1})
|
154
|
+
diff.should == [["+", "string_key", 1], ["+", ":symbol_key", 1]]
|
155
|
+
end
|
156
|
+
|
152
157
|
context 'when :numeric_tolerance requested' do
|
153
158
|
it "should be able to diff changes in hash value" do
|
154
159
|
a = {'a' => 0.558, 'b' => 0.0, 'c' => 0.65, 'd' => 'fin'}
|
@@ -151,4 +151,11 @@ describe HashDiffSym do
|
|
151
151
|
diff = HashDiffSym.diff(a, b)
|
152
152
|
HashDiffSym.patch!(a, diff).should == b
|
153
153
|
end
|
154
|
+
|
155
|
+
it "should patch hashes with both symbol and string keys correctly" do
|
156
|
+
a = {a: 3, "b" => 4}
|
157
|
+
b = {a: {a1: 1, a2: 2}, "b" => 5}
|
158
|
+
diff = HashDiffSym.diff(a, b)
|
159
|
+
HashDiffSym.patch!(a, diff).should == b
|
160
|
+
end
|
154
161
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hashdiff_sym
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Liu Fengyun
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-11-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|