编程语言
首页 > 编程语言> > 使用python-creole更改内部链接呈现

使用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