diff --git a/symposion/markdown_parser.py b/symposion/markdown_parser.py new file mode 100644 index 00000000..07216c2a --- /dev/null +++ b/symposion/markdown_parser.py @@ -0,0 +1,17 @@ +import html5lib +from html5lib import html5parser, sanitizer + +import markdown + + +def parse(text): + + # First run through the Markdown parser + text = markdown.markdown(text, extensions=["extra"], safe_mode=False) + + # Sanitize using html5lib + bits = [] + parser = html5parser.HTMLParser(tokenizer=sanitizer.HTMLSanitizer) + for token in parser.parseFragment(text).childNodes: + bits.append(token.toxml()) + return "".join(bits)