フィルタ

バージョン 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

コメントと docstring 内の特別なコードタグを強調表示します。

使用可能なオプション

codetags文字列のリスト

コードタグとしてフラグが付けられた文字列のリスト。デフォルトでは、XXXTODOFIXMEBUG、および 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文字列またはブール値

これが 1 文字の文字列の場合、スペースはこの文字列に置き換えられます。別の真の値の場合、スペースは · (Unicode 中点) に置き換えられます。偽の値の場合、スペースは置き換えられません。デフォルトは False です。

tabs文字列またはブール値

spaces と同じですが、デフォルトの置換文字は » (Unicode 右二重角引用符) です。デフォルト値は False です。注: レクサーの tabsize オプションがゼロ以外の場合、タブはすでに展開されているため、これは機能しません。

tabsize整数

このフィルタによってタブが置き換えられる場合 ( tabs オプションを参照)、これはタブを展開する必要がある文字の総数です。デフォルトは 8 です。

newlines文字列またはブール値

spaces と同じですが、デフォルトの置換文字は (Unicode 段落記号) です。デフォルト値は False です。

wstokentypeブール値

true の場合、空白に特別な 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' です。