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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +14 -2
- data/LICENSE +1 -1
- data/README.md +2 -1
- data/lib/origin/extensions.rb +3 -0
- data/lib/origin/extensions/array.rb +14 -0
- data/lib/origin/extensions/hash.rb +1 -1
- data/lib/origin/key.rb +12 -0
- data/lib/origin/mergeable.rb +17 -31
- data/lib/origin/version.rb +1 -1
- metadata +8 -93
checksums.yaml
ADDED
@@ -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
|
data/CHANGELOG.md
CHANGED
@@ -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
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-
|
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
|
data/lib/origin/extensions.rb
CHANGED
@@ -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.
|
data/lib/origin/key.rb
CHANGED
@@ -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
|
data/lib/origin/mergeable.rb
CHANGED
@@ -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,
|
220
|
+
selector[field].send(strategy, prepare(field, operator, value))
|
241
221
|
)
|
242
222
|
end
|
243
223
|
end
|
244
224
|
|
245
|
-
#
|
225
|
+
# Prepare the value for merging.
|
246
226
|
#
|
247
|
-
# @
|
248
|
-
# mergeable.prepared("name", "$all", [ 1, 2 ])
|
227
|
+
# @api private
|
249
228
|
#
|
250
|
-
# @
|
251
|
-
#
|
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 [
|
235
|
+
# @return [ Object ] The serialized value.
|
255
236
|
#
|
256
237
|
# @since 1.0.0
|
257
|
-
def
|
258
|
-
|
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
|
data/lib/origin/version.rb
CHANGED
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
|
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:
|
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:
|
72
|
+
rubygems_version: 2.0.3
|
158
73
|
signing_key:
|
159
|
-
specification_version:
|
74
|
+
specification_version: 4
|
160
75
|
summary: Simple DSL for MongoDB query generation
|
161
76
|
test_files: []
|