origin 1.0.11 → 1.1.0

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.
@@ -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: []