use*_*351 13 javascript markdown abstract-syntax-tree
我想以编程方式修改 Markdown 文件。
我一直在研究 Markdown 解析器并尝试了其中的一些;即 Marked、Markdown-it 和 Commonmark。他们允许访问 AST,这使我可以轻松修改内容。
问题是它们仅呈现为 HTML。我找不到任何有关渲染回 Markdown 的信息。
我现在看到两个选择,要么为这些库之一编写自定义渲染器(这将非常耗时),要么使用单独的工具将 HTML 转换回 Markdown。
有更简单的选择吗?为什么 Markdown 解析器只渲染为 HTML?
有许多 Markdown 解析器可以生成 AST,其中很多可以将其渲染回 Markdown!
为什么 Markdown 解析器只渲染为 HTML?
他们中的许多人这样做的原因是因为Markdown 的首要用途是作为 HTML 的源代码。Markdown 甚至一开始就是为此而设计的。因此,Markdown 解析器最常见的用途(包括人们想要首先操作 AST 的情况)是输出 HTML。
也就是说,真正好的库包含渲染为其他格式的选项,包括返回 Markdown。
以下是我已经知道可以做到这一点的库:
可能是世界上第一的 Markdown 工具包。Pandoc 的母语是 Haskell,但也有 Javascript 包装器(只需搜索 npm)。如果您以后打算做很多 Markdown 的事情,那么无论如何,了解 Pandoc 可能是有意义的。
它对过滤器的支持“都是关于 AST 操作的。它对 Lua 和Lua 过滤器有特殊支持,这可能是最容易编码的,但您也可以用其他语言编写过滤器:Python、PHP、Perl、Javascript/Typescript、Groovy ,鲁比。
它支持 Markdown 以及大量其他格式的渲染器。
它的解析器和渲染器有许多其他选项,可能会让您的工作变得更加轻松,或者可能已经完全满足您的要求。人们编写的许多过滤器可能已经可以满足您的需求。
尽管 CommonMark 的参考实现是用 C 编写的,但仍有许多Node 包装器。甚至还有使用 Emscripten 的 JavaScript 移植。它移植了 GitHub 扩展,以便表和其他 GFM 事物也可以在 AST 中操作。
它可以输出 CommonMark、HTML 和 LaTeX,甚至是 AST 的 XML 表示形式。
专门围绕 AST 操作设计的基于 Javascript 的框架。我从未使用过它,但它可能有使 AST 操作更容易的工具,尽管我只是猜测。
| 归档时间: |
|
| 查看次数: |
5914 次 |
| 最近记录: |