过滤器¶
在 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字符串列表
标记为代码标签的字符串列表。默认情况下,会突出显示
XXX
、TODO
、FIXME
、BUG
和NOTE
。
在版本 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'
。