sparkql 1.0.1 → 1.0.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.
- 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
|