git.iko.soy/typeable/pandoc
on master help sign in
Markdown citation parser: small refactoring for clarity.
6390103John MacFarlane
src/Text/Pandoc/Readers/Markdown.hs+5−1
@@ -1325,6 +1325,10 @@ blankSpace = try $ do
1325 guard $ length res > 0
1325 guard $ length res > 0
1326 guard $ length (filter (=='\n') res) <= 1
1326 guard $ length (filter (=='\n') res) <= 1
1327
1327
1328+noneOfUnlessEscaped :: [Char] -> GenParser Char st Char
1329+noneOfUnlessEscaped cs =
1330+ try (char '\\' >> oneOf cs) <|> noneOf cs
1331+
1328textualCite :: GenParser Char ParserState [Citation]
1332textualCite :: GenParser Char ParserState [Citation]
1329textualCite = try $ do
1333textualCite = try $ do
1330 (_, key) <- citeKey
1334 (_, key) <- citeKey
@@ -1382,7 +1386,7 @@ locator = try $ do
1382locatorWord :: GenParser Char st String
1386locatorWord :: GenParser Char st String
1383locatorWord = try $ do
1387locatorWord = try $ do
1384 spnl
1388 spnl
1385− wd <- many1 $ (try $ char '\\' >> oneOf "];, \t\n") <|> noneOf "];, \t\n"
1389+ wd <- many1 $ noneOfUnlessEscaped "];, \t\n"
1386 guard $ any isDigit wd
1390 guard $ any isDigit wd
1387 return wd
1391 return wd
1388
1392