whitespaceフィルタの例
初回公開: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(encoding="utf-8") with open("fileter_none.html", 'wb') as outfile: highlight(code, lexer, formatter,outfile) lexer.add_filter('whitespace',spaces=True,tabs=True,newlines=True) with open("filter_whitespace.html", 'wb') as outfile: highlight(code, lexer, formatter,outfile)
注意点としては、whitespaceフィルタはwhitespace文字の置き換えにユニコードの文字を使用する。
このため、highlight関数の結果をファイルに保存するにはHtmlFormatterのencodingオプションにutf-8を指定する必要がある。
実行結果
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_whitespace.html
<div class="highlight"><pre><span></span><span class="k">def</span><span class="w">·</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="w">¶</span> <span class="w">» </span><span class="k">return</span><span class="w">·</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="w">¶</span> <span class="w">¶</span> <span class="k">print</span><span class="w">·</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><span class="w">¶</span> </pre></div>
html表示イメージ
fileter_none.html
def add_func(a,b):
return a+b
print add_func(2,3)
filter_whitespace.html
def·add_func(a,b):¶
» return·a+b¶
¶
print·add_func(2,3)¶