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

1"""Markdown output handler.""" 

2from pathlib import Path 

3from typing import List 

4from domain.core.output_handler import OutputHandler 

5 

6 

7class MarkdownHandler(OutputHandler): 

8 """Handler for saving content as markdown files.""" 

9 

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 

15 

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 

21 

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 

27 

28 return total_size