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

news/2023/5/28 7:04:24
表:各种语言的 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 扩展

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4568521.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

四十多岁的男人还适合重新创业吗?

不知道你从事的是什么行业,实际上像中国这样一个14亿人口的庞大市场,需求是多样化、多元化,分层次的,基本上不存在所谓日薄西山的行业,在当前中国经济转型升级换挡以及新技术革命的背景下,所有的行业都值得…

男人四十以后适合在哪个行业创业?为什么?

第一,没有必要为了创业而创业,如果你不明白自己创业的方向就要三思而后行,因为你心里对方向都没谱,说明过去并没有在某一个领域有积累,一切可能要从头开始。 第二,创业做哪一个行业,这个跟年龄…

35岁的我加入创业公司4个月后毅然离职,这些经验希望你们都能早点知道

作者:jinyf,互金行业资深产品经理 全文共 5728 字 ,阅读需要 10 分钟 ———— / BEGIN / ———— 35岁,在工作第10个年头,从事产品工作第6个年头的时候,加入了一个互联网金融创业公司。加入创业公司的风险…

为什么有些30岁的程序员代码敲着敲着就创业了

为什么有些程序员代码敲着敲者就创业了?下面分享一位30岁的Python开发者,从程序员到创业者再到自由职业者~,他的一些经历。时间线:从09年底来深圳,14年10月跟随别人一起创业担任产品技术合伙人,19年2月底从…

为什么知乎上很多人都反对创业?

知乎的文化输出引导了中国青年正向、理性的价值观。那么为什么知乎上很多人都反对创业或者反对不能随随便便创业呢?首先看一下知乎群体的用户画像:上幅图就是说明了,知乎高质量互联网用户基本都在知乎上了。知乎用户群体属性表现为知识型&…

四十岁的盈利模式

一个四十岁创业者与唐汉祺的交谈 唐汉祺:您好。刚才您说到,在此之前,您有着一份相对来讲很不错的工作。如今四十岁了,怎么又想起了创业? 四十岁创业者:是的。创业之前,我在一家外企打工&#x…

985毕业,35岁创业失败,36岁回炉40岁被裁,中年夫妻无业咋办?

导语:每个中年人都有一段曲折的职场故事,我走过的路布满荆棘,目前夫妻无业,陷入空前的一种窘迫和绝望,在努力找突破口,希望尽快能有收入。 我今年40岁,老婆38岁全职无业。我35岁时第一次创业亏损…

75岁创业的褚时健

因为好奇,我问了褚时健先生一个问题,“褚老,您最快乐是什么时候?最艰难是什么时候?”老先生的答案是:“别人认为我最快乐的时候,我不快乐。” 两个月前,在云南哀牢山嘎洒镇&#xff…

裸辞创业失败,40岁+还能找到工作吗?好彷徨

在头条上收到这样一个问题邀请: 裸辞创业失败,40岁,还能找到工作吗?好彷徨 我先把楼主的这个问题梳理下: 40岁创业失败了,还能不能找到工作? 至于裸辞这个条件我就忽略掉了,因为裸…

81岁院士四次创业:创业比科研更难!

https://www.toutiao.com/a6682272781423346184/ 2019-04-21 17:11:12 文章作者|魏晓文 他年近花甲才开始研究超声电机,先后战胜两种癌症,凭借超人的毅力,使我国在超声电机领域达到世界先进水平。 他耄耋之年四次创业,为了科研…

南京理工大学计算机科学与工程学院地址,南京理工大学有几个校区及校区地址...

最近有很多考生和家长咨询小编,南京理工大学有几个校区,今年新生会被分配到哪个校区?哪个校区好?等相关问题,下面小编统一回复一下考生们的问题。南京理工大学有1个校区,南京理工大学本部。南京理工大学校区及地址南京理工大学本…

看《金陵十三钗》 品古都南京的旧时沧桑

由张艺谋执导,根据严歌苓同名小说改编的《金陵十三钗》,上映以来备受瞩目,尽管是虚构的故事情节,我们无法找出剧中人物的原型,但依然有很多故事场景值得我们去寻觅。片中的残破城墙、街道、教堂是否有迹可循?是否有现…

数据大小端64位字节相互转换

在linux内核中有htonll()这个函数来进行网络大小端字节转换的功能,但是在Libc中没提供此函数,所以必须自己利用已用的函数进行封装。 大小端与数据存放顺序 C语言中,大于一个字节的数据类型在内存中表示时,不同CPU有不同的存放顺…

中国机器视觉市场研究报告

目录 机器视觉行业概述机器视觉行业发展现状机器视觉行业典型企业分析机器视觉行业未来发展趋势 机器视觉行业概述 机器视觉定义 机器视觉(Machine Vision,MV)是人工智能正在快速发展的一个分支。根据美国制造工程师协会(SME&…

CString与char*互转、ANSI 和 UNICODE 编码及_T和L宏定义的介绍

1、简述 之前在写MFC程序的时候经常会用到CString 字符串类型,自从转到Qt就转为用QString了,自然QString比CString好用多了。最近需要将CString 与 char* 进行互转,在使用过程中遇到了一些问题,在此记录下来。 文章内容比较长&a…

RK3568平台开发系列讲解(电源篇)Early Suspend驱动

🚀返回专栏总目录 文章目录 一、注册Early Suspend驱动二、取消已经注册的Early Suspend驱动沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在Power Management系统的内核层中,实现文件kernel/power/earlysuspend.c对Kernel提供了如下所示的接口函数。 一、注册Ea…

rk3288芯片简介

rk3288芯片: qual-core arm cortex A17 full implementation of the arm architecture v7-A instruction set trustzone technology support SCU ensure memory coherency between the fore CPUs integrated 32kb L1 instruction cache,32kb L1 dat…

linux——高级信号

高级信号的收发发:siquequ收:sigaction() 包含三个元素num,sigaction()函数,备份num ->signumsigaction是一个结构体,需额外配置再传进来备份直接忽略,代表不需要备份sigaction结构体又包含四个元素sa_handler&…

RK3399芯片上电后加载启动程序的详细流程

芯片上电解复位之后执行的第一段程序,在芯片中称之为Bootrom loader。这部分程序在芯片制造过程中固化到其内部的ROM空间,具备只读属性,在实际使用过程中无法修改这部分内容,这部分程序的知识产权也仅归属于芯片公司所有。其实&am…

RK3326芯片产品/参数介绍

RK3326是为个人平板电脑和智能音频设备设计的高性能四核应用程序处理器。提供了许多嵌入式强大的硬件引擎来优化高端应用程序的性能。RK3326支持几乎全格式的H.264解码器,支持1080p@60fps,H.265解码器支持1080p@60fps,通过1080p@30fps支持H.264编码器,高质量的JPEG编码器/解…