CloudSesame 0.4.6 → 0.5.0

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +4 -1
  3. data/cloud_sesame.gemspec +2 -2
  4. data/lib/cloud_sesame/domain/base.rb +40 -30
  5. data/lib/cloud_sesame/query/ast/field_array.rb +4 -5
  6. data/lib/cloud_sesame/query/ast/literal.rb +11 -12
  7. data/lib/cloud_sesame/query/ast/multi_expression_operator.rb +4 -9
  8. data/lib/cloud_sesame/query/ast/near.rb +3 -1
  9. data/lib/cloud_sesame/query/ast/not.rb +3 -1
  10. data/lib/cloud_sesame/query/ast/root.rb +1 -1
  11. data/lib/cloud_sesame/query/ast/single_expression_operator.rb +3 -3
  12. data/lib/cloud_sesame/query/builder.rb +20 -12
  13. data/lib/cloud_sesame/query/domain/block.rb +65 -0
  14. data/lib/cloud_sesame/query/domain/chaining_block.rb +44 -0
  15. data/lib/cloud_sesame/query/domain/literal.rb +39 -0
  16. data/lib/cloud_sesame/query/dsl/block_methods.rb +6 -27
  17. data/lib/cloud_sesame/query/dsl/field_accessors.rb +24 -0
  18. data/lib/cloud_sesame/query/dsl/field_array_methods.rb +5 -9
  19. data/lib/cloud_sesame/query/dsl/filter_query_methods.rb +3 -3
  20. data/lib/cloud_sesame/query/dsl/operator_methods.rb +8 -15
  21. data/lib/cloud_sesame/query/dsl/range_methods.rb +4 -4
  22. data/lib/cloud_sesame/query/dsl/response_methods.rb +1 -1
  23. data/lib/cloud_sesame/query/dsl/scope_accessors.rb +28 -0
  24. data/lib/cloud_sesame/query/error/scope_not_defined.rb +8 -0
  25. data/lib/cloud_sesame/query/scope.rb +21 -0
  26. data/lib/cloud_sesame.rb +14 -7
  27. data/spec/cloud_sesame/query/ast/single_expression_operator_spec.rb +1 -1
  28. data/spec/cloud_sesame/query/dsl/block_methods_spec.rb +54 -70
  29. data/spec/cloud_sesame/query/dsl/{field_methods_spec.rb → field_accessors_spec.rb} +1 -1
  30. data/spec/cloud_sesame_spec.rb +35 -22
  31. metadata +30 -34
  32. data/lib/cloud_sesame/query/ast/block_chaining_relation.rb +0 -30
  33. data/lib/cloud_sesame/query/dsl/base.rb +0 -27
  34. data/lib/cloud_sesame/query/dsl/block_chaining_methods.rb +0 -26
  35. data/lib/cloud_sesame/query/dsl/field_methods.rb +0 -16
  36. data/lib/cloud_sesame/query/dsl/scope_methods.rb +0 -33
  37. data/spec/cloud_sesame/query/ast/block_chaining_relation_spec.rb +0 -44
  38. data/spec/cloud_sesame/query/dsl/base_spec.rb +0 -31
  39. data/spec/cloud_sesame/query/dsl/block_chaining_methods_spec.rb +0 -64
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.4.6
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Chu
@@ -15,104 +15,104 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2016-01-20 00:00:00.000000000 Z
18
+ date: 2016-02-01 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
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
- - .gitignore
125
- - .rspec
124
+ - ".gitignore"
125
+ - ".rspec"
126
126
  - Gemfile
127
127
  - Gemfile.lock
128
128
  - Guardfile
@@ -137,7 +137,6 @@ files:
137
137
  - lib/cloud_sesame/domain/config.rb
138
138
  - lib/cloud_sesame/domain/context.rb
139
139
  - lib/cloud_sesame/query/ast/and.rb
140
- - lib/cloud_sesame/query/ast/block_chaining_relation.rb
141
140
  - lib/cloud_sesame/query/ast/date_value.rb
142
141
  - lib/cloud_sesame/query/ast/field_array.rb
143
142
  - lib/cloud_sesame/query/ast/literal.rb
@@ -155,11 +154,12 @@ files:
155
154
  - lib/cloud_sesame/query/ast/term.rb
156
155
  - lib/cloud_sesame/query/ast/value.rb
157
156
  - lib/cloud_sesame/query/builder.rb
158
- - lib/cloud_sesame/query/dsl/base.rb
159
- - lib/cloud_sesame/query/dsl/block_chaining_methods.rb
157
+ - lib/cloud_sesame/query/domain/block.rb
158
+ - lib/cloud_sesame/query/domain/chaining_block.rb
159
+ - lib/cloud_sesame/query/domain/literal.rb
160
160
  - lib/cloud_sesame/query/dsl/block_methods.rb
161
+ - lib/cloud_sesame/query/dsl/field_accessors.rb
161
162
  - lib/cloud_sesame/query/dsl/field_array_methods.rb
162
- - lib/cloud_sesame/query/dsl/field_methods.rb
163
163
  - lib/cloud_sesame/query/dsl/filter_query_methods.rb
164
164
  - lib/cloud_sesame/query/dsl/operator_methods.rb
165
165
  - lib/cloud_sesame/query/dsl/page_methods.rb
@@ -167,11 +167,12 @@ files:
167
167
  - lib/cloud_sesame/query/dsl/range_methods.rb
168
168
  - lib/cloud_sesame/query/dsl/response_methods.rb
169
169
  - lib/cloud_sesame/query/dsl/return_methods.rb
170
- - lib/cloud_sesame/query/dsl/scope_methods.rb
170
+ - lib/cloud_sesame/query/dsl/scope_accessors.rb
171
171
  - lib/cloud_sesame/query/dsl/sort_methods.rb
172
172
  - lib/cloud_sesame/query/error/invalid_syntax.rb
173
173
  - lib/cloud_sesame/query/error/missing_operator_symbol.rb
174
174
  - lib/cloud_sesame/query/error/missing_query.rb
175
+ - lib/cloud_sesame/query/error/scope_not_defined.rb
175
176
  - lib/cloud_sesame/query/node/abstract.rb
176
177
  - lib/cloud_sesame/query/node/facet.rb
177
178
  - lib/cloud_sesame/query/node/filter_query.rb
@@ -184,22 +185,20 @@ files:
184
185
  - lib/cloud_sesame/query/node/request.rb
185
186
  - lib/cloud_sesame/query/node/return.rb
186
187
  - lib/cloud_sesame/query/node/sort.rb
188
+ - lib/cloud_sesame/query/scope.rb
187
189
  - profiler.rb
188
190
  - spec/abstract_object_spec.rb
189
191
  - spec/cloud_sesame/domain/base_spec.rb
190
192
  - spec/cloud_sesame/query/ast/and_spec.rb
191
- - spec/cloud_sesame/query/ast/block_chaining_relation_spec.rb
192
193
  - spec/cloud_sesame/query/ast/multi_expression_operator_spec.rb
193
194
  - spec/cloud_sesame/query/ast/operator_spec.rb
194
195
  - spec/cloud_sesame/query/ast/or_spec.rb
195
196
  - spec/cloud_sesame/query/ast/root_spec.rb
196
197
  - spec/cloud_sesame/query/ast/single_expression_operator_spec.rb
197
198
  - spec/cloud_sesame/query/builder_spec.rb
198
- - spec/cloud_sesame/query/dsl/base_spec.rb
199
- - spec/cloud_sesame/query/dsl/block_chaining_methods_spec.rb
200
199
  - spec/cloud_sesame/query/dsl/block_methods_spec.rb
200
+ - spec/cloud_sesame/query/dsl/field_accessors_spec.rb
201
201
  - spec/cloud_sesame/query/dsl/field_array_methods_spec.rb
202
- - spec/cloud_sesame/query/dsl/field_methods_spec.rb
203
202
  - spec/cloud_sesame/query/dsl_spec.rb
204
203
  - spec/cloud_sesame/query/node/abstract_spec.rb
205
204
  - spec/cloud_sesame/query/node/facet_spec.rb
@@ -223,17 +222,17 @@ require_paths:
223
222
  - lib
224
223
  required_ruby_version: !ruby/object:Gem::Requirement
225
224
  requirements:
226
- - - '>='
225
+ - - ">="
227
226
  - !ruby/object:Gem::Version
228
227
  version: '0'
229
228
  required_rubygems_version: !ruby/object:Gem::Requirement
230
229
  requirements:
231
- - - '>='
230
+ - - ">="
232
231
  - !ruby/object:Gem::Version
233
232
  version: '0'
234
233
  requirements: []
235
234
  rubyforge_project:
236
- rubygems_version: 2.4.8
235
+ rubygems_version: 2.5.1
237
236
  signing_key:
238
237
  specification_version: 4
239
238
  summary: AWS CloudSearch Query DSL
@@ -241,18 +240,15 @@ test_files:
241
240
  - spec/abstract_object_spec.rb
242
241
  - spec/cloud_sesame/domain/base_spec.rb
243
242
  - spec/cloud_sesame/query/ast/and_spec.rb
244
- - spec/cloud_sesame/query/ast/block_chaining_relation_spec.rb
245
243
  - spec/cloud_sesame/query/ast/multi_expression_operator_spec.rb
246
244
  - spec/cloud_sesame/query/ast/operator_spec.rb
247
245
  - spec/cloud_sesame/query/ast/or_spec.rb
248
246
  - spec/cloud_sesame/query/ast/root_spec.rb
249
247
  - spec/cloud_sesame/query/ast/single_expression_operator_spec.rb
250
248
  - spec/cloud_sesame/query/builder_spec.rb
251
- - spec/cloud_sesame/query/dsl/base_spec.rb
252
- - spec/cloud_sesame/query/dsl/block_chaining_methods_spec.rb
253
249
  - spec/cloud_sesame/query/dsl/block_methods_spec.rb
250
+ - spec/cloud_sesame/query/dsl/field_accessors_spec.rb
254
251
  - spec/cloud_sesame/query/dsl/field_array_methods_spec.rb
255
- - spec/cloud_sesame/query/dsl/field_methods_spec.rb
256
252
  - spec/cloud_sesame/query/dsl_spec.rb
257
253
  - spec/cloud_sesame/query/node/abstract_spec.rb
258
254
  - spec/cloud_sesame/query/node/facet_spec.rb
@@ -1,30 +0,0 @@
1
- module CloudSesame
2
- module Query
3
- module AST
4
- class BlockChainingRelation
5
- include DSL::BlockChainingMethods
6
-
7
- attr_reader :orphan_node
8
-
9
- def initialize(dsl_scope, dsl_return, orphan_node)
10
- @dsl_scope = dsl_scope
11
- @dsl_return = dsl_return
12
- @orphan_node = orphan_node
13
- end
14
-
15
- def dsl_scope
16
- @dsl_scope
17
- end
18
-
19
- def dsl_context
20
- dsl_scope.context
21
- end
22
-
23
- def dsl_return(node = nil)
24
- @dsl_scope.is_a?(Root) || !node ? @dsl_return : node
25
- end
26
-
27
- end
28
- end
29
- end
30
- end
@@ -1,27 +0,0 @@
1
- module CloudSesame
2
- module Query
3
- module DSL
4
- module Base
5
-
6
- private
7
-
8
- def dsl_scope
9
- self
10
- end
11
-
12
- def dsl_context
13
- dsl_scope.context
14
- end
15
-
16
- def dsl_caller
17
- dsl_context[:caller]
18
- end
19
-
20
- def dsl_return(node = nil)
21
- node || dsl_scope
22
- end
23
-
24
- end
25
- end
26
- end
27
- end
@@ -1,26 +0,0 @@
1
- module CloudSesame
2
- module Query
3
- module DSL
4
- module BlockChainingMethods
5
-
6
- # CLAUSE: NOT
7
- # =========================================
8
- def not(options = {}, &block)
9
- raise missing_block unless block_given?
10
- node = AST::Not.new(dsl_context, options)
11
- orphan_node.instance_eval &block
12
- node << orphan_node
13
- dsl_scope << node
14
- dsl_return node
15
- end
16
-
17
- private
18
-
19
- def missing_block
20
- Error::InvalidSyntax.new("#{ orphan_node.class::SYMBOL }.not requires a block")
21
- end
22
-
23
- end
24
- end
25
- end
26
- end
@@ -1,16 +0,0 @@
1
- module CloudSesame
2
- module Query
3
- module DSL
4
- module FieldMethods
5
-
6
- def literal(name, *values)
7
- name = name.to_sym
8
- dsl_scope.children.field = name
9
- dsl_scope.children.dsl_return = dsl_return
10
- dsl_scope.children.insert values
11
- end
12
-
13
- end
14
- end
15
- end
16
- end
@@ -1,33 +0,0 @@
1
- module CloudSesame
2
- module Query
3
- module DSL
4
- module ScopeMethods
5
-
6
- def scopes(name = nil, *args)
7
- if (name && context_scopes && (callback = context_scopes[name])) || name.nil?
8
- instance_exec(*args, &callback) if callback
9
- dsl_return
10
- else
11
- raise NoMethodError, "scope[#{ name }] does not exist"
12
- end
13
- end
14
-
15
- private
16
-
17
- def context_scopes
18
- dsl_context[:scopes]
19
- end
20
-
21
- def method_missing(name, *args, &block)
22
- if context_scopes && (callback = context_scopes[name])
23
- instance_exec *args, &callback
24
- dsl_return
25
- else
26
- super
27
- end
28
- end
29
-
30
- end
31
- end
32
- end
33
- end
@@ -1,44 +0,0 @@
1
- module CloudSesame
2
- module Query
3
- module AST
4
- describe BlockChainingRelation do
5
- let(:context) { {} }
6
- let(:dsl_scope) { OpenStruct.new context: context }
7
- let(:dsl_return) { OpenStruct.new context: context }
8
- let(:orphan_node) { OpenStruct.new }
9
- subject { BlockChainingRelation.new dsl_scope, dsl_return, orphan_node }
10
-
11
- describe '#dsl_context' do
12
- it 'should return dsl_scope context' do
13
- expect(subject.dsl_scope).to receive(:context)
14
- subject.dsl_context
15
- end
16
- end
17
-
18
- describe '#dsl_return' do
19
- context 'when dsl return is a root node' do
20
- let(:dsl_scope) { Root.new(context) }
21
- it 'should return the root' do
22
- expect(subject.dsl_return).to eq dsl_return
23
- end
24
- end
25
- context 'when dsl return is not a root node' do
26
- context 'and node is passed in' do
27
- let(:node) { OpenStruct.new }
28
- it 'should return the node' do
29
- expect(subject.dsl_return node).to eq node
30
- end
31
- end
32
- context 'and node is not passed in' do
33
- it 'should return the node' do
34
- expect(subject.dsl_return).to eq dsl_return
35
- end
36
- end
37
- end
38
-
39
- end
40
-
41
- end
42
- end
43
- end
44
- end
@@ -1,31 +0,0 @@
1
- module CloudSesame
2
- module Query
3
- module DSL
4
- describe Base do
5
-
6
- class TestClass
7
- include Base
8
- end
9
-
10
- subject { TestClass.new }
11
-
12
- shared_examples 'return self instance' do
13
- it 'should return itself' do
14
- expect(result).to eq subject
15
- end
16
- end
17
-
18
- describe '#method_return' do
19
- let(:result) { subject.send(:dsl_return) }
20
- include_examples 'return self instance'
21
- end
22
-
23
- describe '#method_scope' do
24
- let(:result) { subject.send(:dsl_scope) }
25
- include_examples 'return self instance'
26
- end
27
-
28
- end
29
- end
30
- end
31
- end
@@ -1,64 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module CloudSesame
4
- module Query
5
- module DSL
6
- describe BlockChainingMethods do
7
-
8
- # Setup Test Class
9
- class Product
10
- include CloudSesame
11
- define_cloudsearch {}
12
- end
13
-
14
- subject(:cloudsearch) { Product.cloudsearch.builder }
15
-
16
- # NOT
17
- # =======================================
18
- describe '#not' do
19
- let(:node_class) { AST::Not }
20
-
21
- context 'when not called after an operator' do
22
- it 'should raise an error' do
23
- expect{ subject.not }.to raise_error NoMethodError
24
- end
25
- end
26
- context 'when called after an multi expression operator method call' do
27
- context 'and not block is given' do
28
- it 'should raise an error' do
29
- expect{ subject.or.not }.to raise_error Error::InvalidSyntax
30
- end
31
- end
32
- context 'and block is given' do
33
- it 'should create a NOT node' do
34
- expect(node_class).to receive(:new).and_call_original
35
- subject.and.not {}
36
- end
37
- it 'should have the operator node as child' do
38
- subject.and.not {}
39
- expect(subject.request.filter_query.root.children[0].child ).to be_kind_of(AST::And)
40
- end
41
- it 'should belong to the dsl scope' do
42
- expect{ subject.and.not {} }.to change{ subject.request.filter_query.root.children[0] }.from(nil).to be_kind_of(node_class)
43
- end
44
- context 'from root' do
45
- it 'should return the cloudsearch domain' do
46
- expect(subject.and.not {}).to eq subject
47
- end
48
- end
49
- context 'from inside of nested block' do
50
- it 'should return the Not node itself' do
51
- node = nil
52
- subject.and { node = or!.not {} }
53
- expect(node).to be_kind_of(node_class)
54
- end
55
- end
56
- end
57
- end
58
-
59
- end
60
-
61
- end
62
- end
63
- end
64
- end