sparkql 0.1.8 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
-