2023-03-18 12:55:22 +01:00
|
|
|
CONSOLE_HTML_FORMAT = """\
|
|
|
|
<!DOCTYPE html>
|
|
|
|
<head>
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
<style>
|
|
|
|
{stylesheet}
|
|
|
|
body {{
|
|
|
|
color: {foreground};
|
|
|
|
background-color: {background};
|
|
|
|
}}
|
|
|
|
</style>
|
|
|
|
</head>
|
|
|
|
<html>
|
|
|
|
<body>
|
2023-06-15 20:22:20 +02:00
|
|
|
<pre style="font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace"><code>{code}</code></pre>
|
2023-03-18 12:55:22 +01:00
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
"""
|
|
|
|
|
|
|
|
CONSOLE_SVG_FORMAT = """\
|
|
|
|
<svg class="rich-terminal" viewBox="0 0 {width} {height}" xmlns="http://www.w3.org/2000/svg">
|
|
|
|
<!-- Generated with Rich https://www.textualize.io -->
|
|
|
|
<style>
|
|
|
|
|
|
|
|
@font-face {{
|
|
|
|
font-family: "Fira Code";
|
|
|
|
src: local("FiraCode-Regular"),
|
|
|
|
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
|
|
|
|
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 400;
|
|
|
|
}}
|
|
|
|
@font-face {{
|
|
|
|
font-family: "Fira Code";
|
|
|
|
src: local("FiraCode-Bold"),
|
|
|
|
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
|
|
|
|
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
|
|
|
|
font-style: bold;
|
|
|
|
font-weight: 700;
|
|
|
|
}}
|
|
|
|
|
|
|
|
.{unique_id}-matrix {{
|
|
|
|
font-family: Fira Code, monospace;
|
|
|
|
font-size: {char_height}px;
|
|
|
|
line-height: {line_height}px;
|
|
|
|
font-variant-east-asian: full-width;
|
|
|
|
}}
|
|
|
|
|
|
|
|
.{unique_id}-title {{
|
|
|
|
font-size: 18px;
|
|
|
|
font-weight: bold;
|
|
|
|
font-family: arial;
|
|
|
|
}}
|
|
|
|
|
|
|
|
{styles}
|
|
|
|
</style>
|
|
|
|
|
|
|
|
<defs>
|
|
|
|
<clipPath id="{unique_id}-clip-terminal">
|
|
|
|
<rect x="0" y="0" width="{terminal_width}" height="{terminal_height}" />
|
|
|
|
</clipPath>
|
|
|
|
{lines}
|
|
|
|
</defs>
|
|
|
|
|
|
|
|
{chrome}
|
|
|
|
<g transform="translate({terminal_x}, {terminal_y})" clip-path="url(#{unique_id}-clip-terminal)">
|
|
|
|
{backgrounds}
|
|
|
|
<g class="{unique_id}-matrix">
|
|
|
|
{matrix}
|
|
|
|
</g>
|
|
|
|
</g>
|
|
|
|
</svg>
|
|
|
|
"""
|
|
|
|
|
|
|
|
_SVG_FONT_FAMILY = "Rich Fira Code"
|
|
|
|
_SVG_CLASSES_PREFIX = "rich-svg"
|