使用python-creole更改内部链接呈现
作者:互联网
我的目标是为bitbucket的Wiki浏览器创建本地可浏览的克隆.
页面使用creole语法编写.
我正在使用python-creole将文件渲染为html.它工作起来相对不错,但是python-creole和bitbucket呈现内部链接的方式有所不同.
在Bitbucket网站上,带有[[system programming]]之类的空格的内部链接将呈现为< a href =“ / wiki / system_programming”"系统编程< / a> (空格用_代替),同时使用python-creole会将其呈现为< a href =“系统编程”>系统编程< / a>.
我可以将python-creole调整为_替换空格吗?
解决方法:
Ascobol的答案有效,但使用类继承更为干净.
这是我正在制作的Wiki应用程序的(略有更改)摘录.它更改链接和表的输出.如果要查看可以覆盖的方法,可以查看python-creole的源代码.
class WikiLinkHtmlEmitter(HtmlEmitter):
def link_emit(self, node):
target = node.content
if node.children:
inside = self.emit_children(node)
else:
inside = self.html_escape(target)
m = self.link_rules.addr_re.match(target)
if m:
if m.group('extern_addr'):
return u'<a href="%s">%s</a>' % (
self.attr_escape(target), inside)
elif m.group('inter_wiki'):
raise NotImplementedError
if re.match(r'^\S+@\S+$', target):
target = 'mailto:%s' % target
return u'<a href="%s">%s</a>' % (
self.attr_escape(target), inside)
target = target.lower()
target = slugify(target)
target = '/wiki/' + target
return u'<a href="%s" class="%s">%s</a>' % (
self.attr_escape(target), classes, inside)
def table_emit(self, node):
return u'''
<table class="table table-bordered table-striped">
\n%s
</table>\n''' % self.emit_children(node)
def creole_markup(value):
document = Parser(value).parse()
return mark_safe(WikiLinkHtmlEmitter(document).emit())
标签:bitbucket,markup,python,creole 来源: https://codeday.me/bug/20191202/2086339.html