小笔记:表 - 各种语言的 CommonMark Markdown解析器 实现

简介: 小笔记:表 - 各种语言的 CommonMark Markdown解析器 实现

表:各种语言的 CommonMark Markdown解析器 实现



1. 什么是 CommonMark

Markdown 的作者 John Gruber 对 Markdown 语法的规范描述并没有明确指定语法。在没有规范的情况下,早期的实现者参考了原始代码来解决这些歧义。但是它非常有问题,并且在许多情况下给出了明显不好的结果,因此它不是规格的令人满意的替代品。

由于没有明确的规范,因此在过去 10 年中,实现方式差异很大。因此,用户经常惊讶地发现,在一个系统(例如,GitHub wiki)上以一种方式呈现的文档在另一个系统上呈现方式不同(例如,使用 Pandoc 转换为文档手册)。更糟糕的是,由于 Markdown 中没有任何内容被视为“语法错误”,因此通常不会立即发现分歧。

CommonMark 为 Markdown 提出了一个标准的、明确的语法规范,以及一套全面的测试来验证 Markdown 实现是否符合这个规范。

2. 表:各种语言的 CommonMark Markdown解析器 实现

语言类型 项目名称 项目地址 说明
C cmark https://github.com/commonmark/cmark 是 CommonMark 的 C 参考实现,一个 带有规范的 Markdown 语法的合理化版本
C cmark-gfm https://github.com/github/cmark 是 CommonMark 的 C 参考实现的扩展版本,是带有规范的 Markdown 语法的合理化版本
C MD4C https://github.com/mity/md4c MD4C代表“Markdown for C”,这正是这个项目的意义所在。
C# CommonMark.NET https://github.com/Knagis/CommonMark.NET
C# Markdig https://github.com/lunet-io/markdig
Common Lisp cl-cmark https://gitlab.com/HiPhish/cl-cmark
Crystal markd https://github.com/icyleaf/markd
D commonmark-d https://github.com/p0nce/commonmark-d
D hunt-markdown https://github.com/huntlabs/hunt-markdown
Dart mdown https://github.com/dikmax/mdown 快速且符合CommonMark的Markdown解析器
Elixir Cmark https://github.com/asaaki/cmark.ex
Emacs Lisp cmark https://github.com/taku0/cmark-el
Go golang-commonmark/markdown https://gitlab.com/golang-commonmark/markdown 纯 Go 实现
Go go-commonmark https://github.com/rhinoman/go-commonmark 对C库的封装
Go goldmark https://github.com/yuin/goldmark
Go Lute https://github.com/88250/lute
Haskell cmark http://hackage.haskell.org/package/cmark 对C库的封装
Haskell commonmark-hs https://github.com/jgm/commonmark-hs 纯 Haskell 实现
Haxe necmark https://github.com/ConstNW/necmark 对C库的封装
Java commonmark-java https://github.com/commonmark/commonmark-java 纯Java实现
Java flexmark-java https://github.com/vsch/flexmark-java 纯Java实现,源代码级AST低至单个字符
JavaScript commonmark.js https://github.com/jgm/commonmark.js marked.js 就使用了它实现
JavaScript markdown-it https://github.com/markdown-it/markdown-it
JavaScript cmark-emscripten https://github.com/mvasilkov/cmark-emscripten C 库到 WebAssembly 的接口
JavaScript mdx https://github.com/mdx-js/mdx CommonMark 的超集,添加嵌入式 JSX 和导入/导出语法
JavaScript ciceromark https://github.com/accordproject/markdown-transform
Julia CommonMark.jl https://github.com/MichaelHatherly/CommonMark.jl
Lua cmark-lua https://github.com/jgm/cmark-lua
Lua lcmark https://github.com/jgm/lcmark
Perl CommonMark https://metacpan.org/release/CommonMark
PHP league/commonmark http://commonmark.thephpleague.com/
PHP cmark http://docs.php.net/cmark
Python commonmark.py https://github.com/rtfd/commonmark.py 直接基于commonmark的纯Python实现.js
Python markdown-it-py https://github.com/ExecutableBookProject/markdown-it-py markdown-it 库的纯 Python 版本
Python mistletoe https://github.com/miyuchina/mistletoe 纯 Python 中最快、可扩展的实现
Python paka.cmark https://github.com/PavloKapyshin/paka.cmark 对 C 语言实现的 cmark 的封装
Python Marko https://github.com/frostming/marko 一个纯粹的Python实现,专注于简单的可扩展性
Ruby/RubyMotion CommonMarker https://github.com/gjtorikian/commonmarker 对C库的封装
Ruby/RubyMotion motion-markdown-it https://github.com/digitalmoksha/motion-markdown-it/ 基于 JS markdown-it 库,移植到 Ruby 和 RubyMotion
R commonmark http://cran.r-project.org/package=commonmark 对C库的封装
Racket commonmark https://lexi-lambda.github.io/racket-commonmark/ 原生Racket ,具有完整的测试覆盖率
Rust comrak https://github.com/kivikakk/comrak 基于 cmark-gfm 的架构,带有 GitHub 扩展。
Rust pulldown-cmark https://github.com/google/pulldown-cmark 新颖的、以性能为导向的架构。
Scala cmark-scala https://github.com/sparsetech/cmark-scala
Scheme Down https://github.com/OrangeShark/guile-commonmark/
Swift Down https://github.com/iwasrobbed/Down
Swift SwiftMark https://github.com/Pyroh/SwiftMark 对C库的封装
Swift MarkdownSyntax https://github.com/hebertialmeida/MarkdownSyntax 包装用于 AST 访问的参考 C 库
Tcl tcl-cmark https://github.com/apnadkarni/tcl-cmark
TypeScript DefinitelyTyped https://github.com/DefinitelyTyped/DefinitelyTyped
TypeScript FlavorMark https://github.com/AnyhowStep/flavormark 重写 commonmark.js,专注于模块化解析逻辑
Zig koino https://github.com/kivikakk/koino 基于 Comrak/cmark-gfm 的架构,带有 GitHub 扩展
目录
相关文章
|
2天前
|
存储 监控 算法
探秘员工泄密行为防线:基于Go语言的布隆过滤器算法解析
在信息爆炸时代,员工泄密行为对企业构成重大威胁。本文聚焦布隆过滤器(Bloom Filter)这一高效数据结构,结合Go语言实现算法,帮助企业识别和预防泄密风险。通过构建正常操作“指纹库”,实时监测员工操作,快速筛查可疑行为。示例代码展示了如何利用布隆过滤器检测异常操作,并提出优化建议,如调整参数、结合日志分析系统等,全方位筑牢企业信息安全防线,守护核心竞争力。
|
10天前
|
数据采集 搜索推荐 API
小红书笔记详情 API 接口:获取、应用与收益全解析
小红书(RED)是国内领先的生活方式分享平台,汇聚大量用户生成内容(UGC),尤以“种草”笔记闻名。小红书笔记详情API接口为开发者提供了获取笔记详细信息的强大工具,包括标题、内容、图片、点赞数等。通过注册开放平台账号、申请API权限并调用接口,开发者可构建内容分析工具、笔记推荐系统、数据爬虫等应用,提升用户体验和运营效率,创造新的商业模式。本文将详细介绍该API的获取、应用及潜在收益,并附上代码示例。
99 13
|
1月前
|
JavaScript Java C#
【Typora-markdown语言】使用说明【指南】
Typora-markdown语言的使用说明和常见用法,好用的做笔记的工具软件及使用方法指南。目录 一、标题 二、段落 1、换行 2、分割线 三、文字显示 1、字体 2、上下标 四、列表 1、无序列表 2、无序列表 3、任务列表 五、区块显示 六、代码显示 1、行内代码 2、代码块 七、链接 八、脚注 九、图片插入 十、表格 十一、表情符号 语法: #(一级标题)##(二级标题)###(三级标题)。。。快捷键: Ctrl+数字1~6可以快速将选中的文本调成对
73 9
|
3月前
|
存储 安全 关系型数据库
Blossom:开源私有部署的markdown笔记软件
Blossom 是一款功能强大的开源笔记软件,支持私有部署,可将笔记、图片、个人计划等数据保存在自己的服务器中,并实现实时同步。它还具备动态博客功能,方便记录和分享内容。Blossom 支持多种设备,提供完善的文件管理、快速迁移和丰富的附加功能,是个人知识管理和博客展示的理想选择。
191 7
Blossom:开源私有部署的markdown笔记软件
|
3月前
|
存储 Go PHP
Go语言中的加解密利器:go-crypto库全解析
在软件开发中,数据安全和隐私保护至关重要。`go-crypto` 是一个专为 Golang 设计的加密解密工具库,支持 AES 和 RSA 等加密算法,帮助开发者轻松实现数据的加密和解密,保障数据传输和存储的安全性。本文将详细介绍 `go-crypto` 的安装、特性及应用实例。
198 0
|
5月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
531 37
|
3月前
|
安全 测试技术 Go
Go语言中的并发编程模型解析####
在当今的软件开发领域,高效的并发处理能力是提升系统性能的关键。本文深入探讨了Go语言独特的并发编程模型——goroutines和channels,通过实例解析其工作原理、优势及最佳实践,旨在为开发者提供实用的Go语言并发编程指南。 ####
|
3月前
|
Go
|
4月前
新手编写markdown笔记一条龙
新手编写markdown笔记一条龙
50 0
http数据包抓包解析课程笔记
http数据包抓包解析课程笔记

推荐镜像

更多