goldmark用 Go 语言编写的 markdown 解析器

联合创作 · 2023-10-02 05:43

goldmark 是用 Go 语言编写的 markdown 解析器。易于扩展,符合标准(CommonMark),结构合理。


特性:



  • 符合标准:goldmark 完全符合最新的 CommonMark 规范

  • 可扩展:可以轻松地在 goldmark 中完成添加 @username 提及语法等操作。可以添加 AST 节点、用于块级元素的解析器、用于内联级元素的解析器、用于段落的转换器、用于整个 AST 结构的转换器以及渲染器

  • 性能 :goldmark 的性能与 cmark 相当

  • 鲁棒性:goldmark 已通过模糊测试工具 go-fuzz 进行了测试

  • 内置扩展 :goldmark 附带常见的扩展名,例如表、删除线、任务列表和定义列表

  • 仅依赖标准库


goldmark 对 Markdown 文本的处理流程如下:





<Markdown in []byte, parser.Context>
|
V
+-------- parser.Parser ---------------------------
| 1. Parse block elements into AST
| 1. If a parsed block is a paragraph, apply
| ast.ParagraphTransformer
| 2. Traverse AST and parse blocks.
| 1. Process delimiters(emphasis) at the end of
| block parsing
| 3. Apply parser.ASTTransformers to AST
|
V
<ast.Node>
|
V
+------- renderer.Renderer ------------------------
| 1. Traverse AST and apply renderer.NodeRenderer
| corespond to the node type

|
V
<Output>


浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报