feat: satisfy OSC 2026 committee feedback (zero-alloc, precise span, XSS defense, batch CLI, references)
MoonMark 是一款完全使用 MoonBit 编写的轻量级、极速 Markdown 解析器与 HTML 渲染引擎。对齐 CommonMark 规范,为博客系统(SSG)、在线预览工具以及富文本编辑器提供强大的基础设施支持。
English Documentation | 参考与致谢说明
Text
CodeSpan
Link
Image
CodeBlock
StringView
String
Position
Block
Inline
span : Span
start
end
<
<
>
>
&
&
"
"
'
'
sanitize_url
javascript:
vbscript:
file:
data:text/html
#
--batch
--dir
moonmark/ ├── src/ast/ # 抽象语法树(AST)核心定义,采用 StringView 与 Span 定义节点 ├── src/parser/ # 状态机驱动的扫描器(Lexer)与向下递归解析器(Parser) ├── src/html/ # 安全转义工具及安全 URL 清洗 HTML 渲染映射 ├── src/cli/ # 提供单文件、多文件与目录批量转换 CLI └── benches/ # 性能基准测试模块
请确保安装了最新稳定版的 MoonBit 工具链(建议 v0.10.3 及以上):
# 检查 MoonBit 版本 moon version
git clone https://github.com/zmjknn/zxnMoonbit.git cd zxnMoonbit # 1. 语法检查 moon check --deny-warn # 2. 单元测试 moon test # 3. 性能基准测试 moon bench # 4. 代码格式化校验 moon fmt --check # 5. 接口签名校验 moon info
直接运行 CLI 查看默认演示效果:
moon run src/cli
moon run src/cli -- input.md -o output.html
-b
moon run src/cli -- --batch README.md README_zh.md -o dist/
-d
将输入目录下的所有 .md 文件批量渲染为 .html 并输出到目标文件夹:
.md
.html
moon run src/cli -- --dir docs/ -o dist/
moon run src/cli -- --help
本项目在架构设计与规格规范制定过程中参考了以下优秀开源项目:
详细参考、许可证全文及引用范围声明请参见 REFERENCES.md。
本项目基于 Apache License 2.0 协议开源。
MoonMark 是一个使用 MoonBit 纯手工编写的轻量、高速且可扩展的 Markdown 到 HTML 转换工具。它致力于提供对 CommonMark 标准的良好支持,并为 MoonBit 开发者在构建博客系统、文档生成工具以及内容管理系统 (CMS) 时提供核心的基础依赖。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MoonMark - 高性能 MoonBit Markdown 解析与渲染引擎
MoonMark 是一款完全使用 MoonBit 编写的轻量级、极速 Markdown 解析器与 HTML 渲染引擎。对齐 CommonMark 规范,为博客系统(SSG)、在线预览工具以及富文本编辑器提供强大的基础设施支持。
English Documentation | 参考与致谢说明
🌟 核心特性与申报承诺实现
1. 🚀 零分配 (Zero-Allocation) 解析架构
Text,CodeSpan,Link,Image,CodeBlock)中存储的文本元数据全部采用 MoonBit 原生的StringView内存视图切片。String堆内存分配与拷贝,实现极致解析性能(单次基准测试平均耗时低于 5 µs)。2. 📍 精确 Span 位置追踪 (Precise Source Mapping)
Position结构同时记录 1-based 行号 (line)、1-based 列号 (column) 以及 **0-based 字符偏移量 (offset)**。Block和Inline语法树节点均包含精确的span : Span(含start与end),方便集成 IDE 语法高亮、错误诊断与代码重构工具。3. 🛡️ 完整 XSS 安全防护 (Complete XSS Protection)
<(<),>(>),&(&),"("),'(') 等敏感字符。sanitize_url)**:自动对Link与Image节点中的目标 URL 进行协议扫描与防护,全面中和javascript:,vbscript:,file:,data:text/html等 XSS 注入 payload,将其安全重定向至#。4. 📦 批量转换与强大的 CLI
--batch)以及整目录递归转换(--dir)。🏗️ 架构概览
🛠️ 安装、构建与复现步骤
1. 安装 MoonBit 工具链
请确保安装了最新稳定版的 MoonBit 工具链(建议 v0.10.3 及以上):
2. 获取代码与检验
💻 CLI 命令行工具使用指南
1. Demo 演示模式
直接运行 CLI 查看默认演示效果:
2. 单文件转换模式
3. 多文件批量转换模式 (
--batch/-b)4. 目录批量转换模式 (
--dir/-d)将输入目录下的所有
.md文件批量渲染为.html并输出到目标文件夹:5. 帮助菜单
📚 开源参考与致谢 (Prior Art & References)
本项目在架构设计与规格规范制定过程中参考了以下优秀开源项目:
StringView切片的零分配状态机解析模型、事件驱动流式解析理念与 CommonMark 测试样例建设思路。详细参考、许可证全文及引用范围声明请参见 REFERENCES.md。
📄 许可证
本项目基于 Apache License 2.0 协议开源。