Coverage for main.py: 100.00%

16 statements  

« 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. 

3 

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 

16 

17converters = { 

18 ".pdf": PDFConverter, 

19 ".epub": EPubConverter, 

20} 

21 

22handlers = { 

23 OutputFormat.PLAIN_TEXT: PlainTextHandler, 

24 OutputFormat.MARKDOWN: MarkdownHandler, 

25 OutputFormat.JSON: JSONHandler, 

26} 

27 

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() 

37 

38 

39if __name__ == "__main__": 

40 main()