/examples/web/wiki/macros/include.py

https://bitbucket.org/prologic/circuits/ · Python · 55 lines · 26 code · 18 blank · 11 comment · 6 complexity · c1caa85bae2ebd856eeef141458c2853 MD5 · raw file

  1. """Include macros
  2. Macros for inclusion of other wiki pages
  3. """
  4. from genshi import builder
  5. def include(macro, environ, pagename=None, *args, **kwargs):
  6. """Return the parsed content of the page identified by arg_string"""
  7. if pagename is None:
  8. return None
  9. db = environ["db"]
  10. page = db.get(pagename, None)
  11. if page is not None:
  12. environ["page.name"] = pagename
  13. return environ["parser"].generate(page, environ=environ)
  14. def include_raw(macro, environ, pagename=None, *args, **kwargs):
  15. """Return the raw text of the page identified by arg_string, rendered
  16. in a <pre> block.
  17. """
  18. if pagename is None:
  19. return None
  20. db = environ["db"]
  21. page = db.get(pagename, None)
  22. if page is not None:
  23. return builder.tag.pre(page, class_="plain")
  24. def include_source(macro, environ, pagename=None, *args, **kwargs):
  25. """Return the parsed text of the page identified by arg_string, rendered
  26. in a <pre> block.
  27. """
  28. if pagename is None:
  29. return None
  30. db = environ["db"]
  31. page = db.get(pagename, None)
  32. if page is not None:
  33. environ["page.name"] = pagename
  34. return builder.tag.pre(environ["parser"].render(
  35. page, environ=environ).decode("utf-8")
  36. )