aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/visitors
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-12-10 09:16:41 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2010-12-10 09:16:41 -0800
commit2d320e366a586fa9869080950e4c27f4aad55a5a (patch)
tree4a9832e7014f13a41a00d201ac48b3407df01447 /lib/arel/visitors
parenta84c34fa08596c563226f3df216e3adf8868f112 (diff)
downloadrails-2d320e366a586fa9869080950e4c27f4aad55a5a.tar.gz
rails-2d320e366a586fa9869080950e4c27f4aad55a5a.tar.bz2
rails-2d320e366a586fa9869080950e4c27f4aad55a5a.zip
testing nary nodes in the depth first visitor
Diffstat (limited to 'lib/arel/visitors')
-rw-r--r--lib/arel/visitors/depth_first.rb6
-rw-r--r--lib/arel/visitors/dot.rb8
2 files changed, 12 insertions, 2 deletions
diff --git a/lib/arel/visitors/depth_first.rb b/lib/arel/visitors/depth_first.rb
index 00f18727f0..49133653c5 100644
--- a/lib/arel/visitors/depth_first.rb
+++ b/lib/arel/visitors/depth_first.rb
@@ -47,11 +47,15 @@ module Arel
alias :visit_Arel_Nodes_InnerJoin :join
alias :visit_Arel_Nodes_OuterJoin :join
+ def nary o
+ o.children.each { |child| visit child }
+ end
+ alias :visit_Arel_Nodes_And :nary
+
def binary o
visit o.left
visit o.right
end
- alias :visit_Arel_Nodes_And :binary
alias :visit_Arel_Nodes_As :binary
alias :visit_Arel_Nodes_Assignment :binary
alias :visit_Arel_Nodes_Between :binary
diff --git a/lib/arel/visitors/dot.rb b/lib/arel/visitors/dot.rb
index eab5e4afdc..4f80f31421 100644
--- a/lib/arel/visitors/dot.rb
+++ b/lib/arel/visitors/dot.rb
@@ -123,11 +123,17 @@ module Arel
alias :visit_Arel_Attributes_Boolean :visit_Arel_Attribute
alias :visit_Arel_Attributes_Attribute :visit_Arel_Attribute
+ def nary o
+ o.children.each_with_index do |x,i|
+ edge(i) { visit x }
+ end
+ end
+ alias :visit_Arel_Nodes_And :nary
+
def visit_Arel_Nodes_Equality o
visit_edge o, "left"
visit_edge o, "right"
end
- alias :visit_Arel_Nodes_And :visit_Arel_Nodes_Equality
alias :visit_Arel_Nodes_Or :visit_Arel_Nodes_Equality
alias :visit_Arel_Nodes_NotEqual :visit_Arel_Nodes_Equality
alias :visit_Arel_Nodes_GreaterThan :visit_Arel_Nodes_Equality