diff options
| author | John MacFarlane <[email protected]> | 2024-08-23 12:20:43 -0700 |
|---|---|---|
| committer | John MacFarlane <[email protected]> | 2024-08-23 12:20:43 -0700 |
| commit | 6c4691324f49b0e2527a5a5df982d7845fddfa1d (patch) | |
| tree | fb2d4526f8deb5ac18078a8de268f774a22e067f /src | |
| parent | 494716c529320124ab3690f81eeaaae0b7eddf52 (diff) | |
AsciiDoc writer: add `link:` prefix when needed.
AsciiDoc requires it except for http, https, irc, mailto, ftp schemes.
Closes #10105.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Text/Pandoc/Writers/AsciiDoc.hs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Writers/AsciiDoc.hs b/src/Text/Pandoc/Writers/AsciiDoc.hs index 4eeedfdc3..0508f23fb 100644 --- a/src/Text/Pandoc/Writers/AsciiDoc.hs +++ b/src/Text/Pandoc/Writers/AsciiDoc.hs @@ -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) |
