私は次のことを行うためにpythonマークダウンを使用しています:
という形の表現があるときは、 のよう[test]
にレンダリングしたい
<span>[<a>test</a>]</span>
そのために、markdown の inlinePatterns に拡張機能を適用しています。
PATTERN = r'\[(test)\]'
class PerceptionPattern(Pattern):
def handleMatch(self, m):
span = etree.Element('span')
anchor = etree.SubElement(span, "a")
span.text = markdown.util.AtomicString("[")
span.tail = markdown.util.AtomicString("]")
anchor.text = m.group(2)
return span
class TestExtension(markdown.extensions.Extension):
"""Adds cite extension to Markdown class"""
def extendMarkdown(self, md, md_globals):
"""Modifies inline patterns"""
md.inlinePatterns.add('test', PerceptionPattern(PATTERN), '<not_strong')
しかし、これは戻ってきています
<span>[]<a>test</a></span>
正しい属性かどうか.tail
はわかりませんが、正しい構文が見つかりません。
これどうやってするの?
フルプログラム
from markdown.inlinepatterns import Pattern
from markdown.util import etree
from markdown import Markdown
import markdown
PATTERN = r'\[(test)\]'
class TestPattern(Pattern):
def handleMatch(self, m):
span = etree.Element('span')
anchor = etree.SubElement(span, "a")
span.text = markdown.util.AtomicString("[")
span.tail = markdown.util.AtomicString("]")
#anchor.tail = markdown.util.AtomicString("]")
anchor.text = m.group(2)
return span
class TestExtension(markdown.extensions.Extension):
def extendMarkdown(self, md, md_globals):
"""Modifies inline patterns"""
md.inlinePatterns.add('test_pattern', TestPattern(PATTERN), '<not_strong')
md = Markdown(extensions=[TestExtension()])
print md.convert(u'[test]')