# File lib/journey/gtg/transition_table.rb, line 74
      def visualizer paths, title = 'FSM'
        viz_dir   = File.join File.dirname(__FILE__), '..', 'visualizer'
        fsm_js    = File.read File.join(viz_dir, 'fsm.js')
        d3_js     = File.read File.join(viz_dir, 'd3.min.js')
        reset_css = File.read File.join(viz_dir, 'reset.css')
        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.shuffle.first(3).map do |ast|
          ast.map { |n|
            case n
            when Nodes::Symbol
              case n.left
              when ':id' then rand(100).to_s
              when ':format' then %w{ xml json }.shuffle.first
              else
                'omg'
              end
            when Nodes::Terminal then n.symbol
            else
              nil
            end
          }.compact.join
        end

        stylesheets = [reset_css, fsm_css]
        svg         = to_svg
        javascripts = [d3_js, states, fsm_js]

        # Annoying hack for 1.9 warnings
        fun_routes  = fun_routes
        stylesheets = stylesheets
        svg         = svg
        javascripts = javascripts

        require 'erb'
        template = ERB.new erb
        template.result(binding)
      end