Man reader: don't parse \[ul] as unicode escape.

This commit is contained in:
John MacFarlane 2018-10-22 12:05:34 -07:00
parent 7a111d2d33
commit 0327226d4c
2 changed files with 4 additions and 2 deletions

View file

@ -204,9 +204,11 @@ escapeLexer = try $ do
<|> charCode `sepBy1` (many1 Parsec.space)
) <* char ']'
ucharCode = do
ucharCode = try $ do
char 'u'
cs <- many1 (satisfy isHexDigit)
let lcs = length cs
guard $ lcs >= 4 && lcs <= 6
case chr <$> safeRead ('0':'x':cs) of
Nothing -> escUnknown ("\\[u" ++ cs ++ "]") '\xFFFD'
Just c -> return c

View file

@ -76,7 +76,7 @@ tests = [
, "two letter escapes" =:
"\\(oA\\(~O" =?> (para $ text "ÅÕ")
, "bracketed escapes" =:
"\\[oA]\\[~O]\\[Do]\\[Ye]\\[product]" =?> (para $ text "ÅÕ$¥∏")
"\\[oA]\\[~O]\\[Do]\\[Ye]\\[product]\\[ul]" =?> (para $ text "ÅÕ$¥∏_")
, "unicode escapes" =:
"\\[u2020]" =?> (para $ text "")
, "unicode escapes (combined)" =: