Class: ActionDispatch::Journey::Visitors::Dot

Inherits:
FunctionalVisitor show all
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

Methods inherited from FunctionalVisitor

#visit, #visit_DOT, #visit_LITERAL, #visit_SLASH, #visit_SYMBOL

Constructor Details

#initializeDot

: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