我尝试使用Pygments / Markdown让用户在我正在使用Flask的项目中保留格式化的代码块。我遇到的问题是Pygments正在格式化所有内容。
我想在文本上调用Markdown,以便将<code>
标记添加到文本中,然后让Pygments仅格式化<code>
标记中的文本。这是我尝试过的。
@app.route('/')
def show_entries():
entries = get_all_entries()
lexer = PythonLexer()
lexer.add_filter('codetagify')
formatter = HtmlFormatter()
for entry in entries:
entry['text'] = markdown.markdown(entry['text'])
entry['text'] = highlight(entry['text'], lexer, formatter)
return render_template('list_entries.html', entries=entries)
其中entries
是词典列表,entry['text']
是帖子的正文。在这个配置中发生的是Pygments显示所有html格式,而不是允许浏览器呈现它。我认为添加codetagify
过滤器会阻止该形式发生。关于我为实现这一目标需要做些什么的想法?
答案 0 :(得分:1)
我自己找到了答案。我只需要Pygments,因为Markdown使用它来为代码着色。我只需要在markdown.markdown()
电话中添加一个扩展程序。
@app.route('/')
def show_entries():
entries = get_all_entries()
for entry in entries:
entry['text'] = markdown.markdown(entry['text'], extensions=['codehilite'])
return render_template('list_entries.html', entries=entries)
只需要extensions=['codehilite']
参数。
答案 1 :(得分:0)
我认为codetagify无法实现您的想法。见http://pygments.org/docs/filters/
我不知道。也许你必须自己分离你想要格式化的文本部分,并且只将这些部分传递给荧光笔。我想当他们说&#34;过滤&#34;它们只是意味着以某种方式转换文本的东西。如果Pygments只在代码标签之间格式化文本部分,那将是一件好事。也许有一种方法可以做到这一点,但是在浏览文档的章节标题时我没有看到它。