goldmark 是用 Go 语言编写的 markdown 解析器。易于扩展,符合标准(CommonMark),结构合理。
特性:
- 符合标准:goldmark 完全符合最新的 CommonMark 规范
- 可扩展:可以轻松地在 goldmark 中完成添加 @username 提及语法等操作。可以添加 AST 节点、用于块级元素的解析器、用于内联级元素的解析器、用于段落的转换器、用于整个 AST 结构的转换器以及渲染器
- 性能 :goldmark 的性能与 cmark 相当
- 鲁棒性:goldmark 已通过模糊测试工具 go-fuzz 进行了测试
- 内置扩展 :goldmark 附带常见的扩展名,例如表、删除线、任务列表和定义列表
- 仅依赖标准库
goldmark 对 Markdown 文本的处理流程如下:
|
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
|
V
+------- renderer.Renderer ------------------------
| 1. Traverse AST and apply renderer.NodeRenderer
| corespond to the node type
|
V