Total Complexity | 3 |
Total Lines | 47 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | from .typing import MermaidDiagram |
||
2 | |||
3 | HTML_TEMPLATE = """<!doctype html> |
||
4 | <html lang="en"> |
||
5 | <head> |
||
6 | <link rel="icon" type="image/x-icon" href="https://mermaid.js.org/favicon.ico"> |
||
7 | <meta charset="utf-8"> |
||
8 | <title>Mermaid Diagram</title> |
||
9 | <style> |
||
10 | pre.mermaid { |
||
11 | font-family: "Fira Mono", "Roboto Mono", "Source Code Pro", monospace; |
||
12 | } |
||
13 | </style> |
||
14 | </head> |
||
15 | <body> |
||
16 | <pre class="mermaid"> |
||
17 | </pre> |
||
18 | <script type="module"> |
||
19 | import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs'; |
||
20 | let config = { startOnLoad: true, flowchart: { useMaxWidth: false, htmlLabels: true } }; |
||
21 | mermaid.initialize(config); |
||
22 | </script> |
||
23 | </body> |
||
24 | </html> |
||
25 | """ |
||
26 | |||
27 | |||
28 | def markdown(diagram: MermaidDiagram) -> str: |
||
29 | """ |
||
30 | Generate Markdown code for a Mermaid diagram. |
||
31 | """ |
||
32 | return f"```mermaid\n{diagram}\n```" |
||
33 | |||
34 | |||
35 | def html(diagram: MermaidDiagram, title: str | None = None) -> str: |
||
36 | """ |
||
37 | Generate HTML code for a Mermaid diagram. |
||
38 | """ |
||
39 | output = HTML_TEMPLATE.replace( |
||
40 | '<pre class="mermaid">', f'<pre class="mermaid">\n{diagram}' |
||
41 | ) |
||
42 | if title: |
||
43 | output = output.replace( |
||
44 | "<title>Mermaid Diagram</title>", f"<title>{title}</title>" |
||
45 | ) |
||
46 | return output |
||
47 |