hash_dealer 1.6.1 → 1.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a3739d118f18cc4dba12e6bb91a424cc8cf48f62
4
+ data.tar.gz: db91fef82793b6262e7ec75b7796c16e6b2586ac
5
+ SHA512:
6
+ metadata.gz: c59ace8933daae838a47a6874f93152fad1adbed38dfbc15232cc6e81710902e013df42622fe59d6254bd96704a740cffc92df4d89a8a4b4f2d9e66b0d3fc3c0
7
+ data.tar.gz: 3d9809e24497cbb527632cf2cfe4c2b18ffaa16f99e3b486d0ab7dc5abd9054f14c976ccb475d0b1b6f5d0a363b181161482ca6bffcf0f50095bb4e4c060c6ec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.6.1
1
+ 1.6.2
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "hash_dealer"
8
- s.version = "1.6.1"
8
+ s.version = "1.6.2"
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"]
12
- s.date = "2013-08-12"
12
+ s.date = "2013-10-15"
13
13
  s.description = "Like Factory Girl but for Hashes only"
14
14
  s.email = "dan.langevin@lifebooker.com"
15
15
  s.extra_rdoc_files = [
@@ -43,11 +43,11 @@ Gem::Specification.new do |s|
43
43
  s.homepage = "http://github.com/LifebookerInc/hash_dealer"
44
44
  s.licenses = ["MIT"]
45
45
  s.require_paths = ["lib"]
46
- s.rubygems_version = "1.8.23"
46
+ s.rubygems_version = "2.0.3"
47
47
  s.summary = "Hash Factory - like Factory Girl but for Hashes only"
48
48
 
49
49
  if s.respond_to? :specification_version then
50
- s.specification_version = 3
50
+ s.specification_version = 4
51
51
 
52
52
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
53
  s.add_runtime_dependency(%q<activesupport>, [">= 0"])
@@ -1,7 +1,7 @@
1
1
  require 'active_support/core_ext'
2
2
 
3
3
  class Comparator
4
-
4
+
5
5
  def self.formatted_value(val)
6
6
  if val.nil?
7
7
  return "NilClass::nil"
@@ -13,7 +13,7 @@ class Comparator
13
13
  return val
14
14
  end
15
15
  end
16
-
16
+
17
17
  def self.normalize_value(val)
18
18
  return val if val.is_a?(TimeDateMatcher)
19
19
  val = ActiveSupport::JSON.decode(val) if val.is_a?(String)
@@ -21,19 +21,19 @@ class Comparator
21
21
  val = val.collect{|v| v.is_a?(Hash) || v.is_a?(Array) ? self.normalize_value(v) : v} if val.is_a?(Array)
22
22
  val
23
23
  end
24
-
24
+
25
25
  def self.diff(obj1, obj2)
26
26
  return {} if obj1 == obj2
27
27
  if obj1.is_a?(Array) && obj2.is_a?(Array)
28
- return self.array_diff(obj1, obj2)
28
+ return self.array_diff(obj1, obj2)
29
29
  elsif obj1.is_a?(Hash) && obj2.is_a?(Hash)
30
- return self.hash_diff(obj1, obj2)
30
+ return self.hash_diff(obj1, obj2)
31
31
  end
32
32
  return [formatted_value(obj1), "KEY MISSING"] if obj2.nil?
33
33
  return ["KEY MISSING", formatted_value(obj2)] if obj1.nil?
34
34
  return [formatted_value(obj1), formatted_value(obj2)]
35
35
  end
36
-
36
+
37
37
  def self.array_diff(obj1, obj2)
38
38
  {}.tap do |ret|
39
39
  # handle VariableArray by extracting the first element
@@ -45,16 +45,17 @@ class Comparator
45
45
  bigger_arr = obj1.size >= obj2.size ? obj1 : obj2
46
46
  bigger_arr.each_index do |k|
47
47
  ret[k] = self.diff(obj1[k], obj2[k]) unless obj1[k] == obj2[k]
48
- end
48
+ end
49
49
  end
50
50
  end
51
-
51
+
52
52
  def self.hash_diff(obj1, obj2)
53
53
  obj1, obj2 = self.stringify_keys(obj1), self.stringify_keys(obj2)
54
+
54
55
  (obj1.keys + obj2.keys).uniq.inject({}) do |memo, key|
55
- if !obj1.keys.include?(key)
56
+ if !obj1.keys.include?(key)
56
57
  memo[key] = ["KEY MISSING", formatted_value(obj2[key])]
57
- elsif !obj2.keys.include?(key)
58
+ elsif !obj2.keys.include?(key)
58
59
  memo[key] = [formatted_value(obj1[key]), "KEY MISSING"]
59
60
  elsif obj1[key] != obj2[key]
60
61
  memo[key] = self.diff(obj1[key], obj2[key])
@@ -62,10 +63,12 @@ class Comparator
62
63
  memo
63
64
  end
64
65
  end
65
-
66
+
66
67
  def self.stringify_keys(hash_or_array)
67
68
  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)
68
- {}.tap do |ret|
69
+ new_obj = hash_or_array.clone
70
+ new_obj.clear
71
+ new_obj.tap do |ret|
69
72
  hash_or_array.each_pair.each do |k, v|
70
73
  ret[k.to_s] = v.is_a?(Hash) || v.is_a?(Array) ? self.stringify_keys(v) : v
71
74
  end
@@ -27,9 +27,9 @@ class HashDealer
27
27
  protected
28
28
 
29
29
  def remove_optional_keys(hash)
30
- hash = hash.clone.to_hash
30
+ hash = hash.clone.to_hash.stringify_keys
31
31
  @optional_attributes.each do |optional_attribute|
32
- hash.delete(optional_attribute)
32
+ hash.delete(optional_attribute.to_s)
33
33
  end
34
34
  hash
35
35
  end
metadata CHANGED
@@ -1,148 +1,130 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hash_dealer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
5
- prerelease:
4
+ version: 1.6.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dan Langevin
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-08-12 00:00:00.000000000 Z
11
+ date: 2013-10-15 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: i18n
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: colorize
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: bundler
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: jeweler
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: debugger
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: rspec
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - '>='
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: rspec-core
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ! '>='
115
+ - - '>='
132
116
  - !ruby/object:Gem::Version
133
117
  version: '0'
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ! '>='
122
+ - - '>='
140
123
  - !ruby/object:Gem::Version
141
124
  version: '0'
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: guard-rspec
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
129
  - - '='
148
130
  - !ruby/object:Gem::Version
@@ -150,7 +132,6 @@ dependencies:
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
136
  - - '='
156
137
  - !ruby/object:Gem::Version
@@ -158,17 +139,15 @@ dependencies:
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: simplecov
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - '>='
164
144
  - !ruby/object:Gem::Version
165
145
  version: '0'
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - '>='
172
151
  - !ruby/object:Gem::Version
173
152
  version: '0'
174
153
  description: Like Factory Girl but for Hashes only
@@ -204,27 +183,25 @@ files:
204
183
  homepage: http://github.com/LifebookerInc/hash_dealer
205
184
  licenses:
206
185
  - MIT
186
+ metadata: {}
207
187
  post_install_message:
208
188
  rdoc_options: []
209
189
  require_paths:
210
190
  - lib
211
191
  required_ruby_version: !ruby/object:Gem::Requirement
212
- none: false
213
192
  requirements:
214
- - - ! '>='
193
+ - - '>='
215
194
  - !ruby/object:Gem::Version
216
195
  version: '0'
217
196
  required_rubygems_version: !ruby/object:Gem::Requirement
218
- none: false
219
197
  requirements:
220
- - - ! '>='
198
+ - - '>='
221
199
  - !ruby/object:Gem::Version
222
200
  version: '0'
223
201
  requirements: []
224
202
  rubyforge_project:
225
- rubygems_version: 1.8.24
203
+ rubygems_version: 2.0.3
226
204
  signing_key:
227
- specification_version: 3
205
+ specification_version: 4
228
206
  summary: Hash Factory - like Factory Girl but for Hashes only
229
207
  test_files: []
230
- has_rdoc: