hash_dealer 1.4.2 → 1.4.3
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|