这是一个带有外部 Markdown 解析器的解决方案,pandoc
。它允许自定义过滤器在 haskell 或 python 中修改输入(还有一个Node.js 端口)。这是一个 python 过滤器,它将每个标头增加一级。让我们将其另存为header_increase.py
.
from pandocfilters import toJSONFilter, Header
def header_increase(key, value, format, meta):
if key == 'Header' and value[0] < 7:
value[0] = value[0] + 1
return Header(value[0], value[1], value[2])
if __name__ == "__main__":
toJSONFilter(header_increase)
它不会影响代码块。然而,它可能会转变setex 样式标头对于 h1 和 h2 元素(使用===
or ---
)到 atx 样式的标头中(使用#
),反之亦然。
要使用该脚本,可以从命令行调用 pandoc:
pandoc input.md --filter header_increase.py -o output.md -t markdown
使用node.js,您可以使用pdc打电话给pandoc。
var pdc = require('pdc');
pdc(input_md, 'markdown', 'markdown', [ '--filter', './header_increase.py' ], function(err, result) {
if (err)
throw err;
console.log(result);
});