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

Inherits:
FunctionalVisitor show all
Defined in:
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 '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 'lib/action_dispatch/journey/visitors.rb', line 234

def accept(node, seed = [[], []])
  super
  nodes, edges = seed
  "  digraph parse_tree {\n    size=\"8,5\"\n    node [shape = none];\n    edge [dir = none];\n    \#{nodes.join \"\\n\"}\n    \#{edges.join(\"\\n\")}\n  }\n  eodot\nend\n"