过滤器

在 0.7 版本中添加。

将令牌流转换为另一个令牌流称为“过滤”,由过滤器完成。过滤器最常见的示例是通过应用简单规则来转换每个令牌,例如,如果令牌是 TODO 或其他特殊词,则突出显示令牌,或将关键字转换为大写以强制执行样式指南。更复杂的过滤器可以转换令牌流,例如删除行缩进或将令牌合并在一起。需要注意的是,pygments 过滤器与 Python 的 filter 完全无关。

可以将任意数量的过滤器应用于来自词法分析器的令牌流,以改进或注释输出。要应用过滤器,可以使用词法分析器的 add_filter() 方法。

>>> from pygments.lexers import PythonLexer
>>> l = PythonLexer()
>>> # add a filter given by a string and options
>>> l.add_filter('codetagify', case='lower')
>>> l.filters
[<pygments.filters.CodeTagFilter object at 0xb785decc>]
>>> from pygments.filters import KeywordCaseFilter
>>> # or give an instance
>>> l.add_filter(KeywordCaseFilter(case='lower'))

add_filter() 方法接受关键字参数,这些参数将转发到过滤器的构造函数。

要获取按名称注册的所有过滤器的列表,可以使用 pygments.filters 模块中的 get_all_filters() 函数,该函数返回所有已知过滤器的可迭代对象。

如果您想编写自己的过滤器,请查看 编写自己的过滤器.

内置过滤器

class CodeTagFilter
名称:

codetagify

突出显示注释和文档字符串中的特殊代码标签。

接受的选项

codetags字符串列表

标记为代码标签的字符串列表。默认情况下,会突出显示 XXXTODOFIXMEBUGNOTE

在版本 2.13 中更改:现在默认情况下识别 FIXME

class KeywordCaseFilter
名称:

keywordcase

将关键字转换为小写或大写,或将其大写,即第一个字母大写,其余字母小写。

这在您突出显示 Pascal 代码并想要将代码适应您的样式指南时非常有用。

接受的选项

case字符串

要将关键字转换为的大小写。必须是 'lower''upper''capitalize' 之一。默认值为 'lower'

class NameHighlightFilter
名称:

highlight

使用不同的令牌类型突出显示正常的 Name(和 Name.*)令牌。

示例

filter = NameHighlightFilter(
    names=['foo', 'bar', 'baz'],
    tokentype=Name.Function,
)

这将突出显示“foo”、“bar”和“baz”这些名称作为函数。 Name.Function 是默认的令牌类型。

接受的选项

names字符串列表

应该给予不同令牌类型的名称列表。没有默认值。

tokentypeTokenType 或字符串

用于突出显示 names 中字符串的令牌类型或包含令牌类型名称的字符串。默认值为 Name.Function.

class RaiseOnErrorTokenFilter
名称:

raiseonerror

当词法分析器生成错误令牌时引发异常。

接受的选项

excclass异常类

要引发的异常类。默认值为 pygments.filters.ErrorToken.

在版本 0.8 中添加。

class VisibleWhitespaceFilter
名称:

whitespace

将制表符、换行符和/或空格转换为可见字符。

接受的选项

spaces字符串或布尔值

如果这是一个单字符字符串,空格将替换为该字符串。如果它是另一个真值,空格将替换为 ·(Unicode 中间点)。如果它是假值,空格将不会被替换。默认值为 False

tabs字符串或布尔值

spaces 相同,但默认替换字符为 »(Unicode 右指向双角引号)。默认值为 False。注意:如果词法分析器的 tabsize 选项不为零,则这将不起作用,因为制表符将已扩展。

tabsize整数

如果制表符要由此过滤器替换(请参阅 tabs 选项),则这是制表符应扩展到的字符总数。默认值为 8

newlines字符串或布尔值

spaces 相同,但默认替换字符为 (Unicode PILCROW 符号)。默认值为 False

wstokentype布尔值

如果为真,则将空格赋予特殊的 Whitespace 令牌类型。这允许以不同的方式对可见空格进行样式设置(例如,灰显),但它会破坏背景颜色。默认值为 True

在版本 0.8 中添加。

class GobbleFilter
名称:

gobble

吞掉源代码行(吃掉初始字符)。

此过滤器从每行代码中删除前 n 个字符。当输入词法分析器的源代码以固定数量的空格缩进,而这些空格在输出中不需要时,这可能很有用。

接受的选项

n整数

要吞掉的字符数。

在版本 1.2 中添加。

class TokenMergeFilter
名称:

tokenmerge

将词法分析器输出流中具有相同令牌类型的连续令牌合并在一起。

在版本 1.2 中添加。

class SymbolFilter
名称:

symbols

将 Isabelle 中的 <longrightarrow> 或 LaTeX 中的 longrightarrow 等数学符号转换为 Unicode 字符。

这在您想要近似在 IDE 中看到的源渲染的 HTML 或控制台输出时特别有用。

接受的选项

lang字符串

符号语言。必须是 'isabelle''latex' 之一。默认值为 'isabelle'