Initial commit.
author |
Chris Eldredge <chris.eldredge@gmail.com> |
date |
Thu, 09 Aug 2012 18:05:09 -0400 |
parents |
(none) |
children |
8659ef2c4757 |
import markdown
class UrlRebaseExtension(markdown.Extension):
def __init__ (self, configs):
# set extension defaults
self.config = {
'base_url' : ['/', 'String to append to beginning or URL.'],
}
# Override defaults with user settings
for key, value in configs :
self.setConfig(key, value)
def extendMarkdown(self, md, md_globals):
""" Add pieces to Markdown. """
md.registerExtension(self)
md.treeprocessors.add("urlrebase", UrlRebaseTreeprocessor(self.getConfigs()), "_end")
class UrlRebaseTreeprocessor(markdown.treeprocessors.Treeprocessor):
def __init__ (self, config):
self.config = config
def run(self, root):
for a in root.findall(".//a"):
uri = a.get('href', '')
if '://' in uri or uri.startswith('/'):
continue
a.set('href', self.rebase(uri))
return root
def rebase(self, uri):
base = self.config['base_url']
if base[0] and not base.endswith('/'):
base = base + '/'
return base + uri
def makeExtension(configs=None) :
return UrlRebaseExtension(configs=configs)