git.iko.soy/typeable/pandoc
on master help sign in
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

commit05b366a0b217a6cae33bd1d36b66faa211860ba8 authorfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> dateWed 6 Aug 2008, 03:34 (18 years ago) parentabf2dc7
1 file changed+4−4
Text/Pandoc/Readers/Markdown.hs+4−4
Text/Pandoc/Readers/Markdown.hs+4−4
@@ -1173,18 +1173,18 @@ chkCit t = do
11731173 case lookupKeySrc (stateKeys st) [Str $ fst t] of
11741174 Just _ -> fail "This is a link"
11751175 Nothing -> if elem (fst t) $ stateCitations st
1176− then return $ Just t
1177− else return $ Nothing
1176+ then return $ Just t
1177+ else return $ Nothing
11781178
11791179citeMarker :: GenParser Char ParserState String
1180−citeMarker = string "[" >> manyTill anyChar (try $ string "]")
1180+citeMarker = char '[' >> manyTill ( noneOf "\n" <|> (newline >>~ notFollowedBy blankline) ) (char ']')
11811181
11821182parseCitation :: GenParser Char ParserState [(String,String)]
11831183parseCitation = try $ sepBy (parseLabel) (oneOf ";")
11841184
11851185parseLabel :: GenParser Char ParserState (String,String)
11861186parseLabel = try $ do
1187− res <- sepBy (skipMany (oneOf "\t\n ") >> many1 (noneOf "@;")) (oneOf "@")
1187+ res <- sepBy (skipSpaces >> optional newline >> skipSpaces >> many1 (noneOf "@;")) (oneOf "@")
11881188 case res of
11891189 [lab,loc] -> return (lab, loc)
11901190 [lab] -> return (lab, "" )