PageRenderTime 42ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/website/mdx_github.py

http://github.com/aichallenge/aichallenge
Python | 36 lines | 33 code | 2 blank | 1 comment | 3 complexity | d1eb45e9699e55e3bc40230ff8b00fd0 MD5 | raw file
Possible License(s): Apache-2.0, BSD-3-Clause
  1. import markdown
  2. import re
  3. START_FENCE = re.compile('^```(.*)')
  4. END_FENCE = re.compile('^```$')
  5. class GithubPreprocessor(markdown.preprocessors.Preprocessor):
  6. def run(self, lines):
  7. # replace github fenced code blocks with python markdown ones
  8. new_lines = []
  9. fenced = False
  10. for line in lines:
  11. if fenced:
  12. if END_FENCE.match(line):
  13. new_lines.append('')
  14. fenced = False
  15. else:
  16. new_lines.append(' '+line)
  17. else:
  18. fence = START_FENCE.match(line)
  19. if fence:
  20. fenced = True
  21. new_lines.append('')
  22. if fence.group(1):
  23. new_lines.append(' :::' + fence.group(1))
  24. else:
  25. new_lines.append(line)
  26. return new_lines
  27. class MarkdownGithub(markdown.Extension):
  28. def extendMarkdown(self, md, md_globals):
  29. md.preprocessors.add('github',
  30. GithubPreprocessor(self), "_begin")
  31. def makeExtension(configs=None):
  32. return MarkdownGithub(configs=configs)