origin 0.0.0.alpha → 1.0.0.alpha
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.
- 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
|