pipeline.py 1008 B

1234567891011121314151617181920212223242526272829303132
  1. from importlib import import_module
  2. from bs4 import BeautifulSoup
  3. from misago.conf import settings
  4. class MarkupPipeline(object):
  5. """small framework for extending parser"""
  6. def extend_markdown(self, md):
  7. for extension in settings.MISAGO_MARKUP_EXTENSIONS:
  8. module = import_module(extension)
  9. if hasattr(module, 'extend_markdown'):
  10. hook = getattr(module, 'extend_markdown')
  11. hook.extend_markdown(md)
  12. return md
  13. def process_result(self, result):
  14. soup = BeautifulSoup(result['parsed_text'], 'html5lib')
  15. for extension in settings.MISAGO_MARKUP_EXTENSIONS:
  16. module = import_module(extension)
  17. if hasattr(module, 'clean_parsed'):
  18. hook = getattr(module, 'clean_parsed')
  19. hook.process_result(result, soup)
  20. souped_text = str(soup.body).strip()[6:-7]
  21. result['parsed_text'] = souped_text.strip()
  22. return result
  23. pipeline = MarkupPipeline()