AsciiDoc writer: add link: prefix when needed.

AsciiDoc requires it except for http, https, irc, mailto, ftp schemes.

Closes #10105.
This commit is contained in:
John MacFarlane
2024-08-23 12:20:43 -07:00
parent 494716c529
commit 6c4691324f
2 changed files with 15 additions and 2 deletions
+7 -2
View File
@@ -34,6 +34,7 @@ import Data.Maybe (fromMaybe, isJust)
import qualified Data.Set as Set
import qualified Data.Text as T
import Data.Text (Text)
import Network.URI (parseURI, URI(uriScheme))
import System.FilePath (dropExtension)
import Text.Pandoc.Class.PandocMonad (PandocMonad, report)
import Text.Pandoc.Definition
@@ -603,9 +604,13 @@ inlineToAsciiDoc opts (Link _ txt (src, _tit)) = do
fixCommas x = [x]
linktext <- inlineListToAsciiDoc opts $ walk (concatMap fixCommas) txt
let isRelative = T.all (/= ':') src
let needsLinkPrefix = case parseURI (T.unpack src) of
Just u -> uriScheme u `notElem` ["http:","https:",
"ftp:", "irc:",
"mailto:"]
_ -> True
let needsPassthrough = "--" `T.isInfixOf` src
let prefix = if isRelative
let prefix = if needsLinkPrefix
then text "link:"
else empty
let srcSuffix = fromMaybe src (T.stripPrefix "mailto:" src)
+8
View File
@@ -0,0 +1,8 @@
```
% pandoc -t asciidoc --wrap=preserve
[link](https://example.com)
[link](ftps://example.com)
^D
https://example.com[link]
link:ftps://example.com[link]
```