##// END OF EJS Templates
xs
xs

File last commit:

r52:1697154a default
r54:6cbb2c22 default
Show More
mdx_neboard.py
61 lines | 1.6 KiB | text/x-python | PythonLexer
import markdown
from markdown.inlinepatterns import Pattern
from markdown.util import etree
__author__ = 'vurdalak'
class AutolinkPattern(Pattern):
def handleMatch(self, m):
link_element = etree.Element('a')
href = m.group(2)
link_element.set('href', href)
link_element.text = href
return link_element
class QuotePattern(Pattern):
def handleMatch(self, m):
quote_element = etree.Element('span')
quote_element.set('class', 'quote')
quote_element.text = m.group(3)
return quote_element
class ReflinkPattern(Pattern):
def handleMatch(self, m):
ref_element = etree.Element('a')
post_id = m.group(4)
ref_element.set('href', '#' + str(post_id))
ref_element.text = '#' + post_id
return ref_element
class NeboardMarkdown(markdown.Extension):
AUTOLINK_PATTERN = r'(http://\S+)'
QUOTE_PATTERN = r'(>){1}(.+)'
REFLINK_PATTERN = r'((>){2}(\d+))'
def extendMarkdown(self, md, md_globals):
autolink = AutolinkPattern(self.AUTOLINK_PATTERN, md)
quote = QuotePattern(self.QUOTE_PATTERN, md)
reflink = ReflinkPattern(self.REFLINK_PATTERN, md)
md.inlinePatterns[u'autolink_ext'] = autolink
md.inlinePatterns[u'reflink'] = reflink
md.inlinePatterns[u'quote'] = quote
del(md.inlinePatterns[u'entity'])
def makeExtension(configs=None):
return NeboardMarkdown(configs=configs)
neboard_extension = makeExtension()
def markdown_extended(markup):
return markdown.markdown(markup, [neboard_extension])