Coverage for domain / outputs / markdown_handler.py: 100.00%
19 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-07 00:07 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-07 00:07 +0000
1"""Markdown output handler."""
2from pathlib import Path
3from typing import List
4from domain.core.output_handler import OutputHandler
7class MarkdownHandler(OutputHandler):
8 """Handler for saving content as markdown files."""
10 def save(self, content: str, destination: Path) -> int:
11 md_content = f"# source: {destination.name}\n\n{content}"
12 output_path = destination.with_suffix(".md")
13 output_path.write_text(md_content, encoding="utf-8")
14 return output_path.stat().st_size
16 def save_multiple(self, contents: List[str], destination: Path, source_name: str) -> int:
17 """Save each page/chapter as a separate numbered markdown file."""
18 stem = destination.stem
19 parent = destination.parent
20 total_size = 0
22 for idx, content in enumerate(contents, start=1):
23 md_content = f"# source: {source_name} (page {idx})\n\n{content}"
24 output_path = parent / f"{stem}_page_{idx}.md"
25 output_path.write_text(md_content, encoding="utf-8")
26 total_size += output_path.stat().st_size
28 return total_size