git.iko.soy/typeable/pandoc
on master help sign in
Parsing: uri, email: resolve entities.
59764faJohn MacFarlane
src/Text/Pandoc/Parsing.hs+3−2
@@ -149,6 +149,7 @@ where
149import Text.Pandoc.Definition
149import Text.Pandoc.Definition
150import Text.Pandoc.Options
150import Text.Pandoc.Options
151import Text.Pandoc.Builder (Blocks, Inlines, rawBlock)
151import Text.Pandoc.Builder (Blocks, Inlines, rawBlock)
152+import Text.Pandoc.XML (fromEntities)
152import qualified Text.Pandoc.UTF8 as UTF8 (putStrLn)
153import qualified Text.Pandoc.UTF8 as UTF8 (putStrLn)
153import Text.Parsec
154import Text.Parsec
154import Text.Parsec.Pos (newPos)
155import Text.Parsec.Pos (newPos)
@@ -369,7 +370,7 @@ romanNumeral upperCase = do
369-- escaped mailto: URI.
370-- escaped mailto: URI.
370emailAddress :: Parser [Char] st (String, String)
371emailAddress :: Parser [Char] st (String, String)
371emailAddress = try $ liftA2 toResult mailbox (char '@' *> domain)
372emailAddress = try $ liftA2 toResult mailbox (char '@' *> domain)
372− where toResult mbox dom = let full = mbox ++ '@':dom
373+ where toResult mbox dom = let full = fromEntities $ mbox ++ '@':dom
373 in (full, escapeURI $ "mailto:" ++ full)
374 in (full, escapeURI $ "mailto:" ++ full)
374 mailbox = intercalate "." `fmap` (emailWord `sepby1` dot)
375 mailbox = intercalate "." `fmap` (emailWord `sepby1` dot)
375 domain = intercalate "." `fmap` (subdomain `sepby1` dot)
376 domain = intercalate "." `fmap` (subdomain `sepby1` dot)
@@ -440,7 +441,7 @@ uri = try $ do
440 <|> enclosed (char '[') (char ']') uriChunk)
441 <|> enclosed (char '[') (char ']') uriChunk)
441 <|> uriChunk))
442 <|> uriChunk))
442 str' <- option str $ char '/' >> return (str ++ "/")
443 str' <- option str $ char '/' >> return (str ++ "/")
443− let uri' = scheme ++ ":" ++ str'
444+ let uri' = scheme ++ ":" ++ fromEntities str'
444 return (uri', escapeURI uri')
445 return (uri', escapeURI uri')
445
446
446-- | Applies a parser, returns tuple of its results and its horizontal
447-- | Applies a parser, returns tuple of its results and its horizontal