Sundown
是一个基于 Natacha Porté 的原始代码 Upskirt 库 的 Markdown 解析器。
完全符合标准
Sundown
能够通过官方的 Markdown v1.0.0 和 v1.0.3 测试套件,并且经过广泛的测试和额外的边界情况测试,以确保其输出始终保持尽可能的正常。
广泛的支持扩展
Sundown
具有对多个(非官方)Markdown 扩展的可选支持,如非严格强调、定界代码块、表格、自动链接、删除线等。
支持 UTF-8
Sundown
完全支持 UTF-8,无论是解析源文档还是生成结果(X)HTML 代码。
已测试并可供生产使用
Sundown
经受了广泛的网络安全审查,包括针对所有可能的 DOS 攻击(堆栈溢出、内存不足、格式错误的 Markdown 语法)以及通过恶意嵌入的 HTML 对客户端的攻击的保护。
我们非常努力确保在输入的情况下 Sundown
从来不会有崩溃或耗尽内存。 Sundown
渲染了 GitHub 上的所有 Markdown 内容,到目前为止还没有崩溃过。
自定义渲染器
Sundown
不限于 XHTML 输出:库中的 Markdown 解析器与渲染器解耦,因此可以轻松地通过自定义渲染器扩展库。包含了一个完全功能的(X)HTML渲染器。
优化速度
Sundown
用 C 语言编写,特别注重性能。当在动态语言(如 Python 或 Ruby)上包装时,它比其他本机替代方案快 40 倍。
无依赖项
Sundown
是一个无依赖项的库,由 3 个 .c
文件及其头文件组成。无依赖项,无屁成分。只有标准 C99,可在任何地方构建。
Sundown
基于 Natacha Porté 的原始 Upskirt 解析器,由 Vicent Marti (@tanoku) 等人进行了许多添加,并得到了以下作者的贡献
Ben Noordhuis, Bruno Michel, Joseph Koshy, Krzysztof Kowalczyk, Samuel Bronson,
Shuhei Tanuma
Sundown
可通过我们优秀贡献者开发的以下绑定在其他编程语言中使用。
Sundown
专注于安全性。如果您在库中发现(潜在的)安全漏洞,或者通过恶意输入使其崩溃的方法,请向我们报告,无论是通过电子邮件直接报告,还是在GitHub上创建问题,共同让网络更安全。
鉴于Markdown规范没有对Unicode字符处理做出规定,Sundown
在决定哪些扩展字符触发Markdown功能时采取了保守的方法。
位于U+007F代码点之外的标点符号不被视为标点。它们被视为正常的单词内部字符,用于词边界检查。
位于U+007F代码点之外的空白字符不视为空白。它们被视为正常的单词内部字符,用于词边界检查。
没有需要安装的内容。 Sundown
由3个.c
文件组成(markdown.c
、buffer.c
和array.c
),所以只需将其放入您的项目中。零依赖意味着零依赖。如果您想使用包含的XHTML渲染器,可以包含render/html.c
,或者编写自己的渲染器。无论如何,都是有趣和快乐的。
如果您是高手,可以使用包含的Makefile
将Sundown
构建为动态库,或者构建示例可执行文件,它只是一个Markdown到XHTML的命令行解析器。(如果您使用gcc遇到关于
-fPIC
的问题,例如MinGW,请尝试使用make MFLAGS=
而不是只用make
。)
基于此,授予在不收取任何费用的情况下,根据本协议的条款使用、复制、修改和分发本软件的任何目的的许可,前提是所有副本中均包含上述版权声明和本许可声明。
本软件按“现状”提供,并且作者放弃与该软件有关的任何保修,包括所有默示保证的适销性和适用性。在任何情况下,作者均不对任何特殊、直接、间接或后果性损害或任何因使用或性能该软件而导致的任何损害(无论提起的是合同诉讼、疏忽诉讼或其他侵权行为诉讼)承担责任。