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
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-18 22:03 +0000
1import typing
3from archdocs import mermaid_syntax, settings
4from archdocs.main import ArchitectureParserAndRenderer, SettingsForArchdocs
7def _render_architecture_html(arch_engine: ArchitectureParserAndRenderer) -> str:
8 rendered_diagram: typing.Final = (
9 arch_engine.render_architecture_diagram().replace("&", "&").replace("<", "<")
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:]
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)