sparkql 1.1.8 → 1.1.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YTQ3NzU1YTIzZGVjZWUwZGY1ZjUyODE1YzI1MWMwOGZkNzQ4ZjU1Nw==
4
+ OWU0MjI4OGI0ZjllY2JkNDdkMGU4Njc5MzRhYjNhZDIyNTEyZmY2Zg==
5
5
  data.tar.gz: !binary |-
6
- OTY2OWE0NDNkOWE0M2Q5NWQzOWZhZTA2N2FiMTQxZDQ0MmFlNzRjYw==
6
+ ZjMwY2NmMDllODkyMTdhNzMxMGI0M2U4YTFjNjQ2NTVjNDkwOGViZg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MjlhOWZhMGY4MzY5MzRkZTFlMWVjYjU2MDljYzlmMGIwYzE2ZDk3Zjk4ZmJh
10
- NDhiZWFkNWY1NmI2ZTI0YzhmODM5NDZiNjFlZDhjYjYyMGVkZTFlNDUyNjg3
11
- NTEzNjViYjBlNGI3MzM0YWQzNTU1OWUyNmUwNTIzOTIxZTY5YjA=
9
+ MGViNzNjMjJmMTk1NWQ5NWZmNGExNmJjZGZjNTBiZDJlNGQwY2QyNDVmOWIz
10
+ ODI5MWFlMmMyMTA5MDk5MWJkZDE1NGRhOWRkMmQwOGQ0OWQwYjcxNGU0ZWE5
11
+ NzczMWE4ZjIxOTE0OTUyMGI5ODEzZDE2NjBkZDRjMTY2ZWY0N2U=
12
12
  data.tar.gz: !binary |-
13
- NTE3ZmQwMTNhMzM0YWM4OWE4Y2RlMzZmZTU2OGU0YWQ3MjFlMTIxNGU5OGUy
14
- NDk1MTUzMDE0ZmZlZWMwMWFiMjE1ZmZkZjExZGQ2NzVmOTMzMjA2MWJjMWM3
15
- MGU1NmYwYzJmOGJlNzczYzUwN2QwMjliMjJlODY1YTVlMzAyOWQ=
13
+ NTI4NGQ0NjNjMTUyMTVkZDdlMDEwOTRlNTRlNjBlNWY3MTA0YjMwNzUzNTA3
14
+ MmRhYmZhY2Y0ZjJiNzA1ZDc5MDY1YTE0ZTA3MmZkOTVhMDQ0ZmQxNmU2YmY1
15
+ ZTM4OGZkNDU3YjcxMWEyZTc3Y2QzNDBlOTFmNDFkYjU2ZTEwMzA=
data/CHANGELOG.md CHANGED
@@ -1,54 +1,58 @@
1
- v1.1.7, 2017-11-30 ([changes](https://github.com/sparkapi/sparkql/compare/v1.1.7...v1.1.8))
1
+ v1.1.9, 2018-01-05
2
+ -------------------
3
+ * [IMPROVEMENT] New function: wkt()
4
+
5
+ v1.1.8, 2017-11-30
2
6
  -------------------
3
7
  * [BUGFIX] Properly coerce integer values to decimals when a function is used
4
8
  prior to the operator
5
9
 
6
- v1.1.7, 2017-03-31 ([changes](https://github.com/sparkapi/sparkql/compare/v1.1.6...v1.1.7))
10
+ v1.1.7, 2017-03-31
7
11
  -------------------
8
12
  * [BUGFIX] Add missing require for StringScanner
9
13
 
10
- v1.1.6, 2016-11-11 ([changes](https://github.com/sparkapi/sparkql/compare/v1.1.5...v1.1.6))
14
+ v1.1.6, 2016-11-11
11
15
  -------------------
12
16
  * [BUGFIX] Properly pad return strings from toupper/tolower with single quotes
13
17
 
14
- v1.1.5, 2016-11-11 ([changes](https://github.com/sparkapi/sparkql/compare/v1.1.4...v1.1.5))
18
+ v1.1.5, 2016-11-11
15
19
  -------------------
16
20
  * [BUGFIX] Corrected levels for unary and conjunction elements of an expression
17
21
 
18
- v1.1.4, 2016-11-11 ([changes](https://github.com/sparkapi/sparkql/compare/v1.1.3...v1.1.4))
22
+ v1.1.4, 2016-11-11
19
23
  -------------------
20
24
  * [IMPROVEMENT] New functions: contains(), startswith(), endswith()
21
25
 
22
- v1.1.3, 2016-11-10 ([changes](https://github.com/sparkapi/sparkql/compare/v1.1.2...v1.1.3))
26
+ v1.1.3, 2016-11-10
23
27
  -------------------
24
28
  * [IMPROVEMENT] New functions: tolower() and toupper()
25
29
 
26
- v1.1.2, 2016-11-08 ([changes](https://github.com/sparkapi/sparkql/compare/v1.1.1...v1.1.2))
30
+ v1.1.2, 2016-11-08
27
31
  -------------------
28
32
  * [IMPROVEMENT] New functions: year(), month(), day(), hour(), minute(), second(), and
29
33
  fractionalseconds().
30
34
 
31
- v1.1.1, 2016-09-09 ([changes](https://github.com/sparkapi/sparkql/compare/v1.1.0...v1.1.1))
35
+ v1.1.1, 2016-09-09
32
36
  -------------------
33
37
  * [BUGFIX] Fix `Not` handling in the new Evaluation class
34
38
 
35
- v1.1.0, 2016-07-28 ([changes](https://github.com/sparkapi/sparkql/compare/v1.0.3...v1.1.0))
39
+ v1.1.0, 2016-07-28
36
40
  -------------------
37
41
  * [IMPROVEMENT] Evaluation class for sparkql boolean algebra processing
38
42
 
39
- v1.0.3, 2016-06-06 ([changes](https://github.com/sparkapi/sparkql/compare/v1.0.2...v1.0.3))
43
+ v1.0.3, 2016-06-06
40
44
  -------------------
41
45
  * [IMPROVEMENT] Expression limit lifted to 75 expressions
42
46
 
43
- v1.0.2, 2016-04-26 ([changes](https://github.com/sparkapi/sparkql/compare/v1.0.1...v1.0.2))
47
+ v1.0.2, 2016-04-26
44
48
  -------------------
45
49
  * [IMPROVEMENT] Support for new range() function for character ranges
46
50
 
47
- v1.0.1, 2016-02-24 ([changes](https://github.com/sparkapi/sparkql/compare/v1.0.0...v1.0.1))
51
+ v1.0.1, 2016-02-24
48
52
  -------------------
49
53
  * [IMPROVEMENT] Support scientific notation for floating point numbers
50
54
 
51
- v1.0.0, 2016-02-11 ([changes](https://github.com/sparkapi/sparkql/compare/v0.3.23...v1.0.0))
55
+ v1.0.0, 2016-02-11
52
56
  -------------------
53
57
  * [IMPROVEMENT] function support for fields (delayed resolution). Backing systems must
54
58
  implement necessary function behaviour.
@@ -56,32 +60,32 @@ v1.0.0, 2016-02-11 ([changes](https://github.com/sparkapi/sparkql/compare/v0.3.2
56
60
  this drop allows us to pick up newer update allows us to stay in sync with
57
61
  that gems development
58
62
 
59
- v0.3.24, 2016-01-05 ([changes](https://github.com/sparkapi/sparkql/compare/v0.3.23...v0.3.24))
63
+ v0.3.24, 2016-01-05
60
64
  -------------------
61
65
 
62
66
  * [BUGFIX] Support opening Not operator for "Not (Not ...)" expressions.
63
67
 
64
- v0.3.23, 2015-10-09 ([changes](https://github.com/sparkapi/sparkql/compare/v0.3.22...v0.3.23))
68
+ v0.3.23, 2015-10-09
65
69
  -------------------
66
70
 
67
71
  * [IMPROVEMENT] Add regex function for character types
68
72
 
69
- v0.3.22, 2015-10-09 ([changes](https://github.com/sparkapi/sparkql/compare/v0.3.21...v0.3.22))
73
+ v0.3.22, 2015-10-09
70
74
  -------------------
71
75
 
72
76
  * [IMPROVEMENT] Record sparkql and nested errors for fields that embed sparkql
73
77
 
74
- v0.3.21, 2015-09-24 ([changes](https://github.com/sparkapi/sparkql/compare/v0.3.20...v0.3.21))
78
+ v0.3.21, 2015-09-24
75
79
  -------------------
76
80
 
77
81
  * [IMPROVEMENT] Record token index and current token in lexer, for error reporting
78
82
 
79
- v0.3.20, 2015-04-14 ([changes](https://github.com/sparkapi/sparkql/compare/v0.3.18...v0.3.20))
83
+ v0.3.20, 2015-04-14
80
84
  -------------------
81
85
 
82
86
  * [BUGFIX] Allow seconds for ISO-8601
83
87
 
84
- v0.3.18, 2015-04-10 ([changes](https://github.com/sparkapi/sparkql/compare/v0.3.17...v0.3.18))
88
+ v0.3.18, 2015-04-10
85
89
  -------------------
86
90
 
87
91
  * [BUGFIX] Better support for ISO-8601
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.8
1
+ 1.1.9
@@ -1,5 +1,6 @@
1
1
  require 'time'
2
2
  require 'geo_ruby'
3
+ require 'geo_ruby/ewk'
3
4
  require 'sparkql/geo'
4
5
 
5
6
  # Binding class to all supported function calls in the parser. Current support requires that the
@@ -124,6 +125,10 @@ class Sparkql::FunctionResolver
124
125
  :range => {
125
126
  :args => [:character, :character],
126
127
  :return_type => :character
128
+ },
129
+ :wkt => {
130
+ :args => [:character],
131
+ :return_type => :shape
127
132
  }
128
133
  }
129
134
 
@@ -475,6 +480,19 @@ class Sparkql::FunctionResolver
475
480
  :value => shape
476
481
  }
477
482
  end
483
+
484
+ def wkt(wkt_string)
485
+ shape = GeoRuby::SimpleFeatures::Geometry.from_ewkt(wkt_string)
486
+ {
487
+ :type => :shape,
488
+ :value => shape
489
+ }
490
+ rescue GeoRuby::SimpleFeatures::EWKTFormatError
491
+ @errors << Sparkql::ParserError.new(:token => wkt_string,
492
+ :message => "Function call 'wkt' requires a valid wkt string",
493
+ :status => :fatal )
494
+ return
495
+ end
478
496
 
479
497
  def rectangle(coords)
480
498
  bounding_box = parse_coordinates(coords)
@@ -164,7 +164,7 @@ class FunctionResolverTest < Test::Unit::TestCase
164
164
  f = FunctionResolver.new('radius', [{:type => :character, :value => "35.12,-68.33"},
165
165
  {:type => :decimal, :value => 1.0}])
166
166
  f.validate
167
- value = f.call
167
+ f.call
168
168
  assert f.errors?
169
169
  end
170
170
 
@@ -300,4 +300,23 @@ class FunctionResolverTest < Test::Unit::TestCase
300
300
  assert_equal expected_value, value[:value]
301
301
  end
302
302
  end
303
+
304
+ test 'wkt()' do
305
+ f = FunctionResolver.new('wkt',
306
+ [{:type => :character,
307
+ :value => "SRID=12345;POLYGON((-127.89734578345 45.234534534,-127.89734578345 45.234534534,-127.89734578345 45.234534534,-127.89734578345 45.234534534))"}])
308
+ f.validate
309
+ assert !f.errors?, "Errors #{f.errors.inspect}"
310
+ value = f.call
311
+ assert_equal GeoRuby::SimpleFeatures::Polygon, value[:value].class
312
+ end
313
+
314
+ test 'wkt() invalid params' do
315
+ f = FunctionResolver.new('wkt',
316
+ [{:type => :character,
317
+ :value => "POLYGON((45.234534534))"}])
318
+ f.validate
319
+ f.call
320
+ assert f.errors?
321
+ end
303
322
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sparkql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.8
4
+ version: 1.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wade McEwen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-30 00:00:00.000000000 Z
11
+ date: 2018-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: georuby