code.py 593 B

12345678910111213141516171819202122
  1. import re
  2. import markdown
  3. from markdown.extensions.fenced_code import FencedBlockPreprocessor
  4. class CodeBlockExtension(markdown.Extension):
  5. def extendMarkdown(self, md):
  6. md.registerExtension(self)
  7. md.preprocessors.add(
  8. "misago_code_bbcode", CodeBlockPreprocessor(md), ">normalize_whitespace"
  9. )
  10. class CodeBlockPreprocessor(FencedBlockPreprocessor):
  11. FENCED_BLOCK_RE = re.compile(
  12. r"""
  13. \[code(=("?)(?P<lang>.*?)("?))?](([ ]*\n)+)?(?P<code>.*?)((\s|\n)+)?\[/code\]
  14. """,
  15. re.IGNORECASE | re.MULTILINE | re.DOTALL | re.VERBOSE,
  16. )