是否可以在降价中替换令牌?

时间:2012-05-20 22:47:37

标签: python regex coffeescript markdown

我在Python中使用正则表达式从CoffeeScript文件中提取使用Markdown格式化的注释。 CS使用###作为多行注释的开始和结束标记。这与markdown格式冲突,因为#用于表示标题类。 Markdown是否可以将%或^或其他字符解释为标题类标记?

1 个答案:

答案 0 :(得分:1)

可以通过利用markdown.extensions.Extension类来覆盖Python Markdown的许多元素。经过一番挖掘和实验后,我通过编写一个扩展通用BlockParser的自定义头解析器来实现这一点。

基本上它看起来像这样

class CustomHeaderParser( BlockParser )
    def run( params )
        # implementation

class CustomExtension( Extension )
    def extendMarkdown( self, md, md_globals )
        md.parser.blockprocessor.add( 'custom_header_parser', CustomHeaderParser(md.parser), '<hashheader' )
        md.registerExtension( self )


markdown_parser = markdown.Markdown( extensions=[ CaretHeaderExtension() ] )
markdown_parser.convert( markdown_text )

在研究这个问题的过程中,我还发现了另一种不太理想的工作方法。有两种类型的标题样式,markdown理解Setext和atx。 Setext在文本下方的行上使用====和-----来提供两个标题级别h1和h2。