squeel 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.
Files changed (44) hide show
  1. data/CHANGELOG.md +20 -0
  2. data/README.md +1 -1
  3. data/lib/squeel.rb +1 -2
  4. data/lib/squeel/adapters/active_record.rb +3 -1
  5. data/lib/squeel/adapters/active_record/3.0/compat.rb +5 -1
  6. data/lib/squeel/adapters/active_record/3.0/context.rb +2 -2
  7. data/lib/squeel/adapters/active_record/3.1/compat.rb +22 -0
  8. data/lib/squeel/adapters/active_record/3.1/context.rb +2 -2
  9. data/lib/squeel/adapters/active_record/compat.rb +22 -0
  10. data/lib/squeel/adapters/active_record/join_dependency_extensions.rb +2 -2
  11. data/lib/squeel/configuration.rb +2 -2
  12. data/lib/squeel/core_ext/symbol.rb +3 -13
  13. data/lib/squeel/dsl.rb +10 -1
  14. data/lib/squeel/nodes.rb +9 -1
  15. data/lib/squeel/nodes/aliasing.rb +2 -2
  16. data/lib/squeel/nodes/as.rb +1 -1
  17. data/lib/squeel/nodes/binary.rb +1 -4
  18. data/lib/squeel/nodes/function.rb +1 -10
  19. data/lib/squeel/nodes/grouping.rb +35 -0
  20. data/lib/squeel/nodes/join.rb +3 -3
  21. data/lib/squeel/nodes/key_path.rb +26 -24
  22. data/lib/squeel/nodes/literal.rb +2 -17
  23. data/lib/squeel/nodes/nary.rb +1 -2
  24. data/lib/squeel/nodes/ordering.rb +21 -0
  25. data/lib/squeel/nodes/predicate.rb +1 -4
  26. data/lib/squeel/nodes/predicate_methods.rb +16 -0
  27. data/lib/squeel/nodes/stub.rb +11 -21
  28. data/lib/squeel/nodes/unary.rb +1 -4
  29. data/lib/squeel/version.rb +1 -1
  30. data/lib/squeel/visitors/attribute_visitor.rb +12 -13
  31. data/lib/squeel/visitors/predicate_visitor.rb +38 -15
  32. data/lib/squeel/visitors/symbol_visitor.rb +2 -6
  33. data/lib/squeel/visitors/visitor.rb +24 -1
  34. data/spec/squeel/adapters/active_record/relation_extensions_spec.rb +6 -1
  35. data/spec/squeel/dsl_spec.rb +9 -1
  36. data/spec/squeel/nodes/grouping_spec.rb +177 -0
  37. data/spec/squeel/nodes/join_spec.rb +4 -5
  38. data/spec/squeel/nodes/key_path_spec.rb +3 -5
  39. data/spec/squeel/nodes/operators_spec.rb +3 -3
  40. data/spec/squeel/nodes/stub_spec.rb +6 -7
  41. data/spec/squeel/visitors/attribute_visitor_spec.rb +6 -1
  42. data/spec/squeel/visitors/predicate_visitor_spec.rb +28 -0
  43. metadata +62 -22
  44. data/lib/squeel/predicate_methods.rb +0 -14
@@ -0,0 +1,177 @@
1
+ require 'spec_helper'
2
+
3
+ module Squeel
4
+ module Nodes
5
+ describe Grouping do
6
+ before do
7
+ @g = Grouping.new('foo')
8
+ end
9
+
10
+ Squeel::Constants::PREDICATES.each do |method_name|
11
+ it "creates #{method_name} predicates with no value" do
12
+ predicate = @g.send(method_name)
13
+ predicate.expr.should eq @g
14
+ predicate.method_name.should eq method_name
15
+ predicate.value?.should be_false
16
+ end
17
+
18
+ it "creates #{method_name} predicates with a value" do
19
+ predicate = @g.send(method_name, 'value')
20
+ predicate.expr.should eq @g
21
+ predicate.method_name.should eq method_name
22
+ predicate.value.should eq 'value'
23
+ end
24
+ end
25
+
26
+ Squeel::Constants::PREDICATE_ALIASES.each do |method_name, aliases|
27
+ aliases.each do |aliaz|
28
+ ['', '_any', '_all'].each do |suffix|
29
+ it "creates #{method_name.to_s + suffix} predicates with no value using the alias #{aliaz.to_s + suffix}" do
30
+ predicate = @g.send(aliaz.to_s + suffix)
31
+ predicate.expr.should eq @g
32
+ predicate.method_name.should eq "#{method_name}#{suffix}".to_sym
33
+ predicate.value?.should be_false
34
+ end
35
+
36
+ it "creates #{method_name.to_s + suffix} predicates with a value using the alias #{aliaz.to_s + suffix}" do
37
+ predicate = @g.send((aliaz.to_s + suffix), 'value')
38
+ predicate.expr.should eq @g
39
+ predicate.method_name.should eq "#{method_name}#{suffix}".to_sym
40
+ predicate.value.should eq 'value'
41
+ end
42
+ end
43
+ end
44
+ end
45
+
46
+ it 'creates ascending Order nodes with #asc' do
47
+ order = @g.asc
48
+ order.expr.should eq @g
49
+ order.should be_ascending
50
+ end
51
+
52
+ it 'creates descending Order nodes with #desc' do
53
+ order = @g.desc
54
+ order.expr.should eq @g
55
+ order.should be_descending
56
+ end
57
+
58
+ it 'creates eq predicates with ==' do
59
+ predicate = @g == 1
60
+ predicate.expr.should eq @g
61
+ predicate.method_name.should eq :eq
62
+ predicate.value.should eq 1
63
+ end
64
+
65
+ it 'creates not_eq predicates with ^' do
66
+ predicate = @g ^ 1
67
+ predicate.expr.should eq @g
68
+ predicate.method_name.should eq :not_eq
69
+ predicate.value.should eq 1
70
+ end
71
+
72
+ it 'creates not_eq predicates with !=' do
73
+ predicate = @g != 1
74
+ predicate.expr.should eq @g
75
+ predicate.method_name.should eq :not_eq
76
+ predicate.value.should eq 1
77
+ end if respond_to?('!=')
78
+
79
+ it 'creates in predicates with >>' do
80
+ predicate = @g >> [1,2,3]
81
+ predicate.expr.should eq @g
82
+ predicate.method_name.should eq :in
83
+ predicate.value.should eq [1,2,3]
84
+ end
85
+
86
+ it 'creates not_in predicates with <<' do
87
+ predicate = @g << [1,2,3]
88
+ predicate.expr.should eq @g
89
+ predicate.method_name.should eq :not_in
90
+ predicate.value.should eq [1,2,3]
91
+ end
92
+
93
+ it 'creates matches predicates with =~' do
94
+ predicate = @g =~ '%bob%'
95
+ predicate.expr.should eq @g
96
+ predicate.method_name.should eq :matches
97
+ predicate.value.should eq '%bob%'
98
+ end
99
+
100
+ it 'creates does_not_match predicates with !~' do
101
+ predicate = @g !~ '%bob%'
102
+ predicate.expr.should eq @g
103
+ predicate.method_name.should eq :does_not_match
104
+ predicate.value.should eq '%bob%'
105
+ end if respond_to?('!~')
106
+
107
+ it 'creates gt predicates with >' do
108
+ predicate = @g > 1
109
+ predicate.expr.should eq @g
110
+ predicate.method_name.should eq :gt
111
+ predicate.value.should eq 1
112
+ end
113
+
114
+ it 'creates gteq predicates with >=' do
115
+ predicate = @g >= 1
116
+ predicate.expr.should eq @g
117
+ predicate.method_name.should eq :gteq
118
+ predicate.value.should eq 1
119
+ end
120
+
121
+ it 'creates lt predicates with <' do
122
+ predicate = @g < 1
123
+ predicate.expr.should eq @g
124
+ predicate.method_name.should eq :lt
125
+ predicate.value.should eq 1
126
+ end
127
+
128
+ it 'creates lteq predicates with <=' do
129
+ predicate = @g <= 1
130
+ predicate.expr.should eq @g
131
+ predicate.method_name.should eq :lteq
132
+ predicate.value.should eq 1
133
+ end
134
+
135
+ it 'can be ORed with another node' do
136
+ right = Predicate.new :name, :eq, 'Bob'
137
+ combined = @g | right
138
+ combined.should be_a Nodes::Or
139
+ combined.left.should eq @g
140
+ combined.right.should eq right
141
+ end
142
+
143
+ it 'can be ANDed with another node' do
144
+ right = Predicate.new :name, :eq, 'Bob'
145
+ combined = @g & right
146
+ combined.should be_a Nodes::And
147
+ combined.children.should eq [@g, right]
148
+ end
149
+
150
+ it 'can be negated' do
151
+ negated = -@g
152
+ negated.should be_a Nodes::Not
153
+ negated.expr.should eq @g
154
+ end
155
+
156
+ describe '#as' do
157
+
158
+ it 'aliases the function' do
159
+ a = @g.as('the_alias')
160
+ a.should be_a As
161
+ a.expr.should eq @g
162
+ a.alias.should eq 'the_alias'
163
+ end
164
+
165
+ it 'casts the alias to a string' do
166
+ a = @g.as(:the_alias)
167
+ a.should be_a As
168
+ a.expr.should eq @g
169
+ a.alias.should eq 'the_alias'
170
+ end
171
+
172
+ end
173
+
174
+ end
175
+ end
176
+ end
177
+
@@ -26,22 +26,21 @@ module Squeel
26
26
  it 'creates a KeyPath when sent an unknown method' do
27
27
  keypath = @j.another
28
28
  keypath.should be_a KeyPath
29
- keypath.path_with_endpoint.should eq [@j, Stub.new(:another)]
29
+ keypath.path.should eq [@j, Stub.new(:another)]
30
30
  end
31
31
 
32
32
  it 'creates a KeyPath with a join endpoint when sent a method with a Class param' do
33
33
  keypath = @j.another(Person)
34
34
  keypath.should be_a KeyPath
35
- keypath.path_with_endpoint.should eq [@j, Join.new(:another, Arel::InnerJoin, Person)]
35
+ keypath.path.should eq [@j, Join.new(:another, Arel::InnerJoin, Person)]
36
36
  end
37
37
 
38
38
  it 'creates an absolute keypath with just an endpoint with ~' do
39
39
  node = ~@j
40
40
  node.should be_a KeyPath
41
- node.path.should eq []
42
- node.endpoint.should eq @j
41
+ node.path.should eq [@j]
43
42
  end
44
43
 
45
44
  end
46
45
  end
47
- end
46
+ end
@@ -4,19 +4,17 @@ module Squeel
4
4
  module Nodes
5
5
  describe KeyPath do
6
6
  before do
7
- @k = KeyPath.new(:first, :second)
7
+ @k = KeyPath.new([:first, :second])
8
8
  end
9
9
 
10
10
  it 'appends to its path when endpoint is a Stub' do
11
11
  @k.third.fourth.fifth
12
- @k.path.should eq [:first, :second, :third, :fourth]
13
- @k.endpoint.should eq Stub.new(:fifth)
12
+ @k.path.should eq [:first, :second, :third, :fourth, Stub.new(:fifth)]
14
13
  end
15
14
 
16
15
  it 'becomes absolute when prefixed with ~' do
17
16
  ~@k.third.fourth.fifth
18
- @k.path.should eq [:first, :second, :third, :fourth]
19
- @k.endpoint.should eq Stub.new(:fifth)
17
+ @k.path.should eq [:first, :second, :third, :fourth, Stub.new(:fifth)]
20
18
  @k.should be_absolute
21
19
  end
22
20
 
@@ -16,7 +16,7 @@ module Squeel
16
16
  end
17
17
 
18
18
  it "creates Operations with #{operator} operator from key paths" do
19
- left = KeyPath.new(:first, :second)
19
+ left = KeyPath.new([:first, :second])
20
20
  node = left.send(operator, 1)
21
21
  node.should be_an Operation
22
22
  node.left.should eq left
@@ -55,7 +55,7 @@ module Squeel
55
55
  end
56
56
 
57
57
  it "creates Operations with custom operator from key paths" do
58
- left = KeyPath.new(:first, :second)
58
+ left = KeyPath.new([:first, :second])
59
59
  node = left.op('||', 1)
60
60
  node.should be_an Operation
61
61
  node.left.should eq left
@@ -84,4 +84,4 @@ module Squeel
84
84
 
85
85
  end
86
86
  end
87
- end
87
+ end
@@ -30,38 +30,37 @@ module Squeel
30
30
  it 'creates a KeyPath when sent an unknown method' do
31
31
  keypath = @s.another
32
32
  keypath.should be_a KeyPath
33
- keypath.path_with_endpoint.should eq [@s, Stub.new(:another)]
33
+ keypath.path.should eq [@s, Stub.new(:another)]
34
34
  end
35
35
 
36
36
  it 'creates a KeyPath when sent #id' do
37
37
  keypath = @s.id
38
38
  keypath.should be_a KeyPath
39
- keypath.path_with_endpoint.should eq [@s, Stub.new(:id)]
39
+ keypath.path.should eq [@s, Stub.new(:id)]
40
40
  end
41
41
 
42
42
  it 'creates a KeyPath when sent #type' do
43
43
  keypath = @s.type
44
44
  keypath.should be_a KeyPath
45
- keypath.path_with_endpoint.should eq [@s, Stub.new(:type)]
45
+ keypath.path.should eq [@s, Stub.new(:type)]
46
46
  end
47
47
 
48
48
  it 'creates a KeyPath with a join endpoint when sent a method with a Class param' do
49
49
  keypath = @s.another(Person)
50
50
  keypath.should be_a KeyPath
51
- keypath.path_with_endpoint.should eq [@s, Join.new(:another, Arel::InnerJoin, Person)]
51
+ keypath.path.should eq [@s, Join.new(:another, Arel::InnerJoin, Person)]
52
52
  end
53
53
 
54
54
  it 'creates a KeyPath with a sifter endpoint when sent #sift' do
55
55
  keypath = @s.sift(:blah, 1)
56
56
  keypath.should be_a KeyPath
57
- keypath.path_with_endpoint.should eq [@s, Sifter.new(:blah, [1])]
57
+ keypath.path.should eq [@s, Sifter.new(:blah, [1])]
58
58
  end
59
59
 
60
60
  it 'creates an absolute keypath with just an endpoint with ~' do
61
61
  node = ~@s
62
62
  node.should be_a KeyPath
63
- node.path.should eq []
64
- node.endpoint.should eq @s
63
+ node.path.should eq [@s]
65
64
  end
66
65
 
67
66
  Squeel::Constants::PREDICATES.each do |method_name|
@@ -115,6 +115,11 @@ module Squeel
115
115
  as.to_sql.should match /"children_people"."name" AS other_name/
116
116
  end
117
117
 
118
+ it 'creates an ARel Grouping node for a Squeel Grouping node' do
119
+ grouping = @v.accept(dsl{_(id)})
120
+ grouping.should be_a Arel::Nodes::Grouping
121
+ end
122
+
118
123
  it 'creates an ARel Addition node for an Operation node with + as operator' do
119
124
  operation = @v.accept(dsl{id + 1})
120
125
  operation.should be_a Arel::Nodes::Addition
@@ -147,4 +152,4 @@ module Squeel
147
152
 
148
153
  end
149
154
  end
150
- end
155
+ end
@@ -55,6 +55,24 @@ module Squeel
55
55
  predicate.should eq '1=1'
56
56
  end
57
57
 
58
+ it 'visits Grouping nodes' do
59
+ predicate = @v.accept(dsl{_(`foo`)})
60
+ predicate.should be_a Arel::Nodes::Grouping
61
+ predicate.to_sql.should eq '(foo)'
62
+ end
63
+
64
+ it 'visits Grouping nodes on the attribute side of predicates' do
65
+ predicate = @v.accept(dsl{_(`foo`) == `foo`})
66
+ predicate.should be_a Arel::Nodes::Equality
67
+ predicate.to_sql.should eq '(foo) = foo'
68
+ end
69
+
70
+ it 'visits operations containing Grouping nodes' do
71
+ predicate = @v.accept(dsl{_(1) + _(1) == 2})
72
+ predicate.should be_a Arel::Nodes::Equality
73
+ predicate.to_sql.should eq '(1) + (1) = 2'
74
+ end
75
+
58
76
  it 'creates OR nodes against a Literal' do
59
77
  predicate = @v.accept(dsl{`blah` | `blah`})
60
78
  predicate.should be_a Arel::Nodes::Grouping
@@ -384,6 +402,16 @@ module Squeel
384
402
  function.to_sql.should match /newname/
385
403
  end
386
404
 
405
+ it 'accepts As nodes containing symbols' do
406
+ as = @v.accept(:name.as('other_name'))
407
+ as.to_sql.should match /"people"."name" AS other_name/
408
+ end
409
+
410
+ it 'accepts As nodes containing stubs' do
411
+ as = @v.accept(dsl{name.as(other_name)})
412
+ as.to_sql.should match /"people"."name" AS other_name/
413
+ end
414
+
387
415
  it 'creates an ARel Addition node for an Operation node with + as operator' do
388
416
  operation = @v.accept(dsl{id + 1})
389
417
  operation.should be_a Arel::Nodes::Addition
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squeel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-02 00:00:00.000000000 -04:00
13
- default_executable:
12
+ date: 2012-05-30 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: activerecord
17
- requirement: &70156349477400 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ~>
@@ -22,10 +21,15 @@ dependencies:
22
21
  version: '3.0'
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *70156349477400
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
26
30
  - !ruby/object:Gem::Dependency
27
31
  name: activesupport
28
- requirement: &70156349476680 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
29
33
  none: false
30
34
  requirements:
31
35
  - - ~>
@@ -33,10 +37,15 @@ dependencies:
33
37
  version: '3.0'
34
38
  type: :runtime
35
39
  prerelease: false
36
- version_requirements: *70156349476680
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '3.0'
37
46
  - !ruby/object:Gem::Dependency
38
47
  name: polyamorous
39
- requirement: &70156349475880 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
40
49
  none: false
41
50
  requirements:
42
51
  - - ~>
@@ -44,10 +53,15 @@ dependencies:
44
53
  version: 0.5.0
45
54
  type: :runtime
46
55
  prerelease: false
47
- version_requirements: *70156349475880
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.5.0
48
62
  - !ruby/object:Gem::Dependency
49
63
  name: rspec
50
- requirement: &70156349475260 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
51
65
  none: false
52
66
  requirements:
53
67
  - - ~>
@@ -55,10 +69,15 @@ dependencies:
55
69
  version: 2.6.0
56
70
  type: :development
57
71
  prerelease: false
58
- version_requirements: *70156349475260
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 2.6.0
59
78
  - !ruby/object:Gem::Dependency
60
79
  name: machinist
61
- requirement: &70156349474620 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
62
81
  none: false
63
82
  requirements:
64
83
  - - ~>
@@ -66,10 +85,15 @@ dependencies:
66
85
  version: 1.0.6
67
86
  type: :development
68
87
  prerelease: false
69
- version_requirements: *70156349474620
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 1.0.6
70
94
  - !ruby/object:Gem::Dependency
71
95
  name: faker
72
- requirement: &70156349473320 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
73
97
  none: false
74
98
  requirements:
75
99
  - - ~>
@@ -77,10 +101,15 @@ dependencies:
77
101
  version: 0.9.5
78
102
  type: :development
79
103
  prerelease: false
80
- version_requirements: *70156349473320
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.9.5
81
110
  - !ruby/object:Gem::Dependency
82
111
  name: sqlite3
83
- requirement: &70156349488720 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
84
113
  none: false
85
114
  requirements:
86
115
  - - ~>
@@ -88,7 +117,12 @@ dependencies:
88
117
  version: 1.3.3
89
118
  type: :development
90
119
  prerelease: false
91
- version_requirements: *70156349488720
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 1.3.3
92
126
  description: ! "\n Squeel unlocks the power of ARel in your Rails 3 application
93
127
  with\n a handy block-based syntax. You can write subqueries, access named\n
94
128
  \ functions provided by your RDBMS, and more, all without writing\n SQL
@@ -102,6 +136,7 @@ files:
102
136
  - .gitignore
103
137
  - .travis.yml
104
138
  - .yardopts
139
+ - CHANGELOG.md
105
140
  - Gemfile
106
141
  - LICENSE
107
142
  - README.md
@@ -114,10 +149,12 @@ files:
114
149
  - lib/squeel/adapters/active_record/3.0/compat.rb
115
150
  - lib/squeel/adapters/active_record/3.0/context.rb
116
151
  - lib/squeel/adapters/active_record/3.0/relation_extensions.rb
152
+ - lib/squeel/adapters/active_record/3.1/compat.rb
117
153
  - lib/squeel/adapters/active_record/3.1/context.rb
118
154
  - lib/squeel/adapters/active_record/3.1/preloader_extensions.rb
119
155
  - lib/squeel/adapters/active_record/3.1/relation_extensions.rb
120
156
  - lib/squeel/adapters/active_record/base_extensions.rb
157
+ - lib/squeel/adapters/active_record/compat.rb
121
158
  - lib/squeel/adapters/active_record/context.rb
122
159
  - lib/squeel/adapters/active_record/join_dependency_extensions.rb
123
160
  - lib/squeel/adapters/active_record/preloader_extensions.rb
@@ -134,6 +171,7 @@ files:
134
171
  - lib/squeel/nodes/as.rb
135
172
  - lib/squeel/nodes/binary.rb
136
173
  - lib/squeel/nodes/function.rb
174
+ - lib/squeel/nodes/grouping.rb
137
175
  - lib/squeel/nodes/join.rb
138
176
  - lib/squeel/nodes/key_path.rb
139
177
  - lib/squeel/nodes/literal.rb
@@ -143,12 +181,13 @@ files:
143
181
  - lib/squeel/nodes/operators.rb
144
182
  - lib/squeel/nodes/or.rb
145
183
  - lib/squeel/nodes/order.rb
184
+ - lib/squeel/nodes/ordering.rb
146
185
  - lib/squeel/nodes/predicate.rb
186
+ - lib/squeel/nodes/predicate_methods.rb
147
187
  - lib/squeel/nodes/predicate_operators.rb
148
188
  - lib/squeel/nodes/sifter.rb
149
189
  - lib/squeel/nodes/stub.rb
150
190
  - lib/squeel/nodes/unary.rb
151
- - lib/squeel/predicate_methods.rb
152
191
  - lib/squeel/version.rb
153
192
  - lib/squeel/visitors.rb
154
193
  - lib/squeel/visitors/attribute_visitor.rb
@@ -171,6 +210,7 @@ files:
171
210
  - spec/squeel/core_ext/symbol_spec.rb
172
211
  - spec/squeel/dsl_spec.rb
173
212
  - spec/squeel/nodes/function_spec.rb
213
+ - spec/squeel/nodes/grouping_spec.rb
174
214
  - spec/squeel/nodes/join_spec.rb
175
215
  - spec/squeel/nodes/key_path_spec.rb
176
216
  - spec/squeel/nodes/literal_spec.rb
@@ -186,7 +226,6 @@ files:
186
226
  - spec/squeel/visitors/symbol_visitor_spec.rb
187
227
  - spec/support/schema.rb
188
228
  - squeel.gemspec
189
- has_rdoc: true
190
229
  homepage: http://erniemiller.org/projects/squeel
191
230
  licenses: []
192
231
  post_install_message:
@@ -201,7 +240,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
201
240
  version: '0'
202
241
  segments:
203
242
  - 0
204
- hash: 3396698856870050214
243
+ hash: -3844391929361765236
205
244
  required_rubygems_version: !ruby/object:Gem::Requirement
206
245
  none: false
207
246
  requirements:
@@ -210,10 +249,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
249
  version: '0'
211
250
  segments:
212
251
  - 0
213
- hash: 3396698856870050214
252
+ hash: -3844391929361765236
214
253
  requirements: []
215
254
  rubyforge_project: squeel
216
- rubygems_version: 1.3.9.4
255
+ rubygems_version: 1.8.24
217
256
  signing_key:
218
257
  specification_version: 3
219
258
  summary: ActiveRecord 3, improved.
@@ -234,6 +273,7 @@ test_files:
234
273
  - spec/squeel/core_ext/symbol_spec.rb
235
274
  - spec/squeel/dsl_spec.rb
236
275
  - spec/squeel/nodes/function_spec.rb
276
+ - spec/squeel/nodes/grouping_spec.rb
237
277
  - spec/squeel/nodes/join_spec.rb
238
278
  - spec/squeel/nodes/key_path_spec.rb
239
279
  - spec/squeel/nodes/literal_spec.rb