@@ -654,7 +654,20 @@ uri = try $ do
654 let uri' = scheme <> ":" <> fromEntities str'
654 let uri' = scheme <> ":" <> fromEntities str'
655 return (uri', escapeURI uri')
655 return (uri', escapeURI uri')
657− wordChar = alphaNum <|> oneOf "#$%+/@\\_-&="
657+ isWordChar '#' = True
658+ isWordChar '$' = True
659+ isWordChar '%' = True
660+ isWordChar '+' = True
661+ isWordChar '/' = True
662+ isWordChar '@' = True
663+ isWordChar '\\' = True
664+ isWordChar '_' = True
665+ isWordChar '-' = True
666+ isWordChar '&' = True
667+ isWordChar '=' = True
668+ isWordChar c = isAlphaNum c
670+ wordChar = satisfy isWordChar
658 percentEscaped = try $ (:) <$> char '%' <*> many1 hexDigit
671 percentEscaped = try $ (:) <$> char '%' <*> many1 hexDigit
659 entity = try $ pure <$> characterReference
672 entity = try $ pure <$> characterReference
660 punct = try $ many1 (char ',') <|> fmap pure (satisfy (\c -> not (isSpace c) && c /= '<' && c /= '>'))
673 punct = try $ many1 (char ',') <|> fmap pure (satisfy (\c -> not (isSpace c) && c /= '<' && c /= '>'))