git.iko.soy/typeable/pandoc
on master help sign in
Markdown, RST writers: unescape URI in links, to make them readable.
14e7cb3John MacFarlane
src/Text/Pandoc/Writers/Markdown.hs+3−2
@@ -400,9 +400,10 @@ inlineToMarkdown _ (HtmlInline str) = return $ text str
400inlineToMarkdown _ (LineBreak) = return $ text " \n"
400inlineToMarkdown _ (LineBreak) = return $ text " \n"
401inlineToMarkdown _ Space = return $ char ' '
401inlineToMarkdown _ Space = return $ char ' '
402inlineToMarkdown opts (Cite _ cits) = inlineListToMarkdown opts cits
402inlineToMarkdown opts (Cite _ cits) = inlineListToMarkdown opts cits
403−inlineToMarkdown opts (Link txt (src, tit)) = do
403+inlineToMarkdown opts (Link txt (src', tit)) = do
404 linktext <- inlineListToMarkdown opts txt
404 linktext <- inlineListToMarkdown opts txt
405 let linktitle = if null tit then empty else text $ " \"" ++ tit ++ "\""
405 let linktitle = if null tit then empty else text $ " \"" ++ tit ++ "\""
406+ let src = unescapeURI src'
406 let srcSuffix = if isPrefixOf "mailto:" src then drop 7 src else src
407 let srcSuffix = if isPrefixOf "mailto:" src then drop 7 src else src
407 let useRefLinks = writerReferenceLinks opts
408 let useRefLinks = writerReferenceLinks opts
408 let useAuto = null tit && txt == [Code srcSuffix]
409 let useAuto = null tit && txt == [Code srcSuffix]
@@ -423,7 +424,7 @@ inlineToMarkdown opts (Image alternate (source, tit)) = do
423 (alternate == [Str source]) -- to prevent autolinks
424 (alternate == [Str source]) -- to prevent autolinks
424 then [Str "image"]
425 then [Str "image"]
425 else alternate
426 else alternate
426− linkPart <- inlineToMarkdown opts (Link txt (source, tit))
427+ linkPart <- inlineToMarkdown opts (Link txt (unescapeURI source, tit))
427 return $ char '!' <> linkPart
428 return $ char '!' <> linkPart
428inlineToMarkdown _ (Note contents) = do
429inlineToMarkdown _ (Note contents) = do
429 modify (\st -> st{ stNotes = contents : stNotes st })
430 modify (\st -> st{ stNotes = contents : stNotes st })
src/Text/Pandoc/Writers/RST.hs+5−3
@@ -305,8 +305,9 @@ inlineToRST Space = return $ char ' '
305inlineToRST (Link [Code str] (src, _)) | src == str ||
305inlineToRST (Link [Code str] (src, _)) | src == str ||
306 src == "mailto:" ++ str = do
306 src == "mailto:" ++ str = do
307 let srcSuffix = if isPrefixOf "mailto:" src then drop 7 src else src
307 let srcSuffix = if isPrefixOf "mailto:" src then drop 7 src else src
308− return $ text srcSuffix
308+ return $ text $ unescapeURI srcSuffix
309−inlineToRST (Link txt (src, tit)) = do
309+inlineToRST (Link txt (src', tit)) = do
310+ let src = unescapeURI src'
310 useReferenceLinks <- get >>= (return . writerReferenceLinks . stOptions)
311 useReferenceLinks <- get >>= (return . writerReferenceLinks . stOptions)
311 linktext <- inlineListToRST $ normalizeSpaces txt
312 linktext <- inlineListToRST $ normalizeSpaces txt
312 if useReferenceLinks
313 if useReferenceLinks
@@ -317,7 +318,8 @@ inlineToRST (Link txt (src, tit)) = do
317 modify $ \st -> st { stLinks = refs' }
318 modify $ \st -> st { stLinks = refs' }
318 return $ char '`' <> linktext <> text "`_"
319 return $ char '`' <> linktext <> text "`_"
319 else return $ char '`' <> linktext <> text " <" <> text src <> text ">`_"
320 else return $ char '`' <> linktext <> text " <" <> text src <> text ">`_"
320−inlineToRST (Image alternate (source, tit)) = do
321+inlineToRST (Image alternate (source', tit)) = do
322+ let source = unescapeURI source'
321 pics <- get >>= (return . stImages)
323 pics <- get >>= (return . stImages)
322 let labelsUsed = map fst pics
324 let labelsUsed = map fst pics
323 let txt = if null alternate || alternate == [Str ""] ||
325 let txt = if null alternate || alternate == [Str ""] ||