querybuilder 1.2.1 → 1.2.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.
@@ -40,9 +40,9 @@
40
40
 
41
41
  scope = ws+ 'in' ws var %scope;
42
42
 
43
- offset = ws+ 'offset' %offset integer;
43
+ offset = ws+ 'offset' %offset literal;
44
44
  paginate = ws+ 'paginate' %paginate var %param;
45
- limit = ws+ 'limit' %limit integer (ws* ',' integer)?;
45
+ limit = ws+ 'limit' %limit literal (ws* ',' literal)?;
46
46
  direction= ws+ ('asc' | 'desc' | 'ASC' | 'DESC') $str_a %direction;
47
47
  order = ws+ 'order' ws+ 'by' %order field (direction)? (ws* ',' field (direction)?)*;
48
48
  group = ws+ 'group' ws+ 'by' %group field (ws* ',' field)*;
data/querybuilder.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{querybuilder}
8
- s.version = "1.2.1"
8
+ s.version = "1.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gaspard Bucher"]
12
- s.date = %q{2013-03-11}
12
+ s.date = %q{2013-05-07}
13
13
  s.description = %q{QueryBuilder is an interpreter for the "pseudo sql" language. This language
14
14
  can be used for two purposes:
15
15
 
@@ -53,6 +53,11 @@ limit_with_order:
53
53
  src: "objects in project order by name desc limit 10"
54
54
  res: "[%Q{SELECT objects.* FROM objects WHERE objects.project_id = ? ORDER BY objects.name DESC LIMIT 10}, project_id]"
55
55
 
56
+ limit_dyn:
57
+ src: "objects in project limit #{num || 10}"
58
+ sxp: '[:query, [:limit, [:scope, [:relation, "objects"], "project"], [:rubyless, "num || 10"]]]'
59
+ res: "[%Q{SELECT objects.* FROM objects WHERE objects.project_id = ? LIMIT ?}, project_id, (num or 10)]"
60
+
56
61
  offset_in_limit:
57
62
  src: "objects in project limit 3,2"
58
63
  res: "[%Q{SELECT objects.* FROM objects WHERE objects.project_id = ? LIMIT 2 OFFSET 3}, project_id]"
@@ -62,6 +67,16 @@ offset:
62
67
  sxp: '[:query, [:offset, [:limit, [:scope, [:relation, "objects"], "project"], [:integer, "2"]], [:integer, "3"]]]'
63
68
  res: "[%Q{SELECT objects.* FROM objects WHERE objects.project_id = ? LIMIT 2 OFFSET 3}, project_id]"
64
69
 
70
+ offset_dyn:
71
+ src: "objects in project limit 2 offset #{num || 0}"
72
+ sxp: '[:query, [:offset, [:limit, [:scope, [:relation, "objects"], "project"], [:integer, "2"]], [:rubyless, "num || 0"]]]'
73
+ res: "[%Q{SELECT objects.* FROM objects WHERE objects.project_id = ? LIMIT 2 OFFSET ?}, project_id, (num or 0)]"
74
+
75
+ limit_offset_dyn:
76
+ src: "objects in project limit #{num || 10}, #{num || 0}"
77
+ sxp: '[:query, [:limit, [:scope, [:relation, "objects"], "project"], [:rubyless, "num || 10"], [:rubyless, "num || 0"]]]'
78
+ res: "[%Q{SELECT objects.* FROM objects WHERE objects.project_id = ? LIMIT ? OFFSET ?}, project_id, (num or 0), (num or 10)]"
79
+
65
80
  paginate:
66
81
  src: "objects in site limit 2 paginate p"
67
82
  sxp: '[:query, [:paginate, [:limit, [:scope, [:relation, "objects"], "site"], [:integer, "2"]], [:param, "p"]]]'
@@ -49,4 +49,13 @@ bad_select:
49
49
 
50
50
  bad_having:
51
51
  src: "letters select name as fname having foo = 'foo'"
52
- res: "Unknown field 'foo'."
52
+ res: "Unknown field 'foo'."
53
+
54
+ offset_dyn_nil:
55
+ src: "objects in project limit 2 offset #{num}"
56
+ sxp: '[:query, [:offset, [:limit, [:scope, [:relation, "objects"], "project"], [:integer, "2"]], [:rubyless, "num"]]]'
57
+ res: "Invalid offset (value could be nil)"
58
+
59
+ paginate_dyn_limit:
60
+ src: "objects in project limit #{num} paginate p"
61
+ res: "Limit value must be a fixed number to use pagination."
@@ -9,11 +9,13 @@ class DummyQueryBuilder < Test::Unit::TestCase
9
9
  include RubyLess::SafeClass
10
10
  safe_method :params => {:class => StringHash, :method => 'get_params'}
11
11
  safe_method :id => Number, :parent_id => Number, :project_id => Number
12
+ safe_method :num => {:class => Number, :nil => true}
12
13
 
13
14
  safe_method_for StringHash, [:[], Symbol] => String
14
15
  safe_method_for StringHash, [:[], String] => String
15
16
 
16
17
  def id; 123; end
18
+ def num; 2; end
17
19
  def parent_id; 333; end
18
20
  def project_id; 9999; end
19
21
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: querybuilder
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
- - 1
10
- version: 1.2.1
9
+ - 2
10
+ version: 1.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gaspard Bucher
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-03-11 00:00:00 +01:00
18
+ date: 2013-05-07 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency