diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2020-12-07 13:24:19 -0800 | 
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2020-12-07 13:24:19 -0800 | 
| commit | ce1791913da713ec35f514006bb532cb9c9c8d22 (patch) | |
| tree | ee099b2fd36a809626173c42b4844da613a1efa0 | |
| parent | 2f9b684b3a793896bc28a79a07722415cfdc075e (diff) | |
| download | pandoc-ce1791913da713ec35f514006bb532cb9c9c8d22.tar.gz | |
Small efficiency improvement in uri parser
| -rw-r--r-- | src/Text/Pandoc/Parsing.hs | 15 | 
1 files changed, 14 insertions, 1 deletions
| diff --git a/src/Text/Pandoc/Parsing.hs b/src/Text/Pandoc/Parsing.hs index 1d9e182c5..1e8518c90 100644 --- a/src/Text/Pandoc/Parsing.hs +++ b/src/Text/Pandoc/Parsing.hs @@ -654,7 +654,20 @@ uri = try $ do    let uri' = scheme <> ":" <> fromEntities str'    return (uri', escapeURI uri')    where -    wordChar = alphaNum <|> oneOf "#$%+/@\\_-&=" +    isWordChar '#' = True +    isWordChar '$' = True +    isWordChar '%' = True +    isWordChar '+' = True +    isWordChar '/' = True +    isWordChar '@' = True +    isWordChar '\\' = True +    isWordChar '_' = True +    isWordChar '-' = True +    isWordChar '&' = True +    isWordChar '=' = True +    isWordChar c   = isAlphaNum c + +    wordChar = satisfy isWordChar      percentEscaped = try $ (:) <$> char '%' <*> many1 hexDigit      entity = try $ pure <$> characterReference      punct = try $ many1 (char ',') <|> fmap pure (satisfy (\c -> not (isSpace c) && c /= '<' && c /= '>')) | 
