62 lines
1.4 KiB
JavaScript
62 lines
1.4 KiB
JavaScript
|
|
/*
|
||
|
|
*
|
||
|
|
* 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 + "</" + elemType + ">";
|
||
|
|
else highlightedLine += part.value;
|
||
|
|
});
|
||
|
|
|
||
|
|
return {
|
||
|
|
o: lineStart1 + removeIns(highlightedLine),
|
||
|
|
n: lineStart2 + removeDel(highlightedLine)
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
function removeIns(line) {
|
||
|
|
return line.replace(/(<ins>((.|\n)*?)<\/ins>)/g, "");
|
||
|
|
}
|
||
|
|
|
||
|
|
function removeDel(line) {
|
||
|
|
return line.replace(/(<del>((.|\n)*?)<\/del>)/g, "");
|
||
|
|
}
|