Files
js-scripts/components/component-diffutil-ex.js
2025-04-04 17:19:07 +08:00

39 lines
1.5 KiB
JavaScript

requireJAR('diffutils-1.3.0.jar');
var DiffUtils = Packages.difflib.DiffUtils;
var DeleteDelta = Packages.difflib.DeleteDelta;
var ChangeDelta = Packages.difflib.ChangeDelta;
var InsertDelta = Packages.difflib.InsertDelta;
exports.diff2List = (left, right) => {
var patch = DiffUtils.diff(left, right);
var result = [];
$EACH(patch.getDeltas(), (delta) => {
if (delta instanceof DeleteDelta) {
result.push("@@deleted @" + delta.getOriginal().getPosition()
+ " #" + delta.getOriginal().getLines().size());
$EACH(delta.getOriginal().getLines(), (line) => {
result.push("-- " + line);
})
}
if (delta instanceof ChangeDelta) {
result.push("@@modified @" + delta.getOriginal().getPosition()
+ " #" + delta.getOriginal().getLines().size() + '-' + delta.getRevised().getLines().size());
$EACH(delta.getOriginal().getLines(), (line) => {
result.push("-- " + line);
});
$EACH(delta.getRevised().getLines(), (line) => {
result.push("++ " + line);
});
}
if (delta instanceof InsertDelta) {
result.push("@@inserted @" + delta.getOriginal().getPosition()
+ " #" + delta.getRevised().getLines().size());
$EACH(delta.getRevised().getLines(), (line) => {
result.push("++ " + line);
});
}
});
return result;
};