首页 文章

Python中的Github Flavored Markdown

提问于
浏览
3

Is there a way to parse a text file to output styling of Github Flavored Markdown (GFM) in python 2.7?

这个网站和其他地方有很多例子提供pygments / jinja2语法高亮指南,如下所示:

{% highlight 'python' %}
def testing(x):
    print x
{% endhighlight %}

但我想使用markdown格式化我的整个帖子,类似于编写这个问题,然后将其传递给jinja2过滤器以应用样式 . 上面的代码片段只有在我可以预先确定代码块的位置时才会起作用,并将它们分开处理,而不是文本文件的其余部分 .

我发现谷歌维护的代码(https://github.com/google/py-gfm),我相信这是正确的轨道,但我只提供这些扩展:

In [10]: gfm.
gfm.AutolinkExtension       gfm.SpacedLinkExtension     gfm.hidden_hilite
gfm.AutomailExtension       gfm.StrikethroughExtension  gfm.semi_sane_lists
gfm.HiddenHiliteExtension   gfm.autolink                gfm.spaced_link
gfm.SemiSaneListExtension   gfm.automail                gfm.strikethrough

我不清楚如何解析我的字符串/文本文件以输出我需要的东西 .

现在,我将我的帖子传递给名为markdown的过滤器: {{ post.body|markdown() }} 其中定义了markdown:

def markdown(code):
    from pygments import highlight
    from pygments.lexers import PythonLexer
    from pygments.formatters import HtmlFormatter

    return highlight(code, PythonLexer(), HtmlFormatter())

这就是我现在所处的位置 - 但是这会将整个帖子视为代码块并根据python的语法规则进行突出显示 . 是否有可用的或者一种方法来编写一个过滤器 github_markdown() ,它将采用我的原始帖子体(类似于这篇文章)并添加样式和链接我的喜好?

谢谢你的帮助 .

Stack:Ubuntu 14.04,Python 2.7,Pygments 2.02,Flask 0.10.1,Jinja2,MongoDB 3.0.6

2 回答

  • 0

    python-markdown 库支持可插拔扩展 . 有第三方制作的标准扩展和更多定制扩展 . https://github.com/google/py-gfm 实施Github Flavored Markdown . 将此扩展添加到Python Markdown很简单 .

  • 0

    考虑到这似乎有多大的痛苦,我决定将mistunepygments结合起来给我想要的东西:https://github.com/asottile/markdown-code-blocks

    用法非常简单:

    pip install markdown-code-blocks
    

    该库提供单一功能

    markdown_code_blocks.highlight(markdown_s)
    

    您可以使用典型的pygments主题设置输出样式

相关问题