我有以下问题,我正在为我的webapp使用markdown库,我需要修改它生成的输出,即我想将默认<img src="...">
标记更改为<img data-src="...">
。更改此模块生成的html的最佳方法是什么?
答案 0 :(得分:3)
您可能想要使用Python-Markdown的Extension API。大多数人使用API来添加自己的语法,但它可以轻松地改变现有输出。这样,您可以使用Markdown的解析器,但获得所需的输出。不需要包装或解析两次。
在您的情况下,您希望覆盖(子类)ImagePattern类并定义由handleMatch
方法返回的自己的Element。然后你只需要tell Markdown about it。在你的情况下,正则表达式甚至不需要是不同的。只需导入并重复使用现有的IMAGE_LINK_RE
并覆盖inlinePatterns["image_link"]
。
此tutorial应该可以帮助您入门。虽然它实现了不同的语法,但基础知识是相同的,并且比API文档要短得多。
为了完整性,如果您对图像使用参考语法,则需要对ImageReferencePattern执行相同的操作。您可能会发现更容易实现TreeProcessor(我相信@Kos在他对原始帖子的评论中所指的是)。这样现有的解析器构建现有的输出,但在将ElementTree序列化为文本之前,您可以遍历所有img
标记并更改它们以满足您的需要。例如,HeaderId Extension执行此操作以将ID添加到h1-6标记。