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

@ -63,7 +63,7 @@ func (d *Document) parseKeyword(i int, stop stopFn) (int, Node) {
case "INCLUDE":
return d.parseInclude(k)
case "LINK":
if parts := strings.Split(k.Value, " "); len(parts) >= 2 {
if parts := strings.SplitN(k.Value, " ", 2); len(parts) == 2 {
d.Links[parts[0]] = parts[1]
}
return 1, k