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 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"