require 'cgi' require 'diff' require 'open3' require 'open-uri' require 'pp' require 'set' require 'tempfile' module PrettyPatch public GIT_PATH = "git" def self.prettify(string) $last_prettify_file_count = -1 $last_prettify_part_count = { "remove" => 0, "add" => 0, "shared" => 0, "binary" => 0, "extract-error" => 0 } string = normalize_line_ending(string) str = "#{HEADER}
\n" # Just look at the first line to see if it is an SVN revision number as added # by webkit-patch for git checkouts. $svn_revision = 0 string.each_line do |line| match = /^Subversion\ Revision: (\d*)$/.match(line) unless match.nil? str << "#{match[1]}\n" $svn_revision = match[1].to_i; end break end fileDiffs = FileDiff.parse(string) # Newly added images get two diffs with svn 1.7; toss the first one. deleteIndices = [] for i in 1...fileDiffs.length prev = i - 1 if fileDiffs[prev].image and not fileDiffs[prev].image_url and fileDiffs[i].image and fileDiffs[i].image_url and fileDiffs[prev].filename == fileDiffs[i].filename deleteIndices.unshift(prev) end end deleteIndices.each{ |i| fileDiffs.delete_at(i) } $last_prettify_file_count = fileDiffs.length str << fileDiffs.collect{ |diff| diff.to_html }.join str << "