rich.syntax

class rich.syntax.Syntax(code, lexer, *, theme='monokai', dedent=False, line_numbers=False, start_line=1, line_range=None, highlight_lines=None, code_width=None, tab_size=4, word_wrap=False, background_color=None, indent_guides=False, padding=0)[source]

构造一个 Syntax 对象以渲染语法高亮的代码。

参数
  • code (str) – 要高亮的代码。

  • lexer (Lexer | str) – 要使用的词法分析器(参见 https://pygments.pythonlang.cn/docs/lexers/

  • theme (str, 可选) – 颜色主题,也称为 Pygments 样式(参见 https://pygments.pythonlang.cn/docs/styles/#getting-a-list-of-available-styles)。默认为“monokai”。

  • dedent (bool, 可选) – 启用剥离初始空格。默认为 False。

  • line_numbers (bool, 可选) – 启用渲染行号。默认为 False。

  • start_line (int, 可选) – 行号的起始数字。默认为 1。

  • line_range (Tuple[int | None, int | None], 可选) – 如果给出,应该是一个表示要渲染的起始行和结束行的元组。元组中为 None 的值表示该方向上的范围是开放的。

  • highlight_lines (Set[int]) – 要高亮显示的行号集。

  • code_width (Optional[int]) – 要渲染的代码宽度(不包括行号),或 None 以使用所有可用宽度。

  • tab_size (int, 可选) – 制表符大小。默认为 4。

  • word_wrap (bool, 可选) – 启用自动换行。

  • background_color (str, 可选) – 可选的背景颜色,或 None 以使用主题颜色。默认为 None。

  • indent_guides (bool, 可选) – 显示缩进指南。默认为 False。

  • padding (PaddingDimensions) – 要应用于语法周围的填充。默认为 0(无填充)。

property default_lexer: Lexer

如果没有指定或无效,则要使用的 Pygments 词法分析器。

classmethod from_path(path, encoding='utf-8', lexer=None, theme='monokai', dedent=False, line_numbers=False, line_range=None, start_line=1, highlight_lines=None, code_width=None, tab_size=4, word_wrap=False, background_color=None, indent_guides=False, padding=0)[source]

从文件构造一个 Syntax 对象。

参数
  • path (str) – 要高亮显示的文件路径。

  • encoding (str) – 文件编码。

  • lexer (str | Lexer, 可选) – 要使用的词法分析器。如果为 None,将从路径/文件内容自动检测词法分析器。

  • theme (str, 可选) – 颜色主题,也称为 Pygments 样式(参见 https://pygments.pythonlang.cn/docs/styles/#getting-a-list-of-available-styles)。默认为“emacs”。

  • dedent (bool, 可选) – 启用剥离初始空格。默认为 True。

  • line_numbers (bool, 可选) – 启用渲染行号。默认为 False。

  • start_line (int, 可选) – 行号的起始数字。默认为 1。

  • line_range (Tuple[int, int], 可选) – 如果给出,应该是一个表示要渲染的起始行和结束行的元组。

  • highlight_lines (Set[int]) – 要高亮显示的行号集。

  • code_width (Optional[int]) – 要渲染的代码宽度(不包括行号),或 None 以使用所有可用宽度。

  • tab_size (int, 可选) – 制表符大小。默认为 4。

  • word_wrap (bool, 可选) – 启用代码的自动换行。

  • background_color (str, 可选) – 可选的背景颜色,或 None 以使用主题颜色。默认为 None。

  • indent_guides (bool, 可选) – 显示缩进指南。默认为 False。

  • padding (PaddingDimensions) – 要应用于语法周围的填充。默认为 0(无填充)。

返回值

可以打印到控制台的 Syntax 对象

返回类型

[Syntax]

classmethod get_theme(name)[source]

获取语法主题实例。

参数

name (Union[str, SyntaxTheme]) –

返回类型

SyntaxTheme

classmethod guess_lexer(path, code=None)[source]

根据路径和可选的代码字符串推断要使用的 Pygments 词法分析器的别名。如果提供了代码,它将结合代码和文件名来确定要使用的最佳词法分析器。例如,如果文件是 index.html 并且文件包含 Django 模板语法,则将返回 “html+django”。如果文件是 index.html,并且未使用任何模板语言,则将使用 “html” 词法分析器。如果没有提供代码字符串,则将根据文件扩展名选择词法分析器。

参数
  • path (AnyStr) – 您要了解词法分析器的文件的路径。

  • code (str, optional) – 可选的代码字符串,如果为提供的路径未找到词法分析器,则将用作回退。

返回值

与提供的路径/代码最佳匹配的 Pygments 词法分析器的名称。

返回类型

str

highlight(code, line_range=None)[source]

突出显示代码并返回 Text 实例。

参数
  • code (str) – 要高亮的代码。

  • line_range (Tuple[int, int], optional) – 要突出显示的可选行范围。

返回值

包含突出显示语法的文本实例。

返回类型

Text

property lexer: Optional[Lexer]

此语法的词法分析器,如果未找到词法分析器,则为 None。

如果将字符串传递给构造函数,则尝试按名称查找词法分析器。

stylize_range(style, start, end)[source]

在代码的一部分上添加自定义样式,该样式将在语法显示呈现时应用于语法显示。行号为 1 为基,而列索引为 0 为基。

参数
  • style (StyleType) – 要应用的样式。

  • start (Tuple[int, int]) – 范围的开始,形式为 [行号,列索引]

  • end (Tuple[int, int]) – 范围的结束,形式为 [行号,列索引]

返回类型

None