sparkql 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CHANGELOG.md +4 -0
- data/VERSION +1 -1
- data/lib/sparkql/function_resolver.rb +13 -1
- data/lib/sparkql/lexer.rb +1 -1
- data/lib/sparkql/parser.rb +1 -1
- data/lib/sparkql/parser_tools.rb +1 -0
- data/test/unit/function_resolver_test.rb +10 -0
- data/test/unit/parser_test.rb +14 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZjQzN2Y3YTIyNDJiZmE2YzFiZGVjZDk2OGY5NjhiYTNhMjc3ZTBiZg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MWI4NzJjZWM3YWQwN2IwZjMzYWJiMjIwMWZmMDBjZWU5NjEyODg3NA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZDUyMWRiMTY1YWYwMDY1ZjNkODkwMGU2ZGY1OWQ2YTA2MTYwNDNjMzI5ODM3
|
10
|
+
MzhiZDU0NzViZjIwYmI0MTc5ZjMyNjQ2OTgzNDFkODk5MzhjNmU1YTI4ZDBm
|
11
|
+
YThkMTMxMGQ1MjM5MDRlZGQwZTU2YWQyNTgyZWEzNDM1ZTNiZjE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZWQyOGEyZjJmMjhmMmFjODk5ZGM2YWYwMDZjY2FmYWNhNWE3NzU0OWQ0MzM5
|
14
|
+
NjAzYzI0ZjJkOGYzNDJkZjdiOGQ3YjY3MWFlMGVkZTdkNGNmNDcwM2JiMThi
|
15
|
+
ZTEyNTU5NDYzMzFkMGRiNThkNzkyOTBlNzk4MmVlZWFlNTRjY2I=
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
v1.0.2, 2016-04-26 ([changes](https://github.com/sparkapi/sparkql/compare/v1.0.1...v1.0.2))
|
2
|
+
-------------------
|
3
|
+
* [IMPROVEMENT] Support for new range() function for character ranges
|
4
|
+
|
1
5
|
v1.0.1, 2016-02-24 ([changes](https://github.com/sparkapi/sparkql/compare/v1.0.0...v1.0.1))
|
2
6
|
-------------------
|
3
7
|
* [IMPROVEMENT] Support scientific notation for floating point numbers
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.2
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'time'
|
1
|
+
require 'time'
|
2
2
|
require 'geo_ruby'
|
3
3
|
require 'sparkql/geo'
|
4
4
|
|
@@ -63,6 +63,10 @@ class Sparkql::FunctionResolver
|
|
63
63
|
:args => [[:field,:datetime]],
|
64
64
|
:resolve_for_type => true,
|
65
65
|
:return_type => :time
|
66
|
+
},
|
67
|
+
:range => {
|
68
|
+
:args => [:character, :character],
|
69
|
+
:return_type => :character
|
66
70
|
}
|
67
71
|
}
|
68
72
|
|
@@ -344,6 +348,14 @@ class Sparkql::FunctionResolver
|
|
344
348
|
}
|
345
349
|
end
|
346
350
|
|
351
|
+
def range(start_str, end_str)
|
352
|
+
{
|
353
|
+
:type => :character,
|
354
|
+
:operator => "Bt",
|
355
|
+
:value => [start_str.to_s, end_str.to_s]
|
356
|
+
}
|
357
|
+
end
|
358
|
+
|
347
359
|
private
|
348
360
|
|
349
361
|
def is_coords?(coord_string)
|
data/lib/sparkql/lexer.rb
CHANGED
@@ -53,7 +53,7 @@ class Sparkql::Lexer < StringScanner
|
|
53
53
|
check_keywords(@current_token_value)
|
54
54
|
when @current_token_value = scan(CUSTOM_FIELD)
|
55
55
|
[:CUSTOM_FIELD,@current_token_value]
|
56
|
-
when
|
56
|
+
when eos?
|
57
57
|
[false, false] # end of file, \Z don't work with StringScanner
|
58
58
|
else
|
59
59
|
[:UNKNOWN, "ERROR: '#{self.string}'"]
|
data/lib/sparkql/parser.rb
CHANGED
data/lib/sparkql/parser_tools.rb
CHANGED
@@ -43,6 +43,7 @@ module Sparkql::ParserTools
|
|
43
43
|
expression = {:field => field, :operator => operator, :conjunction => 'And',
|
44
44
|
:level => @lexer.level, :block_group => block_group, :custom_field => custom_field}.merge!(field_args)
|
45
45
|
expression = val.merge(expression) unless val.nil?
|
46
|
+
expression[:condition] ||= expression[:value]
|
46
47
|
validate_level_depth expression
|
47
48
|
if operator.nil?
|
48
49
|
tokenizer_error(:token => op, :expression => expression,
|
@@ -127,6 +127,16 @@ class FunctionResolverTest < Test::Unit::TestCase
|
|
127
127
|
assert_equal GeoRuby::SimpleFeatures::Polygon, value[:value].class
|
128
128
|
assert_equal [[-68.33,35.12], [-68.32,35.12], [-68.32,35.13], [-68.33,35.13], [-68.33,35.12]], value[:value].to_coordinates.first, "#{value[:value].inspect} "
|
129
129
|
end
|
130
|
+
|
131
|
+
test "range()" do
|
132
|
+
f = FunctionResolver.new('range', [{:type => :character, :value => "M01"},
|
133
|
+
{:type => :character, :value => "M05"}])
|
134
|
+
f.validate
|
135
|
+
assert !f.errors?, "Errors #{f.errors.inspect}"
|
136
|
+
value = f.call
|
137
|
+
assert_equal :character, value[:type]
|
138
|
+
assert_equal ["M01", "M05"], value[:value]
|
139
|
+
end
|
130
140
|
|
131
141
|
test "invalid params" do
|
132
142
|
f = FunctionResolver.new('now', [{:type => :character, :value=>'bad value'}])
|
data/test/unit/parser_test.rb
CHANGED
@@ -173,6 +173,17 @@ class ParserTest < Test::Unit::TestCase
|
|
173
173
|
assert -5 < test_time - start, "Time range off by more than five seconds #{test_time - start}"
|
174
174
|
end
|
175
175
|
|
176
|
+
def test_function_range
|
177
|
+
start = Time.now
|
178
|
+
filter = "MapCoordinates Eq range('M01','M04')"
|
179
|
+
@parser = Parser.new
|
180
|
+
expressions = @parser.parse(filter)
|
181
|
+
assert !@parser.errors?, "errors #{@parser.errors.inspect}"
|
182
|
+
assert_equal "range('M01','M04')", expressions.first[:condition]
|
183
|
+
assert_equal 'M01', expressions.first[:value].first
|
184
|
+
assert_equal 'M04', expressions.first[:value][1]
|
185
|
+
end
|
186
|
+
|
176
187
|
test "function data preserved in expression" do
|
177
188
|
filter = "OriginalEntryTimestamp Ge days(-7)"
|
178
189
|
@parser = Parser.new
|
@@ -513,7 +524,9 @@ class ParserTest < Test::Unit::TestCase
|
|
513
524
|
"'A',' b'",
|
514
525
|
"'A','B ',' c'",
|
515
526
|
"radius('35.12 -68.33',1.0)",
|
516
|
-
"days(-1),days(-7)"
|
527
|
+
"days(-1),days(-7)",
|
528
|
+
"2016-03-10",
|
529
|
+
"2016-03-10T10:01:15.1-06:00"
|
517
530
|
]
|
518
531
|
conditions.each do |condition|
|
519
532
|
@parser = Parser.new
|
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.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wade McEwen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: georuby
|