msfl_visitors 1.1.0 → 1.2.0.dev0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/msfl_visitors/nodes/query_string.rb +7 -0
- data/lib/msfl_visitors/nodes.rb +1 -0
- data/lib/msfl_visitors/visitor.rb +12 -5
- data/msfl_visitors.gemspec +2 -2
- data/spec/msfl_visitors/visitors/chewy_term_filter_spec.rb +23 -0
- data/spec/msfl_visitors/visitors/es_term_filter_spec.rb +11 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ed725ea60387117e7b2f79638500afce496ddbc
|
4
|
+
data.tar.gz: befef21647b2c75d696cc327d0282ffdabb348f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a620c25080b6167fb821d53dd2f04ce0c394447f731cf295ef7d8e70d930bef8b76507a9c3ea451779597a1c5578210018dd5bad5cbb0963a5834870b8ae0d9
|
7
|
+
data.tar.gz: 3c94d3c259b9668be22c9a937452703a67f75cfaeca3b0804df6421549caa9deb9d1e1a6815e3f78922bcaec02595a00e8bdc8c38a3c1cb236d0955a6813cfe1
|
data/lib/msfl_visitors/nodes.rb
CHANGED
@@ -23,6 +23,7 @@ require_relative 'nodes/match'
|
|
23
23
|
require_relative 'nodes/named_value'
|
24
24
|
require_relative 'nodes/number'
|
25
25
|
require_relative 'nodes/partial'
|
26
|
+
require_relative 'nodes/query_string'
|
26
27
|
require_relative 'nodes/range_value'
|
27
28
|
require_relative 'nodes/regex'
|
28
29
|
require_relative 'nodes/set'
|
@@ -81,6 +81,9 @@ module MSFLVisitors
|
|
81
81
|
when Nodes::Number, Nodes::Boolean
|
82
82
|
node.value
|
83
83
|
|
84
|
+
when Nodes::QueryString
|
85
|
+
%(q(query_string:{default_field:"#{node.left.accept(visitor)}", query:#{node.right.accept(visitor)}}))
|
86
|
+
|
84
87
|
when Nodes::Match
|
85
88
|
if node.right.is_a? Nodes::Set
|
86
89
|
regex = node.right.contents.map { |right_child| MSFLVisitors::Nodes::Regex.new(right_child.value.to_s).accept(visitor)[15..-6] }.join('|')
|
@@ -137,6 +140,8 @@ module MSFLVisitors
|
|
137
140
|
Nodes::GreaterThanEqual => :gte,
|
138
141
|
Nodes::LessThan => :lt,
|
139
142
|
Nodes::LessThanEqual => :lte,
|
143
|
+
Nodes::Equal => :eq,
|
144
|
+
Nodes::QueryString => :query_string,
|
140
145
|
}
|
141
146
|
|
142
147
|
def visit(node)
|
@@ -154,9 +159,6 @@ module MSFLVisitors
|
|
154
159
|
# return the result of the visitation
|
155
160
|
[agg_criteria_clause, given_clause]
|
156
161
|
|
157
|
-
when Nodes::Equal
|
158
|
-
{ agg_field_name: node.left.accept(visitor), operator: :eq, test_value: node.right.accept(visitor) }
|
159
|
-
|
160
162
|
when Nodes::Match
|
161
163
|
if node.right.is_a? Nodes::Set
|
162
164
|
regex = node.right.contents.map { |right_child| MSFLVisitors::Nodes::Regex.new(right_child.value.to_s).accept(visitor) }.join('|')
|
@@ -181,7 +183,9 @@ module MSFLVisitors
|
|
181
183
|
when Nodes::GreaterThan,
|
182
184
|
Nodes::GreaterThanEqual,
|
183
185
|
Nodes::LessThan,
|
184
|
-
Nodes::LessThanEqual
|
186
|
+
Nodes::LessThanEqual,
|
187
|
+
Nodes::Equal,
|
188
|
+
Nodes::QueryString
|
185
189
|
{ agg_field_name: node.left.accept(visitor), operator: RANGE_OPERATORS[node.class], test_value: node.right.accept(visitor) }
|
186
190
|
when Nodes::Given
|
187
191
|
[:filter, node.contents.first.accept(visitor)]
|
@@ -234,7 +238,10 @@ module MSFLVisitors
|
|
234
238
|
|
235
239
|
when Nodes::Equal
|
236
240
|
{ term: { node.left.accept(visitor) => node.right.accept(visitor) } }
|
237
|
-
|
241
|
+
|
242
|
+
when Nodes::QueryString
|
243
|
+
{ query: { query_string: { default_field: node.left.accept(visitor).to_s, query: node.right.accept(visitor).to_s }}}
|
244
|
+
|
238
245
|
when Nodes::Field
|
239
246
|
node.value.to_sym
|
240
247
|
when Nodes::Date, Nodes::Time
|
data/msfl_visitors.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'msfl_visitors'
|
3
|
-
s.version = '1.
|
4
|
-
s.date = '2015-
|
3
|
+
s.version = '1.2.0.dev0'
|
4
|
+
s.date = '2015-06-19'
|
5
5
|
s.summary = "Convert MSFL to other forms"
|
6
6
|
s.description = "Visitor pattern approach to converting MSFL to other forms."
|
7
7
|
s.authors = ["Courtland Caldwell"]
|
@@ -391,6 +391,29 @@ describe MSFLVisitors::Visitor do
|
|
391
391
|
end
|
392
392
|
end
|
393
393
|
|
394
|
+
describe "a QueryString node" do
|
395
|
+
|
396
|
+
let(:node) { MSFLVisitors::Nodes::QueryString.new left, right }
|
397
|
+
|
398
|
+
let(:right) { MSFLVisitors::Nodes::Word.new "applesauce" }
|
399
|
+
|
400
|
+
context "when using the TermFilter visitor" do
|
401
|
+
|
402
|
+
it %(returns: 'q(query_string:{default_field:"lhs", query:"applesauce"})') do
|
403
|
+
expect(result).to eq %(q(query_string:{default_field:"lhs", query:"applesauce"}))
|
404
|
+
end
|
405
|
+
end
|
406
|
+
|
407
|
+
context "when using the Aggregations visitor" do
|
408
|
+
|
409
|
+
before { visitor.mode = :aggregations }
|
410
|
+
|
411
|
+
it %(returns: { agg_field_name: :lhs, operator: :query_string, test_value:"applesauce") do
|
412
|
+
expect(result).to eq({agg_field_name: :lhs, operator: :query_string, test_value: "applesauce"})
|
413
|
+
end
|
414
|
+
end
|
415
|
+
end
|
416
|
+
|
394
417
|
describe "a Filter node" do
|
395
418
|
|
396
419
|
let(:node) { MSFLVisitors::Nodes::Filter.new filtered_nodes }
|
@@ -201,6 +201,17 @@ describe MSFLVisitors::Visitor do
|
|
201
201
|
end
|
202
202
|
end
|
203
203
|
|
204
|
+
describe "a QueryString node" do
|
205
|
+
|
206
|
+
let(:node) { MSFLVisitors::Nodes::QueryString.new left, right }
|
207
|
+
|
208
|
+
let(:right) { MSFLVisitors::Nodes::Word.new "happy" }
|
209
|
+
|
210
|
+
it %(returns: { query: { query_string: { default_field: "lhs", query: "happy" } } }) do
|
211
|
+
expect(result).to eq({ query: { query_string: { default_field: "lhs", query: "happy" } } })
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
204
215
|
describe "a Filter node" do
|
205
216
|
|
206
217
|
let(:node) { MSFLVisitors::Nodes::Filter.new filtered_nodes }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: msfl_visitors
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0.dev0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Courtland Caldwell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msfl
|
@@ -139,6 +139,7 @@ files:
|
|
139
139
|
- lib/msfl_visitors/nodes/named_value.rb
|
140
140
|
- lib/msfl_visitors/nodes/number.rb
|
141
141
|
- lib/msfl_visitors/nodes/partial.rb
|
142
|
+
- lib/msfl_visitors/nodes/query_string.rb
|
142
143
|
- lib/msfl_visitors/nodes/range_value.rb
|
143
144
|
- lib/msfl_visitors/nodes/regex.rb
|
144
145
|
- lib/msfl_visitors/nodes/set.rb
|
@@ -172,9 +173,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
172
173
|
version: '0'
|
173
174
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
175
|
requirements:
|
175
|
-
- - "
|
176
|
+
- - ">"
|
176
177
|
- !ruby/object:Gem::Version
|
177
|
-
version:
|
178
|
+
version: 1.3.1
|
178
179
|
requirements: []
|
179
180
|
rubyforge_project:
|
180
181
|
rubygems_version: 2.2.2
|