var EMPTY_SIDE = " \n";
var highlightDiffs = function() {
var diffs = document.getElementsByClassName("diffcode");
$A(diffs).each(function(diff) {
var content = diff.innerHTML.strip();
diff.innerHTML = "";
var line1 = "";
var line2 = "";
var diffContent = "";
var lines = $A(content.split("\n"));
var hunk_start_line_1 = -1;
var hunk_start_line_2 = -1;
var start = new Date();
lines.each(function(l) {
if (l.length > 250)
l = l.substring(0, 250);
l = l.gsub("\t", " ");
if (l.startsWith("diff")) {
line1 += "\n";
line2 += "\n";
diffContent += "
";
return;
}
if (l.startsWith("---")) {
return;
line1 += "\n";
line2 += "\n";
diffContent += "" + l + "
";
return;
}
if (l.startsWith("+++")) {
return;
line1 += "\n";
line2 += "\n";
diffContent += "" + l + "
";
return;
}
if (l.startsWith("+")) {
line1 += "\n";
line2 += ++hunk_start_line_2 + "\n";
diffContent += "" + l + "
";
}
else if (l.startsWith("-")) {
line1 += ++hunk_start_line_1 + "\n";
line2 += "\n";
diffContent += "" + l + "
";
}
else if (l.startsWith("@"))
{
if (m = l.match(/@@ \-([0-9]+),\d+ \+(\d+),\d+ @@/))
{
hunk_start_line_1 = parseInt(m[1]) - 1;
hunk_start_line_2 = parseInt(m[2]) - 1;
}
line1 += "...\n";
line2 += "...\n";
diffContent += "";
}
else if (l.startsWith(" "))
{
line1 += ++hunk_start_line_1 + "\n";
line2 += ++hunk_start_line_2 + "\n";
diffContent += l + "\n";
}
});
var duration = new Date() - start;
var new_content = "" + line1 + " | ";
new_content += "" + line2 + " | ";
new_content += "" + diffContent + " |
";
diff.innerHTML = new_content;
});
}