Упрощение git: только просмотр с diff, без словного уровня, render без побочек

- История: убран таб текстового diff — только Просмотр версии с подсветкой; пустые состояния через emptyMessage
- GitManager: удалены fileDiffText/fileDiffHtml (+escHtml), остался fileContentAt/workdirContent/history/restore
- MdParser: удалён словный merge (плейсхолдеры/tokenize/risiko), текст — отдельными del/add как diff; renderInner без сброса codeBlocks, render() — clear+renderInner; убраны save/restore хаки
- Тесты обновлены
This commit is contained in:
2026-09-06 20:49:14 +03:00
parent 781e1dfc12
commit f6074df0fc
7 changed files with 67 additions and 360 deletions
+9 -20
View File
@@ -184,32 +184,21 @@ int main(int argc, char *argv[])
}
}
// parseBlocksWithDiff: правка в обычном тексте — ОДИН блок со словным diff внутри
// parseBlocksWithDiff: правка в обычном тексте — два отдельных tinted-блока
// (del, затем add), как стандартный diff; словного уровня нет
{
const QString oldMd = "# T\n\nOld words here\n";
const QString newMd = "# T\n\nNew words here\n";
auto d = p.parseBlocksWithDiff(oldMd, newMd, vault, fileDir);
if (d.size() != 2) return fail("text merge размер", QString::number(d.size()));
if (d[0].toMap().value("change").toString() != "same") return fail("text merge[0] same");
if (d[1].toMap().value("type").toString() != "html"
|| d[1].toMap().value("change").toString() != "mod")
return fail("text merge[1] должен быть html/mod", d[1].toMap().value("change").toString());
const QString html = d[1].toMap().value("html").toString();
if (!html.contains("244,63,94")) return fail("text merge без розового");
if (!html.contains("34,197,94")) return fail("text merge без зелёного");
if (!html.contains("Old") || !html.contains("New")) return fail("text merge потерял слова", html.left(300));
if (!html.contains("words here")) return fail("text merge потерял общее", html.left(300));
}
// parseBlocksWithDiff: ссылка поменялась — fallback на два отдельных блока (разметку не рвём)
{
const QString oldMd = "# T\n\n[a](http://old.com/x)\n";
const QString newMd = "# T\n\n[a](http://new.com/x)\n";
auto d = p.parseBlocksWithDiff(oldMd, newMd, vault, fileDir);
if (d.size() != 3) return fail("link fallback размер", QString::number(d.size()));
if (d.size() != 3) return fail("text diff размер", QString::number(d.size()));
if (d[0].toMap().value("change").toString() != "same") return fail("text diff[0] same");
if (d[1].toMap().value("change").toString() != "del"
|| d[2].toMap().value("change").toString() != "add")
return fail("link fallback del/add");
return fail("text diff del/add");
if (!d[1].toMap().value("html").toString().contains("244,63,94"))
return fail("text del без розового");
if (!d[2].toMap().value("html").toString().contains("34,197,94"))
return fail("text add без зелёного");
}
// parseBlocksWithDiff: правка внутри кода — ОДИН блок с построчным diff внутри