Coverage for main.py: 100.00%
16 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"""
2Vellum - Document extraction engine for PDFs and ePubs.
4Entry point for the application. Delegates all business logic to the controller.
5"""
6from view.output_format import OutputFormat
7from view.ui import RetroCLI
8from view.keyboard import read_char
9from controller.converter_controller import ConverterController
10from domain.converters.pdf_converter import PDFConverter
11from domain.converters.epub_converter import EPubConverter
12from domain.outputs.plain_text_handler import PlainTextHandler
13from domain.outputs.markdown_handler import MarkdownHandler
14from domain.outputs.json_handler import JSONHandler
15from pathlib import Path
17converters = {
18 ".pdf": PDFConverter,
19 ".epub": EPubConverter,
20}
22handlers = {
23 OutputFormat.PLAIN_TEXT: PlainTextHandler,
24 OutputFormat.MARKDOWN: MarkdownHandler,
25 OutputFormat.JSON: JSONHandler,
26}
28def main(ui=None):
29 ui = ui or RetroCLI(keyboard_reader=read_char)
30 controller = ConverterController(
31 ui,
32 converters=converters,
33 handlers=handlers,
34 path_factory=Path
35 )
36 controller.run()
39if __name__ == "__main__":
40 main()