23 个版本 (8 个重大更改)
0.27.2 | 2023年10月19日 |
---|---|
0.26.4 | 2023年10月16日 |
0.23.4 | 2022年7月30日 |
0.23.3 | 2021年9月26日 |
0.19.4 | 2020年12月29日 |
#1433 在 解析实现
260KB
4.5K SLoC
Atext2html
Atext2html 是一个用 Nom 编写的命令行工具,用于识别 Markdown、reStructuredText、Asciidoc、Wikitext 和 HTML 格式文本输入中的超链接和链接引用定义。 Atext2html 将源文本原样渲染为 HTML,同时使超链接可点击。默认情况下,超链接的文本与源文本中的文本相同。当提供 --render-links
标志时,超链接仅以链接文本表示,这使得内联链接更容易阅读。
Atext2html 说明了底层库 Parse-hyperlinks 的使用。 Parse-hyperlinks 的 API 提供了关于此实用程序操作原理的见解。
除此之外,Parse-hyperlinks-extras 定义了一些 Tp-Note 应用程序需要的额外解析器。
安装
cargo install atext2html
用法
Render source text with markup hyperlinks.
USAGE:
atext2html [FLAGS] [OPTIONS] [FILE]...
FLAGS:
-h, --help Prints help information
-l, --only-links print only links (one per line)
-r, --render-links render hyperlinks
-V, --version print version and exit
OPTIONS:
-o, --output <output> print not to stdout but in file
ARGS:
<FILE>... paths to files to render (or `-` for stdin)
用法示例
Markdown
-
创建一个包含文本和超链接的文件
input.txt
abc[text10](destination10 "title10")abc abc[text11][label11]abc abc[text12](destination2 "title12") [text13]: destination3 "title13" [label11]: destination1 "title11" abc[text13]abc
-
运行
atext2html
$ ./atext2html -o output.html input.txt
-
检查
output.html
<pre>abc<a href="destination10" title="title10">[text10](destination10 "title10")</a>abc abc<a href="destination1" title="title11">[text11][label11]</a>abc abc<a href="destination2" title="title12">[text12](destination2 "title12")</a> <a href="destination3" title="title13">[text13]: destination3 "title13"</a> <a href="destination1" title="title11">[label11]: destination1 "title11"</a> abc<a href="destination3" title="title13">[text13]</a>abc</pre>
这是在网页浏览器中的样子
$ firefox output.html
abc[text10](destination10 "title10")abc abc[text11][label11]abc abc[text12](destination2 "title12") [text13]: destination3 "title13" [label11]: destination1 "title11" abc[text13]abc
reStructuredText
-
创建一个包含文本和超链接的文件
input.txt
abc `text21 <label21_>`_abc abc text22_ abc abc text23__ abc abc text_label24_ abc abc text25__ abc .. _label21: destination21 .. _text22: destination22 .. __: destination23 __ destination25
-
运行
atext2html
$ ./atext2html -o output.html input.txt
-
检查
output.html
<pre>abc <a href="destination21" title="">`text21 <label21_>`_</a>abc abc <a href="destination22" title="">text22_</a> abc abc <a href="destination23" title="">text23__</a> abc abc text_label24_ abc abc <a href="destination25" title="">text25__</a> abc <a href="destination21" title=""> .. _label21: destination21</a> <a href="destination22" title=""> .. _text22: destination22</a> <a href="destination23" title=""> .. __: destination23</a> <a href="destination25" title=""> __ destination25</a></pre>
这是在网页浏览器中的样子
$ firefox output.html
abc `text21 <label21_>`_abc abc text22_ abc abc text23__ abc abc text_label24_ abc abc text25__ abc .. _label21: destination21 .. _text22: destination22 .. __: destination23 __ destination25
Asciidoc
-
创建一个包含文本和超链接的文件
input.txt
abc abc https://destination30[text30]abc abc link:https://destination31[text31]abc abc{label32}[text32]abc abc{label33}abc :label32: https://destination32 :label33: https://destination33
-
运行
atext2html
$ ./atext2html -o output.html input.txt
-
检查
output.html
<pre>abc abc <a href="https://destination30" title="">https://destination30[text30]</a>abc abc <a href="https://destination31" title="">link:https://destination31[text31]</a>abc abc<a href="https://destination32" title="">{label32}[text32]</a>abc abc<a href="https://destination33" title="">{label33}</a>abc <a href="https://destination32" title="">:label32: https://destination32</a> <a href="https://destination33" title="">:label33: https://destination33</a></pre>
这是在网页浏览器中的样子
$ firefox output.html
abc abc https://destination30[text30]abc abc link:https://destination31[text31]abc abc{label32}[text32]abc abc{label33}abc :label32: https://destination32 :label33: https://destination33
Wikitext
-
创建一个包含文本和超链接的文件
input.txt
abc abc[https://destination31 text31]abc
-
运行
atext2html
$ ./atext2html -o output.html input.txt
-
检查
output.html
<pre>abc abc<a href="https://destination31" title="">[https://destination31 text31]</a>abc
这是在网页浏览器中的样子
$ firefox output.html
abc abc[https://destination31 text31]abc
HTML
-
创建一个包含文本和超链接的文件
input.txt
abc<a href="dest1" title="title1">text1</a>abc abc<a href="dest2" title="title2">text2</a>abc
-
运行
atext2html
$ ./atext2html -o output.html input.txt
-
检查
output.html
<pre>abc<a href="dest1" title="title1"><a href="dest1" title="title1">text1</a></a>abc abc<a href="dest2" title="title2"><a href="dest2" title="title2">text2</a></a>abc</pre>
这是在网页浏览器中的样子
$ firefox output.html
abc<a href="dest1" title="title1">text1</a>abc abc<a href="dest2" title="title2">text2</a>abc
依赖项
~2.6–3.5MB
~58K SLoC