使用mistune处理markdown和代码高亮

阅读量:68, 68

mistune

纯Python写的一个markdown解析库。官方申明特点就是一个字:快

简单示例

import mistune

markdown = mistune.Markdown()
markdown('I am using **mistune markdown parser**')

代码高亮

一、后台处理

import mistune
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter


def block_code(text, lang, inlinestyles=False, linenos=False):
    if not lang:
        text = text.strip()
        return u'<pre><code>%s</code></pre>\n' % mistune.escape(text)

    try:
        lexer = get_lexer_by_name(lang, stripall=True)
        formatter = HtmlFormatter(
            noclasses=inlinestyles, linenos=linenos
        )
        code = highlight(text, lexer, formatter)
        if linenos:
            return '<div class="highlight-wrapper">%s</div>\n' % code
        return code
    except:
        return '<pre class="%s"><code>%s</code></pre>\n' % (
            lang, mistune.escape(text)
        )


class HighlightRender(mistune.Renderer):
    def block_code(self, text, lang):
        # renderer has an options
        inlinestyles = self.options.get('inlinestyles', False)
        linenos = self.options.get('linenos', False)
        return block_code(text, lang, inlinestyles, linenos)

使用方法:

renderer = HighlightRender()
markdown=mistune.Markdown(renderer=renderer)
print(markdown('```python\nassert 1 == 1\n```'))

二、 前端渲染

在页面引入pygment的css。 皮肤下载地址:https://github.com/jwarby/jekyll-pygments-themes

django markdown

使用mistune处理markdown和代码高亮 - 有0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

公告

这里是我的博客,欢迎骚扰

近期评论

  • jason发表了 23333333333333333
  • fffffffffffff发表了 444444444444444444

近期评论

  • jason发表了 23333333333333333
  • fffffffffffff发表了 444444444444444444