You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

34 lines
904 B

  1. """
  2. Jinja2 markdown2 extension
  3. by Silas Swell
  4. http://www.silassewell.com/blog/2010/05/10/jinja2-markdown-extension/
  5. """
  6. import jinja2
  7. import jinja2.ext
  8. import markdown2
  9. class Markdown2Extension(jinja2.ext.Extension):
  10. tags = set(['markdown2'])
  11. def __init__(self, environment):
  12. super(Markdown2Extension, self).__init__(environment)
  13. environment.extend(
  14. markdowner=markdown2.Markdown()
  15. )
  16. def parse(self, parser):
  17. lineno = parser.stream.next().lineno
  18. body = parser.parse_statements(
  19. ['name:endmarkdown2'],
  20. drop_needle=True
  21. )
  22. return jinja2.nodes.CallBlock(
  23. self.call_method('_markdown_support'),
  24. [],
  25. [],
  26. body
  27. ).set_lineno(lineno)
  28. def _markdown_support(self, caller):
  29. return self.environment.markdowner.convert(caller()).strip()