origin 0.0.0.alpha → 1.0.0.alpha
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +3 -0
- data/lib/origin.rb +3 -4
- data/lib/origin/extensions.rb +25 -0
- data/lib/origin/extensions/array.rb +153 -0
- data/lib/origin/extensions/big_decimal.rb +33 -0
- data/lib/origin/extensions/boolean.rb +30 -0
- data/lib/origin/extensions/date.rb +59 -0
- data/lib/origin/extensions/date_time.rb +44 -0
- data/lib/origin/extensions/hash.rb +180 -0
- data/lib/origin/extensions/nil_class.rb +82 -0
- data/lib/origin/extensions/numeric.rb +86 -0
- data/lib/origin/extensions/object.rb +182 -0
- data/lib/origin/extensions/range.rb +66 -0
- data/lib/origin/extensions/regexp.rb +41 -0
- data/lib/origin/extensions/set.rb +28 -0
- data/lib/origin/extensions/string.rb +100 -0
- data/lib/origin/extensions/symbol.rb +74 -0
- data/lib/origin/extensions/time.rb +44 -0
- data/lib/origin/extensions/time_with_zone.rb +50 -0
- data/lib/origin/forwardable.rb +57 -0
- data/lib/origin/key.rb +74 -0
- data/lib/origin/macroable.rb +23 -0
- data/lib/origin/mergeable.rb +226 -0
- data/lib/origin/optional.rb +314 -29
- data/lib/origin/options.rb +64 -1
- data/lib/origin/queryable.rb +55 -12
- data/lib/origin/selectable.rb +613 -0
- data/lib/origin/selector.rb +140 -1
- data/lib/origin/smash.rb +85 -0
- data/lib/origin/version.rb +1 -1
- metadata +94 -62
- data/lib/origin/ext.rb +0 -5
- data/lib/origin/ext/array.rb +0 -21
- data/lib/origin/ext/hash.rb +0 -38
- data/lib/origin/ext/nil.rb +0 -9
- data/lib/origin/ext/object.rb +0 -25
- data/lib/origin/optional/batch_size.rb +0 -11
- data/lib/origin/optional/hint.rb +0 -15
- data/lib/origin/optional/limit.rb +0 -11
- data/lib/origin/optional/max_scan.rb +0 -11
- data/lib/origin/optional/no_timeout.rb +0 -11
- data/lib/origin/optional/only.rb +0 -15
- data/lib/origin/optional/read.rb +0 -11
- data/lib/origin/optional/return_key.rb +0 -11
- data/lib/origin/optional/show_disk_loc.rb +0 -11
- data/lib/origin/optional/skip.rb +0 -11
- data/lib/origin/optional/slice.rb +0 -17
- data/lib/origin/optional/snapshot.rb +0 -13
- data/lib/origin/optional/transformer.rb +0 -11
- data/lib/origin/optional/without.rb +0 -15
- data/lib/origin/selection.rb +0 -59
- data/lib/origin/selection/all.rb +0 -18
- data/lib/origin/selection/and.rb +0 -11
- data/lib/origin/selection/between.rb +0 -16
- data/lib/origin/selection/elem_match.rb +0 -18
- data/lib/origin/selection/exists.rb +0 -18
- data/lib/origin/selection/gt.rb +0 -18
- data/lib/origin/selection/gte.rb +0 -18
- data/lib/origin/selection/in.rb +0 -18
- data/lib/origin/selection/key.rb +0 -20
- data/lib/origin/selection/lt.rb +0 -18
- data/lib/origin/selection/lte.rb +0 -18
- data/lib/origin/selection/max_distance.rb +0 -11
- data/lib/origin/selection/mod.rb +0 -18
- data/lib/origin/selection/ne.rb +0 -18
- data/lib/origin/selection/near.rb +0 -18
- data/lib/origin/selection/near_sphere.rb +0 -18
- data/lib/origin/selection/nin.rb +0 -18
- data/lib/origin/selection/nor.rb +0 -11
- data/lib/origin/selection/or.rb +0 -11
- data/lib/origin/selection/size.rb +0 -18
- data/lib/origin/selection/strategies.rb +0 -40
- data/lib/origin/selection/strategies/add.rb +0 -18
- data/lib/origin/selection/strategies/expanded.rb +0 -15
- data/lib/origin/selection/strategies/intersect.rb +0 -22
- data/lib/origin/selection/strategies/multi.rb +0 -21
- data/lib/origin/selection/strategies/override.rb +0 -19
- data/lib/origin/selection/strategies/union.rb +0 -22
- data/lib/origin/selection/type.rb +0 -18
- data/lib/origin/selection/where.rb +0 -29
- data/lib/origin/selection/within_box.rb +0 -18
- data/lib/origin/selection/within_circle.rb +0 -18
- data/lib/origin/selection/within_spherical_circle.rb +0 -18
data/lib/origin/selection/gt.rb
DELETED
data/lib/origin/selection/gte.rb
DELETED
data/lib/origin/selection/in.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module In
|
5
|
-
|
6
|
-
def in(criterion = nil)
|
7
|
-
send(strategy || :_intersect, criterion, "$in")
|
8
|
-
end
|
9
|
-
|
10
|
-
::Symbol.class_eval do
|
11
|
-
|
12
|
-
def in
|
13
|
-
Key.new(self, "$in")
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/origin/selection/key.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
class Key
|
5
|
-
attr_reader :name, :operator, :expanded
|
6
|
-
|
7
|
-
def initialize(name, operator, expanded = nil)
|
8
|
-
@name, @operator, @expanded = name, operator, expanded
|
9
|
-
end
|
10
|
-
|
11
|
-
def specify(value)
|
12
|
-
if expanded
|
13
|
-
{ name => { operator => { expanded => value }}}
|
14
|
-
else
|
15
|
-
{ name => { operator => value }}
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
data/lib/origin/selection/lt.rb
DELETED
data/lib/origin/selection/lte.rb
DELETED
data/lib/origin/selection/mod.rb
DELETED
data/lib/origin/selection/ne.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module NearSphere
|
5
|
-
|
6
|
-
def near_sphere(criterion = nil)
|
7
|
-
_override(criterion, "$nearSphere")
|
8
|
-
end
|
9
|
-
|
10
|
-
::Symbol.class_eval do
|
11
|
-
|
12
|
-
def near_sphere
|
13
|
-
Key.new(self, "$nearSphere")
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/origin/selection/nin.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module Nin
|
5
|
-
|
6
|
-
def nin(criterion = nil)
|
7
|
-
send(strategy || :_intersect, criterion, "$nin")
|
8
|
-
end
|
9
|
-
|
10
|
-
::Symbol.class_eval do
|
11
|
-
|
12
|
-
def nin
|
13
|
-
Key.new(self, "$nin")
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/origin/selection/nor.rb
DELETED
data/lib/origin/selection/or.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module Size
|
5
|
-
|
6
|
-
def with_size(criterion = nil)
|
7
|
-
_override(criterion, "$size")
|
8
|
-
end
|
9
|
-
|
10
|
-
::Symbol.class_eval do
|
11
|
-
|
12
|
-
def with_size
|
13
|
-
Key.new(self, "$size")
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "origin/selection/strategies/add"
|
3
|
-
require "origin/selection/strategies/expanded"
|
4
|
-
require "origin/selection/strategies/intersect"
|
5
|
-
require "origin/selection/strategies/multi"
|
6
|
-
require "origin/selection/strategies/override"
|
7
|
-
require "origin/selection/strategies/union"
|
8
|
-
|
9
|
-
module Origin
|
10
|
-
module Selection
|
11
|
-
module Strategies
|
12
|
-
include Add
|
13
|
-
include Expanded
|
14
|
-
include Intersect
|
15
|
-
include Multi
|
16
|
-
include Override
|
17
|
-
include Union
|
18
|
-
|
19
|
-
attr_accessor :strategy
|
20
|
-
|
21
|
-
def selection(criterion = nil)
|
22
|
-
clone.tap do |query|
|
23
|
-
if criterion
|
24
|
-
criterion.each_pair do |field, value|
|
25
|
-
yield(query.selector, field, value)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def option(*args)
|
32
|
-
clone.tap do |query|
|
33
|
-
unless args.compact.empty?
|
34
|
-
yield(query.options)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module Strategies
|
5
|
-
module Add
|
6
|
-
|
7
|
-
def _add(criterion, operator)
|
8
|
-
selection(criterion) do |selector, field, value|
|
9
|
-
selector.store(
|
10
|
-
field,
|
11
|
-
selector[field]._add({ operator => value })
|
12
|
-
)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module Strategies
|
5
|
-
module Expanded
|
6
|
-
|
7
|
-
def _expanded(criterion, outer, inner)
|
8
|
-
selection(criterion) do |selector, field, value|
|
9
|
-
selector.store(field, { outer => { inner => value }})
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module Strategies
|
5
|
-
module Intersect
|
6
|
-
|
7
|
-
def intersect
|
8
|
-
tap { |query| query.strategy = :_intersect }
|
9
|
-
end
|
10
|
-
|
11
|
-
def _intersect(criterion, operator)
|
12
|
-
selection(criterion) do |selector, field, value|
|
13
|
-
selector.store(
|
14
|
-
field,
|
15
|
-
selector[field]._intersect({ operator => value })
|
16
|
-
)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module Strategies
|
5
|
-
module Multi
|
6
|
-
|
7
|
-
private
|
8
|
-
|
9
|
-
def multi!(criterion, operator)
|
10
|
-
clone.tap do |query|
|
11
|
-
sel = query.selector
|
12
|
-
criterion.each do |expr|
|
13
|
-
next unless expr
|
14
|
-
sel.fetch(operator){ |key| sel.store(operator, []) }.push(expr)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module Strategies
|
5
|
-
module Override
|
6
|
-
|
7
|
-
def override
|
8
|
-
tap { |query| query.strategy = :_override }
|
9
|
-
end
|
10
|
-
|
11
|
-
def _override(criterion, operator)
|
12
|
-
selection(criterion) do |selector, field, value|
|
13
|
-
selector.store(field, { operator => value })
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module Strategies
|
5
|
-
module Union
|
6
|
-
|
7
|
-
def union
|
8
|
-
tap { |query| query.strategy = :_union }
|
9
|
-
end
|
10
|
-
|
11
|
-
def _union(criterion, operator)
|
12
|
-
selection(criterion) do |selector, field, value|
|
13
|
-
selector.store(
|
14
|
-
field,
|
15
|
-
selector[field]._union({ operator => value })
|
16
|
-
)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|