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
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-14 16:35 +0000
1"""RTF encoding engine for orchestrating document generation."""
3from typing import TYPE_CHECKING
5from .strategies import EncodingStrategy, PaginatedStrategy, SinglePageStrategy
7if TYPE_CHECKING:
8 from ..encode import RTFDocument
11class RTFEncodingEngine:
12 """Main engine for RTF document encoding.
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 """
19 def __init__(self):
20 from ..services.document_service import RTFDocumentService
22 self._document_service = RTFDocumentService()
23 self._single_page_strategy = SinglePageStrategy()
24 self._paginated_strategy = PaginatedStrategy()
26 def encode_document(self, document: "RTFDocument") -> str:
27 """Encode an RTF document using the appropriate strategy.
29 Args:
30 document: The RTF document to encode
32 Returns:
33 Complete RTF string
34 """
35 strategy = self._select_strategy(document)
36 return strategy.encode(document)
38 def _select_strategy(self, document: "RTFDocument") -> "EncodingStrategy":
39 """Select the appropriate encoding strategy based on document characteristics.
41 Args:
42 document: The RTF document to analyze
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