abstract-sql 0.0.3 → 0.0.4

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.
@@ -9,7 +9,7 @@ module SQL
9
9
  rule(:spaces?){ spaces.maybe}
10
10
  rule(:digit) { match('[0-9]') }
11
11
  rule(:int){ digit.repeat(1).as(:int) }
12
- rule(:bool_not) { spaces >> (str('not') | str('NOT')).as(:not) >> spaces}
12
+ rule(:bool_not) { spaces? >> (str('not') | str('NOT')).as(:not) >> spaces?}
13
13
 
14
14
  rule(:float) do
15
15
  (str('-').maybe >> (
@@ -48,7 +48,7 @@ module SQL
48
48
  end
49
49
 
50
50
  rule(:entity) do
51
- bool_not.maybe >> (value.as(:lvalue) >> operator >> value.as(:rvalue))
51
+ bool_not.maybe >> ((lparen >> entity >> rparen) | (value.as(:lvalue) >> operator >> value.as(:rvalue)))
52
52
  end
53
53
 
54
54
  rule(:statement) do
@@ -1,5 +1,5 @@
1
1
  module Abstract
2
2
  module Sql
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -10,6 +10,7 @@ class TestAbstract < Test::Unit::TestCase
10
10
  test "parse very simple condition" do
11
11
  assert_equal({ :criterion_13 => {:"-<=" => 8} }, @abstract.parse("criterion_13 <= 8"))
12
12
  assert_equal({ :criterion_13 => {:"-<=" => 8} }, @abstract.parse("(criterion_13 <= 8)"))
13
+ assert_equal({ :"-not_bool" => { :criterion_13 => {:"-<=" => 8} } }, @abstract.parse("not (criterion_13 <= 8)"))
13
14
  end
14
15
 
15
16
  test "parse a simple condition" do
@@ -19,13 +20,13 @@ class TestAbstract < Test::Unit::TestCase
19
20
  end
20
21
 
21
22
  test "parse a complex condition" do
22
- assert_equal(
23
+ assert_equal(
23
24
  {
24
25
  :"-or" => [
25
26
  {:"-and" => [{:id => { :"-=" => 1}}, {:label => {:"-like" => '%webo%'}}]},
26
27
  {:"-and" => [{:id => { :"-!=" => 1}}, {:label => {:"-like" => '%api%'}}]}
27
28
  ]
28
- },
29
+ },
29
30
  @abstract.parse("(id = 1 AND label like '%webo%') OR (id !=1 and label like '%api%')")
30
31
  )
31
32
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstract-sql
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Hallelujah
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-08 00:00:00 +02:00
18
+ date: 2011-08-22 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency