Coverage for archdocs/integrations/common.py: 100%

16 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-18 22:03 +0000

1import typing 

2 

3from archdocs import mermaid_syntax, settings 

4from archdocs.main import ArchitectureParserAndRenderer, SettingsForArchdocs 

5 

6 

7def _render_architecture_html(arch_engine: ArchitectureParserAndRenderer) -> str: 

8 rendered_diagram: typing.Final = ( 

9 arch_engine.render_architecture_diagram().replace("&", "&amp;").replace("<", "&lt;") 

10 ) 

11 placeholder_match: typing.Final = settings.UI_PLACEHOLDER_PATTERN.search(settings.UI_HTML_TEMPLATE) 

12 if placeholder_match is None: 

13 return settings.UI_HTML_TEMPLATE 

14 prefix_end: typing.Final = placeholder_match.start() 

15 suffix_start: typing.Final = placeholder_match.end() 

16 diagram_block: typing.Final = ( 

17 f"{placeholder_match.group('pre_open')}{mermaid_syntax.DIAGRAM_HEADER}\n" 

18 f"{rendered_diagram}{placeholder_match.group('pre_close')}" 

19 ) 

20 return settings.UI_HTML_TEMPLATE[:prefix_end] + diagram_block + settings.UI_HTML_TEMPLATE[suffix_start:] 

21 

22 

23def _create_architecture_engine( 

24 arch_settings: SettingsForArchdocs | None, 

25) -> ArchitectureParserAndRenderer: 

26 if arch_settings is None: 

27 arch_settings = SettingsForArchdocs( 

28 root_dir=settings.DEFAULT_ROOT_DIR, 

29 service_name=settings.DEFAULT_SERVICE_NAME, 

30 ) 

31 return ArchitectureParserAndRenderer(local_settings=arch_settings)