Hoedown
是基于 Natacha Porté 的 Upskirt 库原始代码的一个 Markdown 解析器 Sundown 的回归分支。
完全符合标准
Hoedown
可以直接通过官方 Markdown v1.0.0 和 v1.0.3 测试套件,并且已经针对额外的边缘情况进行了广泛测试,以确保其输出始终尽可能合理。
支持大量扩展
Hoedown
提供了对几个(非官方)Markdown 扩展的可选支持,例如非严格强调、围栏代码块、表格、自动链接、删除线等。
支持 UTF-8
Hoedown
完全支持 UTF-8,无论是解析源文档还是生成结果(X)HTML 代码。
已测试且可用于生产环境
Hoedown
已经过广泛的 安全审计,并包含对所有可能的 DOS 攻击(堆栈溢出、内存不足情况、格式错误的 Markdown 语法...)的保护。
我们努力确保 Hoedown
在任何输入下都不会泄露或崩溃。
警告:Hoedown
不验证或后处理 Markdown 文档中的 HTML。除非您使用 HTML_ESCAPE
或 HTML_SKIP
,否则强烈建议您与 Hoedown 配合使用一个好的后处理器,以防止客户端攻击。
可定制的渲染器
Hoedown
不仅仅局限于 XHTML 输出:该库的 Markdown 解析器与渲染器分离,因此可以轻松地通过自定义渲染器扩展库。该库包括一个完全功能性的(X)HTML 渲染器。
优化速度
Hoedown
用 C 语言编写,特别注重性能。当在 Python 或 Ruby 等动态语言上包装时,它比其他原生替代品快 40 倍以上。
无依赖
Hoedown
是由一些 .c
文件及其头文件组成的无依赖库。无依赖,无需其他东西。只有标准 C99,在哪里都能构建。
其他特性
Hoedown
随带SmartyPants的完整实现,一个独立的自动链接器,转义工具,缓冲区和栈。
您可以在 维基 上看到一个社区维护的 Hoedown
绑定列表。还有一个适用于 Sundown 绑定作者的 迁移指南 可用。
Hoedown
主要关注安全性。如果您在该库中发现(潜在的)安全漏洞或通过恶意输入导致程序崩溃的途径,请通过电子邮件发报到我们的私人Hoedown 安全
邮件列表。Hoedown
安全管理团队会审查该漏洞,并与您合作重现和解决。
鉴于Markdown规范没有提供Unicode字符处理,Hoedown
在决定哪些扩展字符触发Markdown功能时采取了保守的方法。
U+007F代码点之外的所有标点符号不被视为标点。它们被认为是正常的单词内字符,用于单词边界检查。
U+007F代码点之外的所有空白字符不被视为空白。它们被认为是正常的单词内字符,用于单词边界检查。
直接输入make
将构建Hoedown
为动态库,并创建hoedown
和smartypants
可执行文件。这些是命令行工具,可分别将Markdown渲染为HTML并执行SmartyPants。
如果您使用CocoaPods
,只需将行pod 'hoedown'
添加到Podfile中,然后调用pod install
。
或者,如果您更喜欢,只需将src
目录中的文件放入您的项目中。