origin 1.0.11 → 1.1.0

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: 1f7f42f517c065e2637b932e5119de41a5cfa9a8
4
+ data.tar.gz: 98564f55e804ec82becb6c0a55de3f6170e237e9
5
+ SHA512:
6
+ metadata.gz: e5d21e8cd4fc5bb3fe58753e8f5b2e5595c265580d99fe1a818c5bd2bc29ef0a16467cb4ac2324ab6e7b09669f3b2c960688f53c00752f6e29f7411ddf7aaaf4
7
+ data.tar.gz: 0f1af6aac4824259221d9866379efd3f1e1dd1cc0eaad11bc532e0411e611b604b5887ce960b60513bdffc389e45f679a8df443a471a37e3926e9b5dec0e5c8c
@@ -2,10 +2,22 @@
2
2
 
3
3
  ## 1.1.0 (branch: master)
4
4
 
5
- ### New Features
6
-
7
5
  ### Resolved Issues
8
6
 
7
+ * \#77 Arrays can now be expanded when complex keys are preset.
8
+ (Timersha Ziganshin)
9
+
10
+ * \#76 Hashes with nested values multiple levels are now expanded properly.
11
+ (Timersha Ziganshin)
12
+
13
+ * \#75 Merging strategies now expand nested criteria properly.
14
+ (Timersha Ziganshin)
15
+
16
+ * \#73 Negation now properly works for $gt/$lt etc queries.
17
+ (Arthur Neves)
18
+
19
+ * \#62 Fixed time with zone require. (Julien Boyer)
20
+
9
21
  ## 1.0.11
10
22
 
11
23
  ### Resolved Issues
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011-2012 Durran Jordan
1
+ Copyright (c) 2011-2013 Durran Jordan
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -8,6 +8,7 @@ Project Tracking
8
8
 
9
9
  * [Mongoid Google Group](http://groups.google.com/group/mongoid)
10
10
  * [Origin Website and Documentation](http://mongoid.org/en/origin/)
11
+ * [Origin Code Climate](https://codeclimate.com/github/mongoid/origin)
11
12
 
12
13
  Compatibility
13
14
  -------------
@@ -23,7 +24,7 @@ the Origin section: [mongoid.org](http://mongoid.org/en/origin/)
23
24
  License
24
25
  -------
25
26
 
26
- Copyright (c) 2011-2012 Durran Jordan
27
+ Copyright (c) 2011-2013 Durran Jordan
27
28
 
28
29
  Permission is hereby granted, free of charge, to any person obtaining
29
30
  a copy of this software and associated documentation files (the
@@ -4,6 +4,9 @@ unless defined?(Boolean)
4
4
  end
5
5
 
6
6
  if defined?(ActiveSupport)
7
+ unless defined?(ActiveSupport::TimeWithZone)
8
+ require "active_support/time_with_zone"
9
+ end
7
10
  require "origin/extensions/time_with_zone"
8
11
  end
9
12
 
@@ -55,6 +55,20 @@ module Origin
55
55
  map { |value| value.__evolve_date__ }
56
56
  end
57
57
 
58
+ # Get the object as expanded.
59
+ #
60
+ # @example Get the object expanded.
61
+ # obj.__expand_complex__
62
+ #
63
+ # @return [ Array ] The expanded array.
64
+ #
65
+ # @since 1.1.0
66
+ def __expand_complex__
67
+ map do |value|
68
+ value.__expand_complex__
69
+ end
70
+ end
71
+
58
72
  # Evolve the array to an array of times.
59
73
  #
60
74
  # @example Evolve the array to times.
@@ -146,7 +146,7 @@ module Origin
146
146
  def __expand_complex__
147
147
  replacement = {}
148
148
  each_pair do |key, value|
149
- replacement.merge!(key.specify(value))
149
+ replacement.merge!(key.specify(value.__expand_complex__))
150
150
  end
151
151
  replacement
152
152
  end
@@ -83,5 +83,17 @@ module Origin
83
83
  { name => operator }
84
84
  end
85
85
  alias :__sort_pair__ :__sort_option__
86
+
87
+ # Convert the key to a string.
88
+ #
89
+ # @example Convert the key to a string.
90
+ # key.to_s
91
+ #
92
+ # @return [ String ] The key as a string.
93
+ #
94
+ # @since 1.1.0
95
+ def to_s
96
+ @name.to_s
97
+ end
86
98
  end
87
99
  end
@@ -131,7 +131,7 @@ module Origin
131
131
  next unless expr
132
132
  criteria = sel[operator] || []
133
133
  normalized = expr.inject({}) do |hash, (field, value)|
134
- hash.merge!(field.specify(value))
134
+ hash.merge!(field.specify(value.__expand_complex__))
135
135
  hash
136
136
  end
137
137
  sel.store(operator, criteria.push(normalized))
@@ -154,8 +154,8 @@ module Origin
154
154
  # @since 1.0.0
155
155
  def __override__(criterion, operator)
156
156
  selection(criterion) do |selector, field, value|
157
+ expression = prepare(field, operator, value)
157
158
  existing = selector[field]
158
- expression = { operator => prepare(field, operator, value) }
159
159
  if existing.respond_to?(:merge!)
160
160
  selector.store(field, existing.merge!(expression))
161
161
  else
@@ -181,26 +181,6 @@ module Origin
181
181
  with_strategy(:__union__, criterion, operator)
182
182
  end
183
183
 
184
- # Prepare the value for merging.
185
- #
186
- # @api private
187
- #
188
- # @example Prepare the value.
189
- # mergeable.prepare("field", 10)
190
- #
191
- # @param [ String ] field The name of the field.
192
- # @param [ Object ] value The value.
193
- #
194
- # @return [ Object ] The serialized value.
195
- #
196
- # @since 1.0.0
197
- def prepare(field, operator, value)
198
- return value if operator =~ /exists|type|size/
199
- value = value.__expand_complex__
200
- serializer = serializers[field]
201
- serializer ? serializer.evolve(value) : value
202
- end
203
-
204
184
  # Use the named strategy for the next operation.
205
185
  #
206
186
  # @api private
@@ -237,25 +217,31 @@ module Origin
237
217
  selection(criterion) do |selector, field, value|
238
218
  selector.store(
239
219
  field,
240
- selector[field].send(strategy, prepared(field, operator, value))
220
+ selector[field].send(strategy, prepare(field, operator, value))
241
221
  )
242
222
  end
243
223
  end
244
224
 
245
- # Get the selection as a prepared selection.
225
+ # Prepare the value for merging.
246
226
  #
247
- # @example Get the prepared selection.
248
- # mergeable.prepared("name", "$all", [ 1, 2 ])
227
+ # @api private
249
228
  #
250
- # @param [ String, Symbol ] field The name of the field.
251
- # @param [ String ] operator The operator.
229
+ # @example Prepare the value.
230
+ # mergeable.prepare("field", "$gt", 10)
231
+ #
232
+ # @param [ String ] field The name of the field.
252
233
  # @param [ Object ] value The value.
253
234
  #
254
- # @return [ Hash ] The prepared selection.
235
+ # @return [ Object ] The serialized value.
255
236
  #
256
237
  # @since 1.0.0
257
- def prepared(field, operator, value)
258
- selection = { operator => prepare(field, operator, value) }
238
+ def prepare(field, operator, value)
239
+ unless operator =~ /exists|type|size/
240
+ value = value.__expand_complex__
241
+ serializer = serializers[field]
242
+ value = serializer ? serializer.evolve(value) : value
243
+ end
244
+ selection = { operator => value }
259
245
  negating? ? { "$not" => selection } : selection
260
246
  end
261
247
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Origin
3
- VERSION = "1.0.11"
3
+ VERSION = "1.1.0"
4
4
  end
metadata CHANGED
@@ -1,96 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.11
5
- prerelease:
4
+ version: 1.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Durran Jordan
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-11-24 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: activesupport
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '3.1'
22
- type: :development
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: '3.1'
30
- - !ruby/object:Gem::Dependency
31
- name: guard-rspec
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: '0.6'
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: '0.6'
46
- - !ruby/object:Gem::Dependency
47
- name: i18n
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: '0.6'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: '0.6'
62
- - !ruby/object:Gem::Dependency
63
- name: rspec
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ~>
68
- - !ruby/object:Gem::Version
69
- version: '2.8'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: '2.8'
78
- - !ruby/object:Gem::Dependency
79
- name: tzinfo
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ~>
84
- - !ruby/object:Gem::Version
85
- version: 0.3.22
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- version: 0.3.22
11
+ date: 2013-04-25 00:00:00.000000000 Z
12
+ dependencies: []
94
13
  description: Origin is a simple DSL for generating MongoDB selectors and options
95
14
  email:
96
15
  - durran@gmail.com
@@ -133,29 +52,25 @@ files:
133
52
  - Rakefile
134
53
  homepage: http://mongoid.org
135
54
  licenses: []
55
+ metadata: {}
136
56
  post_install_message:
137
57
  rdoc_options: []
138
58
  require_paths:
139
59
  - lib
140
60
  required_ruby_version: !ruby/object:Gem::Requirement
141
- none: false
142
61
  requirements:
143
- - - ! '>='
62
+ - - '>='
144
63
  - !ruby/object:Gem::Version
145
64
  version: '0'
146
- segments:
147
- - 0
148
- hash: 3828253959999818789
149
65
  required_rubygems_version: !ruby/object:Gem::Requirement
150
- none: false
151
66
  requirements:
152
- - - ! '>='
67
+ - - '>='
153
68
  - !ruby/object:Gem::Version
154
69
  version: 1.3.6
155
70
  requirements: []
156
71
  rubyforge_project: origin
157
- rubygems_version: 1.8.24
72
+ rubygems_version: 2.0.3
158
73
  signing_key:
159
- specification_version: 3
74
+ specification_version: 4
160
75
  summary: Simple DSL for MongoDB query generation
161
76
  test_files: []