querybuilder 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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