Skip to content

Commit

Permalink
AsciiDoc writer: add link: prefix when needed.
Browse files Browse the repository at this point in the history
AsciiDoc requires it except for http, https, irc, mailto, ftp schemes.

Closes #10105.
  • Loading branch information
jgm committed Aug 23, 2024
1 parent 494716c commit 6c46913
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/Text/Pandoc/Writers/AsciiDoc.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
8 changes: 8 additions & 0 deletions test/command/10105.md
Original file line number Diff line number Diff line change
@@ -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]
```

0 comments on commit 6c46913

Please sign in to comment.