~ubuntu-branches/debian/jessie/lava-server/jessie

« back to all changes in this revision

Viewing changes to dashboard_app/templatetags/stylize.py

  • Committer: Package Import Robot
  • Author(s): Neil Williams
  • Date: 2014-06-29 19:29:34 UTC
  • Revision ID: package-import@ubuntu.com-20140629192934-ue8hrzzpye9isevt
Tags: upstream-2014.05.30.09
ImportĀ upstreamĀ versionĀ 2014.05.30.09

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
5
 
 
6
 
 
7
register = template.Library()
 
8
 
 
9
 
 
10
class StylizeNode(template.Node):
 
11
 
 
12
    def __init__(self, nodelist, *varlist):
 
13
        self.nodelist, self.vlist = (nodelist, varlist)
 
14
 
 
15
    def render(self, context):
 
16
        style = 'text'
 
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)
 
23
 
 
24
 
 
25
@register.tag
 
26
def stylize(parser, token):
 
27
    """
 
28
    Usage: {% stylize "language" %}...language text...{% endstylize %}
 
29
    """
 
30
    nodelist = parser.parse(('endstylize',))
 
31
    parser.delete_first_token()
 
32
    return StylizeNode(nodelist, *token.contents.split()[1:])