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; };