@fromjs/backend
Version:
30 lines (29 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function fixOffByOneTraversalError(step, nextStep) {
if (typeof step.operationLog._result === "string" &&
typeof nextStep.operationLog._result === "string") {
let charBefore = step.operationLog._result[step.charIndex];
let charNow = nextStep.operationLog._result[nextStep.charIndex];
if (charNow !== charBefore) {
let prevCharNow = nextStep.operationLog._result[nextStep.charIndex - 1];
let nextCharNow = nextStep.operationLog._result[nextStep.charIndex + 1];
console.log("char doesn't match after traversal step", {
charNow,
charBefore,
prevCharNow,
nextCharNow,
});
// YOLO: try to fix off-by-one errors
if (prevCharNow === charBefore) {
nextStep.charIndex -= 1;
console.log("Auto-fixed off by one error");
}
else if (nextCharNow === charBefore) {
nextStep.charIndex += 1;
console.log("Auto-fixed off by one error");
}
}
}
}
exports.fixOffByOneTraversalError = fixOffByOneTraversalError;