完整的Pygments API

本页介绍Pygments API。

高级API

函数来自 pygments 模块:

pygments.lex(code, lexer)

莱克斯 codelexer (必须是 Lexer 实例)并返回令牌的iterable。目前,这只调用 lexer.get_tokens() .

pygments.format(tokens, formatter, outfile=None)

格式 tokens (可迭代的令牌)使用格式化程序 formatter (A) Formatter 实例)。

如果 outfile 并且是有效的文件对象(具有 write 方法),则结果将写入该方法,否则将以字符串形式返回。

pygments.highlight(code, lexer, formatter, outfile=None)

这是最高级的突出显示功能。它结合 lexformat 在一个函数中。

功能从 pygments.lexers

pygments.lexers.get_lexer_by_name(_alias, **options)

返回的实例 Lexer 具有的子类 alias 在它的别名列表中。雷克斯得到了 options 在它的实例化时。

将提高 pygments.util.ClassNotFound 如果找不到具有该别名的lexer。

pygments.lexers.get_lexer_for_filename(_fn, code=None, **options)

获取文件名的词法分析器。

返回A Lexer 具有与文件名模式匹配的子类实例 fn . lexer被赋予 options 在它的实例化时。

加薪 pygments.util.ClassNotFound 如果找不到该文件名的词法分析器。

如果多个词法分析器与文件名模式匹配,请使用它们的 analyse_text() 方法来找出哪一个更合适。

pygments.lexers.get_lexer_for_mimetype(_mime, **options)

返回A Lexer 子类实例 mime 在它的mimetype列表中。雷克斯得到了 options 在它的实例化时。

将提高 pygments.util.ClassNotFound 如果没有找到该mimetype的lexer。

pygments.lexers.load_lexer_from_file(filename, lexername='CustomLexer', **options)

从文件加载词法分析器。

此方法需要一个相对于当前工作目录的文件,该目录包含一个Lexer类。默认情况下,它希望lexer名为CustomLexer;您可以将自己的类名指定为该函数的第二个参数。

用户应该非常小心地处理输入,因为这种方法等同于在输入文件上运行val。

如果导入词法分析器时出现任何问题,则引发ClassNotFound。

在 2.2 版本加入.

pygments.lexers.guess_lexer(_text, **options)

返回A Lexer 子类实例,从 text . 为此,政府 analyse_text() 以文本作为参数调用每个已知lexer类的方法,并实例化并返回返回最大值的lexer。

pygments.util.ClassNotFound 如果没有lexer认为它可以处理内容,则引发。

pygments.lexers.guess_lexer_for_filename(_fn, _text, **options)

AS guess_lexer() ,但只有在 filenamesalias_filenames 那场比赛 filename 考虑在内。

pygments.util.ClassNotFound 如果没有lexer认为它可以处理内容,则引发。

pygments.lexers.get_all_lexers(plugins=True)

返回表单中的元组生成器 (name, aliases, filenames, mimetypes) 在所有已知的lexers中。

如果 plugins 为真(缺省值),则还返回入口点提供的插件词法分析器。否则,只考虑内置的。

pygments.lexers.find_lexer_class_by_name(_alias)

返回 Lexer 具有的子类 alias 在它的别名列表中,不实例化它。

喜欢 get_lexer_by_name ,但不实例化该类。

将提高 pygments.util.ClassNotFound 如果找不到具有该别名的lexer。

在 2.2 版本加入.

pygments.lexers.find_lexer_class(name)

返回 Lexer 将其与 name attribute as given by the name 争论。

功能从 pygments.formatters

pygments.formatters.get_formatter_by_name(_alias, **options)

返回的实例 Formatter 具有的子类 alias 在它的别名列表中。格式化程序被赋予 options 在它的实例化时。

将提高 pygments.util.ClassNotFound 如果找不到具有该别名的格式化程序。

pygments.formatters.get_formatter_for_filename(fn, **options)

返回A Formatter 具有与文件名模式匹配的子类实例 fn . 格式化程序被赋予 options 在它的实例化时。

将提高 pygments.util.ClassNotFound 如果找不到该文件名的格式化程序。

pygments.formatters.load_formatter_from_file(filename, formattername='CustomFormatter', **options)

返回一个 Formatter 从提供的文件加载的子类实例,相对于当前目录。

文件应包含名为的格式化程序类 formattername (默认情况下为CustomForMatter)。用户应该非常小心地处理输入,因为此方法等同于运行 eval() 在输入文件上。格式化程序被赋予 options 在其实例化时。

pygments.util.ClassNotFound 如果加载格式化程序时出现任何错误,则引发。

在 2.2 版本加入.

功能从 pygments.styles

pygments.styles.get_style_by_name(name)

按短名称返回样式类。内置样式的名称列在 pygments.styles.STYLE_MAP .

将提高 pygments.util.ClassNotFound 如果找不到该名称的样式。

pygments.styles.get_all_styles()

按名称返回所有样式的生成器,包括内置和插件。

pygments.styles.STYLE_MAP = {'abap': 'abap::AbapStyle', 'algol': 'algol::AlgolStyle', 'algol_nu': 'algol_nu::Algol_NuStyle', 'arduino': 'arduino::ArduinoStyle', 'autumn': 'autumn::AutumnStyle', 'borland': 'borland::BorlandStyle', 'bw': 'bw::BlackWhiteStyle', 'colorful': 'colorful::ColorfulStyle', 'default': 'default::DefaultStyle', 'dracula': 'dracula::DraculaStyle', 'emacs': 'emacs::EmacsStyle', 'friendly': 'friendly::FriendlyStyle', 'friendly_grayscale': 'friendly_grayscale::FriendlyGrayscaleStyle', 'fruity': 'fruity::FruityStyle', 'github-dark': 'gh_dark::GhDarkStyle', 'gruvbox-dark': 'gruvbox::GruvboxDarkStyle', 'gruvbox-light': 'gruvbox::GruvboxLightStyle', 'igor': 'igor::IgorStyle', 'inkpot': 'inkpot::InkPotStyle', 'lightbulb': 'lightbulb::LightbulbStyle', 'lilypond': 'lilypond::LilyPondStyle', 'lovelace': 'lovelace::LovelaceStyle', 'manni': 'manni::ManniStyle', 'material': 'material::MaterialStyle', 'monokai': 'monokai::MonokaiStyle', 'murphy': 'murphy::MurphyStyle', 'native': 'native::NativeStyle', 'nord': 'nord::NordStyle', 'nord-darker': 'nord::NordDarkerStyle', 'one-dark': 'onedark::OneDarkStyle', 'paraiso-dark': 'paraiso_dark::ParaisoDarkStyle', 'paraiso-light': 'paraiso_light::ParaisoLightStyle', 'pastie': 'pastie::PastieStyle', 'perldoc': 'perldoc::PerldocStyle', 'rainbow_dash': 'rainbow_dash::RainbowDashStyle', 'rrt': 'rrt::RrtStyle', 'sas': 'sas::SasStyle', 'solarized-dark': 'solarized::SolarizedDarkStyle', 'solarized-light': 'solarized::SolarizedLightStyle', 'staroffice': 'staroffice::StarofficeStyle', 'stata-dark': 'stata_dark::StataDarkStyle', 'stata-light': 'stata_light::StataLightStyle', 'tango': 'tango::TangoStyle', 'trac': 'trac::TracStyle', 'vim': 'vim::VimStyle', 'vs': 'vs::VisualStudioStyle', 'xcode': 'xcode::XcodeStyle', 'zenburn': 'zenburn::ZenburnStyle'}

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's

(key, value) pairs

dict(iterable) -> new dictionary initialized as if via:

d = {} for k, v in iterable:

d[k] = v

dict(**kwargs) -> new dictionary initialized with the name=value pairs

in the keyword argument list. For example: dict(one=1, two=2)

词汇学家

派生所有lexer的基本lexer类是:

class pygments.lexer.Lexer(**options)

用于特定语言的词法分析器。

另请参阅 写你自己的lexer ,这是编写词法分析器的高级指南。

词法分析器类具有用于根据各种条件选择最合适的词法分析器的属性。

name

词法分析器的全称,人类可读的形式

aliases

可用于从列表中查找词法分析器的简短唯一标识符列表,例如使用 get_lexer_by_name()

filenames

列表 fnmatch 与包含此lexer内容的文件名匹配的模式。此列表中的模式在所有lexer中应该是唯一的。

alias_filenames = []

列表 fnmatch 与可能包含或不包含此lexer内容的文件名匹配的模式。此列表由 guess_lexer_for_filename() 函数,确定在猜测正确的lexer中包含哪些lexer。这意味着,例如,每个用于HTML的lexer和模板语言都应该包括 \*.html 在这个列表中。

mimetypes

可以使用此lexer进行lexed的内容的mime类型列表。

priority = 0

优先级,如果多个词法分析器匹配但没有提供内容

Pygments中包含的词法分析器应该有一个附加属性:

url

语言规范/定义的URL。在Pygments文档中使用。

Lexers included in Pygments may have additional attributes:

_example

Example file name. Relative to the tests/examplefiles directory. This is used by the documentation generator to show an example.

您可以将选项传递给构造函数。所有词法分析器识别的基本选项,并由 Lexer 课程包括:

stripnl

从输入中去掉前导换行符和尾随换行符(默认为True)。

stripall

去掉输入中的所有前导空格和尾随空格(默认值:FALSE)。

ensurenl

确保输入以换行符结束(默认为真)。这对于一些逐行使用输入的词法分析器是必需的。

在 1.3 版本加入.

tabsize

如果给定且大于0,则展开输入中的制表符(默认为0)。

encoding

如果给定,则必须是编码名称。此编码将用于将输入字符串转换为Unicode,如果它还不是Unicode字符串(默认: 'guess' ,它使用简单的UTF-8/Locale/Latin1检测。也可以 'chardet' 使用Chardet库(如果已安装)。

inencoding

重写 encoding 如果被给予的话。

__init__(**options)

此构造函数接受任意选项作为关键字参数。每个子类必须首先处理自己的选项,然后调用 Lexer 构造函数,因为它处理基本选项,如 stripnl

示例如下:

def __init__(self, **options):
    self.compress = options.get('compress', '')
    Lexer.__init__(self, **options)

由于这些选项必须都可以指定为字符串(由于命令行的使用),因此可以使用各种实用程序函数来帮助实现此目的,请参见 Utilities

static analyse_text(text)

调用用于词法分析器猜测的静态方法。

它应该分析文本并返回一个范围为 0.01.0 。如果它回来了 0.0 ,则词法分析器不会被选为最有可能的词法分析器,如果它返回 1.0 ,它将立即被选中。这是由 guess_lexer

这个 LexerMeta 元类自动包装此函数,以便它像静态方法一样工作(否 selfcls 参数),并且返回值自动转换为 float 。如果返回值是布尔型对象 False 它与返回值是相同的 0.0

get_tokens(text, unfiltered=False)

这个方法是lexer的基本接口。它是由 highlight() 功能。它必须处理文本并返回 (tokentype, value) 对来自 text .

通常,您不需要重写此方法。默认实现处理所有词法分析器可识别的选项 (stripnlstripall 依此类推),然后从 get_tokens_unprocessed() ,使用 index 掉下来了。

如果 unfiltered 设置为 True ,则即使定义了筛选器,也会绕过筛选机制。

get_tokens_unprocessed(text)

此方法应处理文本并返回 (index, tokentype, value) 元组在哪里 index 是输入文本中标记的起始位置。

它必须被子类覆盖。建议将其作为生成器实现,以最大限度地提高效率。

有几个基类派生自 Lexer 您可以使用以下内容构建您的词法分析器:

class pygments.lexer.RegexLexer(*args, **kwds)

基于简单状态正则表达式的词法分析器的基础。简化了词法分析过程,因此您只需要提供状态和正则表达式的列表。

class pygments.lexer.ExtendedRegexLexer(*args, **kwds)

使用上下文对象存储其状态的RegexLexer。

class pygments.lexer.DelegatingLexer(_root_lexer, _language_lexer, _needle=('Other',), **options)

这个词法分析器接受两个词法分析器作为参数。一个根词法分析器和一个语言词法分析器。首先使用Language Lexer扫描所有内容,然后 Other 使用根词法分析器对令牌进行词法分析。

来自的词法分析器 template 词法分析器包使用这个基本词法分析器。

使用格式器

格式化程序从此类派生:

class pygments.formatter.Formatter(**options)

将令牌流转换为文本。

ForMatters应该有帮助选择它们的属性。它们类似于相应的 Lexer 属性。

name

格式化程序的全名,以可读形式显示。

aliases

可用于从列表中查找格式化程序的简短、唯一标识符列表,例如使用 get_formatter_by_name() .

filenames

与此格式化程序可以为其生成输出的文件名匹配的fnMatch模式的列表。此列表中的模式在所有格式化程序中应该是唯一的。

您可以将选项作为关键字参数传递给构造函数。所有格式化程序都接受以下基本选项:

style

要使用的样式可以是字符串或样式子类(默认为“Default”)。例如未被TerminalForMatter使用的。

full

告知格式化程序输出“完整”文档,即完整的自包含文档。这对某些格式化程序没有任何影响(默认为FALSE)。

title

如果 full 为True,则为应用于为文档添加标题的标题(默认值:‘’)。

encoding

如果给定,则必须是编码名称。这将用于在输出中将Unicode令牌字符串转换为字节字符串。如果为“”或None,则Unicode字符串将写入输出文件,这是大多数类似文件的对象不支持的(默认为None)。

outencoding

覆盖 encoding 如果被给予的话。

__init__(**options)

与lexer一样,此构造函数接受任意可选参数,如果覆盖它,则应首先处理您自己的选项,然后调用基类实现。

format(tokensource, outfile)

此方法必须格式化来自 tokensource iterable并将格式化版本写入文件对象 outfile .

格式化程序选项可以控制令牌的转换方式。

get_style_defs(arg='')

此方法必须返回适合为后续突出显示的文本(例如,中的CSS类)定义当前样式的语句或声明。 HTMLFormatter

可选参数 arg 可用于修改生成并依赖于格式化程序(因为它可以在命令行上给定,所以它是标准化的)。

此方法由 -S command-line option , the arg 然后由 -a 选择权。

公用事业

这个 pygments.util 模块具有一些实用程序函数,可用于处理命令行选项。以下所有函数都从选项字典中获取值。如果该值已属于选项所需的类型,则按原样返回。否则,如果该值是字符串,则在可能的情况下首先将其转换为预期类型。

exception pygments.util.OptionError

如果参数的类型或值不正确,则所有选项处理函数都将引发此异常。

pygments.util.get_bool_opt(options, optname, default=None)

直观地说,这是 options.get(optname, default) ,但仅限于布尔值。布尔值可以表示为字符串,以便接受来自命令行参数的布尔值。如果钥匙 optname 收录在词典中 options 并且不与布尔值相关联,则引发 OptionError 。如果它不存在, default 而是返回。

的有效字符串值 True1yestrueon 那些 False0nofalseoff (匹配的大小写不敏感)。

pygments.util.get_int_opt(options, optname, default=None)

AS get_bool_opt() ,但将该值解释为整数。

pygments.util.get_list_opt(options, optname, default=None)

如果钥匙 optname 从字典中 options 是一个字符串,将其拆分为空白并返回。如果它已经是列表或元组,则作为列表返回。

pygments.util.get_choice_opt(options, optname, allowed, default=None, normcase=False)

如果钥匙 optname 字典中的不在序列中 allowed ,则引发错误,否则返回错误。

它还定义了一个例外:

exception pygments.util.ClassNotFound

如果其中一个查找函数未找到匹配的类,则引发。