Python Markdown 做语法限制

这几天埋头写NSLoger,需要给 Markdown 禁用一些语法,比如禁止评论内容中出现 H1~H6 标签之类的,这个问题困扰了我几天,今天终于找到了解决方案。Python-Markdown 的文档看起来真伤神…

之前我用的 Markdown2,不为什么,随便挑的,前两天我在 SegmentFault 上提了一个问题:Python 中的 Markdown 和 Markdown2 有何区别?,据说 Misaka 很快,因为是 CPython,试了下,没太大感觉,我要的是简单,性能暂时还没考虑在之中。

通过 markdown 的 Extension 来 del 掉指定的语法就行了,如下:

import markdown

class MyMarkdownExtension(markdown.Extension):

	def extendMarkdown(self, md, md_globals):
		del md.parser.blockprocessors['hashheader']

my_markdown_extension = MyMarkdownExtension()

raw_text = '#this H1 ~~~'

print markdown.markdown(raw_text, [my_markdown_extension], safe_mode = 'escape')

输出<p>#this H1 ~~~</p>,要的就是这个效果,当然还有其他的可以删除。

下面是所有 md.inlinePatterns 包含的 key:

‘backtick’ ’escape’ ‘reference’ ’link’ ‘image_link’ ‘image_reference’ ‘short_reference’ ‘autolink’ ‘automail’ ’linebreak2’ ’linebreak’ ‘html’ ’entity’ ’not_strong’ ‘strong_em’ ‘strong’ ’emphasis’ ’emphasis2’

如果你要的没在上面,那么看看 md.parser.blockprocessors:

‘indent’ ‘code’ ‘hashheader’ ‘setextheader’ ‘hr’ ‘olist’ ‘ulist’ ‘quote’ ‘paragraph’

参考:http://blog.magicalhobo.com/2011/05/05/disabling-images-in-python-markdown/


是不是记记自己遇到过的坑,也是极好滴~~~

comments powered by Disqus