class ActionDispatch::Journey::GTG::TransitionTable

def visualizer(paths, title = "FSM")

def visualizer(paths, title = "FSM")
  viz_dir   = File.join __dir__, "..", "visualizer"
  fsm_js    = File.read File.join(viz_dir, "fsm.js")
  fsm_css   = File.read File.join(viz_dir, "fsm.css")
  erb       = File.read File.join(viz_dir, "index.html.erb")
  states    = "function tt() { return #{to_json}; }"
  fun_routes = paths.sample(3).map do |ast|
    ast.filter_map { |n|
      case n
      when Nodes::Symbol
        case n.left
        when ":id" then rand(100).to_s
        when ":format" then %w{ xml json }.sample
        else
          "omg"
        end
      when Nodes::Terminal then n.symbol
      else
        nil
      end
    }.join
  end
  stylesheets = [fsm_css]
  svg         = to_svg
  javascripts = [states, fsm_js]
  fun_routes  = fun_routes
  stylesheets = stylesheets
  svg         = svg
  javascripts = javascripts
  require "erb"
  template = ERB.new erb
  template.result(binding)
end