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> \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