38 个版本
| 0.27.2 | 2023年10月19日 | 
|---|---|
| 0.26.4 |  | 
| 0.23.4 | 2022年7月30日 | 
| 0.23.3 | 2021年9月26日 | 
| 0.11.0 | 2020年11月30日 | 
在 解析器实现 中排名 #134
每月下载量 15,064
在 14 个 仓库中(直接使用 11 个)
250KB
 4.5K  SLoC
解析超链接
Parse-hyperlinks,一个使用 Nom 编写的解析库,用于识别 Markdown、reStructuredText、Asciidoc 和 HTML 格式文本输入中的超链接和链接引用定义。
该库实现了 CommonMark 规范 0.30、reStructuredText 标记规范(修订 8571,日期 2020-10-28)、Asciidoctor 用户手册,第 26 章(日期 2020-12-03)和 HTML 5.2:第 4.5 节 的规范。
为了说明库的使用和 API,Parse-hyperlinks 附带了一个简单的命令行应用程序:Atext2html
Parse-Hyperlinks 输入合同
- 
所有输入均为 UTF-8 编码。 
- 
输入文本格式符合上述标记语言规范之一。由于 Parse-Hyperlinks 忽略了大部分标记,它完全依赖于各自标记语言的超链接规范。 
通用 HTML 要求
- 
HTML 文档中绝对 URL 的字符 &<>"必须进行 HTML 转义编码:这些字符被替换为其实体名称,例如&、<、>和"e。
- 
UTF-8 编码的 HTML 文档中的相对 URL(本地链接)不需要进行 HTML 转义编码。建议不要这样做。 
- 
相对 URL(本地链接)不得以方案开头,例如 html:。
- 
除了HTML转义编码外,URL还可以进行百分编码,例如 %20或%26。当这两种编码在HTML文档中同时出现时,首先应用HTML转义解码,然后是百分编码。例如,编码后的字符串Ü ber%26amp;Über &被解码为Ü ber&Über &。通常情况下,UTF-8 HTML文档中的URL可以不进行百分编码,这是推荐的。
Parse-Hyperlinks 输出保证
以下部分解释了Parse-Hyperlinks如何满足上述通用HTML要求。它引用了上述列表中的项目。
- 
只有 renderer模块中的函数,在HTML文档中对绝对URL进行HTML转义编码:字符&<>"被替换为它们的HTML转义实体名称,例如:&,<,>和"e。所有其他解析器和迭代器不对绝对URL应用HTML转义编码。
- 
Parse-Hyperlinks中的任何函数、解析器或迭代器都不对相对URL应用转义编码。 
- 
此属性不由Parse-Hyperlinks强制执行。合规性取决于解析器的输入。 
- 
Parse-Hyperlinks中的百分编码 - 
在Parse-Hyperlinks中不执行任何百分编码。 
- 
百分解码:在某些情况下,当标记语言规范要求输入URL进行百分编码时,相关的消耗解析器会自动解码百分编码。在消耗时隐式执行URL的百分解码。 - 当通过md_text2dest()解析Markdown自动链接时,
- 当通过adoc_label2dest(),adoc_text2dest解析Asciidoc URL时,
- 当通过wikitext_text2dest()解析WikiText URL时,
 
- 当通过
- 
渲染自动链接标记 - 
相同的Markdown输入可能根据渲染器产生不同的HTML。例如: pulldown-cmark将Markdown自动链接<http://getreu.net/Ü%20&>渲染为<a href="http://getreu.net/%C3%9C%20&">http://getreu.net/Ü%20&</a>。- 观察1:渲染包含百分和HTML转义代码。
- 观察2:链接目标(http://getreu.net/%C3%9C%20&)和链接文本(http://getreu.net/Ü%20&)略有不同,这在基于HTML渲染检测自动链接时必须考虑。
 
- 
Parse-Hyperlinks Markdown渲染器对于相同的输入 <http://getreu.net/Ü%20&>给出了略微不同的结果:<a href="http://getreu.net/Ü%20&">http://getreu.net/Ü &</a>。解释:首先解析器md_text2dest()(百分号)将URL解码为http://getreu.net/Ü &,模块中的渲染函数renderer(HTML转义)将结果编码为http://getreu.net/Ü%20&
 
- 
 
- 
依赖项
~1.3–2MB
~41K SLoC