Coverage for domain / outputs / json_handler.py: 100.00%
22 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"""JSON output handler."""
2import json
3from pathlib import Path
4from typing import List
5from domain.core.output_handler import OutputHandler
8class JSONHandler(OutputHandler):
9 """Handler for saving content as JSON files."""
11 def save(self, content: str, destination: Path) -> int:
12 data = {"source": str(destination.name), "content": content}
13 output_path = destination.with_suffix(".json")
14 with open(output_path, 'w') as f:
15 json.dump(data, f, indent=4)
16 return output_path.stat().st_size
18 def save_multiple(self, contents: List[str], destination: Path, source_name: str) -> int:
19 """Save each page/chapter as a separate numbered JSON file."""
20 stem = destination.stem
21 parent = destination.parent
22 total_size = 0
24 for idx, content in enumerate(contents, start=1):
25 data = {
26 "source": source_name,
27 "page": idx,
28 "content": content
29 }
30 output_path = parent / f"{stem}_page_{idx}.json"
31 with open(output_path, 'w') as f:
32 json.dump(data, f, indent=4)
33 total_size += output_path.stat().st_size
35 return total_size