{% if title_links %}{% endif %}{{ post.title }}{% if title_links %}{% else %}{% endif %}
{{ post.created_at|date:'m-d-Y :: H:i' }} by {{ post.user.first_name }} {{ post.user.last_name }}
- {% comment %} {{ post.content|insert_code_chunks }} - {% endcomment %} - {{ post.content|safe }} {% if post.tags.all %}Tags:
{% for tag in post.tags.all %}
diff --git a/blog/templatetags/code_chunks.py b/blog/templatetags/code_chunks.py
index 9b21487..4b66b4a 100644
--- a/blog/templatetags/code_chunks.py
+++ b/blog/templatetags/code_chunks.py
@@ -1,11 +1,12 @@
from django import template
from django.template.defaultfilters import stringfilter
from django.utils.safestring import mark_safe
-import logging
+import logging, re
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter
from gergelypolonkaiweb.solarized_dark import SolarizedDarkStyle
+from blog.models import CodeChunk
register = template.Library()
@@ -27,6 +28,48 @@ def hilite(language, code):
formatter = CodeFormatter(style = SolarizedDarkStyle, linenos = False, cssclass = language + " code", noclasses = True)
return highlight(code, lexer, formatter)
+@register.filter(needs_autoescape=True)
+@stringfilter
+def insert_code_chunks(value, autoescape=None):
+ p = re.compile('\[\$ code:(?P.+?) \$\]', re.DOTALL)
+ i = p.finditer(value)
+ diff = 0
+
+ for match in i:
+ end, start = match.span()
+ oldlen = start - end
+ start += diff
+ end += diff
+
+ # TODO: This is an ugly hack, as it includes template logic in code. BAD!
+ newstr = "