sparkql 0.1.8 → 0.3.2

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.
@@ -21,6 +21,10 @@ class ParserTest < Test::Unit::TestCase
21
21
  assert_equal 10.to_s, expression.first[:value]
22
22
  assert_equal 11.to_s, expression.last[:value]
23
23
  assert_equal 'Or', expression.last[:conjunction]
24
+ expression = @parser.parse('Test Eq 10 Not Test Ne 11')
25
+ assert_equal 10.to_s, expression.first[:value]
26
+ assert_equal 11.to_s, expression.last[:value]
27
+ assert_equal 'Not', expression.last[:conjunction]
24
28
  end
25
29
 
26
30
  def test_tough_conjunction
@@ -28,6 +32,7 @@ class ParserTest < Test::Unit::TestCase
28
32
  expression = @parser.parse('Test Eq 10 Or Test Ne 11 And Test Ne 9')
29
33
  assert_equal 9.to_s, expression.last[:value]
30
34
  assert_equal 'And', expression.last[:conjunction]
35
+ assert_equal '9', expression.last[:condition]
31
36
  end
32
37
 
33
38
  def test_grouping
@@ -48,6 +53,7 @@ class ParserTest < Test::Unit::TestCase
48
53
  @parser = Parser.new
49
54
  expression = @parser.parse('(Test Eq 10,11,12)').first
50
55
  assert_equal [10.to_s,11.to_s,12.to_s], expression[:value]
56
+ assert_equal '10,11,12', expression[:condition]
51
57
  end
52
58
 
53
59
  def parse(q,v)
@@ -69,6 +75,14 @@ class ParserTest < Test::Unit::TestCase
69
75
  [0,1,1,0,0]
70
76
  )
71
77
  end
78
+
79
+ def test_nesting_and_functions
80
+ # Nesting with a function thrown in. Yes, this was a problem.
81
+ assert_nesting(
82
+ "City Eq 'Fargo' Or (BathsFull Eq 1 And Location Eq rectangle('35.12 -68.33, 35.13 -68.32')) Or Location Eq radius('35.12 -68.33',10.0) Or City Eq 'Dilworth'",
83
+ [0,1,1,0,0]
84
+ )
85
+ end
72
86
 
73
87
  def test_multilevel_nesting
74
88
  assert_nesting(
@@ -111,6 +125,26 @@ class ParserTest < Test::Unit::TestCase
111
125
  assert @parser.fatal_errors?, "Should be nil: #{@parser.errors.inspect}"
112
126
  end
113
127
 
128
+ def test_function_months
129
+ dt = DateTime.new(2014, 1, 5, 0, 0, 0, 0)
130
+ DateTime.expects(:now).returns(dt)
131
+ @parser = Parser.new
132
+ expressions = @parser.parse "ExpirationDate Gt months(-3)"
133
+ assert !@parser.errors?, "errors :( #{@parser.errors.inspect}"
134
+ assert_equal "2013-10-05", expressions.first[:value]
135
+ assert_equal 'months(-3)', expressions.first[:condition]
136
+ end
137
+
138
+ def test_function_years
139
+ dt = DateTime.new(2014, 1, 5, 0, 0, 0, 0)
140
+ DateTime.expects(:now).returns(dt)
141
+ @parser = Parser.new
142
+ expressions = @parser.parse "SoldDate Lt years(2)"
143
+ assert !@parser.errors?, "errors :( #{@parser.errors.inspect}"
144
+ assert_equal "2016-01-05", expressions.first[:value]
145
+ assert_equal 'years(2)', expressions.first[:condition]
146
+ end
147
+
114
148
  def test_function_days
115
149
  d = Date.today
116
150
  dt = DateTime.new(d.year, d.month,d.day, 0,0,0, DateTime.now.offset)
@@ -119,6 +153,8 @@ class ParserTest < Test::Unit::TestCase
119
153
  @parser = Parser.new
120
154
  expressions = @parser.parse(filter)
121
155
  assert !@parser.errors?, "errors #{@parser.errors.inspect}"
156
+ assert_equal 'days(-7)', expressions.first[:condition]
157
+
122
158
  test_time = Time.parse(expressions.first[:value])
123
159
 
124
160
  assert (-605000 < test_time - start && -604000 > test_time - start), "Time range off by more than five seconds #{test_time - start} '#{test_time} - #{start}'"
@@ -130,10 +166,135 @@ class ParserTest < Test::Unit::TestCase
130
166
  @parser = Parser.new
131
167
  expressions = @parser.parse(filter)
132
168
  assert !@parser.errors?, "errors #{@parser.errors.inspect}"
169
+ assert_equal 'now()', expressions.first[:condition]
133
170
  test_time = Time.parse(expressions.first[:value])
134
171
  assert 5 > test_time - start, "Time range off by more than five seconds #{test_time - start}"
135
172
  assert -5 < test_time - start, "Time range off by more than five seconds #{test_time - start}"
136
173
  end
174
+
175
+ test "function data preserved in expression" do
176
+ filter = "OriginalEntryTimestamp Ge days(-7)"
177
+ @parser = Parser.new
178
+ expressions = @parser.parse(filter)
179
+ assert_equal 'days', expressions.first[:function_name]
180
+ assert_equal 'days(-7)', expressions.first[:condition]
181
+ assert_equal([-7], expressions.first[:function_parameters])
182
+ end
183
+
184
+ test "function rangeable " do
185
+ filter = "OriginalEntryTimestamp Bt days(-7),days(-1)"
186
+ @parser = Parser.new
187
+ expressions = @parser.parse(filter)
188
+ assert_equal(2, expressions.first[:value].size)
189
+ assert_equal 'days(-7),days(-1)', expressions.first[:condition]
190
+ end
191
+
192
+ test "mixed rangeable " do
193
+ filter = "OriginalEntryTimestamp Bt days(-7),2013-07-26"
194
+ @parser = Parser.new
195
+ expressions = @parser.parse(filter)
196
+ assert_equal(2, expressions.first[:value].size)
197
+ assert_equal("2013-07-26", expressions.first[:value].last)
198
+ assert_equal 'days(-7),2013-07-26', expressions.first[:condition]
199
+ end
200
+
201
+ test "function list" do
202
+ filter = "OriginalEntryTimestamp Eq days(-1),days(-7),days(-30)"
203
+ @parser = Parser.new
204
+ expressions = @parser.parse(filter)
205
+ assert_equal(3, expressions.first[:value].size)
206
+ assert_equal 'days(-1),days(-7),days(-30)', expressions.first[:condition]
207
+ end
208
+
209
+ test "mixed list" do
210
+ # TODO This is an unrealistic example. We need number functions or support
211
+ # for dates in lists
212
+ filter = "OriginalEntryTimestamp Eq 2014,days(-7)"
213
+ @parser = Parser.new
214
+ expressions = @parser.parse(filter)
215
+ assert_equal(2, expressions.first[:value].size)
216
+ assert_equal("2014", expressions.first[:value].first)
217
+ assert_equal '2014,days(-7)', expressions.first[:condition]
218
+ end
219
+
220
+
221
+ test "allow timezone offsets" do
222
+ values = [
223
+ "2013-07-26T10:22",
224
+ "2013-07-26T10:22Z",
225
+ "2013-07-26T10:22+01:00",
226
+ "2013-07-26T10:22:15+01:00",
227
+ "2013-07-26T10:22:15.1-01:00",
228
+ "2013-07-26T10:22:15.11+0100",
229
+ "2013-07-26T10:22:15.111-0100",
230
+ "2013-07-26T10:22:15.1111Z",
231
+ "2013-07-26T10:22:15.11111+01:00",
232
+ "2013-07-26T10:22:15.111111+01:00"
233
+ ]
234
+ values.each do |value|
235
+ filter = "DatetimeField Eq #{value}"
236
+ @parser = Parser.new
237
+ expressions = @parser.parse(filter)
238
+ assert_not_nil expressions, "#{value} failed"
239
+ assert_equal expressions.first[:value], value, "#{value} failed"
240
+ end
241
+ end
242
+
243
+ test "Location Eq polygon()" do
244
+ filter = "Location Eq polygon('35.12 -68.33, 35.13 -68.33, 35.13 -68.32, 35.12 -68.32')"
245
+ @parser = Parser.new
246
+ expressions = @parser.parse(filter)
247
+ assert !@parser.errors?, "errors #{@parser.errors.inspect}"
248
+ assert_equal "polygon('35.12 -68.33, 35.13 -68.33, 35.13 -68.32, 35.12 -68.32')", expressions.first[:condition]
249
+ assert_equal :shape, expressions.first[:type]
250
+ assert_equal [[-68.33, 35.12], [-68.33, 35.13], [-68.32,35.13], [-68.32,35.12],[-68.33, 35.12]], expressions.first[:value].to_coordinates.first, "#{expressions.first[:value].inspect} "
251
+ end
252
+
253
+ test "Location Eq linestring()" do
254
+ filter = "Location Eq linestring('35.12 -68.33, 35.13 -68.33')"
255
+ @parser = Parser.new
256
+ expressions = @parser.parse(filter)
257
+ assert !@parser.errors?, "errors #{@parser.errors.inspect}"
258
+ assert_equal "linestring('35.12 -68.33, 35.13 -68.33')", expressions.first[:condition]
259
+ assert_equal :shape, expressions.first[:type]
260
+ assert_equal [[-68.33, 35.12], [-68.33, 35.13]], expressions.first[:value].to_coordinates, "#{expressions.first[:value].inspect} "
261
+
262
+ end
263
+
264
+ test "Location Eq rectangle()" do
265
+ filter = "Location Eq rectangle('35.12 -68.33, 35.13 -68.32')"
266
+ @parser = Parser.new
267
+ expressions = @parser.parse(filter)
268
+ assert !@parser.errors?, "errors #{@parser.errors.inspect}"
269
+ assert_equal :shape, expressions.first[:type]
270
+ assert_equal [[-68.33,35.12], [-68.32,35.12], [-68.32,35.13], [-68.33,35.13], [-68.33,35.12]], expressions.first[:value].to_coordinates.first, "#{expressions.first[:value].inspect} "
271
+ end
272
+
273
+ test "Location Eq radius()" do
274
+ # This exposed a funny nesting limit problem FUN!
275
+ filter = "Location Eq radius('35.12 -68.33',1.0)"
276
+ @parser = Parser.new
277
+ expressions = @parser.parse(filter)
278
+ assert !@parser.errors?, "errors #{@parser.errors.inspect}"
279
+ assert_equal :shape, expressions.first[:type]
280
+ assert_equal [-68.33, 35.12], expressions.first[:value].center.to_coordinates, "#{expressions.first[:value].inspect} "
281
+ assert_equal 1.0, expressions.first[:value].radius, "#{expressions.first[:value].inspect} "
282
+ end
283
+
284
+ test "Location eq radius() error on invalid syntax" do
285
+ filter = "Location Eq radius('35.12,-68.33',1.0)"
286
+ @parser = Parser.new
287
+ expressions = @parser.parse(filter)
288
+ assert @parser.errors?, "Parser error expected due to comma between radius points"
289
+ end
290
+
291
+ test "Location ALL TOGETHER NOW" do
292
+ filter = "Location Eq linestring('35.12 -68.33, 35.13 -68.33') And Location Eq radius('35.12 -68.33',1.0) And Location Eq rectangle('35.12 -68.33, 35.13 -68.32') And Location Eq polygon('35.12 -68.33, 35.13 -68.33, 35.13 -68.32, 35.12 -68.32')"
293
+ @parser = Parser.new
294
+ expressions = @parser.parse(filter)
295
+ assert !@parser.errors?, "errors #{@parser.errors.inspect}"
296
+ assert_equal [:shape,:shape,:shape,:shape], expressions.map{|e| e[:type]}
297
+ end
137
298
 
138
299
  def test_for_reserved_words_first_literals_second
139
300
  ["OrOrOr Eq true", "Equador Eq true", "Oregon Ge 10"].each do |filter|
@@ -160,6 +321,7 @@ class ParserTest < Test::Unit::TestCase
160
321
  '"General \'Property\' Description"."Taxes" Lt 500.0',
161
322
  '"General Property Description"."Taxes #" Lt 500.0',
162
323
  '"General$Description"."Taxes" Lt 500.0',
324
+ '"Garage Type"."1" Eq true',
163
325
  '" a "." b " Lt 500.0'
164
326
  ].each do |filter|
165
327
  @parser = Parser.new
@@ -190,6 +352,7 @@ class ParserTest < Test::Unit::TestCase
190
352
  parse 'Test eQ true',true.to_s
191
353
  parse 'Test EQ 10 AND Test NE 11', 10.to_s
192
354
  parse 'Test eq 10 or Test ne 11', 10.to_s
355
+ parse 'Test eq 10 NOT Test ne 11', 10.to_s
193
356
  end
194
357
 
195
358
  def test_null
@@ -205,6 +368,102 @@ class ParserTest < Test::Unit::TestCase
205
368
  end
206
369
  end
207
370
  end
371
+
372
+ def test_not_expression
373
+ @parser = Parser.new
374
+ expressions = @parser.parse('Test Lt 10 Not Test Eq 2')
375
+ assert !@parser.errors?, @parser.inspect
376
+ expression = expressions.last
377
+ assert_equal 2.to_s, expression[:value]
378
+ assert_equal "Not", expression[:conjunction]
379
+ assert_equal expression[:level], expression[:conjunction_level]
380
+ end
381
+
382
+ def test_not_unary_expression
383
+ @parser = Parser.new
384
+ expressions = @parser.parse('Not Test Eq 10')
385
+ assert !@parser.errors?, @parser.inspect
386
+ expression = expressions.first
387
+ assert_equal 10.to_s, expression[:value]
388
+ assert_equal "Not", expression[:unary]
389
+ assert_equal expression[:level], expression[:unary_level]
390
+ end
391
+
392
+ def test_not_expression_group
393
+ @parser = Parser.new
394
+ expressions = @parser.parse('Not (Test Eq 10 Or Test Eq 11)')
395
+ assert !@parser.errors?, @parser.inspect
396
+ expression = expressions.first
397
+ assert_equal 10.to_s, expression[:value]
398
+ assert_equal "Not", expression[:unary]
399
+ assert_equal 0, expression[:unary_level]
400
+ end
401
+
402
+ def test_not_unary_expression_keeps_conjunction
403
+ @parser = Parser.new
404
+ expressions = @parser.parse('Test Lt 10 Or (Not Test Eq 11)')
405
+ assert !@parser.errors?, @parser.inspect
406
+ expression = expressions.last
407
+ assert_equal 11.to_s, expression[:value]
408
+ assert_equal "Not", expression[:unary]
409
+ assert_equal "Or", expression[:conjunction]
410
+ assert_equal expression[:level], expression[:unary_level]
411
+ assert_equal 0, expression[:conjunction_level]
412
+ end
413
+
414
+ def test_expression_conditions_attribute
415
+ conditions = [
416
+ "1",
417
+ "1,2",
418
+ "1.0,2.1,3.1415",
419
+ "'a '",
420
+ "'A',' b'",
421
+ "'A','B ',' c'",
422
+ "radius('35.12 -68.33',1.0)",
423
+ "days(-1),days(-7)"
424
+ ]
425
+ conditions.each do |condition|
426
+ @parser = Parser.new
427
+ expressions = @parser.parse("Test Eq #{condition}")
428
+ assert !@parser.errors?, @parser.inspect
429
+ expression = expressions.last
430
+ assert_equal condition, expression[:condition]
431
+ end
432
+ end
433
+
434
+ def test_bad_expressions_with_conditions_attribute
435
+ conditions = [
436
+ "BADSTRING",
437
+ "radius('46.8 -96.8',-20.0)"
438
+ ]
439
+ conditions.each do |condition|
440
+ @parser = Parser.new
441
+ expressions = @parser.parse("Test Eq #{condition}")
442
+ assert @parser.errors?, @parser.inspect
443
+ end
444
+ end
445
+
446
+ def test_datetimes_as_ranges
447
+ ["DatetimeField Bt 2013-07-26T10:22:15.422804,2013-07-26T10:22:15.422805",
448
+ "DateTimeField Bt 2013-07-26T10:22:15,2013-07-26T10:22:16",
449
+ "DateTimeField Bt 2013-07-26T10:22:15.422804-0300,2013-07-26T10:22:15.422805-0300",
450
+ "DateTimeField Bt 2013-07-26T10:22:15+0400,2013-07-26T10:22:16+0400"].each do |filter|
451
+ @parser = Parser.new
452
+ expression = @parser.parse filter
453
+ assert !@parser.errors?, "Filter '#{filter}' failed: #{@parser.errors.first.inspect}"
454
+ end
455
+ end
456
+
457
+ def test_coercible_types
458
+ @parser = Parser.new
459
+ assert_equal :datetime, @parser.coercible_types(:date, :datetime)
460
+ assert_equal :datetime, @parser.coercible_types(:datetime, :date)
461
+ assert_equal :decimal, @parser.coercible_types(:decimal, :integer)
462
+ assert_equal :decimal, @parser.coercible_types(:integer, :decimal)
463
+ # That covers the gambit, anything else should be null
464
+ assert_nil @parser.coercible_types(:integer, :date)
465
+ end
466
+
208
467
 
209
468
  def parser_errors(filter)
210
469
  @parser = Parser.new
metadata CHANGED
@@ -1,129 +1,124 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sparkql
3
- version: !ruby/object:Gem::Version
4
- hash: 11
5
- prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 8
10
- version: 0.1.8
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Wade McEwen
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2012-12-13 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- type: :development
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - "="
26
- - !ruby/object:Gem::Version
27
- hash: 23
28
- segments:
29
- - 1
30
- - 4
31
- - 8
32
- version: 1.4.8
33
- version_requirements: *id001
11
+ date: 2015-05-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: georuby
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.0
20
+ type: :runtime
34
21
  prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.0
27
+ - !ruby/object:Gem::Dependency
35
28
  name: racc
36
- - !ruby/object:Gem::Dependency
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.4.8
37
34
  type: :development
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- hash: 5
44
- segments:
45
- - 0
46
- - 2
47
- - 9
48
- version: 0.2.9
49
- version_requirements: *id002
50
35
  prerelease: false
51
- name: flexmls_gems
52
- - !ruby/object:Gem::Dependency
53
- type: :development
54
- requirement: &id003 !ruby/object:Gem::Requirement
55
- none: false
56
- requirements:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.4.8
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
57
45
  - - ~>
58
- - !ruby/object:Gem::Version
59
- hash: 63
60
- segments:
61
- - 0
62
- - 9
63
- - 2
46
+ - !ruby/object:Gem::Version
64
47
  version: 0.9.2
65
- version_requirements: *id003
66
- prerelease: false
67
- name: rake
68
- - !ruby/object:Gem::Dependency
69
48
  type: :development
70
- requirement: &id004 !ruby/object:Gem::Requirement
71
- none: false
72
- requirements:
73
- - - ~>
74
- - !ruby/object:Gem::Version
75
- hash: 11
76
- segments:
77
- - 2
78
- - 1
79
- - 0
80
- version: 2.1.0
81
- version_requirements: *id004
82
49
  prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.9.2
55
+ - !ruby/object:Gem::Dependency
83
56
  name: test-unit
84
- - !ruby/object:Gem::Dependency
85
- type: :development
86
- requirement: &id005 !ruby/object:Gem::Requirement
87
- none: false
88
- requirements:
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
89
59
  - - ~>
90
- - !ruby/object:Gem::Version
91
- hash: 3
92
- segments:
93
- - 1
94
- - 6
95
- version: "1.6"
96
- version_requirements: *id005
60
+ - !ruby/object:Gem::Version
61
+ version: 2.1.0
62
+ type: :development
97
63
  prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 2.1.0
69
+ - !ruby/object:Gem::Dependency
98
70
  name: ci_reporter
99
- - !ruby/object:Gem::Dependency
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '1.6'
100
76
  type: :development
101
- requirement: &id006 !ruby/object:Gem::Requirement
102
- none: false
103
- requirements:
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
104
80
  - - ~>
105
- - !ruby/object:Gem::Version
106
- hash: 41
107
- segments:
108
- - 0
109
- - 9
110
- - 9
111
- version: 0.9.9
112
- version_requirements: *id006
81
+ - !ruby/object:Gem::Version
82
+ version: '1.6'
83
+ - !ruby/object:Gem::Dependency
84
+ name: mocha
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 0.12.0
90
+ type: :development
113
91
  prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 0.12.0
97
+ - !ruby/object:Gem::Dependency
114
98
  name: rcov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 0.9.9
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 0.9.9
115
111
  description: Specification and base implementation of the Spark API parsing system.
116
- email:
112
+ email:
117
113
  - wade@fbsdata.com
118
114
  executables: []
119
-
120
115
  extensions: []
121
-
122
116
  extra_rdoc_files: []
123
-
124
- files:
117
+ files:
125
118
  - .gitignore
126
- - .rvmrc
119
+ - .ruby-version
120
+ - CHANGELOG.md
121
+ - GRAMMAR.md
127
122
  - Gemfile
128
123
  - README.md
129
124
  - Rakefile
@@ -132,6 +127,8 @@ files:
132
127
  - lib/sparkql/errors.rb
133
128
  - lib/sparkql/expression_state.rb
134
129
  - lib/sparkql/function_resolver.rb
130
+ - lib/sparkql/geo.rb
131
+ - lib/sparkql/geo/record_circle.rb
135
132
  - lib/sparkql/lexer.rb
136
133
  - lib/sparkql/parser.rb
137
134
  - lib/sparkql/parser.y
@@ -139,45 +136,49 @@ files:
139
136
  - lib/sparkql/parser_tools.rb
140
137
  - lib/sparkql/token.rb
141
138
  - lib/sparkql/version.rb
139
+ - script/bootstrap
140
+ - script/ci_build
141
+ - script/markdownify.rb
142
+ - script/release
142
143
  - sparkql.gemspec
143
144
  - test/test_helper.rb
145
+ - test/unit/errors_test.rb
144
146
  - test/unit/expression_state_test.rb
145
147
  - test/unit/function_resolver_test.rb
148
+ - test/unit/geo/record_circle_test.rb
146
149
  - test/unit/lexer_test.rb
147
150
  - test/unit/parser_compatability_test.rb
148
151
  - test/unit/parser_test.rb
149
- homepage: ""
150
- licenses: []
151
-
152
+ homepage: ''
153
+ licenses:
154
+ - Apache 2.0
155
+ metadata: {}
152
156
  post_install_message:
153
157
  rdoc_options: []
154
-
155
- require_paths:
158
+ require_paths:
156
159
  - lib
157
- required_ruby_version: !ruby/object:Gem::Requirement
158
- none: false
159
- requirements:
160
- - - ">="
161
- - !ruby/object:Gem::Version
162
- hash: 3
163
- segments:
164
- - 0
165
- version: "0"
166
- required_rubygems_version: !ruby/object:Gem::Requirement
167
- none: false
168
- requirements:
169
- - - ">="
170
- - !ruby/object:Gem::Version
171
- hash: 3
172
- segments:
173
- - 0
174
- version: "0"
160
+ required_ruby_version: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ! '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ required_rubygems_version: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ! '>='
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
175
170
  requirements: []
176
-
177
171
  rubyforge_project: sparkql
178
- rubygems_version: 1.8.24
172
+ rubygems_version: 2.2.1
179
173
  signing_key:
180
- specification_version: 3
174
+ specification_version: 4
181
175
  summary: API Parser engine for filter searching
182
- test_files: []
183
-
176
+ test_files:
177
+ - test/test_helper.rb
178
+ - test/unit/errors_test.rb
179
+ - test/unit/expression_state_test.rb
180
+ - test/unit/function_resolver_test.rb
181
+ - test/unit/geo/record_circle_test.rb
182
+ - test/unit/lexer_test.rb
183
+ - test/unit/parser_compatability_test.rb
184
+ - test/unit/parser_test.rb
data/.rvmrc DELETED
@@ -1,2 +0,0 @@
1
- rvm use ree-1.8.7-2011.03
2
-