highlightフィルタの例

初回公開:2018/10/14
最終更新:未

サンプルコード

from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter

code=u"""
def add_func(a,b):
\treturn a+b

print add_func(2,3)
"""
lexer = get_lexer_by_name("python")
formatter = HtmlFormatter()

with open("fileter_none.html", 'w') as outfile:
    highlight(code, lexer, formatter,outfile)

from pygments.token import Name
lexer.add_filter('highlight',names=['add_func'],tokentype=Name.Function)
with open("filter_highlight.html", 'w') as outfile:
    highlight(code, lexer, formatter,outfile)

実行結果

htmlコード

fileter_none.html

<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">add_func</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">):</span>
    <span class="k">return</span> <span class="n">a</span><span class="o">+</span><span class="n">b</span>

<span class="k">print</span> <span class="n">add_func</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span>
</pre></div>

filter_highlight.html

<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">add_func</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">):</span>
    <span class="k">return</span> <span class="n">a</span><span class="o">+</span><span class="n">b</span>

<span class="k">print</span> <span class="nf">add_func</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span>
</pre></div>

関数呼び出し時の関数名add_funcのclass属性がnからnfに変更されている。

html表示イメージ

fileter_none.html

def add_func(a,b):
    return a+b

print add_func(2,3)

filter_highlight.html

def add_func(a,b):
    return a+b

print add_func(2,3)

関数呼び出し時の関数名add_funcが青色表示されている事に注意。

ページのトップへ戻る