【发布时间】:2013-09-30 14:11:05
【问题描述】:
我正在使用 python markdown 来执行以下操作:
当有[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]')
【问题讨论】:
-
你能提供一个完整的程序来演示这个问题吗?见SSCCE.ORG。
-
@Robᵩ,添加了完整的示例,感谢您的链接。