diff --git a/blog/templatetags/code_chunks.py b/blog/templatetags/code_chunks.py index 4b66b4a..86d8040 100644 --- a/blog/templatetags/code_chunks.py +++ b/blog/templatetags/code_chunks.py @@ -28,6 +28,39 @@ 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 remove_code_chunks(value, autoescape=None): + p = re.compile('\[\$ code:(?P[^:]+):(?P[^ ]+) \$\]') + i = p.finditer(value) + diff = 0 + + for match in i: + end, start = match.span() + oldlen = start - end + start += diff + end += diff + newstr = "" + newlen = len(newstr) + value = value[:end] + newstr + value[start:] + diff += newlen - oldlen + + p = re.compile('\[\$ code:(?P[^:]+):(?P.+?) \$\]', re.DOTALL) + i = p.finditer(value) + diff = 0 + + for match in i: + end, start = match.span() + oldlen = start - end + start += diff + end += diff + newstr = "" + newlen = len(newstr) + value = value[:end] + newstr + value[start:] + diff += newlen - oldlen + + return mark_safe(value) + @register.filter(needs_autoescape=True) @stringfilter def insert_code_chunks(value, autoescape=None):