fix: Protect tags with placeholders to prevent text shifting and context leakage

1. Защита тегов: Внедрили механизм _hide_protected_tags / _restore_protected_tags с использованием плейсхолдера ___ETPGRF_PROTECTED___. Это решило проблему "протекания" контекста через защищенные теги (например, союз "и" больше не прыгает через <code>).

2. Фикс тестов: Обновили тесты, чтобы они учитывали реальное поведение BeautifulSoup (закрытие тегов) и Unbreakables (схлопывание пробелов).
This commit is contained in:
2026-02-03 00:57:46 +03:00
parent fe6f2a1522
commit f3a651a54f
3 changed files with 109 additions and 14 deletions

View File

@@ -72,6 +72,7 @@ CHAR_ARROW_LR_LONG_DOUBLE = '\u27fa' # Длинная двойная двуна
CHAR_MIDDOT = '\u00b7' # Средняя точка (· иногда используется как знак умножения) / &middot;
CHAR_UNIT_SEPARATOR = '\u25F0' # Символ временный разделитель для составных единиц (◰), чтобы не уходить
# в "мертвый" цикл при замене на тонкий пробел. Можно взять любой редкий символом.
CHAR_PLACEHOLDER = '\uFFFC' # Символ-заполнитель (Object Replacement Character) для защищенных тегов.
# === КОНСТАНТЫ ПСЕВДОГРАФИКИ ===
@@ -253,7 +254,7 @@ CUSTOM_ENCODE_MAP = {
'\u201d': '&rdquo;', # ” / &rdquo; / &rdquor; / &CloseCurlyDoubleQuote;
'\u2019': '&rsquo;', # / &rsquo; / &rsquor; / &CloseCurlyQuote;
'\u2237': '&Colon;', # ∷ / &Colon; / &Proportion;
'\u2201': '&comp;', # / &comp; / &complement;
'\u2201': '&comp;', # / &comp; / &complement;
'\u2218': '&compfn;', # ∘ / &compfn; / &SmallCircle;
'\u2102': '&Copf;', # / &Copf; / &complexes;
'\u222f': '&Conint;', # ∯ / &Conint; / &DoubleContourIntegral;