mirror of
https://github.com/daylinmorgan/yartsu.git
synced 2024-12-22 04:20:44 -06:00
fix: update for newer versions of rich
This commit is contained in:
parent
a9b77d7825
commit
1361fd8074
5 changed files with 27 additions and 17 deletions
|
@ -1,18 +1,20 @@
|
||||||
CONSOLE_SVG_FORMAT = """\
|
CONSOLE_SVG_FORMAT = """\
|
||||||
<svg class="rich-terminal shadow" viewBox="0 0 {width} {height}" xmlns="http://www.w3.org/2000/svg">
|
<svg class="rich-terminal shadow" viewBox="0 0 {width} {height}" xmlns="http://www.w3.org/2000/svg">
|
||||||
<!-- Generated with Rich https://www.textualize.io -->
|
<!-- Generated with Rich https://www.textualize.io & yartsu https://github.com/daylinmorgan/yartsu -->
|
||||||
<style>
|
<style>
|
||||||
@font-face {{
|
@font-face {{
|
||||||
font-family: "Fira Code";
|
font-family: "Fira Code";
|
||||||
src: local("FiraCode-Regular"),
|
src: local("FiraCode-Regular"),
|
||||||
url("https://cdn.jsdelivr.net/gh/ryanoasis/nerd-fonts@2.1.0/patched-fonts/FiraCode/Regular/complete/Fira%20Code%20Regular%20Nerd%20Font%20Complete.ttf") format("truetype");
|
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-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}}
|
}}
|
||||||
@font-face {{
|
@font-face {{
|
||||||
font-family: "Fira Code";
|
font-family: "Fira Code";
|
||||||
src: local("FiraCode-Bold"),
|
src: local("FiraCode-Bold"),
|
||||||
url("https://cdn.jsdelivr.net/gh/ryanoasis/nerd-fonts@2.1.0/patched-fonts/FiraCode/Bold/complete/Fira%20Code%20Bold%20Nerd%20Font%20Complete.ttf") format("truetype");
|
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-style: bold;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}}
|
}}
|
||||||
|
|
|
@ -68,7 +68,10 @@ class CustomFormatter(StdHelpFormatter):
|
||||||
# short action name; start on the same line and pad two spaces
|
# short action name; start on the same line and pad two spaces
|
||||||
elif action_header_len <= action_width:
|
elif action_header_len <= action_width:
|
||||||
tup = self._current_indent, "", action_width, action_header
|
tup = self._current_indent, "", action_width, action_header
|
||||||
action_header = f"{' '*self._current_indent}{action_header}{' '*(action_width+2 - action_header_len)}"
|
action_header = (
|
||||||
|
f"{' '*self._current_indent}{action_header}"
|
||||||
|
f"{' '*(action_width+2 - action_header_len)}"
|
||||||
|
)
|
||||||
indent_first = 0
|
indent_first = 0
|
||||||
|
|
||||||
# long action name; start on the next line
|
# long action name; start on the next line
|
||||||
|
@ -114,7 +117,6 @@ class CustomFormatter(StdHelpFormatter):
|
||||||
|
|
||||||
def add_argument(self, action: Action) -> None:
|
def add_argument(self, action: Action) -> None:
|
||||||
if action.help is not SUPPRESS:
|
if action.help is not SUPPRESS:
|
||||||
|
|
||||||
# find all invocations
|
# find all invocations
|
||||||
get_invocation = self._format_action_invocation
|
get_invocation = self._format_action_invocation
|
||||||
invocations = [get_invocation(action)]
|
invocations = [get_invocation(action)]
|
||||||
|
|
|
@ -19,7 +19,6 @@ DEFAULT_THEME = os.getenv("YARTSU_THEME", "cat-mocha")
|
||||||
|
|
||||||
|
|
||||||
def get_parser() -> ArgumentParser:
|
def get_parser() -> ArgumentParser:
|
||||||
|
|
||||||
parser = ArgumentParser(
|
parser = ArgumentParser(
|
||||||
usage=SUPPRESS,
|
usage=SUPPRESS,
|
||||||
description=textwrap.dedent(
|
description=textwrap.dedent(
|
||||||
|
|
|
@ -20,18 +20,24 @@ class Console(RichConsole):
|
||||||
theme: Optional[TerminalTheme] = None,
|
theme: Optional[TerminalTheme] = None,
|
||||||
clear: bool = True,
|
clear: bool = True,
|
||||||
code_format: str = CONSOLE_SVG_FORMAT,
|
code_format: str = CONSOLE_SVG_FORMAT,
|
||||||
|
font_aspect_ratio: float = 0.61,
|
||||||
|
unique_id: Optional[str] = None,
|
||||||
) -> str:
|
) -> str:
|
||||||
"""
|
"""
|
||||||
Generate an SVG from the console contents (requires record=True in Console constructor).
|
Generate an SVG from the console contents (requires record=True in Console constructor).
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
path (str): The path to write the SVG to.
|
title (str, optional): The title of the tab in the output image
|
||||||
title (str): The title of the tab in the output image
|
|
||||||
theme (TerminalTheme, optional): The ``TerminalTheme`` object to use to style the terminal
|
theme (TerminalTheme, optional): The ``TerminalTheme`` object to use to style the terminal
|
||||||
clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``
|
clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``
|
||||||
code_format (str): Format string used to generate the SVG. Rich will inject a number of variables
|
code_format (str, optional): Format string used to generate the SVG. Rich will inject a number of variables
|
||||||
into the string in order to form the final SVG output. The default template used and the variables
|
into the string in order to form the final SVG output. The default template used and the variables
|
||||||
injected by Rich can be found by inspecting the ``console.CONSOLE_SVG_FORMAT`` variable.
|
injected by Rich can be found by inspecting the ``console.CONSOLE_SVG_FORMAT`` variable.
|
||||||
|
font_aspect_ratio (float, optional): The width to height ratio of the font used in the ``code_format``
|
||||||
|
string. Defaults to 0.61, which is the width to height ratio of Fira Code (the default font).
|
||||||
|
If you aren't specifying a different font inside ``code_format``, you probably don't need this.
|
||||||
|
unique_id (str, optional): unique id that is used as the prefix for various elements (CSS styles, node
|
||||||
|
ids). If not set, this defaults to a computed value based on the recorded content.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from rich.cells import cell_len
|
from rich.cells import cell_len
|
||||||
|
@ -75,7 +81,7 @@ class Console(RichConsole):
|
||||||
|
|
||||||
width = self.width
|
width = self.width
|
||||||
char_height = 20
|
char_height = 20
|
||||||
char_width = char_height * 0.61
|
char_width = char_height * font_aspect_ratio
|
||||||
line_height = char_height * 1.22
|
line_height = char_height * 1.22
|
||||||
|
|
||||||
margin_top = 1
|
margin_top = 1
|
||||||
|
@ -127,14 +133,16 @@ class Console(RichConsole):
|
||||||
if clear:
|
if clear:
|
||||||
self._record_buffer.clear()
|
self._record_buffer.clear()
|
||||||
|
|
||||||
unique_id = "terminal-" + str(
|
if unique_id is None:
|
||||||
zlib.adler32(
|
unique_id = "terminal-" + str(
|
||||||
("".join(segment.text for segment in segments)).encode(
|
zlib.adler32(
|
||||||
"utf-8", "ignore"
|
("".join(repr(segment) for segment in segments)).encode(
|
||||||
|
"utf-8",
|
||||||
|
"ignore",
|
||||||
|
)
|
||||||
|
+ title.encode("utf-8", "ignore")
|
||||||
)
|
)
|
||||||
+ title.encode("utf-8", "ignore")
|
|
||||||
)
|
)
|
||||||
)
|
|
||||||
y = 0
|
y = 0
|
||||||
for y, line in enumerate(Segment.split_and_crop_lines(segments, length=width)):
|
for y, line in enumerate(Segment.split_and_crop_lines(segments, length=width)):
|
||||||
x = 0
|
x = 0
|
||||||
|
|
|
@ -27,7 +27,6 @@ theme = Theme({"header": "bold cyan", "option": "yellow", "metavar": "green"})
|
||||||
|
|
||||||
class Term:
|
class Term:
|
||||||
def __init__(self, width: int) -> None:
|
def __init__(self, width: int) -> None:
|
||||||
|
|
||||||
self.console = Console(highlight=False, theme=theme, width=width)
|
self.console = Console(highlight=False, theme=theme, width=width)
|
||||||
self.err_console = Console(
|
self.err_console = Console(
|
||||||
theme=Theme({"error": "bold red"}, inherit=True),
|
theme=Theme({"error": "bold red"}, inherit=True),
|
||||||
|
|
Loading…
Reference in a new issue