Files
2026-05-16 19:13:32 +03:30

35 lines
889 B
Python

import markdown as _md
from django.utils.html import escape, mark_safe
FORMAT_PLAIN = "plain"
FORMAT_MARKDOWN = "markdown"
FORMAT_HTML = "html"
CONTENT_FORMAT_CHOICES = [
(FORMAT_PLAIN, "Plain Text"),
(FORMAT_MARKDOWN, "Markdown"),
(FORMAT_HTML, "HTML"),
]
_MD_EXTENSIONS = ["extra", "nl2br", "sane_lists"]
def render_content(text: str, fmt: str) -> str:
if not text:
return mark_safe("")
if fmt == FORMAT_HTML:
return mark_safe(text)
if fmt == FORMAT_MARKDOWN:
return mark_safe(_md.markdown(text, extensions=_MD_EXTENSIONS))
paragraphs = text.split("\n\n")
parts = []
for para in paragraphs:
para = para.strip()
if para:
lines = escape(para).split("\n")
parts.append("<p>" + "<br>".join(lines) + "</p>")
return mark_safe("".join(parts) if parts else f"<p>{escape(text)}</p>")