json-compare 0.1.1 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012 TODO: Write your name
1
+ Copyright (c) 2012 A2 Design
2
2
 
3
3
  MIT License
4
4
 
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
19
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
20
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
21
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -30,6 +30,11 @@ Or install it yourself as:
30
30
  old, new = Yajl::Parser.parse(json1), Yajl::Parser.parse(json2)
31
31
  result = JsonCompare.get_diff(old, new)
32
32
 
33
+ If you want to exclude some keys from comparison use exclusion param:
34
+
35
+ exclusion = ["from_user", "to_user_id"]
36
+ result = JsonCompare.get_diff(old, new, exclusion)
37
+
33
38
  ## Contributing
34
39
 
35
40
  1. Fork it
data/TODO CHANGED
@@ -1,7 +1,5 @@
1
- - Add possibility for exclusion of some keys from the comparison,
2
- or in other way to check only some keys
1
+ - Add possibility to check only some keys in comparison
3
2
  - Improve the code quality
4
- - Make it workable for 1.8.7, rbx and ree
5
3
  - Add documentation!
6
4
  - Add more examples!!
7
5
  - Add more specs!!!
@@ -2,8 +2,9 @@ require 'json-compare/version'
2
2
  require 'json-compare/comparer'
3
3
 
4
4
  module JsonCompare
5
- def self.get_diff(old, new)
5
+ def self.get_diff(old, new, exclusion = [])
6
6
  comparer = JsonCompare::Comparer.new
7
+ comparer.excluded_keys = exclusion
7
8
  comparer.compare_elements(old,new)
8
9
  end
9
10
  end
@@ -1,5 +1,8 @@
1
1
  module JsonCompare
2
2
  class Comparer
3
+
4
+ attr_accessor :excluded_keys
5
+
3
6
  def compare_elements(old, new)
4
7
  diff = {}
5
8
  if old.kind_of? Hash
@@ -96,6 +99,7 @@ module JsonCompare
96
99
  temp_hash = {}
97
100
  result[change_type].each_key do |key|
98
101
  next if result[change_type][key].nil?
102
+ next if @excluded_keys.include? key
99
103
  temp_hash[key] = result[change_type][key]
100
104
  end
101
105
  out_result[change_type] = temp_hash if temp_hash.count > 0
@@ -1,3 +1,3 @@
1
1
  module JsonCompare
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -106,4 +106,35 @@ describe 'Json compare' do
106
106
  result.should eq(expected_result)
107
107
  end
108
108
  end
109
+
110
+ describe "keys exclusion" do
111
+ it "should be empty hash" do
112
+ json1 = File.new('spec/fixtures/twitter-search.json', 'r')
113
+ json2 = File.new('spec/fixtures/twitter-search2.json', 'r')
114
+ old, new = Yajl::Parser.parse(json1), Yajl::Parser.parse(json2)
115
+ result = JsonCompare.get_diff(old, new, ["results"])
116
+ result.should eq({})
117
+ end
118
+
119
+ it "should not contain 'from_user' changes" do
120
+ json1 = File.new('spec/fixtures/twitter-search.json', 'r')
121
+ json2 = File.new('spec/fixtures/twitter-search2.json', 'r')
122
+ old, new = Yajl::Parser.parse(json1), Yajl::Parser.parse(json2)
123
+ result = JsonCompare.get_diff(old, new, ["from_user"])
124
+ expected = {
125
+ :update => {
126
+ "results" => {
127
+ :update => {
128
+ 0 => {
129
+ :update => {
130
+ "to_user_id" => "8153091",
131
+ }
132
+ }
133
+ }
134
+ }
135
+ }
136
+ }
137
+ result.should eq(expected)
138
+ end
139
+ end
109
140
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json-compare
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-08 00:00:00.000000000 Z
12
+ date: 2012-09-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake