仓颉语言Markdown解析库commonmark4cj符合CommonMark规范解析与渲染的完整指南【免费下载链接】commonmark4cj符合CommonMark规范的Markdown解析库项目地址: https://gitcode.com/Cangjie-TPC/commonmark4cjcommonmark4cj 是一款用仓颉Cangjie语言编写的 Markdown 解析库严格遵循CommonMark 规范能帮你把 Markdown 文本解析成结构化的Node 节点树并进一步渲染为 HTML 或纯文本。本文面向新手和普通用户带你快速认识它的核心特性、软件架构与上手步骤几分钟内就能跑通自己的第一个仓颉语言 Markdown 解析与渲染示例 为什么需要一个仓颉语言的 Markdown 解析库Markdown 是技术写作的事实标准而CommonMark 规范为 Markdown 的解析行为提供了统一、精确的定义。在仓颉语言生态中之前缺少一个开箱即用的解析实现commonmark4cj 正好填补了这块空白解析 Markdown 文本—— 按 CommonMark 规范将文本解析为文档结构️Node 树状结构—— 文档被组织成清晰的节点树方便程序处理遍历 / 渲染 Node 树—— 内置 Visitor 遍历机制可渲染成 HTML、纯文本等格式项目当前版本为v1.1.2已适配仓颉编译器 cjc v1.1.3测试覆盖率达到 95.6%并采用 BSD-2-Clause 开源协议你可以自由地在商业和个人项目中使用它。软件架构commonmark4cj 如何解析 Markdown理解架构是使用任何解析库的第一步。commonmark4cj 的处理流程是一条清晰的四步流水线Markdown 文本 → Parser 解析 → Node 树 → Renderer 渲染配合 Visitor 遍历→ 渲染结果各阶段说明阶段角色做什么① 输入Markdown 文本你提供的原始 Markdown 字符串② 解析Parser按 CommonMark 规范切分、识别块级与行内元素③ 结构Node 树标题、段落、链接、代码块等节点组成的树④ 渲染Renderer Visitor遍历节点树逐节点输出 HTML / 纯文本这种解析与渲染分离的设计非常灵活你可以只解析不渲染拿到 Node 树做二次处理也可以自定义扩展节点还能针对不同输出目标编写不同的渲染器。快速上手一键编译构建获取项目并编译克隆仓库后一条命令即可编译git clone https://gitcode.com/Cangjie-TPC/commonmark4cj cd commonmark4cj cjpm build⚙️ 环境要求仓颉编译器 cjc v1.1.3构建配置见 cjpm.toml。项目目录结构快速认识新手可以先记住下面这张目录地图后面看源码不迷路├── doc # 文档目录含 API 接口文档 │ └── feature_api.md # 详细接口说明 ├── src # 源码目录 │ ├── commonmark # 核心解析/渲染代码 │ ├── strikethrough # 删除线功能插件 │ └── table # 表格功能插件 ├── test # 测试与示例代码 └── cjpm.toml # 编译构建配置核心解析与渲染代码集中在 src/commonmark/每一类块解析器、行内解析器都有独立的文件组织结构一目了然。核心功能一把 Markdown 文本解析成 Node 树解析器Parser是入口。你只需要构建一个 Parser再调用parse传入 Markdown 字符串就能得到根节点为Document的节点树。下面是一个最小示例参考 readme_test_parse.cjimport commonmark4cj.commonmark.* main(): Int64 { let parser: Parser Parser.builder().build() let document: Node parser.parse(# 标题\n\n这是一段*斜体*文本\n) let heading: Heading document.getFirstChild().getOrThrow() as Heading println(heading.getLevel()) // 输出: 1 return 0 }Node 树由丰富的节点子类构成常见的有块级节点BlockDocument、Heading标题、Paragraph段落、FencedCodeBlock围栏代码块、BlockQuote引用、BulletList/OrderedList列表、ThematicBreak分隔线等行内节点InlineText文本、Emphasis斜体、StrongEmphasis加粗、Link链接、Image图片、Code行内代码等每个节点都可以用getFirstChild、getNext、getParent等接口在树中自由游走完整接口说明见 feature_api.md。核心功能二遍历与渲染 Node 树拿到节点树后Renderer 会借助Visitor访问者模式逐个访问节点并输出结果。以渲染 HTML 为例两行代码就能完成参考 readme_test_render.cjimport commonmark4cj.commonmark.* main(): Int64 { let document: Node Parser.builder().build().parse(paragraph with *emphasis* text) let rendered: String HtmlRenderer.builder().build().render(document) println(rendered) // 输出: pparagraph with ememphasis/em text/p return 0 }除了 HTML库还提供TextContentRenderer用于输出纯文本。渲染器同样支持 Builder 配置例如通过escapeHtml(false)关闭 HTML 转义让行内 HTML 原样保留。进阶能力删除线与表格扩展CommonMark 规范之外commonmark4cj 内置了两个广受欢迎的扩展插件✏️删除线strikethrough支持~~删除线~~语法源码位于 src/strikethrough/表格table支持 GitHub 风格表格含表头、对齐等能力源码位于 src/table/扩展机制基于 ParserExtension 与渲染器扩展实现——扩展一方面向解析器注册自定义节点另一方面向渲染器注册对应的节点渲染逻辑因此你既能解析出Strikethrough、TableBlock等节点也能直接渲染成 HTML。更多自定义玩法如自定义块解析器、分隔符处理器可在 feature_api.md 中查阅测试目录下也提供了大量可运行的示例如 test/readme_example/。项目发展路线图从下面的里程碑图可以看到commonmark4cj 先完成了 Node 节点树随后集中攻坚 Parser 解析器整体进度稳步推进版本演进历史可参考 CHANGELOG.md从 v1.0.0 的基础解析能力到 v1.1.2 适配仓颉 OHOS 平台每一步都有清晰记录。关键资料导航资料路径API 接口文档doc/feature_api.md核心解析源码src/commonmark/删除线扩展src/strikethrough/表格扩展src/table/功能示例代码test/readme_example/构建配置cjpm.toml开源协议与参与贡献本项目基于BSD-2-Clause协议开源见 LICENSE欢迎提交 PR、Issue参与任何形式的贡献。如果你正在用仓颉语言开发文档工具、博客系统或内容平台commonmark4cj 会是你处理 Markdown 的可靠选择——解析规范、结构清晰、扩展灵活值得一试 【免费下载链接】commonmark4cj符合CommonMark规范的Markdown解析库项目地址: https://gitcode.com/Cangjie-TPC/commonmark4cj创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考