import bleach import markdown from markupsafe import Markup # nl2br: 빈 줄 없이 그냥 엔터만 쳐도 줄바꿈되게 한다 — 지금까지 백엔드가 순수 텍스트를 # white-space: pre-wrap으로 보여주던 것과 체감이 최대한 비슷하도록. _MARKDOWN_EXTENSIONS = ["nl2br", "sane_lists"] _ALLOWED_TAGS = [ "p", "br", "strong", "em", "del", "h1", "h2", "h3", "h4", "ul", "ol", "li", "blockquote", "code", "pre", "hr", "a", "img", ] _ALLOWED_ATTRS = {"a": ["href", "title"], "img": ["src", "alt", "title"]} def render_markdown(text: str) -> Markup: """저널 기록 내용을 마크다운 HTML로 렌더링한다. markdown 라이브러리는 기본적으로 원본 HTML을 그대로 통과시키므로(