string-differ
Version:
A Javascript library to compare and transform strings.
79 lines • 2.74 kB
JavaScript
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
;