1
from django import template
2
from pygments import highlight
3
from pygments.lexers import get_lexer_by_name
4
from pygments.formatters import HtmlFormatter
7
register = template.Library()
10
class StylizeNode(template.Node):
12
def __init__(self, nodelist, *varlist):
13
self.nodelist, self.vlist = (nodelist, varlist)
15
def render(self, context):
17
if len(self.vlist) > 0:
18
style = template.resolve_variable(self.vlist[0], context)
19
code = self.nodelist.render(context)
20
lexer = get_lexer_by_name(style, encoding='UTF-8')
21
formatter = HtmlFormatter(cssclass="pygments")
22
return highlight(code, lexer, formatter)
26
def stylize(parser, token):
28
Usage: {% stylize "language" %}...language text...{% endstylize %}
30
nodelist = parser.parse(('endstylize',))
31
parser.delete_first_token()
32
return StylizeNode(nodelist, *token.contents.split()[1:])