helper/mdx_urlize
This commit is contained in:
parent
8b1bd3c555
commit
26aa0207aa
@ -1,4 +1,5 @@
|
|||||||
"""A more liberal autolinker
|
"""
|
||||||
|
A more liberal autolinker
|
||||||
|
|
||||||
Inspired by Django's urlize function.
|
Inspired by Django's urlize function.
|
||||||
|
|
||||||
@ -45,27 +46,30 @@ URLIZE_RE = '(%s)' % '|'.join([
|
|||||||
r'[^(<\s]+\.(?:com|net|org)\b',
|
r'[^(<\s]+\.(?:com|net|org)\b',
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
class UrlizePattern(markdown.inlinepatterns.Pattern):
|
class UrlizePattern(markdown.inlinepatterns.Pattern):
|
||||||
""" Return a link Element given an autolink (`http://example/com`). """
|
""" Return a link Element given an autolink (`http://example/com`). """
|
||||||
|
|
||||||
def handleMatch(self, m):
|
def handleMatch(self, m):
|
||||||
url = m.group(2)
|
url = m.group(2)
|
||||||
|
|
||||||
if url.startswith('<'):
|
if url.startswith('<'):
|
||||||
url = url[1:-1]
|
url = url[1:-1]
|
||||||
|
|
||||||
text = url
|
text = url
|
||||||
|
|
||||||
if not url.split('://')[0] in ('http','https','ftp'):
|
if not url.split('://')[0] in ('http', 'https', 'ftp'):
|
||||||
if '@' in url and not '/' in url:
|
if '@' in url and '/' not in url:
|
||||||
url = 'mailto:' + url
|
url = 'mailto:' + url
|
||||||
else:
|
else:
|
||||||
url = 'http://' + url
|
url = 'http://' + url
|
||||||
|
|
||||||
el = markdown.util.etree.Element("a")
|
el = markdown.util.etree.Element("a")
|
||||||
el.set('href', url)
|
el.set('href', url)
|
||||||
el.text = markdown.util.AtomicString(text)
|
el.text = markdown.util.AtomicString(text)
|
||||||
return el
|
return el
|
||||||
|
|
||||||
|
|
||||||
class UrlizeExtension(markdown.Extension):
|
class UrlizeExtension(markdown.Extension):
|
||||||
""" Urlize Extension for Python-Markdown. """
|
""" Urlize Extension for Python-Markdown. """
|
||||||
|
|
||||||
@ -73,9 +77,12 @@ class UrlizeExtension(markdown.Extension):
|
|||||||
""" Replace autolink with UrlizePattern """
|
""" Replace autolink with UrlizePattern """
|
||||||
md.inlinePatterns['autolink'] = UrlizePattern(URLIZE_RE, md)
|
md.inlinePatterns['autolink'] = UrlizePattern(URLIZE_RE, md)
|
||||||
|
|
||||||
|
|
||||||
def makeExtension(*args, **kwargs):
|
def makeExtension(*args, **kwargs):
|
||||||
return UrlizeExtension(*args, **kwargs)
|
return UrlizeExtension(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import doctest
|
import doctest
|
||||||
|
|
||||||
doctest.testmod()
|
doctest.testmod()
|
||||||
|
Loading…
Reference in New Issue
Block a user