Goldmark 开源项目教程
1. 项目的目录结构及介绍
Goldmark 是一个用 Go 语言编写的 Markdown 解析器,它遵循 CommonMark 规范。项目的目录结构如下:
goldmark/
├── ast/
│ ├── block.go
│ ├── inline.go
│ └── node.go
├── extension/
│ ├── definition_list.go
│ ├── footnote.go
│ ├── mathjax.go
│ └── table.go
├── parser/
│ ├── block.go
│ ├── inline.go
│ └── parser.go
├── renderer/
│ ├── html.go
│ └── renderer.go
├── test/
│ ├── commonmark_test.go
│ └── goldmark_test.go
├── util/
│ ├── html.go
│ └── util.go
├── README.md
├── LICENSE
└── goldmark.go
目录介绍
ast/
:包含抽象语法树(AST)相关的文件,定义了 Markdown 文档的结构。extension/
:包含各种扩展,如定义列表、脚注、数学公式等。parser/
:包含解析器相关的文件,负责将 Markdown 文本解析成 AST。renderer/
:包含渲染器相关的文件,负责将 AST 渲染成 HTML。test/
:包含测试文件,用于确保解析器的正确性。util/
:包含一些工具函数和常量。README.md
:项目说明文档。LICENSE
:项目许可证。goldmark.go
:项目的主文件,定义了 Goldmark 的主要功能。
2. 项目的启动文件介绍
Goldmark 的启动文件是 goldmark.go
,它定义了 Goldmark 的主要功能和接口。以下是 goldmark.go
的主要内容:
package goldmark
import (
"github.com/yuin/goldmark/ast"
"github.com/yuin/goldmark/parser"
"github.com/yuin/goldmark/renderer"
"github.com/yuin/goldmark/util"
)
type Markdown struct {
Parser parser.Parser
Renderer renderer.Renderer
}
func New(options ...Option) *Markdown {
m := &Markdown{
Parser: parser.NewParser(),
Renderer: renderer.NewRenderer(),
}
for _, opt := range options {
opt.SetConfig(m)
}
return m
}
func (m *Markdown) Convert(source []byte, writer io.Writer) error {
doc := m.Parser.Parse(text.NewReader(source))
return m.Renderer.Render(writer, source, doc)
}
主要功能
New
函数:创建一个新的 Markdown 实例,并应用传入的配置选项。Convert
方法:将 Markdown 源文本解析成 AST,并渲染成 HTML。
3. 项目的配置文件介绍
Goldmark 没有传统的配置文件,但可以通过代码中的选项(Options)来配置。以下是一些常见的配置选项:
import (
"github.com/yuin/goldmark"
"github.com/yuin/goldmark/extension"
"github.com/yuin/goldmark/renderer/html"
)
md := goldmark.New(
goldmark.WithExtensions(extension.GFM),
goldmark.WithRendererOptions(
html.WithHardWraps(),
html.WithXHTML(),
),
)
配置选项
WithExtensions
:添加扩展,如 GitHub Flavored Markdown(GFM)。WithRendererOptions
:设置渲染器选项,如启用硬换行和 XHTML 输出。
通过这些选项,可以灵活地配置 Goldmark 的行为,以满足不同的需求。