hash_dealer 1.4.2 → 1.4.3
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.
- data/VERSION +1 -1
- data/hash_dealer.gemspec +1 -1
- data/lib/comparator.rb +5 -11
- data/lib/hash_dealer.rb +2 -0
- data/lib/matcher.rb +1 -1
- data/lib/variable_array.rb +8 -1
- data/spec/lib/matcher_spec.rb +4 -0
- metadata +2 -2
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.4.
|
|
1
|
+
1.4.3
|
data/hash_dealer.gemspec
CHANGED
data/lib/comparator.rb
CHANGED
|
@@ -5,7 +5,7 @@ class Comparator
|
|
|
5
5
|
def self.normalize_value(val)
|
|
6
6
|
return val if val.is_a?(TimeDateMatcher)
|
|
7
7
|
val = ActiveSupport::JSON.decode(val) if val.is_a?(String)
|
|
8
|
-
val =
|
|
8
|
+
val = self.stringify_keys(val) if val.is_a?(Hash)
|
|
9
9
|
val = val.collect{|v| v.is_a?(Hash) || n.is_a?(Array) ? self.normalize_value(v) : v} if val.is_a?(Array)
|
|
10
10
|
val
|
|
11
11
|
end
|
|
@@ -31,12 +31,6 @@ class Comparator
|
|
|
31
31
|
unless obj1[key] == obj2[key]
|
|
32
32
|
if obj1[key].kind_of?(Hash) && obj2[key].kind_of?(Hash)
|
|
33
33
|
memo[key] = self.diff(obj1[key],obj2[key])
|
|
34
|
-
elsif obj1[key].kind_of?(Array) && obj2[key].kind_of?(Array)
|
|
35
|
-
memo[key] = [].tap do |arr|
|
|
36
|
-
obj1[key].each_index do |i|
|
|
37
|
-
arr << self.diff(obj1[key][i], obj2[key][i])
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
34
|
else
|
|
41
35
|
memo[key] = self.diff(obj1[key], obj2[key])
|
|
42
36
|
end
|
|
@@ -45,12 +39,12 @@ class Comparator
|
|
|
45
39
|
end
|
|
46
40
|
end
|
|
47
41
|
|
|
48
|
-
def self.stringify_keys(
|
|
42
|
+
def self.stringify_keys(hash_or_array)
|
|
43
|
+
return hash_or_array.collect{|v| v.is_a?(Hash) || v.is_a?(Array) ? self.stringify_keys(v) : v} if hash_or_array.is_a?(Array)
|
|
49
44
|
{}.tap do |ret|
|
|
50
|
-
|
|
51
|
-
ret[k.to_s] =
|
|
45
|
+
hash_or_array.each_pair.each do |k, v|
|
|
46
|
+
ret[k.to_s] = v.is_a?(Hash) || v.is_a?(Array) ? self.stringify_keys(v) : v
|
|
52
47
|
end
|
|
53
48
|
end
|
|
54
49
|
end
|
|
55
|
-
|
|
56
50
|
end
|
data/lib/hash_dealer.rb
CHANGED
data/lib/matcher.rb
CHANGED
data/lib/variable_array.rb
CHANGED
|
@@ -2,10 +2,17 @@ class VariableArray < Array
|
|
|
2
2
|
def ==(other)
|
|
3
3
|
if other.is_a?(Array)
|
|
4
4
|
comp = self[1..(self.length - 1)]
|
|
5
|
-
return
|
|
5
|
+
return comp.first == other.first
|
|
6
6
|
else
|
|
7
7
|
super
|
|
8
8
|
end
|
|
9
9
|
end
|
|
10
|
+
def collect(&block)
|
|
11
|
+
self.class.new.tap do |ret|
|
|
12
|
+
self.each_with_index do |el, i|
|
|
13
|
+
ret[i] = block.call(el)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
10
17
|
alias_method :eql?, :==
|
|
11
18
|
end
|
data/spec/lib/matcher_spec.rb
CHANGED
|
@@ -44,4 +44,8 @@ describe "match_response Matcher" do
|
|
|
44
44
|
Comparator.diff({"a" => "dkddk"}, {"a" => "test"}.matcher).should eql({})
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
+
it "should recursively set hash keys to strings" do
|
|
48
|
+
Comparator.normalize_value({:x => [[{:y => "z"}]]})["x"].first.first["y"].should eql "z"
|
|
49
|
+
end
|
|
50
|
+
|
|
47
51
|
end
|
metadata
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: hash_dealer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease:
|
|
5
|
-
version: 1.4.
|
|
5
|
+
version: 1.4.3
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Dan Langevin
|
|
@@ -153,7 +153,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
153
153
|
requirements:
|
|
154
154
|
- - ">="
|
|
155
155
|
- !ruby/object:Gem::Version
|
|
156
|
-
hash:
|
|
156
|
+
hash: -2331371851273189618
|
|
157
157
|
segments:
|
|
158
158
|
- 0
|
|
159
159
|
version: "0"
|