From 51e0bd277a736fe7d11e456a17ff7995b71db60e Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Mon, 14 Jan 2013 17:38:34 -0800 Subject: Parsing: Fixed uri -- escape unicode URLs. Otherwise Network.URI.parseURI fails on e.g. Chinese URLs. Changed an incorrect test in markdown-reader-more. --- src/Text/Pandoc/Parsing.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/Text') diff --git a/src/Text/Pandoc/Parsing.hs b/src/Text/Pandoc/Parsing.hs index 8f085d579..922799171 100644 --- a/src/Text/Pandoc/Parsing.hs +++ b/src/Text/Pandoc/Parsing.hs @@ -153,7 +153,7 @@ import Text.Parsec import Text.Parsec.Pos (newPos) import Data.Char ( toLower, toUpper, ord, isAscii, isAlphaNum, isDigit, isPunctuation ) import Data.List ( intercalate, transpose ) -import Network.URI ( parseURI, URI (..), isAllowedInURI ) +import Network.URI ( parseURI, URI (..), isAllowedInURI, isUnescapedInURI, escapeURIString ) import Text.Pandoc.Shared import qualified Data.Map as M import Text.TeXMath.Macros (applyMacros, Macro, parseMacroDefinitions) @@ -380,7 +380,7 @@ uri = try $ do str <- liftM concat $ many1 $ inParens <|> count 1 (innerPunct <|> uriChar) str' <- option str $ char '/' >> return (str ++ "/") -- now see if they amount to an absolute URI - case parseURI (escapeURI str') of + case parseURI (escapeURIString isUnescapedInURI str') of Just uri' -> if uriScheme uri' `elem` protocols then return (str', show uri') else fail "not a URI" -- cgit v1.2.3