[ADD] поддержка изображений и рефакторинг диспетчера токенов
- registry.py: реестры BLOCK/PATTERNS/INLINE с декораторами @block/@pattern/@inline - render.py: единый диспетчер, слой паттернов, проверка контракта pos (RuntimeError), pending_toc вместо current_heading для единственной вставки СОДЕРЖАНИЯ - handlers/image.py: вики-ссылки ![[путь|ширина]], подпись Рисунок N —— ... , figure-окружение, авто-нумерация, копирование файлов в tmpdir - handlers/inline.py: табличная диспетчеризация вместо if/elif - Все block-обработчики подписаны @block, корректно продвигают pos - parser.py: препроцессинг ![[...]] → , iter_image_sources() - main.py: _copy_assets (emblem+картинки в tmpdir), фикс лога (имя .tex), cwd=tmpdir для xelatex, цикл вместо дублирования, force-include emblem - tests/test_render.py: pytest (10 тестов), pyproject dev-dep, make test - preamble.py: name=Рисунок для figure-caption (было Рис. от babel) - Исправлены баги: мёртвый обработчик, emblem не копировалась, множественный TOC, захардкожен report.log, маскировка pos - README/AGENTS.md обновлены
This commit is contained in:
@@ -1,14 +1,13 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from markdown_it.token import Token
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from md2gost.render import Renderer
|
||||
from md2gost.registry import block
|
||||
|
||||
|
||||
def fence(r: Renderer, tok: Token) -> str:
|
||||
@block("fence")
|
||||
def fence(r, tok: Token) -> str:
|
||||
r.pos += 1
|
||||
lang = tok.info.strip()
|
||||
code = tok.content.rstrip()
|
||||
opts = f"[language={lang}]" if lang else ""
|
||||
|
||||
Reference in New Issue
Block a user