Mercurial > public > sg101
view tools/mdx_urlize.py @ 645:99f7917702ca
Fix 081a88b3bfc8, javascript resize of forum images.
Commit 081a88b3bfc8 broke those pages that loaded forums.js but did not load
the imagesLoaded jQuery extension. Now we have arranged it so that only the
forums topic view loads imagesLoaded and put the resizing javascript inline.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Mon, 11 Mar 2013 15:30:25 -0500 |
parents | f54bf3b3bece |
children | 2adf01661ac5 |
line wrap: on
line source
""" Taken from: https://github.com/r0wb0t/markdown-urlize A more liberal autolinker Inspired by Django's urlize function. Positive examples: >>> import markdown >>> md = markdown.Markdown(extensions=['urlize']) >>> md.convert('http://example.com/') u'<p><a href="http://example.com/">http://example.com/</a></p>' >>> md.convert('go to http://example.com') u'<p>go to <a href="http://example.com">http://example.com</a></p>' >>> md.convert('example.com') u'<p><a href="http://example.com">example.com</a></p>' >>> md.convert('example.net') u'<p><a href="http://example.net">example.net</a></p>' >>> md.convert('www.example.us') u'<p><a href="http://www.example.us">www.example.us</a></p>' >>> md.convert('(www.example.us/path/?name=val)') u'<p>(<a href="http://www.example.us/path/?name=val">www.example.us/path/?name=val</a>)</p>' >>> md.convert('go to <http://example.com> now!') u'<p>go to <a href="http://example.com">http://example.com</a> now!</p>' Negative examples: >>> md.convert('del.icio.us') u'<p>del.icio.us</p>' """ import markdown # Global Vars URLIZE_RE = '(%s)' % '|'.join([ r'<(?:f|ht)tps?://[^>]*>', r'\b(?:f|ht)tps?://[^)<>\s]+[^.,)<>\s]', r'\bwww\.[^)<>\s]+[^.,)<>\s]', r'[^(<\s]+\.(?:com|net|org)\b', ]) class UrlizePattern(markdown.inlinepatterns.Pattern): """ Return a link Element given an autolink (`http://example/com`). """ def handleMatch(self, m): url = m.group(2) if url.startswith('<'): url = url[1:-1] text = url if not url.split('://')[0] in ('http','https','ftp'): if '@' in url and not '/' in url: url = 'mailto:' + url else: url = 'http://' + url el = markdown.etree.Element("a") el.set('href', url) el.text = markdown.AtomicString(text) return el class UrlizeExtension(markdown.Extension): """ Urlize Extension for Python-Markdown. """ def extendMarkdown(self, md, md_globals): """ Replace autolink with UrlizePattern """ md.inlinePatterns['autolink'] = UrlizePattern(URLIZE_RE, md) def makeExtension(configs=None): return UrlizeExtension(configs=configs) if __name__ == "__main__": import doctest doctest.testmod()