UNPKG

string-differ

Version:

A Javascript library to compare and transform strings.

79 lines 2.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RangeOperationsHelper = void 0; const RangeOperationsHelper = (s2) => { const retainOps = []; const deleteOps = []; const insertOps = []; const operations = []; const pushOperations = (queue, type) => { if (queue.length > 0) { const startIndex = queue[0].index; const currentindex = queue[queue.length - 1].index; switch (type) { case "insert": { operations.push({ type: "insert", value: s2.slice(currentindex, startIndex + 1), }); break; } case "delete": { operations.push({ type: "delete", startIndex: currentindex, endIndex: startIndex, }); break; } case "retain": { operations.push({ type: "retain", startIndex: currentindex, endIndex: startIndex, }); } break; } } }; const addOperation = (type, index) => { if (type === "insert") { if (insertOps.length === 0) { pushOperations(deleteOps, "delete"); pushOperations(retainOps, "retain"); deleteOps.length = 0; retainOps.length = 0; } insertOps.push({ type, index }); } else if (type === "delete") { if (deleteOps.length === 0) { pushOperations(insertOps, "insert"); pushOperations(retainOps, "retain"); insertOps.length = 0; retainOps.length = 0; } deleteOps.push({ type, index }); } else if (type === "retain") { if (retainOps.length === 0) { pushOperations(insertOps, "insert"); pushOperations(deleteOps, "delete"); insertOps.length = 0; deleteOps.length = 0; } retainOps.push({ type, index }); } }; const getOperations = () => { pushOperations(insertOps, "insert"); pushOperations(deleteOps, "delete"); pushOperations(retainOps, "retain"); return operations.reverse(); }; return { addOperation, getOperations }; }; exports.RangeOperationsHelper = RangeOperationsHelper; //# sourceMappingURL=range.js.map