# Copyright 2005 (C) Sune Kirkeby -- Licensed under the "X11 License" def indent_lines(field, arg): return field.replace('\n', '\n ') from django.core import template template.register_filter('indent_lines', indent_lines, False)
# Copyright 2005 (C) Sune Kirkeby -- Licensed under the "X11 License" import jsonlib def json_escape(field, arg): return jsonlib.write(field) from django.core import template template.register_filter('json_escape', json_escape, False)
# Copyright 2005 (C) Sune Kirkeby -- Licensed under the "X11 License" def wrap(field, arg): return str(field).replace('<textarea ', '<textarea wrap="%s" ' % arg) from django.core import template template.register_filter('wrap', wrap, True)
while lines: if not lines[0].startswith('>'): break line = lines.pop(0) q.append(line[1:].lstrip()) return '<blockquote>' + render('\n'.join(q)) + '</blockquote>' def pop_codeblock(lines): c = [] while lines: if not lines[0].startswith(' '): break c.append(lines.pop(0)[4:]) return '<pre><code>' + escape('\n'.join(c), None) + '</code></pre>' re_strong = re.compile(r"\*([\w&;/%#'_-]+)\*") re_em = re.compile(r"_([\w&;/%#'*-]+)_") re_code = re.compile(r"`([\w &;/%$!*()[\]?.,:{}*+%#'\"_-]+)`") re_link = re.compile(r"\[([\w&;/%#'_*-]+)\]\(([a-z]+://[a-zA-Z0-9._-]+/[^\]]+)\)") re_link = re.compile(r"\[([^]]+)\]\(([a-z]+://[a-zA-Z0-9._-]+/[^)]*)\)") def render_paragraph(p): p = re_strong.sub(r'<strong>\1</strong>', p) p = re_em.sub(r'<em>\1</em>', p) p = re_code.sub(r'<tt>\1</tt>', p) p = re_link.sub(r'<a href="\2" rel="nofollow">\1</a>', p) return p from django.core import template template.register_filter('safe_markdown', render, False)
try: import textile except ImportError: return value else: return textile.textile(value) def markdown(value, _): try: import markdown except ImportError: return value else: return markdown.markdown(value) def restructuredtext(value, _): try: from docutils.core import publish_parts except ImportError: return value else: parts = publish_parts(source=value, writer_name="html4css1") return parts["fragment"] template.register_filter("textile", textile, False) template.register_filter("markdown", markdown, False) template.register_filter("restructuredtext", restructuredtext, False)
except TypeError: # len() of unsized object pass return '' def phone2numeric(value, _): "Takes a phone number and converts it in to its numerical equivalent" from django.utils.text import phone2numeric return phone2numeric(value) def pprint(value, _): "A wrapper around pprint.pprint -- for debugging, really" from pprint import pformat return pformat(value) # Syntax: register_filter(name of filter, callback, has_argument) register_filter('add', add, True) register_filter('addslashes', addslashes, False) register_filter('capfirst', capfirst, False) register_filter('center', center, True) register_filter('cut', cut, True) register_filter('date', date, True) register_filter('default', default, True) register_filter('default_if_none', default_if_none, True) register_filter('dictsort', dictsort, True) register_filter('dictsortreversed', dictsortreversed, True) register_filter('divisibleby', divisibleby, True) register_filter('escape', escape, False) register_filter('filesizeformat', filesizeformat, False) register_filter('first', first, False) register_filter('fix_ampersands', fix_ampersands, False) register_filter('floatformat', floatformat, False)