summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/rich/rule.py
diff options
context:
space:
mode:
authorcyfraeviolae <cyfraeviolae>2024-04-03 03:17:55 -0400
committercyfraeviolae <cyfraeviolae>2024-04-03 03:17:55 -0400
commit12cf076118570eebbff08c6b3090e0d4798447a1 (patch)
tree3ba25e17e3c3a5e82316558ba3864b955919ff72 /venv/lib/python3.11/site-packages/rich/rule.py
parentc45662ff3923b34614ddcc8feb9195541166dcc5 (diff)
no venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/rich/rule.py')
-rw-r--r--venv/lib/python3.11/site-packages/rich/rule.py130
1 files changed, 0 insertions, 130 deletions
diff --git a/venv/lib/python3.11/site-packages/rich/rule.py b/venv/lib/python3.11/site-packages/rich/rule.py
deleted file mode 100644
index fb3d432..0000000
--- a/venv/lib/python3.11/site-packages/rich/rule.py
+++ /dev/null
@@ -1,130 +0,0 @@
-from typing import Union
-
-from .align import AlignMethod
-from .cells import cell_len, set_cell_size
-from .console import Console, ConsoleOptions, RenderResult
-from .jupyter import JupyterMixin
-from .measure import Measurement
-from .style import Style
-from .text import Text
-
-
-class Rule(JupyterMixin):
- """A console renderable to draw a horizontal rule (line).
-
- Args:
- title (Union[str, Text], optional): Text to render in the rule. Defaults to "".
- characters (str, optional): Character(s) used to draw the line. Defaults to "─".
- style (StyleType, optional): Style of Rule. Defaults to "rule.line".
- end (str, optional): Character at end of Rule. defaults to "\\\\n"
- align (str, optional): How to align the title, one of "left", "center", or "right". Defaults to "center".
- """
-
- def __init__(
- self,
- title: Union[str, Text] = "",
- *,
- characters: str = "─",
- style: Union[str, Style] = "rule.line",
- end: str = "\n",
- align: AlignMethod = "center",
- ) -> None:
- if cell_len(characters) < 1:
- raise ValueError(
- "'characters' argument must have a cell width of at least 1"
- )
- if align not in ("left", "center", "right"):
- raise ValueError(
- f'invalid value for align, expected "left", "center", "right" (not {align!r})'
- )
- self.title = title
- self.characters = characters
- self.style = style
- self.end = end
- self.align = align
-
- def __repr__(self) -> str:
- return f"Rule({self.title!r}, {self.characters!r})"
-
- def __rich_console__(
- self, console: Console, options: ConsoleOptions
- ) -> RenderResult:
- width = options.max_width
-
- characters = (
- "-"
- if (options.ascii_only and not self.characters.isascii())
- else self.characters
- )
-
- chars_len = cell_len(characters)
- if not self.title:
- yield self._rule_line(chars_len, width)
- return
-
- if isinstance(self.title, Text):
- title_text = self.title
- else:
- title_text = console.render_str(self.title, style="rule.text")
-
- title_text.plain = title_text.plain.replace("\n", " ")
- title_text.expand_tabs()
-
- required_space = 4 if self.align == "center" else 2
- truncate_width = max(0, width - required_space)
- if not truncate_width:
- yield self._rule_line(chars_len, width)
- return
-
- rule_text = Text(end=self.end)
- if self.align == "center":
- title_text.truncate(truncate_width, overflow="ellipsis")
- side_width = (width - cell_len(title_text.plain)) // 2
- left = Text(characters * (side_width // chars_len + 1))
- left.truncate(side_width - 1)
- right_length = width - cell_len(left.plain) - cell_len(title_text.plain)
- right = Text(characters * (side_width // chars_len + 1))
- right.truncate(right_length)
- rule_text.append(left.plain + " ", self.style)
- rule_text.append(title_text)
- rule_text.append(" " + right.plain, self.style)
- elif self.align == "left":
- title_text.truncate(truncate_width, overflow="ellipsis")
- rule_text.append(title_text)
- rule_text.append(" ")
- rule_text.append(characters * (width - rule_text.cell_len), self.style)
- elif self.align == "right":
- title_text.truncate(truncate_width, overflow="ellipsis")
- rule_text.append(characters * (width - title_text.cell_len - 1), self.style)
- rule_text.append(" ")
- rule_text.append(title_text)
-
- rule_text.plain = set_cell_size(rule_text.plain, width)
- yield rule_text
-
- def _rule_line(self, chars_len: int, width: int) -> Text:
- rule_text = Text(self.characters * ((width // chars_len) + 1), self.style)
- rule_text.truncate(width)
- rule_text.plain = set_cell_size(rule_text.plain, width)
- return rule_text
-
- def __rich_measure__(
- self, console: Console, options: ConsoleOptions
- ) -> Measurement:
- return Measurement(1, 1)
-
-
-if __name__ == "__main__": # pragma: no cover
- import sys
-
- from rich.console import Console
-
- try:
- text = sys.argv[1]
- except IndexError:
- text = "Hello, World"
- console = Console()
- console.print(Rule(title=text))
-
- console = Console()
- console.print(Rule("foo"), width=4)