ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-12-02 05:56:06  阅读:313  来源: 互联网

标签:bitbucket markup 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有