feat(round-memory): version-diff + round-memory-store (SP2a)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-06-16 15:31:31 +03:00
parent e6347b2a70
commit 51654894c8
4 changed files with 177 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env node
/** version-diff — чистый построчный diff двух текстов (SP2a). Без зависимостей, fail-safe:
* нестроковый/пустой вход трактуется как пустой текст, никогда не кидает. */
/** Построчный diff old→new. Общий префикс и суффикс опускаются; середина выводится как
* удалённые строки с префиксом '- ' и добавленные с префиксом '+ '. Возвращает текстовый блок
* (пустая строка, если изменений нет). */
export function diffLines(oldText, newText) {
const a = String(oldText == null ? '' : oldText).split('\n');
const b = String(newText == null ? '' : newText).split('\n');
let start = 0;
while (start < a.length && start < b.length && a[start] === b[start]) start++;
let endA = a.length - 1;
let endB = b.length - 1;
while (endA >= start && endB >= start && a[endA] === b[endB]) { endA--; endB--; }
const lines = [];
for (let i = start; i <= endA; i++) lines.push(`- ${a[i]}`);
for (let i = start; i <= endB; i++) lines.push(`+ ${b[i]}`);
return lines.join('\n');
}