UNPKG

assertthat

Version:
41 lines (40 loc) 2.03 kB
"use strict"; 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;