Python-Markdown に追加の構文を追加したいと思います:n
が正の整数の場合、 に>>n
展開する必要があり<a href="#post-n">n</a>
ます。(二重山括弧 ( ) は、イメージボード フォーラム>>
でリンクを作成するための従来の構文です。)
デフォルトでは、Python-Markdown は>>n
ネストされた blockquotes: に展開されます<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>
ます。上記の実装の何が問題になっていますか?