Coverage for src/rtflite/encoding/engine.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.10.3, created at 2025-08-14 16:35 +0000

1"""RTF encoding engine for orchestrating document generation.""" 

2 

3from typing import TYPE_CHECKING 

4 

5from .strategies import EncodingStrategy, PaginatedStrategy, SinglePageStrategy 

6 

7if TYPE_CHECKING: 

8 from ..encode import RTFDocument 

9 

10 

11class RTFEncodingEngine: 

12 """Main engine for RTF document encoding. 

13 

14 This class orchestrates the encoding process by selecting the appropriate 

15 strategy based on document characteristics and delegating the actual 

16 encoding to strategy classes. 

17 """ 

18 

19 def __init__(self): 

20 from ..services.document_service import RTFDocumentService 

21 

22 self._document_service = RTFDocumentService() 

23 self._single_page_strategy = SinglePageStrategy() 

24 self._paginated_strategy = PaginatedStrategy() 

25 

26 def encode_document(self, document: "RTFDocument") -> str: 

27 """Encode an RTF document using the appropriate strategy. 

28 

29 Args: 

30 document: The RTF document to encode 

31 

32 Returns: 

33 Complete RTF string 

34 """ 

35 strategy = self._select_strategy(document) 

36 return strategy.encode(document) 

37 

38 def _select_strategy(self, document: "RTFDocument") -> "EncodingStrategy": 

39 """Select the appropriate encoding strategy based on document characteristics. 

40 

41 Args: 

42 document: The RTF document to analyze 

43 

44 Returns: 

45 The selected encoding strategy 

46 """ 

47 if self._document_service.needs_pagination(document): 

48 return self._paginated_strategy 

49 else: 

50 return self._single_page_strategy