git.iko.soy/typeable/pandoc
on master help sign in
Man reader: don't parse \[ul] as unicode escape.
0327226John MacFarlane
src/Text/Pandoc/Readers/Man.hs+3−1
@@ -204,9 +204,11 @@ escapeLexer = try $ do
204 <|> charCode `sepBy1` (many1 Parsec.space)
204 <|> charCode `sepBy1` (many1 Parsec.space)
205 ) <* char ']'
205 ) <* char ']'
206
206
207− ucharCode = do
207+ ucharCode = try $ do
208 char 'u'
208 char 'u'
209 cs <- many1 (satisfy isHexDigit)
209 cs <- many1 (satisfy isHexDigit)
210+ let lcs = length cs
211+ guard $ lcs >= 4 && lcs <= 6
210 case chr <$> safeRead ('0':'x':cs) of
212 case chr <$> safeRead ('0':'x':cs) of
211 Nothing -> escUnknown ("\\[u" ++ cs ++ "]") '\xFFFD'
213 Nothing -> escUnknown ("\\[u" ++ cs ++ "]") '\xFFFD'
212 Just c -> return c
214 Just c -> return c
test/Tests/Readers/Man.hs+1−1
@@ -76,7 +76,7 @@ tests = [
76 , "two letter escapes" =:
76 , "two letter escapes" =:
77 "\\(oA\\(~O" =?> (para $ text "ÅÕ")
77 "\\(oA\\(~O" =?> (para $ text "ÅÕ")
78 , "bracketed escapes" =:
78 , "bracketed escapes" =:
79− "\\[oA]\\[~O]\\[Do]\\[Ye]\\[product]" =?> (para $ text "ÅÕ$¥∏")
79+ "\\[oA]\\[~O]\\[Do]\\[Ye]\\[product]\\[ul]" =?> (para $ text "ÅÕ$¥∏_")
80 , "unicode escapes" =:
80 , "unicode escapes" =:
81 "\\[u2020]" =?> (para $ text "†")
81 "\\[u2020]" =?> (para $ text "†")
82 , "unicode escapes (combined)" =:
82 , "unicode escapes (combined)" =: