1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

adding an AS node

This commit is contained in:
Aaron Patterson 2010-11-23 18:22:42 -08:00
parent 76932b99d6
commit 6667cfb995
8 changed files with 41 additions and 1 deletions

View file

@ -4,6 +4,7 @@
* #lock will lock SELECT statements "FOR UPDATE" on mysql
* Nodes::Node#not factory method added for creating Nodes::Not nodes
* Added an As node
== 2.0.4

View file

@ -17,6 +17,7 @@ lib/arel/expressions.rb
lib/arel/insert_manager.rb
lib/arel/nodes.rb
lib/arel/nodes/and.rb
lib/arel/nodes/as.rb
lib/arel/nodes/assignment.rb
lib/arel/nodes/avg.rb
lib/arel/nodes/between.rb
@ -81,6 +82,7 @@ lib/arel/visitors/visitor.rb
lib/arel/visitors/where_sql.rb
test/attributes/test_attribute.rb
test/helper.rb
test/nodes/test_as.rb
test/nodes/test_count.rb
test/nodes/test_delete_statement.rb
test/nodes/test_equality.rb

View file

@ -6,6 +6,7 @@ require 'arel/nodes/not_equal'
require 'arel/nodes/assignment'
require 'arel/nodes/or'
require 'arel/nodes/and'
require 'arel/nodes/as'
require 'arel/nodes/not'
require 'arel/nodes/greater_than'
require 'arel/nodes/greater_than_or_equal'

6
lib/arel/nodes/as.rb Normal file
View file

@ -0,0 +1,6 @@
module Arel
module Nodes
class As < Arel::Nodes::Binary
end
end
end

View file

@ -1,5 +1,9 @@
module Arel
module Predications
def as other
Nodes::As.new self, other
end
def not_eq other
Nodes::NotEqual.new self, other
end
@ -174,4 +178,4 @@ module Arel
}
end
end
end
end

View file

@ -250,6 +250,10 @@ module Arel
end
end
def visit_Arel_Nodes_As o
"#{visit o.left} AS #{visit o.right}"
end
def visit_Arel_Nodes_UnqualifiedColumn o
"#{quote_column_name o.name}"
end

16
test/nodes/test_as.rb Normal file
View file

@ -0,0 +1,16 @@
require 'helper'
module Arel
module Nodes
describe 'As' do
describe '#as' do
it 'makes an AS node' do
attr = Table.new(:users)[:id]
as = attr.as(Arel.sql('foo'))
assert_equal attr, as.left
assert_equal 'foo', as.right
end
end
end
end
end

View file

@ -38,6 +38,12 @@ module Arel
sql.must_be_like "NOT foo"
end
it "should visit_As" do
as = Nodes::As.new(Arel.sql("foo"), Arel.sql("bar"))
sql = @visitor.accept as
sql.must_be_like "foo AS bar"
end
it "should visit_Bignum" do
@visitor.accept 8787878092
end