From 05b366a0b217a6cae33bd1d36b66faa211860ba8 Mon Sep 17 00:00:00 2001 From: fiddlosopher Date: Wed, 6 Aug 2008 03:34:06 +0000 Subject: Small improvements to citation parsing in markdown reader. (Don't allow blank lines inside citations.) git-svn-id: https://pandoc.googlecode.com/svn/trunk@1382 788f1e2b-df1e-0410-8736-df70ead52e1b --- Text/Pandoc/Readers/Markdown.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'Text/Pandoc/Readers') diff --git a/Text/Pandoc/Readers/Markdown.hs b/Text/Pandoc/Readers/Markdown.hs index 088adb38b..89dbfe9a9 100644 --- a/Text/Pandoc/Readers/Markdown.hs +++ b/Text/Pandoc/Readers/Markdown.hs @@ -1173,18 +1173,18 @@ chkCit t = do case lookupKeySrc (stateKeys st) [Str $ fst t] of Just _ -> fail "This is a link" Nothing -> if elem (fst t) $ stateCitations st - then return $ Just t - else return $ Nothing + then return $ Just t + else return $ Nothing citeMarker :: GenParser Char ParserState String -citeMarker = string "[" >> manyTill anyChar (try $ string "]") +citeMarker = char '[' >> manyTill ( noneOf "\n" <|> (newline >>~ notFollowedBy blankline) ) (char ']') parseCitation :: GenParser Char ParserState [(String,String)] parseCitation = try $ sepBy (parseLabel) (oneOf ";") parseLabel :: GenParser Char ParserState (String,String) parseLabel = try $ do - res <- sepBy (skipMany (oneOf "\t\n ") >> many1 (noneOf "@;")) (oneOf "@") + res <- sepBy (skipSpaces >> optional newline >> skipSpaces >> many1 (noneOf "@;")) (oneOf "@") case res of [lab,loc] -> return (lab, loc) [lab] -> return (lab, "" ) -- cgit v1.2.3