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 CHANGED
@@ -1 +1 @@
1
- 1.4.2
1
+ 1.4.3
data/hash_dealer.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "hash_dealer"
8
- s.version = "1.4.2"
8
+ s.version = "1.4.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dan Langevin"]
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 = val.stringify_keys if val.is_a?(Hash)
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(hash)
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
- hash.keys.each do |k|
51
- ret[k.to_s] = hash[k].is_a?(Hash) ? self.stringify_keys(hash[k]) : hash[k]
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
@@ -1,3 +1,5 @@
1
+ require 'colorize'
2
+
1
3
  require File.expand_path('../path_string', __FILE__)
2
4
  require File.expand_path('../variable_array', __FILE__)
3
5
  require File.expand_path('../core_extensions', __FILE__)
data/lib/matcher.rb CHANGED
@@ -8,7 +8,7 @@ def print_diff(diff, depth = 1)
8
8
  if diff.is_a?(Hash)
9
9
  diff.each_pair do |k, v|
10
10
  puts "\n"
11
- puts (("\t" * depth) + k).red
11
+ puts (("\t" * depth) + k.to_s).red
12
12
  print_diff(v, depth + 1)
13
13
  end
14
14
  end
@@ -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 true if comp.first == other.first
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
@@ -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.2
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: 1097571649744545585
156
+ hash: -2331371851273189618
157
157
  segments:
158
158
  - 0
159
159
  version: "0"