利用pygments實現django模板內的語法高亮

Django code highlight template filter

來源地址:http://snipperize.todayclose.com/snippet/py/Django-code-highlight-template-filter--24910/

  1. from pygments import highlight 
  2. from pygments.lexers import get_lexer_by_name, PhpLexer 
  3. from pygments.formatters import HtmlFormatter 
  4. from pygments.util import ClassNotFound 
  5.  
  6.  
  7. @register.filter 
  8. def highlight_code(code, lang): 
  9.   if code is not None
  10.     try
  11.       # startinline is for PhpLexer so that it doesn't 
  12.       # require a <?php 
  13.       lexer = get_lexer_by_name(lang, encoding='utf-8', stripall=True, startinline=True
  14.     except ClassNotFound: 
  15.       lexer = get_lexer_by_name('text'
  16.     formatter = HtmlFormatter(encoding='utf-8', style='colorful', linenos='table', cssclass='highlight', lineanchors="line"
  17.     return highlight(code, lexer, formatter)   
  18.   else
  19.     return code 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章