diff options
author | John MacFarlane <fiddlosopher@gmail.com> | 2013-04-14 22:37:46 -0700 |
---|---|---|
committer | John MacFarlane <fiddlosopher@gmail.com> | 2013-04-14 22:37:46 -0700 |
commit | 931b22184a63146e0e3cc30091f77796ace8f4d8 (patch) | |
tree | 1fb5f81a6753b9195f54846c549b293913296668 /src/Text/Pandoc/Writers | |
parent | d606d74b222a06121cd18492054c60c0a4ea9d2c (diff) | |
download | pandoc-931b22184a63146e0e3cc30091f77796ace8f4d8.tar.gz |
Markdown/RST writers: Only autolink absolute URIs.
This fixes a regression and closes #830.
$ echo '<a href="x">x</a>' | pandoc -f html -t markdown
<x>
Diffstat (limited to 'src/Text/Pandoc/Writers')
-rw-r--r-- | src/Text/Pandoc/Writers/Markdown.hs | 4 | ||||
-rw-r--r-- | src/Text/Pandoc/Writers/RST.hs | 8 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs index b4d39a2d5..7bf6038be 100644 --- a/src/Text/Pandoc/Writers/Markdown.hs +++ b/src/Text/Pandoc/Writers/Markdown.hs @@ -44,6 +44,7 @@ import qualified Data.Set as Set import Text.Pandoc.Writers.HTML (writeHtmlString) import Text.Pandoc.Readers.TeXMath (readTeXMath) import Text.HTML.TagSoup (renderTags, parseTags, isTagText, Tag(..)) +import Network.URI (isAbsoluteURI) import Data.Default type Notes = [[Block]] @@ -680,7 +681,8 @@ inlineToMarkdown opts (Link txt (src, tit)) = do then empty else text $ " \"" ++ tit ++ "\"" let srcSuffix = if isPrefixOf "mailto:" src then drop 7 src else src - let useAuto = case txt of + let useAuto = isAbsoluteURI src && + case txt of [Str s] | escapeURI s == srcSuffix -> True _ -> False let useRefLinks = writerReferenceLinks opts && not useAuto diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs index 302f843ca..72afb1f21 100644 --- a/src/Text/Pandoc/Writers/RST.hs +++ b/src/Text/Pandoc/Writers/RST.hs @@ -36,6 +36,7 @@ import Text.Pandoc.Options import Text.Pandoc.Shared import Text.Pandoc.Templates (renderTemplate) import Data.List ( isPrefixOf, intersperse, transpose ) +import Network.URI (isAbsoluteURI) import Text.Pandoc.Pretty import Control.Monad.State import Control.Applicative ( (<$>) ) @@ -364,9 +365,10 @@ inlineToRST (LineBreak) = return cr -- there's no line break in RST (see Para) inlineToRST Space = return space -- autolink inlineToRST (Link [Str str] (src, _)) - | if "mailto:" `isPrefixOf` src - then src == escapeURI ("mailto:" ++ str) - else src == escapeURI str = do + | isAbsoluteURI src && + if "mailto:" `isPrefixOf` src + then src == escapeURI ("mailto:" ++ str) + else src == escapeURI str = do let srcSuffix = if isPrefixOf "mailto:" src then drop 7 src else src return $ text srcSuffix inlineToRST (Link [Image alt (imgsrc,imgtit)] (src, _tit)) = do |