gpt4 book ai didi

python - 使用 python-creole 更改内部链接呈现

转载 作者:行者123 更新时间:2023-11-28 16:50:50 25 4
gpt4 key购买 nike

我的目标是创建一个本地可浏览的 bitbucket 维基浏览器的克隆版本。页面是使用 creole 编写的句法。

我正在使用 python-creole 将文件呈现为 html。它工作得比较好,但 python-creole 和 bitbucket 呈现内部链接的方式有所不同。

在 Bitbucket 站点上,内部链接包含类似 [[system programming]] 的空格将呈现类似 <a href="/wiki/system_programming">system programming</a> 的内容(空格被替换为 _ )在使用 python-creole 时这将呈现为 <a href="system programming">system programming</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())

关于python - 使用 python-creole 更改内部链接呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7939644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com