pipeline.py 999 B

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