aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/visitors/dot.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/arel/visitors/dot.rb')
-rw-r--r--lib/arel/visitors/dot.rb44
1 files changed, 26 insertions, 18 deletions
diff --git a/lib/arel/visitors/dot.rb b/lib/arel/visitors/dot.rb
index eab5e4afdc..3c4fe12d1f 100644
--- a/lib/arel/visitors/dot.rb
+++ b/lib/arel/visitors/dot.rb
@@ -36,7 +36,6 @@ module Arel
def visit_Arel_Nodes_TableAlias o
visit_edge o, "name"
visit_edge o, "relation"
- visit_edge o, "columns"
end
def visit_Arel_Nodes_Sum o
@@ -57,13 +56,11 @@ module Arel
def visit_Arel_Nodes_StringJoin o
visit_edge o, "left"
- visit_edge o, "right"
end
def visit_Arel_Nodes_InnerJoin o
visit_edge o, "left"
visit_edge o, "right"
- visit_edge o, "constraint"
end
alias :visit_Arel_Nodes_OuterJoin :visit_Arel_Nodes_InnerJoin
@@ -78,9 +75,11 @@ module Arel
alias :visit_Arel_Nodes_Group :unary
alias :visit_Arel_Nodes_Grouping :unary
alias :visit_Arel_Nodes_Having :unary
+ alias :visit_Arel_Nodes_Limit :unary
alias :visit_Arel_Nodes_Not :unary
alias :visit_Arel_Nodes_Offset :unary
alias :visit_Arel_Nodes_On :unary
+ alias :visit_Arel_Nodes_Top :unary
alias :visit_Arel_Nodes_UnqualifiedColumn :unary
def visit_Arel_Nodes_InsertStatement o
@@ -90,7 +89,7 @@ module Arel
end
def visit_Arel_Nodes_SelectCore o
- visit_edge o, "froms"
+ visit_edge o, "source"
visit_edge o, "projections"
visit_edge o, "wheres"
end
@@ -123,23 +122,32 @@ module Arel
alias :visit_Arel_Attributes_Boolean :visit_Arel_Attribute
alias :visit_Arel_Attributes_Attribute :visit_Arel_Attribute
- def visit_Arel_Nodes_Equality o
+ def nary o
+ o.children.each_with_index do |x,i|
+ edge(i) { visit x }
+ end
+ end
+ alias :visit_Arel_Nodes_And :nary
+
+ def binary 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
- alias :visit_Arel_Nodes_GreaterThanOrEqual :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_Assignment :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_In :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_LessThan :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_LessThanOrEqual :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_Between :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_NotIn :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_DoesNotMatch :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_Matches :visit_Arel_Nodes_Equality
+ alias :visit_Arel_Nodes_As :binary
+ alias :visit_Arel_Nodes_Assignment :binary
+ alias :visit_Arel_Nodes_Between :binary
+ alias :visit_Arel_Nodes_DoesNotMatch :binary
+ alias :visit_Arel_Nodes_Equality :binary
+ alias :visit_Arel_Nodes_GreaterThan :binary
+ alias :visit_Arel_Nodes_GreaterThanOrEqual :binary
+ alias :visit_Arel_Nodes_In :binary
+ alias :visit_Arel_Nodes_JoinSource :binary
+ alias :visit_Arel_Nodes_LessThan :binary
+ alias :visit_Arel_Nodes_LessThanOrEqual :binary
+ alias :visit_Arel_Nodes_Matches :binary
+ alias :visit_Arel_Nodes_NotEqual :binary
+ alias :visit_Arel_Nodes_NotIn :binary
+ alias :visit_Arel_Nodes_Or :binary
def visit_String o
@node_stack.last.fields << o