parser

package
v0.1.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 15, 2026 License: MIT Imports: 23 Imported by: 0

Documentation

Overview

codeblock.go 自定义代码块渲染: 构建期语法高亮 (chroma) + 语言标识. 输出结构:

<pre class="chroma code-block" data-language="go"><code>...</code></pre>

高亮配色由主题 assets 中的 chroma CSS (github 主题) 提供. 未知语言 / 无语言代码块降级为转义纯文本, 仍保留 code-block 样式.

Package parser 负责解析 Markdown 文档与 YAML Front Matter. Markdown 解析使用成熟的 goldmark 库, 不自行实现.

Index

Constants

This section is empty.

Variables

View Source
var ErrNoCloseMarker = i18n.Errorf(i18n.ParserErrNoClose)

ErrNoCloseMarker 表示 Front Matter 缺少结束标记.

Functions

func Parse

func Parse(content []byte, sourceRel string, opts ...Option) (*model.Document, error)

Parse 解析一篇 Markdown 文档, 返回 Document 模型. sourceRel 是相对 Space 根目录的路径, 例如 docs/测试文档.md. 该函数不负责路由解析, 只提取 Front Matter 字段.

func RenderMarkdown

func RenderMarkdown(body []byte, srcRel string, resolve func(srcRel, dest string) string, opts ...Option) (string, error)

RenderMarkdown 将一段 Markdown 正文渲染为 HTML 字符串. 供主题或未来扩展直接使用.

func SplitFrontMatter

func SplitFrontMatter(content []byte) (model.Metadata, []byte, error)

SplitFrontMatter 将原始文件内容拆分为 metadata 与正文. 文件必须以 --- 开头才视为包含 Front Matter. 返回的 body 不包含 Front Matter 部分.

func SplitFrontMatterFile

func SplitFrontMatterFile(path string) (model.Metadata, []byte, error)

SplitFrontMatterFile 读取文件并只解析 Front Matter. 用于路由预解析, 避免完整解析 Markdown.

Types

type Option

type Option func(*parseOptions)

Option 是解析选项.

func WithLinkResolver

func WithLinkResolver(fn func(srcRel, dest string) string) Option

WithLinkResolver 注入链接解析函数.

func WithUnsafe

func WithUnsafe(v bool) Option

WithUnsafe 控制是否允许原始 HTML 直通输出 (对应 goldmark html.WithUnsafe).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL