class Predicator::Visitors::Dot
Attributes
edges[R]
nodes[R]
Public Class Methods
new()
click to toggle source
# File lib/predicator/visitors/dot.rb, line 6 def initialize @nodes = [] @edges = [] end
Public Instance Methods
accept(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 11 def accept node super <<-eodot digraph parse_tree { size="8,5" node [shape = none]; edge [dir = none]; #{@nodes.join "\n "} #{@edges.join "\n "} } eodot end
Private Instance Methods
add_source(source, parent)
click to toggle source
# File lib/predicator/visitors/dot.rb, line 103 def add_source source, parent ast = Predicator.parse source vis = Dot.new vis.accept ast @nodes += vis.nodes @edges += vis.edges @edges << "#{parent.object_id} -> #{ast.object_id};" end
terminal(node)
click to toggle source
# File lib/predicator/visitors/dot.rb, line 98 def terminal node value = node.left.to_s @nodes << "#{node.object_id} [label=\"#{value}\"];" end
visit_AND(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 53 def visit_AND node @nodes << "#{node.object_id} [label=\"and\"];" super end
visit_BETWEEN(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 48 def visit_BETWEEN node @nodes << "#{node.object_id} [label=\"between\"];" super end
visit_DATEAGO(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 73 def visit_DATEAGO node @nodes << "#{node.object_id} [label=\"ago\"];" super end
visit_DATEFROMNOW(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 78 def visit_DATEFROMNOW node @nodes << "#{node.object_id} [label=\"from now\"];" super end
visit_EQ(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 33 def visit_EQ node @nodes << "#{node.object_id} [label=\"=\"];" super end
visit_GROUP(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 68 def visit_GROUP node @nodes << "#{node.object_id} [label=\"( )\"];" super end
visit_GT(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 38 def visit_GT node @nodes << "#{node.object_id} [label=\">\"];" super end
visit_LT(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 43 def visit_LT node @nodes << "#{node.object_id} [label=\"<\"];" super end
visit_NOT(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 63 def visit_NOT node @nodes << "#{node.object_id} [label=\"!\"];" super end
visit_OR(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 58 def visit_OR node @nodes << "#{node.object_id} [label=\"or\"];" super end
visit_STRENDSWITH(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 88 def visit_STRENDSWITH node @nodes << "#{node.object_id} [label=\"ends with\"];" super end
visit_STRING(node)
click to toggle source
# File lib/predicator/visitors/dot.rb, line 93 def visit_STRING node value = node.left @nodes << "#{node.object_id} [label=\"'#{value}'\"];" end
visit_STRSTARTSWITH(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 83 def visit_STRSTARTSWITH node @nodes << "#{node.object_id} [label=\"starts with\"];" super end
visit_children(node)
click to toggle source
Calls superclass method
# File lib/predicator/visitors/dot.rb, line 26 def visit_children node node.children.each do |c| @edges << "#{node.object_id} -> #{c.object_id};" end super end