Class: ActionDispatch::Journey::Visitors::Dot
- Inherits:
-
FunctionalVisitor
- Object
- FunctionalVisitor
- ActionDispatch::Journey::Visitors::Dot
- Defined in:
- actionpack/lib/action_dispatch/journey/visitors.rb
Overview
class String < FunctionalVisitor # :nodoc:
private
def binary(node, seed)
visit(node.right, visit(node.left, seed))
end
def nary(node, seed)
last_child = node.children.last
node.children.inject(seed) { |s, c|
string = visit(c, s)
string << "|" unless last_child == c
string
}
end
def terminal(node, seed)
seed + node.left
end
def visit_GROUP(node, seed)
visit(node.left, seed.dup << "(") << ")"
end
INSTANCE = new
end
Constant Summary
Constants inherited from FunctionalVisitor
FunctionalVisitor::DISPATCH_CACHE
Instance Method Summary collapse
- #accept(node, seed = [[], []]) ⇒ Object
-
#initialize ⇒ Dot
constructor
:nodoc:.
Methods inherited from FunctionalVisitor
#visit, #visit_DOT, #visit_LITERAL, #visit_SLASH, #visit_SYMBOL
Constructor Details
#initialize ⇒ Dot
:nodoc:
229 230 231 232 |
# File 'actionpack/lib/action_dispatch/journey/visitors.rb', line 229 def initialize @nodes = [] @edges = [] end |
Instance Method Details
#accept(node, seed = [[], []]) ⇒ Object
234 235 236 237 238 239 240 241 242 243 244 245 246 |
# File 'actionpack/lib/action_dispatch/journey/visitors.rb', line 234 def accept(node, seed = [[], []]) super nodes, edges = seed <<-eodot digraph parse_tree { size="8,5" node [shape = none]; edge [dir = none]; #{nodes.join "\n"} #{edges.join("\n")} } eodot end |