html: Improve link abbreviation (#+LINK) resolution

Handle `%s`/`%h` interpolation and add support for shorthand of prefix only
links / links with empty tag (i.e. `[example]` instead of [example:]). See
[1] and [2]. As so often we don't match org mode output completely but our
output looks sane enough to me so let's move along for now.

[1] https://orgmode.org/manual/Link-Abbreviations.html
[2] https://github.com/bzg/org-mode/blob/main/lisp/ol.el#L1011
This commit is contained in:
Niklas Fasching 2021-10-25 16:47:26 +02:00
parent 34dfe32024
commit 9995b3cdad
5 changed files with 37 additions and 5 deletions

View file

@ -55,7 +55,15 @@ not emphasized/</li>
</ul>
</li>
<li>
<p><code class="verbatim">#+LINK</code> based links: <a href="https://www.example.com/foobar">https://www.example.com/foobar</a></p>
<p><code class="verbatim">#+LINK</code> based links:</p>
<ul>
<li><a href="https://www.example.com/foobar">https://www.example.com/foobar</a></li>
<li><a href="https://www.example.com/">https://www.example.com/</a></li>
<li><a href="https://www.example.com/">https://www.example.com/</a></li>
<li><a href="https://www.example.com/">description</a></li>
<li><a href="https://www.example.com?raw_tag=tag value with specical chars % : &amp;">https://www.example.com?raw_tag=tag value with specical chars % : &amp;</a> (w/o tag <a href="https://www.example.com?raw_tag=">https://www.example.com?raw_tag=</a>)</li>
<li><a href="https://www.example.com?encoded_tag=tag+value+with+specical+chars+%25+%3A+%26">https://www.example.com?encoded_tag=tag+value+with+specical+chars+%25+%3A+%26</a> (w/o tag <a href="https://www.example.com?encoded_tag=">https://www.example.com?encoded_tag=</a>)</li>
</ul>
</li>
<li>
<p><code class="verbatim">#+MACROs</code>: <p><h1>yolo</h1></p>