# File lib/arel/visitors/dot.rb, line 195
195: def edge name
196: edge = Edge.new(name, @node_stack.last)
197: @edge_stack.push edge
198: @edges << edge
199: yield
200: @edge_stack.pop
201: end
# File lib/arel/visitors/dot.rb, line 213
213: def quote string
214: string.to_s.gsub('"', '\"')
215: end
# File lib/arel/visitors/dot.rb, line 217
217: def to_dot
218: "digraph \"ARel\" {\nnode [width=0.375,height=0.25,shape=record];\n" +
219: @nodes.map { |node|
220: label = "<f0>#{node.name}"
221:
222: node.fields.each_with_index do |field, i|
223: label << "|<f#{i + 1}>#{quote field}"
224: end
225:
226: "#{node.id} [label=\"#{label}\"];"
227: }.join("\n") + "\n" + @edges.map { |edge|
228: "#{edge.from.id} -> #{edge.to.id} [label=\"#{edge.name}\"];"
229: }.join("\n") + "\n}"
230: end
# File lib/arel/visitors/dot.rb, line 181
181: def visit o
182: if node = @seen[o.object_id]
183: @edge_stack.last.to = node
184: return
185: end
186:
187: node = Node.new(o.class.name, o.object_id)
188: @seen[node.id] = node
189: @nodes << node
190: with_node node do
191: super
192: end
193: end
# File lib/arel/visitors/dot.rb, line 120
120: def visit_Arel_Attribute o
121: visit_edge o, "relation"
122: visit_edge o, "name"
123: end
# File lib/arel/visitors/dot.rb, line 53
53: def visit_Arel_Nodes_Count o
54: visit_edge o, "expressions"
55: visit_edge o, "distinct"
56: end
# File lib/arel/visitors/dot.rb, line 78
78: def visit_Arel_Nodes_DeleteStatement o
79: visit_edge o, "relation"
80: visit_edge o, "wheres"
81: end
# File lib/arel/visitors/dot.rb, line 131
131: def visit_Arel_Nodes_Equality o
132: visit_edge o, "left"
133: visit_edge o, "right"
134: end
# File lib/arel/visitors/dot.rb, line 31
31: def visit_Arel_Nodes_Grouping o
32: visit_edge o, "expr"
33: end
# File lib/arel/visitors/dot.rb, line 71
71: def visit_Arel_Nodes_InnerJoin o
72: visit_edge o, "left"
73: visit_edge o, "right"
74: visit_edge o, "constraint"
75: end
# File lib/arel/visitors/dot.rb, line 91
91: def visit_Arel_Nodes_InsertStatement o
92: visit_edge o, "relation"
93: visit_edge o, "columns"
94: visit_edge o, "values"
95: end
# File lib/arel/visitors/dot.rb, line 87
87: def visit_Arel_Nodes_Offset o
88: visit_edge o, "value"
89: end
# File lib/arel/visitors/dot.rb, line 58
58: def visit_Arel_Nodes_On o
59: visit_edge o, "expr"
60: end
# File lib/arel/visitors/dot.rb, line 35
35: def visit_Arel_Nodes_Ordering o
36: visit_edge o, "expr"
37: visit_edge o, "direction"
38: end
# File lib/arel/visitors/dot.rb, line 97
97: def visit_Arel_Nodes_SelectCore o
98: visit_edge o, "froms"
99: visit_edge o, "projections"
100: visit_edge o, "wheres"
101: end
# File lib/arel/visitors/dot.rb, line 103
103: def visit_Arel_Nodes_SelectStatement o
104: visit_edge o, "cores"
105: visit_edge o, "limit"
106: visit_edge o, "orders"
107: visit_edge o, "offset"
108: end
# File lib/arel/visitors/dot.rb, line 66
66: def visit_Arel_Nodes_StringJoin o
67: visit_edge o, "left"
68: visit_edge o, "right"
69: end
# File lib/arel/visitors/dot.rb, line 46
46: def visit_Arel_Nodes_Sum o
47: visit_edge o, "expressions"
48: visit_edge o, "alias"
49: end
# File lib/arel/visitors/dot.rb, line 40
40: def visit_Arel_Nodes_TableAlias o
41: visit_edge o, "name"
42: visit_edge o, "relation"
43: visit_edge o, "columns"
44: end
# File lib/arel/visitors/dot.rb, line 83
83: def visit_Arel_Nodes_UnqualifiedColumn o
84: visit_edge o, "attribute"
85: end
# File lib/arel/visitors/dot.rb, line 110
110: def visit_Arel_Nodes_UpdateStatement o
111: visit_edge o, "relation"
112: visit_edge o, "wheres"
113: visit_edge o, "values"
114: end
# File lib/arel/visitors/dot.rb, line 62
62: def visit_Arel_Nodes_Values o
63: visit_edge o, "expressions"
64: end
# File lib/arel/visitors/dot.rb, line 116
116: def visit_Arel_Table o
117: visit_edge o, "name"
118: end
# File lib/arel/visitors/dot.rb, line 171
171: def visit_Array o
172: o.each_with_index do |x,i|
173: edge(i) { visit x }
174: end
175: end
# File lib/arel/visitors/dot.rb, line 165
165: def visit_Hash o
166: o.each_with_index do |pair, i|
167: edge("pair_#{i}") { visit pair }
168: end
169: end
# File lib/arel/visitors/dot.rb, line 149
149: def visit_String o
150: @node_stack.last.fields << o
151: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.