Source

cmsplugin-markup / cmsplugin_markup / plugins / markdown / mark_down.py

from django.conf import settings
from django.utils.encoding import smart_str, force_unicode

from cmsplugin_markup.plugins import MarkupBase

class Markup(MarkupBase):

    name = 'Markdown'
    identifier = 'markdown'

    def parse(self, value):
        try:
            import markdown
        except ImportError:
            return force_unicode(value)
        else:
            if hasattr(markdown, 'version'):
                extensions = settings.CMS_MARKDOWN_EXTENSIONS
                if len(extensions) > 0 and extensions[0] == "safe":
                    extensions = extensions[1:]
                    safe_mode = True
                else:
                    safe_mode = False

                if getattr(markdown, 'version_info', None) < (1,7):
                    return force_unicode(markdown.markdown(smart_str(value),
                                extensions, safe_mode=safe_mode))
                else:
                    return markdown.markdown(force_unicode(value), extensions,
                                safe_mode=safe_mode)
            else:
                return force_unicode(markdown.markdown(smart_str(value)))
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.