我想为 Python-Markdown 添加一个额外的语法:如果n
是一个正整数,>>n
应该扩展为<a href="#post-n">n</a>
. (双尖括号 ( ) 是在图像板论坛>>
中创建链接的常规语法。)
默认情况下,Python-Markdown 扩展>>n
为嵌套块引用:<blockquote><blockquote>n</blockquote></blockquote>
. 有没有办法从 中创建链接>>n
,同时保留 blockquote 的默认行为的其余部分?换句话说,如果x
是正整数,>>x
应该展开成链接,但如果x
不是正整数,>>x
仍然应该展开成嵌套的块引用。
我已经阅读了相关的 wiki 文章:Tutorial 1 Writing Extensions for Python Markdown。根据我在 wiki 中学到的知识,我编写了一个自定义扩展:
import markdown
import xml.etree.ElementTree as ET
from markdown.extensions import Extension
from markdown.inlinepatterns import Pattern
class ImageboardLinkPattern(Pattern):
def handleMatch(self, match):
number = match.group('number')
# Create link.
element = ET.Element('a', attrib={'href': f'#post-{number}'})
element.text = f'>>{number}'
return element
class ImageboardLinkExtension(Extension):
def extendMarkdown(self, md):
IMAGEBOARD_LINK_RE = '>>(?P<number>[1-9][0-9]*)'
imageboard_link = ImageboardLinkPattern(IMAGEBOARD_LINK_RE)
md.inlinePatterns['imageboard_link'] = imageboard_link
html = markdown.markdown('>>123',
extensions=[ImageboardLinkExtension()])
print(html)
但是,>>123
仍然产生<blockquote><blockquote>123</blockquote></blockquote>
. 上面的实现有什么问题?