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


MIT
跨平台
Google Go

软件简介

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>