Files
md-to-docx/src/core/converter.py
Mikan 8da965234c [AI]
Поддержка тем
2025-12-08 17:21:41 +03:00

49 lines
1.7 KiB
Python

from pathlib import Path
from typing import Optional
from docx import Document
from .style_registry import StyleRegistry
from .renderer import render_markdown_to_docx
import logging
logger = logging.getLogger(__name__)
def process_document(input_dir: Path, output_dir: Path, style_config_path: Path, template_path: Optional[Path] = None, theme_name: Optional[str] = None):
if theme_name:
theme_path = Path("resources/themes") / f"{theme_name}.yaml"
if theme_path.exists():
style_config_path = theme_path
else:
logger.warning(f"Тема {theme_name} не найдена, используем стандартный стиль")
for doc_dir in input_dir.iterdir():
if not doc_dir.is_dir():
continue
# Пропускаем папку images
if doc_dir.name == "images":
continue
doc_name = doc_dir.name
md_path = doc_dir / "document.md"
images_dir = doc_dir / "images"
if not md_path.exists():
logger.warning(f"Пропущено: {doc_name} — нет document.md")
continue
with open(md_path, encoding="utf-8") as f:
md_content = f.read()
if template_path and template_path.exists():
doc = Document(template_path)
else:
doc = Document()
style_reg = StyleRegistry(style_config_path)
style_reg.ensure_styles_in_doc(doc)
render_markdown_to_docx(doc, md_content, images_dir, style_reg)
output_path = output_dir / f"{doc_name}.docx"
output_path.parent.mkdir(parents=True, exist_ok=True)
doc.save(output_path)
logger.info(f"Создан документ: {output_path}")