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

东郭阳德
2023-12-01
表:各种语言的 CommonMark Markdown解析器 实现

本文地址https://blog.csdn.net/qq_28550263/article/details/128735962

1. 什么是 CommonMark

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

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

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

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

语言类型项目名称项目地址说明
Ccmarkhttps://github.com/commonmark/cmark是 CommonMark 的 C 参考实现,一个 带有规范的 Markdown 语法的合理化版本
Ccmark-gfmhttps://github.com/github/cmark是 CommonMark 的 C 参考实现的扩展版本,是带有规范的 Markdown 语法的合理化版本
CMD4Chttps://github.com/mity/md4cMD4C代表“Markdown for C”,这正是这个项目的意义所在。
C#CommonMark.NEThttps://github.com/Knagis/CommonMark.NET
C#Markdighttps://github.com/lunet-io/markdig
Common Lispcl-cmarkhttps://gitlab.com/HiPhish/cl-cmark
Crystalmarkdhttps://github.com/icyleaf/markd
Dcommonmark-dhttps://github.com/p0nce/commonmark-d
Dhunt-markdownhttps://github.com/huntlabs/hunt-markdown
Dartmdownhttps://github.com/dikmax/mdown快速且符合CommonMark的Markdown解析器
ElixirCmarkhttps://github.com/asaaki/cmark.ex
Emacs Lispcmarkhttps://github.com/taku0/cmark-el
Gogolang-commonmark/markdownhttps://gitlab.com/golang-commonmark/markdown纯 Go 实现
Gogo-commonmarkhttps://github.com/rhinoman/go-commonmark对C库的封装
Gogoldmarkhttps://github.com/yuin/goldmark
GoLutehttps://github.com/88250/lute
Haskellcmarkhttp://hackage.haskell.org/package/cmark对C库的封装
Haskellcommonmark-hshttps://github.com/jgm/commonmark-hs纯 Haskell 实现
Haxenecmarkhttps://github.com/ConstNW/necmark对C库的封装
Javacommonmark-javahttps://github.com/commonmark/commonmark-java纯Java实现
Javaflexmark-javahttps://github.com/vsch/flexmark-java纯Java实现,源代码级AST低至单个字符
JavaScriptcommonmark.jshttps://github.com/jgm/commonmark.jsmarked.js 就使用了它实现
JavaScriptmarkdown-ithttps://github.com/markdown-it/markdown-it
JavaScriptcmark-emscriptenhttps://github.com/mvasilkov/cmark-emscriptenC 库到 WebAssembly 的接口
JavaScriptmdxhttps://github.com/mdx-js/mdxCommonMark 的超集,添加嵌入式 JSX 和导入/导出语法
JavaScriptciceromarkhttps://github.com/accordproject/markdown-transform
JuliaCommonMark.jlhttps://github.com/MichaelHatherly/CommonMark.jl
Luacmark-luahttps://github.com/jgm/cmark-lua
Lualcmarkhttps://github.com/jgm/lcmark
PerlCommonMarkhttps://metacpan.org/release/CommonMark
PHPleague/commonmarkhttp://commonmark.thephpleague.com/
PHPcmarkhttp://docs.php.net/cmark
Pythoncommonmark.pyhttps://github.com/rtfd/commonmark.py直接基于commonmark的纯Python实现.js
Pythonmarkdown-it-pyhttps://github.com/ExecutableBookProject/markdown-it-pymarkdown-it 库的纯 Python 版本
Pythonmistletoehttps://github.com/miyuchina/mistletoe纯 Python 中最快、可扩展的实现
Pythonpaka.cmarkhttps://github.com/PavloKapyshin/paka.cmark对 C 语言实现的 cmark 的封装
PythonMarkohttps://github.com/frostming/marko一个纯粹的Python实现,专注于简单的可扩展性
Ruby/RubyMotionCommonMarkerhttps://github.com/gjtorikian/commonmarker对C库的封装
Ruby/RubyMotionmotion-markdown-ithttps://github.com/digitalmoksha/motion-markdown-it/基于 JS markdown-it 库,移植到 Ruby 和 RubyMotion
Rcommonmarkhttp://cran.r-project.org/package=commonmark对C库的封装
Racketcommonmarkhttps://lexi-lambda.github.io/racket-commonmark/原生Racket ,具有完整的测试覆盖率
Rustcomrakhttps://github.com/kivikakk/comrak基于 cmark-gfm 的架构,带有 GitHub 扩展。
Rustpulldown-cmarkhttps://github.com/google/pulldown-cmark新颖的、以性能为导向的架构。
Scalacmark-scalahttps://github.com/sparsetech/cmark-scala
SchemeDownhttps://github.com/OrangeShark/guile-commonmark/
SwiftDownhttps://github.com/iwasrobbed/Down
SwiftSwiftMarkhttps://github.com/Pyroh/SwiftMark对C库的封装
SwiftMarkdownSyntaxhttps://github.com/hebertialmeida/MarkdownSyntax包装用于 AST 访问的参考 C 库
Tcltcl-cmarkhttps://github.com/apnadkarni/tcl-cmark
TypeScriptDefinitelyTypedhttps://github.com/DefinitelyTyped/DefinitelyTyped
TypeScriptFlavorMarkhttps://github.com/AnyhowStep/flavormark重写 commonmark.js,专注于模块化解析逻辑
Zigkoinohttps://github.com/kivikakk/koino基于 Comrak/cmark-gfm 的架构,带有 GitHub 扩展
 类似资料: