CloudSesame 0.5.0 → 0.5.1
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 +4 -4
- data/Gemfile.lock +1 -4
- data/cloud_sesame.gemspec +1 -1
- data/lib/cloud_sesame.rb +10 -6
- data/lib/cloud_sesame/query/builder.rb +3 -3
- data/lib/cloud_sesame/query/domain/block.rb +7 -20
- data/lib/cloud_sesame/query/domain/literal.rb +3 -15
- data/lib/cloud_sesame/query/dsl/{filter_query_methods.rb → applied_filter_query.rb} +1 -1
- data/lib/cloud_sesame/query/dsl/bind_caller.rb +26 -0
- data/lib/cloud_sesame/query/dsl/{block_methods.rb → block_styled_operators.rb} +1 -1
- data/lib/cloud_sesame/query/dsl/{operator_methods.rb → operators.rb} +1 -1
- data/lib/cloud_sesame/query/dsl/{range_methods.rb → range_helper.rb} +1 -1
- data/lib/cloud_sesame/query/dsl/scope_accessors.rb +2 -1
- data/spec/cloud_sesame/query/domain/block_spec.rb +124 -0
- data/spec/cloud_sesame/query/dsl/block_methods_spec.rb +1 -3
- metadata +27 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fd4bf461eb1ac6ec180ec34cd4a9cdd9a2589c1
|
4
|
+
data.tar.gz: 75c0a8253a052232ed8b0416ba5f9081462a7894
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 83a2fc53241e5dd037f1b88738ad8128f43fa88161f6f2207ed64e29c01cb90220d01bf67519d1b4c1e873dc3404bb198960c7011f864121934e8c607209f97e
|
7
|
+
data.tar.gz: 48b0b4138dd446f4c59f2de92eaca2660938f23f30774c36147d675cc8956041ac64e356f488502c4bb585ff58a455af9bd10c94cc8dc7b59aee97ef6a520d66
|
data/Gemfile.lock
CHANGED
data/cloud_sesame.gemspec
CHANGED
data/lib/cloud_sesame.rb
CHANGED
@@ -18,17 +18,21 @@ require 'cloud_sesame/query/error/scope_not_defined'
|
|
18
18
|
|
19
19
|
# Query DSL Methods
|
20
20
|
# ===============================================
|
21
|
-
require 'cloud_sesame/query/dsl/
|
22
|
-
require 'cloud_sesame/query/dsl/
|
21
|
+
require 'cloud_sesame/query/dsl/applied_filter_query'
|
22
|
+
require 'cloud_sesame/query/dsl/bind_caller'
|
23
|
+
require 'cloud_sesame/query/dsl/block_styled_operators'
|
23
24
|
require 'cloud_sesame/query/dsl/field_accessors'
|
24
|
-
require 'cloud_sesame/query/dsl/
|
25
|
-
require 'cloud_sesame/query/dsl/
|
25
|
+
require 'cloud_sesame/query/dsl/scope_accessors'
|
26
|
+
require 'cloud_sesame/query/dsl/operators'
|
27
|
+
require 'cloud_sesame/query/dsl/field_array_methods'
|
28
|
+
|
29
|
+
require 'cloud_sesame/query/dsl/range_helper'
|
26
30
|
require 'cloud_sesame/query/dsl/page_methods'
|
27
31
|
require 'cloud_sesame/query/dsl/query_methods'
|
28
|
-
|
32
|
+
|
29
33
|
require 'cloud_sesame/query/dsl/response_methods'
|
30
34
|
require 'cloud_sesame/query/dsl/return_methods'
|
31
|
-
|
35
|
+
|
32
36
|
require 'cloud_sesame/query/dsl/sort_methods'
|
33
37
|
|
34
38
|
# Query Query Domain Objects
|
@@ -3,15 +3,15 @@ module CloudSesame
|
|
3
3
|
class Builder
|
4
4
|
include DSL::QueryMethods
|
5
5
|
include DSL::ResponseMethods
|
6
|
-
include DSL::
|
6
|
+
include DSL::BlockStyledOperators
|
7
7
|
include DSL::FieldAccessors
|
8
|
-
include DSL::FilterQueryMethods
|
9
8
|
include DSL::ScopeAccessors
|
9
|
+
include DSL::AppliedFilterQuery
|
10
10
|
include DSL::PageMethods
|
11
11
|
include DSL::SortMethods
|
12
12
|
include DSL::ReturnMethods
|
13
13
|
|
14
|
-
attr_reader :context
|
14
|
+
attr_reader :context, :searchable
|
15
15
|
|
16
16
|
def initialize(context, searchable)
|
17
17
|
@context = Context.new.duplicate context
|
@@ -2,12 +2,13 @@ module CloudSesame
|
|
2
2
|
module Query
|
3
3
|
module Domain
|
4
4
|
class Block
|
5
|
-
include DSL::
|
5
|
+
include DSL::AppliedFilterQuery
|
6
|
+
include DSL::BlockStyledOperators
|
6
7
|
include DSL::FieldAccessors
|
7
|
-
|
8
|
-
include DSL::
|
9
|
-
include DSL::
|
10
|
-
|
8
|
+
include DSL::Operators
|
9
|
+
include DSL::RangeHelper
|
10
|
+
include DSL::ScopeAccessors
|
11
|
+
include DSL::BindCaller
|
11
12
|
|
12
13
|
attr_reader :_caller, :_context, :_scopes
|
13
14
|
|
@@ -16,11 +17,7 @@ module CloudSesame
|
|
16
17
|
@_context = _context
|
17
18
|
@_scopes = []
|
18
19
|
|
19
|
-
|
20
|
-
value = @_caller.instance_variable_get name
|
21
|
-
instance_variable_set name, value
|
22
|
-
end
|
23
|
-
|
20
|
+
_bind_caller_instance_variables
|
24
21
|
end
|
25
22
|
|
26
23
|
def _eval(node, _scope, _return = _scope, &block)
|
@@ -49,16 +46,6 @@ module CloudSesame
|
|
49
46
|
self
|
50
47
|
end
|
51
48
|
|
52
|
-
private
|
53
|
-
|
54
|
-
# ACCESS CALLER'S METHODS
|
55
|
-
# =========================================
|
56
|
-
def method_missing(name, *args, &block)
|
57
|
-
_caller.send(name, *args, &block)
|
58
|
-
rescue NoMethodError
|
59
|
-
super
|
60
|
-
end
|
61
|
-
|
62
49
|
end
|
63
50
|
end
|
64
51
|
end
|
@@ -2,7 +2,8 @@ module CloudSesame
|
|
2
2
|
module Query
|
3
3
|
module Domain
|
4
4
|
class Literal
|
5
|
-
include DSL::
|
5
|
+
include DSL::BindCaller
|
6
|
+
include DSL::RangeHelper
|
6
7
|
|
7
8
|
attr_reader :_name, :_options, :_caller
|
8
9
|
|
@@ -11,10 +12,7 @@ module CloudSesame
|
|
11
12
|
@_options = _options
|
12
13
|
@_caller = _caller
|
13
14
|
|
14
|
-
|
15
|
-
value = _caller.instance_variable_get name
|
16
|
-
instance_variable_set name, value
|
17
|
-
end
|
15
|
+
_bind_caller_instance_variables
|
18
16
|
end
|
19
17
|
|
20
18
|
def _eval(&block)
|
@@ -23,16 +21,6 @@ module CloudSesame
|
|
23
21
|
end
|
24
22
|
end
|
25
23
|
|
26
|
-
private
|
27
|
-
|
28
|
-
# ACCESS CALLER'S METHODS
|
29
|
-
# =========================================
|
30
|
-
def method_missing(name, *args, &block)
|
31
|
-
_caller.send(name, *args, &block)
|
32
|
-
rescue NoMethodError
|
33
|
-
super
|
34
|
-
end
|
35
|
-
|
36
24
|
end
|
37
25
|
end
|
38
26
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module CloudSesame
|
2
|
+
module Query
|
3
|
+
module DSL
|
4
|
+
module BindCaller
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
def _bind_caller_instance_variables
|
9
|
+
_caller.instance_variables.each do |name|
|
10
|
+
value = _caller.instance_variable_get name
|
11
|
+
instance_variable_set name, value
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# ACCESS CALLER'S METHODS
|
16
|
+
# =========================================
|
17
|
+
def method_missing(name, *args, &block)
|
18
|
+
_caller.send(name, *args, &block)
|
19
|
+
rescue NoMethodError
|
20
|
+
super
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -4,8 +4,9 @@ module CloudSesame
|
|
4
4
|
module ScopeAccessors
|
5
5
|
|
6
6
|
def scopes(name = nil, *args)
|
7
|
-
defined_scopes = _scope.context[:scopes]
|
8
7
|
return _return if name.nil?
|
8
|
+
|
9
|
+
defined_scopes = _scope.context[:scopes]
|
9
10
|
if defined_scopes && (block = defined_scopes[name.to_sym])
|
10
11
|
instance_exec *args, &block
|
11
12
|
_return
|
@@ -0,0 +1,124 @@
|
|
1
|
+
module CloudSesame
|
2
|
+
module Query
|
3
|
+
module Domain
|
4
|
+
describe Block do
|
5
|
+
|
6
|
+
class Caller
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@test = "hello"
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_method
|
13
|
+
return "test method!!!"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
subject { Block.new(Caller.new, {}) }
|
18
|
+
|
19
|
+
# expect modules to be included
|
20
|
+
[
|
21
|
+
DSL::BlockStyledOperators,
|
22
|
+
DSL::FieldAccessors,
|
23
|
+
DSL::ScopeAccessors,
|
24
|
+
DSL::Operators,
|
25
|
+
DSL::BindCaller
|
26
|
+
].each do |included_module|
|
27
|
+
it "should include #{ included_module }" do
|
28
|
+
expect(Block.included_modules).to include included_module
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'given a caller' do
|
33
|
+
|
34
|
+
it 'should have access to caller\'s instance variables' do
|
35
|
+
expect(subject.instance_variable_get(:@test)).to eq "hello"
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should have access to caller\'s methods' do
|
39
|
+
expect(subject.test_method).to eq "test method!!!"
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#_scopes' do
|
45
|
+
it 'should be default to an empty array' do
|
46
|
+
expect(subject._scopes).to eq []
|
47
|
+
end
|
48
|
+
it 'should not be able to get overrided' do
|
49
|
+
expect{ subject._scopes = [] }.to raise_error(NoMethodError)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#_scope' do
|
54
|
+
context 'when scopes is not empty' do
|
55
|
+
before { subject._scopes << 1 << 2 }
|
56
|
+
it 'should return the last item from _scopes' do
|
57
|
+
expect(subject._scope).to eq 2
|
58
|
+
end
|
59
|
+
end
|
60
|
+
context 'when scopes is empty' do
|
61
|
+
it 'should return nil' do
|
62
|
+
expect(subject._scope).to eq nil
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# def _eval(node, _scope, _return = _scope, &block)
|
68
|
+
# _scopes.push node
|
69
|
+
# instance_eval &block
|
70
|
+
# _scope << node
|
71
|
+
# _scopes.pop
|
72
|
+
# _scope.is_a?(AST::Root) ? _return : node
|
73
|
+
# end
|
74
|
+
describe '#_eval' do
|
75
|
+
|
76
|
+
let(:node) { AST::And.new({}, {}) }
|
77
|
+
let(:scope) { AST::And.new({}, {}) }
|
78
|
+
|
79
|
+
context 'when block is not given' do
|
80
|
+
it 'should raise an error ' do
|
81
|
+
expect{ subject._eval(node, scope) }.to raise_error(ArgumentError)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'when a block is given' do
|
86
|
+
|
87
|
+
subject { Block.new(self, {}) }
|
88
|
+
|
89
|
+
it 'should use itself to evalute the block' do
|
90
|
+
subject._eval(node, scope) { expect(self).to eq subject }
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'should change the _scope in the block to the node passed in' do
|
94
|
+
subject._eval(node, scope) { expect(_scope).to eq node }
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'should set the _scope back to previous scope after _eval' do
|
98
|
+
subject._scopes << :first_scope
|
99
|
+
subject._eval(node, scope) {}
|
100
|
+
expect(subject._scope).to eq :first_scope
|
101
|
+
end
|
102
|
+
|
103
|
+
context 'when _scope is not a root node' do
|
104
|
+
it 'should return the node it self' do
|
105
|
+
expect(subject._eval(node, scope) {}).to eq node
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context 'when _scope is a root node' do
|
110
|
+
it 'should return the _return' do
|
111
|
+
scope = AST::Root.new({}, {})
|
112
|
+
expect(subject._eval(node, scope, :return_object) { }).to eq :return_object
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: CloudSesame
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Chu
|
@@ -21,98 +21,98 @@ dependencies:
|
|
21
21
|
name: aws-sdk
|
22
22
|
requirement: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2'
|
27
27
|
type: :runtime
|
28
28
|
prerelease: false
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '2'
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: activesupport
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.2'
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '3.2'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rspec
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '3'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: pry
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
type: :development
|
70
70
|
prerelease: false
|
71
71
|
version_requirements: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
- !ruby/object:Gem::Dependency
|
77
77
|
name: guard
|
78
78
|
requirement: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
type: :development
|
84
84
|
prerelease: false
|
85
85
|
version_requirements: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - '>='
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
- !ruby/object:Gem::Dependency
|
91
91
|
name: guard-rspec
|
92
92
|
requirement: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
type: :development
|
98
98
|
prerelease: false
|
99
99
|
version_requirements: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - '>='
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
105
|
name: ruby-prof
|
106
106
|
requirement: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
113
|
version_requirements: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - '>='
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
description: AWS CloudSearch Query DSL
|
@@ -121,8 +121,8 @@ executables: []
|
|
121
121
|
extensions: []
|
122
122
|
extra_rdoc_files: []
|
123
123
|
files:
|
124
|
-
-
|
125
|
-
-
|
124
|
+
- .gitignore
|
125
|
+
- .rspec
|
126
126
|
- Gemfile
|
127
127
|
- Gemfile.lock
|
128
128
|
- Guardfile
|
@@ -157,14 +157,15 @@ files:
|
|
157
157
|
- lib/cloud_sesame/query/domain/block.rb
|
158
158
|
- lib/cloud_sesame/query/domain/chaining_block.rb
|
159
159
|
- lib/cloud_sesame/query/domain/literal.rb
|
160
|
-
- lib/cloud_sesame/query/dsl/
|
160
|
+
- lib/cloud_sesame/query/dsl/applied_filter_query.rb
|
161
|
+
- lib/cloud_sesame/query/dsl/bind_caller.rb
|
162
|
+
- lib/cloud_sesame/query/dsl/block_styled_operators.rb
|
161
163
|
- lib/cloud_sesame/query/dsl/field_accessors.rb
|
162
164
|
- lib/cloud_sesame/query/dsl/field_array_methods.rb
|
163
|
-
- lib/cloud_sesame/query/dsl/
|
164
|
-
- lib/cloud_sesame/query/dsl/operator_methods.rb
|
165
|
+
- lib/cloud_sesame/query/dsl/operators.rb
|
165
166
|
- lib/cloud_sesame/query/dsl/page_methods.rb
|
166
167
|
- lib/cloud_sesame/query/dsl/query_methods.rb
|
167
|
-
- lib/cloud_sesame/query/dsl/
|
168
|
+
- lib/cloud_sesame/query/dsl/range_helper.rb
|
168
169
|
- lib/cloud_sesame/query/dsl/response_methods.rb
|
169
170
|
- lib/cloud_sesame/query/dsl/return_methods.rb
|
170
171
|
- lib/cloud_sesame/query/dsl/scope_accessors.rb
|
@@ -196,6 +197,7 @@ files:
|
|
196
197
|
- spec/cloud_sesame/query/ast/root_spec.rb
|
197
198
|
- spec/cloud_sesame/query/ast/single_expression_operator_spec.rb
|
198
199
|
- spec/cloud_sesame/query/builder_spec.rb
|
200
|
+
- spec/cloud_sesame/query/domain/block_spec.rb
|
199
201
|
- spec/cloud_sesame/query/dsl/block_methods_spec.rb
|
200
202
|
- spec/cloud_sesame/query/dsl/field_accessors_spec.rb
|
201
203
|
- spec/cloud_sesame/query/dsl/field_array_methods_spec.rb
|
@@ -222,17 +224,17 @@ require_paths:
|
|
222
224
|
- lib
|
223
225
|
required_ruby_version: !ruby/object:Gem::Requirement
|
224
226
|
requirements:
|
225
|
-
- -
|
227
|
+
- - '>='
|
226
228
|
- !ruby/object:Gem::Version
|
227
229
|
version: '0'
|
228
230
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
229
231
|
requirements:
|
230
|
-
- -
|
232
|
+
- - '>='
|
231
233
|
- !ruby/object:Gem::Version
|
232
234
|
version: '0'
|
233
235
|
requirements: []
|
234
236
|
rubyforge_project:
|
235
|
-
rubygems_version: 2.
|
237
|
+
rubygems_version: 2.4.8
|
236
238
|
signing_key:
|
237
239
|
specification_version: 4
|
238
240
|
summary: AWS CloudSearch Query DSL
|
@@ -246,6 +248,7 @@ test_files:
|
|
246
248
|
- spec/cloud_sesame/query/ast/root_spec.rb
|
247
249
|
- spec/cloud_sesame/query/ast/single_expression_operator_spec.rb
|
248
250
|
- spec/cloud_sesame/query/builder_spec.rb
|
251
|
+
- spec/cloud_sesame/query/domain/block_spec.rb
|
249
252
|
- spec/cloud_sesame/query/dsl/block_methods_spec.rb
|
250
253
|
- spec/cloud_sesame/query/dsl/field_accessors_spec.rb
|
251
254
|
- spec/cloud_sesame/query/dsl/field_array_methods_spec.rb
|