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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 59b0a99aa0756f6df016c0a83b95f26f1d0dea11
4
- data.tar.gz: 15b2059bbd5815cd7ee512acbaa06c48804c2270
3
+ metadata.gz: 9ed725ea60387117e7b2f79638500afce496ddbc
4
+ data.tar.gz: befef21647b2c75d696cc327d0282ffdabb348f9
5
5
  SHA512:
6
- metadata.gz: fa4bede1856b58d2fb1ad36d9856c935a71a83f988f06a28c9cb3653dd2bb76dac4d45448c7bd71b995c3d8910434f3b2dee04fae1907f83ec301ac62d9a9d93
7
- data.tar.gz: bf4b42e0892f2a006c9c3b7a42e9dfe9475f6f83c614ed2e068fa4787c6d2e60074232324db56ddb181c471ec0c9c8d988de32dc8a3f8ef7eec355fc33fff4fe
6
+ metadata.gz: 9a620c25080b6167fb821d53dd2f04ce0c394447f731cf295ef7d8e70d930bef8b76507a9c3ea451779597a1c5578210018dd5bad5cbb0963a5834870b8ae0d9
7
+ data.tar.gz: 3c94d3c259b9668be22c9a937452703a67f75cfaeca3b0804df6421549caa9deb9d1e1a6815e3f78922bcaec02595a00e8bdc8c38a3c1cb236d0955a6813cfe1
@@ -0,0 +1,7 @@
1
+ require_relative 'comparison'
2
+ module MSFLVisitors
3
+ module Nodes
4
+ class QueryString < Comparison
5
+ end
6
+ end
7
+ end
@@ -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
- # [{ clause: }]
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
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'msfl_visitors'
3
- s.version = '1.1.0'
4
- s.date = '2015-05-28'
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.1.0
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-05-28 00:00:00.000000000 Z
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: '0'
178
+ version: 1.3.1
178
179
  requirements: []
179
180
  rubyforge_project:
180
181
  rubygems_version: 2.2.2