/* * * PrinterUtils (printer-utils.js) * Author: rtfpessoa * */ var jsDiff = JsDiff; function PrinterUtils() { } PrinterUtils.prototype.getDiffName = function (oldFilename, newFilename) { if (oldFilename && newFilename && oldFilename !== newFilename) { return oldFilename + " -> " + newFilename; } else if (newFilename) { return newFilename; } else if (oldFilename) { return oldFilename; } else { return "Unknown filename"; } }; PrinterUtils.prototype.diffHighlight = function (diffLine1, diffLine2, isTripleDiff) { var lineStart1, lineStart2; var prefixSize = 1; if (isTripleDiff) prefixSize = 2; lineStart1 = diffLine1.substr(0, prefixSize); lineStart2 = diffLine2.substr(0, prefixSize); diffLine1 = diffLine1.substr(prefixSize); diffLine2 = diffLine2.substr(prefixSize); var diff = jsDiff.diffChars(diffLine1, diffLine2); var highlightedLine = ""; diff.forEach(function (part) { var elemType = part.added ? 'ins' : part.removed ? 'del' : null; if (elemType !== null) highlightedLine += "<" + elemType + ">" + part.value + ""; else highlightedLine += part.value; }); return { o: lineStart1 + removeIns(highlightedLine), n: lineStart2 + removeDel(highlightedLine) } }; function removeIns(line) { return line.replace(/(((.|\n)*?)<\/ins>)/g, ""); } function removeDel(line) { return line.replace(/(((.|\n)*?)<\/del>)/g, ""); }