hash_diff 0.6.0 → 0.6.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NmI4YmU1N2U2YWY3MjI1YTA5M2NiMDExZjViNDk3YjE5ZTE1YTVmYg==
4
+ MTU2MzRlMGI1NGI2MmExNjkzMTU2NDUwYWE4MzQwNzI0MGJlNGE0OA==
5
5
  data.tar.gz: !binary |-
6
- ZmIxMzIyODkzMzBjOTg5ODRkMmQ0MTRhMTNhMzAwMDAzMGM1MmIxMg==
6
+ YTZiYTQ5MjcxZDU1MzUyYWJhNjllZDVhYWZhYzIxMjdlMjMwM2VkNw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- M2UxM2M2NmYzOTVhYTAwNzg2NWJlY2RmMDQyNjc0YzgzNDA1NDA1M2YyZGYz
10
- ZmMzNTAzY2UxMGU0MDI3MWFiYWI4NTBjNDQ4OTAxNjgxYTZlZGUzMjE4YmM3
11
- ZjA0OTc3ZGVjZjk2ZTJlZDBkYzU1ZDYzNDY4OThlZmZhN2MxYTU=
9
+ MzE2YTg3YzIxMjZjNmJiMjk4M2VkN2MyNmQ0ZjI0MWNkYzJmYWFiNDUwMjdl
10
+ ZWU4ZTY1ZjA1YTY2OTU4OTk4MDhjM2FiOTJiY2YwMzVjMDBkOWI4ZjZlNzlj
11
+ MWU5MjFhZGZkZTc0NmNmNTI5MmIxZTg2NWJkOTI0NzgxNTNmMGE=
12
12
  data.tar.gz: !binary |-
13
- NjI4OTQ3MzViNjZiYzE0MjNlYzQwNjM4YTBmNjM0NTRjMDI4YWU5YzU0MTky
14
- MjBiMzA5M2NmOTRhYjU5ZDg2ZGE5ZGEyNWQyOWQ1MWM2NTdlYjJhYWMyZDBk
15
- MTVlZWQ3YzJjNDAyZmE2MmRiZDBjOWQxMDVmMWNmYmJlNTZmODk=
13
+ NWYzZDYwZDZkNTI3OWQ3YmZjNmVkYTVlNWYyM2ZlMDAxY2U0ZjhhMzNjYjFi
14
+ ZDBmM2M3ZTNlYTM3MmRjNzVkZTc0YzBiYTE5MWZkMjIzNzk2ZTIzNTAyYWEw
15
+ ZGUwNDgxNTI2ZjlkMWU0OGJmOGRlMWUxZmNkN2I2YTllMTA3ZTE=
@@ -1,25 +1,26 @@
1
- require 'ostruct'
2
-
3
1
  module HashDiff
4
2
  class Comparison < Struct.new(:left, :right)
5
3
 
6
4
  def diff
7
- @side ||= :both
8
5
  @diff ||= differences(left, right)
9
6
  end
10
7
 
11
8
  def left_diff
12
- @side = :left
9
+ @concern = :left
13
10
  @left_diff ||= differences(left, right)
14
11
  end
15
12
 
16
13
  def right_diff
17
- @side = :right
14
+ @concern = :right
18
15
  @right_diff ||= differences(left, right)
19
16
  end
20
17
 
21
18
  private
22
19
 
20
+ def concern
21
+ @concern ||= :both
22
+ end
23
+
23
24
  def clone(left, right)
24
25
  self.dup.tap do |inst|
25
26
  inst.left = left
@@ -28,7 +29,7 @@ module HashDiff
28
29
  end
29
30
 
30
31
  def differences(left, right)
31
- combined_attribute_keys(left, right).reduce({}, &reduction_strategy)
32
+ combined_attribute_keys.reduce({}, &reduction_strategy)
32
33
  end
33
34
 
34
35
  def reduction_strategy(opts={})
@@ -38,32 +39,32 @@ module HashDiff
38
39
  end
39
40
  end
40
41
 
41
- def combined_attribute_keys(left, right)
42
+ def combined_attribute_keys
42
43
  (left.keys + right.keys).uniq
43
44
  end
44
45
 
45
46
  def equal?(key)
46
- left.key?(key) && right.key?(key) && left[key] == right[key]
47
+ left[key] == right[key]
47
48
  end
48
49
 
49
50
  def hash?(value)
50
51
  value.is_a? Hash
51
52
  end
52
53
 
53
- def comparable_key?(key)
54
+ def comparable?(key)
54
55
  hash?(left[key]) and hash?(right[key])
55
56
  end
56
57
 
57
58
  def report(key)
58
- if comparable_key?(key)
59
+ if comparable?(key)
59
60
  clone(left[key], right[key]).diff
60
61
  else
61
- report_by_side(key)
62
+ report_concern(key)
62
63
  end
63
64
  end
64
65
 
65
- def report_by_side(key)
66
- case @side
66
+ def report_concern(key)
67
+ case concern
67
68
  when :left then right[key]
68
69
  when :right then left[key]
69
70
  when :both then [left[key], right[key]]
@@ -1,3 +1,3 @@
1
1
  module HashDiff
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hash_diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Coding Zeal