61 lines
1.7 KiB
Markdown
61 lines
1.7 KiB
Markdown
# Документация разработчика
|
||
|
||
## Архитектура
|
||
|
||
```
|
||
src/
|
||
├── __main__.py # CLI (typer)
|
||
├── core/
|
||
│ ├── converter.py # основная логика
|
||
│ ├── renderer.py # парсинг и диспетчеризация
|
||
│ └── style_registry.py # стили
|
||
├── handlers/
|
||
│ ├── __init__.py # реестр обработчиков
|
||
│ └── builtin.py # встроенные обработчики
|
||
├── plugins/ # плагины (пользовательские)
|
||
└── utils.py # вспомогательные функции
|
||
```
|
||
|
||
## Добавление нового обработчика
|
||
|
||
1. Создайте функцию:
|
||
|
||
```python
|
||
@register_handler("new_element")
|
||
def handle_new_element(node, doc, images_dir, style_reg):
|
||
# ваш код
|
||
pass
|
||
```
|
||
|
||
2. Регистрируйте через `@register_handler("type")`
|
||
3. В `mistune` должен быть соответствующий плагин (если нужен кастомный синтаксис)
|
||
|
||
## Стили
|
||
|
||
Стили определяются в YAML и применяются через `StyleRegistry`.
|
||
|
||
## Тестирование
|
||
|
||
```bash
|
||
pytest tests/
|
||
pytest tests/ -v -s # с логами
|
||
```
|
||
|
||
Тесты покрывают:
|
||
- Обработчики
|
||
- Стили
|
||
- CLI
|
||
- Плагины
|
||
|
||
## Docker
|
||
|
||
Сборка: `docker build -t md2docx .`
|
||
|
||
Запуск: `docker run -v ./inputs:/app/inputs -v ./outputs:/app/outputs md2docx ...`
|
||
|
||
## CI/CD (опционально)
|
||
|
||
- Запуск тестов
|
||
- Сборка Docker
|
||
- Публикация в PyPI (опционально)
|