Class: ActionDispatch::Journey::Visitors::Dot
Do not use. This class is for internal use only.
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
FunctionalVisitor
|
|
Instance Chain:
self,
FunctionalVisitor
|
|
Inherits: |
ActionDispatch::Journey::Visitors::FunctionalVisitor
|
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
FunctionalVisitor
- Inherited
Class Method Summary
- .new ⇒ Dot constructor
Instance Method Summary
- #accept(node, seed = [[], []])
- #binary(node, seed) private
- #nary(node, seed) private
- #terminal(node, seed) private
- #unary(node, seed) private
- #visit_CAT(node, seed) private
- #visit_GROUP(node, seed) private
- #visit_OR(node, seed) private
- #visit_STAR(node, seed) private
FunctionalVisitor
- Inherited
Constructor Details
.new ⇒ Dot
# File 'actionpack/lib/action_dispatch/journey/visitors.rb', line 229
def initialize @nodes = [] @edges = [] end
Instance Method Details
#accept(node, seed = [[], []])
[ GitHub ]# 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
#binary(node, seed) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/journey/visitors.rb', line 249
def binary(node, seed) seed.last.concat node.children.map { |c| "#{node.object_id} -> #{c.object_id};" } super end
#nary(node, seed) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/journey/visitors.rb', line 256
def nary(node, seed) seed.last.concat node.children.map { |c| "#{node.object_id} -> #{c.object_id};" } super end
#terminal(node, seed) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/journey/visitors.rb', line 288
def terminal(node, seed) value = node.left seed.first << "#{node.object_id} [label=\"#{value}\"];" seed end
#unary(node, seed) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/journey/visitors.rb', line 263
def unary(node, seed) seed.last << "#{node.object_id} -> #{node.left.object_id};" super end
#visit_CAT(node, seed) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/journey/visitors.rb', line 273
def visit_CAT(node, seed) seed.first << "#{node.object_id} [label=\"○\"];" super end
#visit_GROUP(node, seed) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/journey/visitors.rb', line 268
def visit_GROUP(node, seed) seed.first << "#{node.object_id} [label=\"()\"];" super end
#visit_OR(node, seed) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/journey/visitors.rb', line 283
def visit_OR(node, seed) seed.first << "#{node.object_id} [label=\"|\"];" super end
#visit_STAR(node, seed) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/journey/visitors.rb', line 278
def visit_STAR(node, seed) seed.first << "#{node.object_id} [label=\"*\"];" super end