2

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

4

1 回答 1

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 可以理解 Settext 和 atx 两种类型的 header 样式。Setext 在文本下方的行中使用 ==== 和 ----- 来提供两个标题级别 h1 和 h2。

于 2012-05-21T01:59:36.493 回答