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 += "
" + l + "
"; 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("+")) { // Highlight trailing whitespace if (m = l.match(/([\t ]+)$/)) l = l.replace(/[\t ]+$/, "" + m[1] + ""); 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 += "
" + l + "
"; } 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 = ""; new_content += ""; new_content += "
" + line1 + "
" + line2 + "
" + diffContent + "
"; diff.innerHTML = new_content; }); }