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