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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDQ2MjhlNzA5NWY1ZGM5YmM4ODEzMGE2Y2Y5ZWQ0YzkzZWYwODMxYQ==
4
+ ZjQzN2Y3YTIyNDJiZmE2YzFiZGVjZDk2OGY5NjhiYTNhMjc3ZTBiZg==
5
5
  data.tar.gz: !binary |-
6
- OTNiMjFjMjA2ODZmMmRmYWNkM2JiNjA4NDA5NjcwZDBhNTVlY2Q5NA==
6
+ MWI4NzJjZWM3YWQwN2IwZjMzYWJiMjIwMWZmMDBjZWU5NjEyODg3NA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MWFhMTU2MDQ1ZjBkZDFhOTAyNGMyNDM4MjZmZDI0ODg0ZTg3NmI1MWRkYWMz
10
- ZTI4ZDgxNTg1YWFhY2ZkOTUxOTM5ZGQ1NWEwMGMzNWVlNDc3NDYyOTMzODEx
11
- YmEwNDNmMGMwZWFkOTk1MzNkZjVkMGVmOGJjYzE0MzViYTczZGY=
9
+ ZDUyMWRiMTY1YWYwMDY1ZjNkODkwMGU2ZGY1OWQ2YTA2MTYwNDNjMzI5ODM3
10
+ MzhiZDU0NzViZjIwYmI0MTc5ZjMyNjQ2OTgzNDFkODk5MzhjNmU1YTI4ZDBm
11
+ YThkMTMxMGQ1MjM5MDRlZGQwZTU2YWQyNTgyZWEzNDM1ZTNiZjE=
12
12
  data.tar.gz: !binary |-
13
- Y2ZlNWFkYThlN2UwMjFiNzI5ZjE5NTJkNmY3OTNlODRhMzY1YjNhNjJmYTRl
14
- ODg5ZTQ4ZDJlMjU0NWRiYmNmYzViNzdjZDY0NmNmYTAxYjc3YTAxOTg0YmEy
15
- YmVjYThkZTg0ZGZiOTdlM2Y0YWYyNzY0YTE4ZTU1Y2QzN2NhMzU=
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
+ 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 empty?
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}'"]
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.4.12
3
+ # This file is automatically generated by Racc 1.4.8
4
4
  # from Racc grammer file "".
5
5
  #
6
6
 
@@ -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'}])
@@ -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.1
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-02-24 00:00:00.000000000 Z
11
+ date: 2016-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: georuby