123456789101112131415161718192021222324252627282930313233 |
- from importlib import import_module
- from django.conf import settings
- from django.utils import six
- from bs4 import BeautifulSoup
- class MarkupPipeline(object):
- """
- Small framework for extending parser
- """
- def extend_markdown(self, md):
- for extension in settings.MISAGO_MARKUP_EXTENSIONS:
- module = import_module(extension)
- if hasattr(module, 'extend_markdown'):
- hook = getattr(module, 'extend_markdown')
- hook.extend_markdown(md)
- return md
- def process_result(self, result):
- soup = BeautifulSoup(result['parsed_text'], 'html5lib')
- for extension in settings.MISAGO_MARKUP_EXTENSIONS:
- module = import_module(extension)
- if hasattr(module, 'clean_parsed'):
- hook = getattr(module, 'clean_parsed')
- hook.process_result(result, soup)
- souped_text = six.text_type(soup.body).strip()[6:-7]
- result['parsed_text'] = souped_text.strip()
- return result
- pipeline = MarkupPipeline()
|