##// END OF EJS Templates
Changed parser to show quotes and reflinks as they are posted, not with borders and '#' character.
Changed parser to show quotes and reflinks as they are posted, not with borders and '#' character.

File last commit:

r90:8f1d0214 default
r90:8f1d0214 default
Show More
mdx_neboard.py
85 lines | 2.3 KiB | text/x-python | PythonLexer
import markdown
from markdown.inlinepatterns import Pattern
from markdown.util import etree
__author__ = 'neko259'
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(2)
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 = m.group(2)
return ref_element
class SpoilerPattern(Pattern):
def handleMatch(self, m):
quote_element = etree.Element('span')
quote_element.set('class', 'spoiler')
quote_element.text = m.group(2)
return quote_element
class CommentPattern(Pattern):
def handleMatch(self, m):
quote_element = etree.Element('span')
quote_element.set('class', 'comment')
quote_element.text = '//' + m.group(3)
return quote_element
class NeboardMarkdown(markdown.Extension):
AUTOLINK_PATTERN = r'(https?://\S+)'
QUOTE_PATTERN = r'^(?<!>)(>[^>]+)$'
REFLINK_PATTERN = r'((>>)(\d+))'
SPOILER_PATTERN = r'%%(.+)%%'
COMMENT_PATTERN = r'^(//(.+))'
def extendMarkdown(self, md, md_globals):
autolink = AutolinkPattern(self.AUTOLINK_PATTERN, md)
quote = QuotePattern(self.QUOTE_PATTERN, md)
reflink = ReflinkPattern(self.REFLINK_PATTERN, md)
spoiler = SpoilerPattern(self.SPOILER_PATTERN, md)
comment = CommentPattern(self.COMMENT_PATTERN, md)
md.inlinePatterns[u'autolink_ext'] = autolink
md.inlinePatterns[u'spoiler'] = spoiler
md.inlinePatterns[u'comment'] = comment
md.inlinePatterns[u'reflink'] = reflink
md.inlinePatterns[u'quote'] = quote
del md.parser.blockprocessors['quote']
def makeExtension(configs=None):
return NeboardMarkdown(configs=configs)
neboard_extension = makeExtension()
def markdown_extended(markup):
return markdown.markdown(markup, [neboard_extension], safe_mode=True)