msfl_visitors 1.1.0 → 1.2.0.dev0
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/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
|