フィルタ¶
バージョン 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文字列のリスト
コードタグとしてフラグが付けられた文字列のリスト。デフォルトでは、
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文字列またはブール値
これが 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'
です。