# File lib/diff/lcs/htmldiff.rb, line 112
  def run
    verify_options

    if @options[:expand_tabs] > 0 && self.class.can_expand_tabs
      formatter = Text::Format.new
      formatter.tabstop = @options[:expand_tabs]

      @left = left.map { |line| formatter.expand(line.chomp) }
      @right = right.map { |line| formatter.expand(line.chomp) }
    end

    @left.map! { |line| CGI.escapeHTML(line.chomp) }
    @right.map! { |line| CGI.escapeHTML(line.chomp) }

    @options[:output] << "<html>\n<head>\n<title>\#{@options[:title]}</title>\n<style type=\"text/css\">\n\#{@options[:css]}\n</style>\n</head>\n<body>\n<h1>\#{@options[:title]}</h1>\n<p>Legend: <span class=\"only_a\">Only in Old</span>&nbsp;\n<span class=\"only_b\">Only in New</span></p>\n<div class=\"diff\">\n"

    callbacks = Callbacks.new(@options[:output])
    Diff::LCS.traverse_sequences(@left, @right, callbacks)

    @options[:output] << "</div>\n</body>\n</html>\n"
  end