小笔记:表 - 各种语言的 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 扩展
目录
相关文章
|
4天前
|
人工智能 Go 调度
掌握Go并发:Go语言并发编程深度解析
掌握Go并发:Go语言并发编程深度解析
|
2天前
|
Linux 网络安全 Windows
网络安全笔记-day8,DHCP部署_dhcp搭建部署,源码解析
网络安全笔记-day8,DHCP部署_dhcp搭建部署,源码解析
|
3天前
|
存储 Java Go
Go 语言切片如何扩容?(全面解析原理和过程)
Go 语言切片如何扩容?(全面解析原理和过程)
13 2
|
4天前
|
负载均衡 Go 调度
使用Go语言构建高性能的Web服务器:协程与Channel的深度解析
在追求高性能Web服务的今天,Go语言以其强大的并发性能和简洁的语法赢得了开发者的青睐。本文将深入探讨Go语言在构建高性能Web服务器方面的应用,特别是协程(goroutine)和通道(channel)这两个核心概念。我们将通过示例代码,展示如何利用协程处理并发请求,并通过通道实现协程间的通信和同步,从而构建出高效、稳定的Web服务器。
|
4天前
|
机器学习/深度学习 编解码
【论文笔记】图像修复MPRNet:Multi-Stage Progressive Image Restoration 含代码解析2
【论文笔记】图像修复MPRNet:Multi-Stage Progressive Image Restoration 含代码解析
13 2
|
4天前
|
机器学习/深度学习 计算机视觉
【论文笔记】图像修复MPRNet:Multi-Stage Progressive Image Restoration 含代码解析1
【论文笔记】图像修复MPRNet:Multi-Stage Progressive Image Restoration 含代码解析
13 1
|
4天前
|
人工智能
【经验分享】如何快速转化笔记格式为标准的MarkDown格式并进行博客发布,提高生产力?
本文介绍如何将笔记转换为Markdown格式以快速发布博客。通过使用特定的Prompt和AI工具Claude 3 Sonnet,可以将Notepad++笔记转为适合CSDN博客的Markdown格式。转换要求包括:正确标记代码段、调整缩进和格式、使用Markdown标题、列表、链接和图片语法。Claude 3 Sonnet能有效处理格式转换,将转换后的Markdown内容复制到编辑器,即可便捷发布博客。
15 2
【经验分享】如何快速转化笔记格式为标准的MarkDown格式并进行博客发布,提高生产力?
|
4天前
|
存储 程序员 C语言
【C 言专栏】C 语言指针的深度解析
【4月更文挑战第30天】C 语言中的指针是程序设计的关键,它如同一把钥匙,提供直接内存操作的途径。指针是存储其他变量地址的变量,通过声明如`int *ptr`来使用。它们在动态内存分配、函数参数传递及数组操作中发挥重要作用。然而,误用指针可能导致错误,如空指针引用和内存泄漏。理解指针的运算、与数组和函数的关系,以及在结构体中的应用,是成为熟练 C 语言程序员的必经之路。虽然挑战重重,但掌握指针将增强编程效率和灵活性。不断实践和学习,我们将驾驭指针,探索更广阔的编程世界。
|
4天前
|
Dart 前端开发 开发者
【Flutter前端技术开发专栏】Flutter Dart语言基础语法解析
【4月更文挑战第30天】Dart是Google为Flutter框架打造的高效编程语言,具有易学性、接口、混入、抽象类等特性。本文概述了Dart的基础语法,包括静态类型(如int、String)、控制流程(条件、循环)、函数、面向对象(类与对象)和异常处理。此外,还介绍了库导入与模块使用,帮助开发者快速入门Flutter开发。通过学习Dart,开发者能创建高性能的应用。
【Flutter前端技术开发专栏】Flutter Dart语言基础语法解析
|
4天前
|
开发框架 Dart Java
Flutter的核心:Dart语言基础——语法与特性深度解析
【4月更文挑战第26天】Flutter框架背后的Dart语言,以其简洁的语法和独特特性深受开发者喜爱。本文深入解析Dart的语法与特性,如类型推导、动态静态类型系统、统一的类接口、访问权限控制以及并发编程支持。了解并掌握Dart,能助开发者更高效地利用Flutter构建高性能移动应用。

推荐镜像

更多