0

Python-Markdown に追加の構文を追加したいと思います:nが正の整数の場合、 に>>n展開する必要があり<a href="#post-n">n</a>ます。(二重山括弧 ( ) は、イメージボード フォーラム>>でリンクを作成するための従来の構文です。)

デフォルトでは、Python-Markdown は>>nネストされた blockquotes: に展開されます<blockquote><blockquote>n</blockquote></blockquote>>>nblockquote のデフォルトの動作の残りの部分を維持しながら、からリンクを作成する方法はありますか? つまり、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>ます。上記の実装の何が問題になっていますか?

4

1 に答える 1