16516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru#!/usr/bin/env python
26516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru"""
36516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste QueruPython-Markdown Extra Extension
46516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru===============================
56516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
66516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste QueruA compilation of various Python-Markdown extensions that imitates
76516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru[PHP Markdown Extra](http://michelf.com/projects/php-markdown/extra/).
86516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
96516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste QueruNote that each of the individual extensions still need to be available
106516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruon your PYTHONPATH. This extension simply wraps them all up as a
116516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruconvenience so that only one extension needs to be listed when
126516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruinitiating Markdown. See the documentation for each individual
136516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruextension for specifics about that extension.
146516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
156516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste QueruIn the event that one or more of the supported extensions are not
166516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruavailable for import, Markdown will issue a warning and simply continue
176516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruwithout that extension.
186516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
196516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste QueruThere may be additional extensions that are distributed with
206516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste QueruPython-Markdown that are not included here in Extra. Those extensions
216516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruare not part of PHP Markdown Extra, and therefore, not part of
226516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste QueruPython-Markdown Extra. If you really would like Extra to include
236516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruadditional extensions, we suggest creating your own clone of Extra
246516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruunder a differant name. You could also edit the `extensions` global
256516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruvariable defined below, but be aware that such changes may be lost
266516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruwhen you upgrade to any future version of Python-Markdown.
276516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
286516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru"""
296516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
306516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruimport markdown
316516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
326516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruextensions = ['fenced_code',
336516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru              'footnotes',
346516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru              'headerid',
356516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru              'def_list',
366516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru              'tables',
376516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru              'abbr',
386516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru              ]
396516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
406516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
416516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruclass ExtraExtension(markdown.Extension):
426516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru    """ Add various extensions to Markdown class."""
436516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
446516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru    def extendMarkdown(self, md, md_globals):
456516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru        """ Register extension instances. """
466516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru        md.registerExtensions(extensions, self.config)
476516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
486516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querudef makeExtension(configs={}):
496516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru    return ExtraExtension(configs=dict(configs))
50