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/ext/array.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
class Array
|
3
|
-
|
4
|
-
def _add(object)
|
5
|
-
if object.is_a?(Hash)
|
6
|
-
object[object.keys.first] = _add(object.values.first)
|
7
|
-
object
|
8
|
-
else
|
9
|
-
concat(Array(object)).uniq
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def _intersect(object)
|
14
|
-
if object.is_a?(Hash)
|
15
|
-
object[object.keys.first] = _intersect(object.values.first)
|
16
|
-
object
|
17
|
-
else
|
18
|
-
self & Array(object)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
data/lib/origin/ext/hash.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
class Hash
|
3
|
-
|
4
|
-
def _add(object)
|
5
|
-
apply_strategy(:_add, object)
|
6
|
-
end
|
7
|
-
|
8
|
-
def _intersect(object)
|
9
|
-
apply_strategy(:_intersect, object)
|
10
|
-
end
|
11
|
-
|
12
|
-
def _union(object)
|
13
|
-
apply_strategy(:_union, object)
|
14
|
-
end
|
15
|
-
|
16
|
-
def deep_copy
|
17
|
-
inject({}) do |copy, (key, value)|
|
18
|
-
copy.tap do |clone|
|
19
|
-
case value
|
20
|
-
when Array, String then clone.store(key, value.dup)
|
21
|
-
when Hash then clone.store(key, value.deep_copy)
|
22
|
-
else
|
23
|
-
clone.store(key, value)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
def apply_strategy(strategy, object)
|
32
|
-
tap do |hash|
|
33
|
-
object.each_pair do |key, value|
|
34
|
-
hash.store(key, hash[key].send(strategy, value))
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
data/lib/origin/ext/nil.rb
DELETED
data/lib/origin/ext/object.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
class Object
|
3
|
-
|
4
|
-
def _add(object)
|
5
|
-
object == self ? self : [ self, object ].flatten.uniq
|
6
|
-
end
|
7
|
-
|
8
|
-
def _intersect(object)
|
9
|
-
if object.is_a?(Hash)
|
10
|
-
object[object.keys.first] = _intersect(object.values.first)
|
11
|
-
object
|
12
|
-
else
|
13
|
-
Array(self) & Array(object)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def _union(object)
|
18
|
-
if object.is_a?(Hash)
|
19
|
-
object[object.keys.first] = _union(object.values.first)
|
20
|
-
object
|
21
|
-
else
|
22
|
-
(Array(self) + Array(object)).uniq
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/lib/origin/optional/hint.rb
DELETED
data/lib/origin/optional/only.rb
DELETED
data/lib/origin/optional/read.rb
DELETED
data/lib/origin/optional/skip.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Optional
|
4
|
-
module Slice
|
5
|
-
|
6
|
-
def slice(criterion = nil)
|
7
|
-
option(criterion) do |options|
|
8
|
-
options._union(
|
9
|
-
:fields => criterion.inject({}) do |option, (field, val)|
|
10
|
-
option.tap { |opt| opt.store(field, { "$slice" => val }) }
|
11
|
-
end
|
12
|
-
)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/lib/origin/selection.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
|
5
|
-
autoload :All, "origin/selection/all"
|
6
|
-
autoload :And, "origin/selection/and"
|
7
|
-
autoload :Between, "origin/selection/between"
|
8
|
-
autoload :ElemMatch, "origin/selection/elem_match"
|
9
|
-
autoload :Exists, "origin/selection/exists"
|
10
|
-
autoload :Gt, "origin/selection/gt"
|
11
|
-
autoload :Gte, "origin/selection/gte"
|
12
|
-
autoload :In, "origin/selection/in"
|
13
|
-
autoload :Key, "origin/selection/key"
|
14
|
-
autoload :Lt, "origin/selection/lt"
|
15
|
-
autoload :Lte, "origin/selection/lte"
|
16
|
-
autoload :MaxDistance, "origin/selection/max_distance"
|
17
|
-
autoload :Mod, "origin/selection/mod"
|
18
|
-
autoload :Ne, "origin/selection/ne"
|
19
|
-
autoload :Near, "origin/selection/near"
|
20
|
-
autoload :NearSphere, "origin/selection/near_sphere"
|
21
|
-
autoload :Nin, "origin/selection/nin"
|
22
|
-
autoload :Nor, "origin/selection/nor"
|
23
|
-
autoload :Or, "origin/selection/or"
|
24
|
-
autoload :Size, "origin/selection/size"
|
25
|
-
autoload :Strategies, "origin/selection/strategies"
|
26
|
-
autoload :Type, "origin/selection/type"
|
27
|
-
autoload :Where, "origin/selection/where"
|
28
|
-
autoload :WithinBox, "origin/selection/within_box"
|
29
|
-
autoload :WithinCircle, "origin/selection/within_circle"
|
30
|
-
autoload :WithinSphericalCircle, "origin/selection/within_spherical_circle"
|
31
|
-
|
32
|
-
include All
|
33
|
-
include And
|
34
|
-
include Between
|
35
|
-
include ElemMatch
|
36
|
-
include Exists
|
37
|
-
include Gt
|
38
|
-
include Gte
|
39
|
-
include In
|
40
|
-
include Lt
|
41
|
-
include Lte
|
42
|
-
include MaxDistance
|
43
|
-
include Mod
|
44
|
-
include Ne
|
45
|
-
include Near
|
46
|
-
include NearSphere
|
47
|
-
include Nin
|
48
|
-
include Nor
|
49
|
-
include Or
|
50
|
-
include Size
|
51
|
-
include Strategies
|
52
|
-
include Type
|
53
|
-
include Where
|
54
|
-
include WithinBox
|
55
|
-
include WithinCircle
|
56
|
-
#include WithinPolygon
|
57
|
-
include WithinSphericalCircle
|
58
|
-
end
|
59
|
-
end
|
data/lib/origin/selection/all.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module All
|
5
|
-
|
6
|
-
def all(criterion = nil)
|
7
|
-
send(strategy || :_override, criterion, "$all")
|
8
|
-
end
|
9
|
-
|
10
|
-
::Symbol.class_eval do
|
11
|
-
|
12
|
-
def all
|
13
|
-
Key.new(self, "$all")
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/origin/selection/and.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module Between
|
5
|
-
|
6
|
-
def between(criterion = nil)
|
7
|
-
selection(criterion) do |selector, field, value|
|
8
|
-
selector.store(
|
9
|
-
field,
|
10
|
-
{ "$gte" => value.min, "$lte" => value.max }
|
11
|
-
)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module ElemMatch
|
5
|
-
|
6
|
-
def elem_match(criterion = nil)
|
7
|
-
_override(criterion, "$elemMatch")
|
8
|
-
end
|
9
|
-
|
10
|
-
::Symbol.class_eval do
|
11
|
-
|
12
|
-
def elem_match
|
13
|
-
Key.new(self, "$elemMatch")
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Origin
|
3
|
-
module Selection
|
4
|
-
module Exists
|
5
|
-
|
6
|
-
def exists(criterion = nil)
|
7
|
-
_override(criterion, "$exists")
|
8
|
-
end
|
9
|
-
|
10
|
-
::Symbol.class_eval do
|
11
|
-
|
12
|
-
def exists
|
13
|
-
Key.new(self, "$exists")
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|