MarkupFormatter

A MarkupFormatter instance is the central point that holds Filter and handles the text transformation. A generic instance of MarkupFormatter is already provided with django-markup and located in:

django_markup.markup.formatter

This instance takes 2 arguments, first the text to transform and a filter_name of the filter which should been used to convert the text. Example:

from django_markup.markup import formatter
print formatter('This is *markdown* text', filter_name='markdown')

You can pass any other keyword arguments which gets passed through the filter’s render function. See this example:

from django_markup.markup import formatter
print formatter('This is *markdown* text', filter_name='markdown', safe_mode=True)

The safe_mode=True argument gets passed to the render method of the Markdown filter and at the end passed through the markdown function itself.

For a more generic use, see Overriding filter settings.

Automatically loaded filter:

A bunch of Filter are loaded loaded automatically in the django_markup.markup.formatter class. Within your settings.py you can define which Filter are loaded from start. A default value would be:

from django_markup.filter.creole_filter import CreoleMarkupFilter
# other filter...

MARKUP_FILTER = {
    'creole': CreoleMarkupFilter,
    'linebreaks': LinebreaksMarkupFilter,
    'markdown': MarkdownMarkupFilter,
    'none': NoneMarkupFilter,
    'restructuredtext': RstMarkupFilter,
    'smartypants': SmartyPantsMarkupFilter,
    'textile': TextileMarkupFilter,
}

Add a filter to a formatter instance:

To add a Filter to a MarkupFormatter instance, simply register it. Provide a filter name – the key that is used in the templatetag to define the filter – and the filter class to the HtmlFormatter register method:

from django_markup.markup import formatter
formatter.register('uppercase', UppercaseMarkupFilter)

Update a filter

If you want to update/replace a Filter class, use the update method of the HtmlFormatter instance. Similar to registering:

from django_markup.markup import formatter
formatter.update('uppercase', UppercaseMarkupFilter)

Remove a filter

To remove a filter from the HtmlFormatter instance, simply unregister it using the unregister method with it’s filter name:

from django_markup.markup import formatter
formatter.unregister('uppercase')