assertthat
Version:
assertthat provides fluent TDD.
41 lines (40 loc) • 2.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.simplifyDiff = void 0;
const ArrayDiff_1 = require("./ArrayDiff");
const ArrayDiffSegment_1 = require("./ArrayDiffSegment");
const simplifyDiff = function (diff) {
if (diff.segments.length === 0) {
return diff;
}
const newDiff = (0, ArrayDiff_1.arrayDiff)({
segments: [diff.segments[0]],
cost: diff.segments[0].cost
});
for (const currentSegment of diff.segments.slice(1)) {
// eslint-disable-next-line unicorn/prefer-at
const previousSegment = newDiff.segments.slice(-1)[0];
if ((0, ArrayDiffSegment_1.isEqualDiffSegment)(currentSegment) && (0, ArrayDiffSegment_1.isEqualDiffSegment)(previousSegment)) {
previousSegment.equal = [...previousSegment.equal, ...currentSegment.equal];
previousSegment.cost += currentSegment.cost;
}
else if ((0, ArrayDiffSegment_1.isChangeDiffSegment)(currentSegment) && (0, ArrayDiffSegment_1.isChangeDiffSegment)(previousSegment)) {
previousSegment.change = [...previousSegment.change, ...currentSegment.change];
previousSegment.cost += currentSegment.cost;
}
else if ((0, ArrayDiffSegment_1.isOmissionDiffSegment)(currentSegment) && (0, ArrayDiffSegment_1.isOmissionDiffSegment)(previousSegment)) {
previousSegment.omission = [...previousSegment.omission, ...currentSegment.omission];
previousSegment.cost += currentSegment.cost;
}
else if ((0, ArrayDiffSegment_1.isAdditionDiffSegment)(currentSegment) && (0, ArrayDiffSegment_1.isAdditionDiffSegment)(previousSegment)) {
previousSegment.addition = [...previousSegment.addition, ...currentSegment.addition];
previousSegment.cost += currentSegment.cost;
}
else {
newDiff.segments.push(currentSegment);
}
newDiff.cost += currentSegment.cost;
}
return newDiff;
};
exports.simplifyDiff = simplifyDiff;