美文网首页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