WhisperMaPhone/main/templatetags/markdown.py

28 lines
799 B
Python

from django import template
from django.utils.safestring import mark_safe
import markdown
import bleach
from django.utils.html import escape
from markdown.extensions import Extension
class EscapeHtml(Extension):
def extendMarkdown(self, md):
md.preprocessors.deregister('html_block')
md.inlinePatterns.deregister('html')
register = template.Library()
md = markdown.Markdown(extensions=["fenced_code", "nl2br", "smarty", "codehilite", EscapeHtml()])
@register.filter(needs_autoescape=True)
def markdown(value, autoescape=True):
html = mark_safe(bleach.linkify(md.convert(value)))
# html = value
md.reset()
return html
@register.filter(needs_autoescape=True)
def nl_br(value, autoescape=True):
html = mark_safe(value.replace("\n", "<br>"))
return html