Source code for docdown.links

# -*- coding: utf-8 -*-

from __future__ import absolute_import, unicode_literals, print_function

from markdown.inlinepatterns import LinkPattern, LINK_RE
from markdown.extensions import Extension


[docs]class DocDownLinkPattern(LinkPattern): def __init__(self, link_map=None, **kwargs): self.link_map = link_map or {} super(DocDownLinkPattern, self).__init__(**kwargs)
[docs] def sanitize_url(self, url): if '#' in url: uri, uri_hash = url.split('#', 1) else: uri = url uri_hash = '' if uri in self.link_map: uri = self.link_map.get(uri) if uri_hash: uri = u'%s#%s' % (uri, uri_hash) return super(DocDownLinkPattern, self).sanitize_url(uri)
[docs]class LinksExtension(Extension): def __init__(self, **kwargs): self.config = { 'link_map': [{}, 'Dict mapping source urls to target urls.'], } super(LinksExtension, self).__init__(**kwargs)
[docs] def extendMarkdown(self, md, md_globals): link_map = self.getConfig('link_map') md.inlinePatterns['link'] = DocDownLinkPattern(link_map=link_map, pattern=LINK_RE, markdown_instance=md)
[docs]def makeExtension(*args, **kwargs): return LinksExtension(*args, **kwargs)