Moved code highlighting to view.

This commit is contained in:
Martin Mahner 2016-03-25 11:30:27 +01:00
parent 6090c37f17
commit 3eba19db02
4 changed files with 20 additions and 17 deletions

View file

@ -52,9 +52,6 @@ class Snippet(models.Model):
ordering = ('-published',)
db_table = 'dpaste_snippet'
def get_linecount(self):
return len(self.content.splitlines())
@property
def remaining_views(self):
if self.expire_type == self.EXPIRE_ONETIME:

View file

@ -1 +1 @@
{% load dpaste_tags %}<div class="code {{ snippet.lexer }}"><ol>{% for line in snippet|highlight %}<li id="{{ forloop.counter }}">{{ line|safe|default:"&nbsp;" }}</li>{% endfor %}</ol></div>
{% load dpaste_tags %}<div class="code {{ snippet.lexer }}"><ol>{% for line in highlighted %}<li id="{{ forloop.counter }}">{{ line|safe|default:"&nbsp;" }}</li>{% endfor %}</ol></div>

View file

@ -1,16 +1,9 @@
from django.template import Library
from ..highlight import pygmentize
register = Library()
@register.filter
def in_list(value, arg):
return value in arg
@register.filter
def highlight(snippet):
h = pygmentize(snippet.content, snippet.lexer)
h = h.replace(u' ', u'&nbsp;&nbsp;')
h = h.replace(u'\t', '&nbsp;&nbsp;&nbsp;&nbsp;')
return h.splitlines()

View file

@ -2,7 +2,6 @@ import datetime
import difflib
import json
import requests
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
@ -22,7 +21,7 @@ from pygments.util import ClassNotFound
from .forms import EXPIRE_CHOICES, get_expire_values, SnippetForm
from .highlight import (LEXER_DEFAULT, LEXER_KEYS, LEXER_LIST,
LEXER_WORDWRAP, PLAIN_CODE)
LEXER_WORDWRAP, PLAIN_CODE, pygmentize)
from .models import ONETIME_LIMIT, Snippet
template_globals = {
@ -107,13 +106,18 @@ class SnippetDetailView(SnippetView, DetailView):
ctx = super(SnippetDetailView, self).get_context_data(**kwargs)
ctx.update(template_globals)
ctx.update({
'lines': range(snippet.get_linecount()),
'highlighted': self.highlight_snippet().splitlines(),
'tree': tree,
'wordwrap': snippet.lexer in LEXER_WORDWRAP and 'True' or 'False',
'gist': getattr(settings, 'DPASTE_ENABLE_GIST', True),
})
return ctx
def highlight_snippet(self):
snippet = self.get_object()
h = pygmentize(snippet.content, snippet.lexer)
h = h.replace(u' ', u'&nbsp;&nbsp;')
h = h.replace(u'\t', '&nbsp;&nbsp;&nbsp;&nbsp;')
return h
class SnippetRawView(SnippetDetailView):
"""
@ -216,11 +220,20 @@ class SnippetDiffView(TemplateView):
return diff
def highlight_snippet(self, content):
h = pygmentize(content, 'diff')
h = h.replace(u' ', u'&nbsp;&nbsp;')
h = h.replace(u'\t', '&nbsp;&nbsp;&nbsp;&nbsp;')
return h
def get_context_data(self, **kwargs):
diff = self.get_diff()
highlighted = self.highlight_snippet(diff.content)
ctx = super(SnippetDiffView, self).get_context_data(**kwargs)
ctx.update(template_globals)
ctx.update({
'snippet': self.get_diff(),
'snippet': diff,
'highlighted': highlighted.splitlines(),
'fileA': self.fileA,
'fileB': self.fileB,
})