美文网首页Python 运维
使用misaka格式化GFM markdown

使用misaka格式化GFM markdown

作者: a5768599b114 | 来源:发表于2015-05-01 17:55 被阅读1138次

    版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0

    python里markdownmarkdown2各有缺点, markdown不支持GFM代码格式, markdown2 虽说可以支持, 但格式化之后的代码下面有下划线, 找了好多原因, 未解。google过程中发现markdown2不好的消息, markdown2作者经常自我吹嘘, 而我在github看源码的时候, 觉得markdown2开发结构不是很好。所以抛弃markdown, 选择其他。

    在众多的python markdown parsers我们该如何选择呢?

    这里Markdown Parsers in Python对python几个常用markdown parser多了对比评测, 最后我选择了misaka

    misaka 里, 没有直接对pygments封装生成代码高亮的逻辑,所以代码高亮部分需要定义一遍。

    Code Example

    定义code 渲染类, 然后在实例化Markdown的加入自定义的渲染类即可。

    # -*- coding: utf-8 -*-
    '''
    File Name: markbook/markdown.py
    Author: JackeyGao
    mail: junqi.gao@shuyun.com
    Created Time: Fri May  1 13:51:14 2015
    '''
    
    import misaka as m
    from pygments import highlight
    from pygments.lexers import get_lexer_by_name
    from pygments.formatters import HtmlFormatter
    
    # Create a custom renderer
    class BleepRenderer(m.HtmlRenderer, m.SmartyPants):
        def block_code(self, text, lang):
            if not lang:
                return '\n<pre><code>%s</code></pre>\n' % \
                    text.strip()
            lexer = get_lexer_by_name(lang, stripall=True)
            formatter = HtmlFormatter()
            return highlight(text, lexer, formatter)
    
    if __name__ == '__main__':
        # And use the renderer
        renderer = BleepRenderer()
        md = m.Markdown(renderer,
            extensions=m.EXT_FENCED_CODE | m.EXT_NO_INTRA_EMPHASIS)
    
        print md.render("""```python
        # -*- coding:utf-8 -*-
        import os
        import sys
        ```""")
    

    相关文章

      网友评论

        本文标题:使用misaka格式化GFM markdown

        本文链接:https://www.haomeiwen.com/subject/vksbfttx.html