origin 1.0.11 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|