diff options
author | John MacFarlane <jgm@berkeley.edu> | 2011-02-01 22:35:27 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2011-02-01 22:35:27 -0800 |
commit | d4b71a6423721c79852b96c4ac398dff1c7ac428 (patch) | |
tree | 06a46f4441627d7ea92dff876560ea79a5289473 /src/Text/Pandoc | |
parent | 5dce199ff7e80e9eb1709f1ea68093b3d10d0e15 (diff) | |
download | pandoc-d4b71a6423721c79852b96c4ac398dff1c7ac428.tar.gz |
Markdown reader: Simplified and corrected footnote block parser.
Diffstat (limited to 'src/Text/Pandoc')
-rw-r--r-- | src/Text/Pandoc/Readers/Markdown.hs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 2bfb742bd..01cc5e2e8 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -245,15 +245,17 @@ noteMarker :: GenParser Char ParserState [Char] noteMarker = string "[^" >> many1Till (satisfy $ not . isBlank) (char ']') rawLine :: GenParser Char ParserState [Char] -rawLine = do +rawLine = try $ do notFollowedBy blankline notFollowedBy' $ try $ skipNonindentSpaces >> noteMarker - contents <- many1 nonEndline - end <- option "" (newline >> optional indentSpaces >> return "\n") - return $ contents ++ end + optional indentSpaces + anyLine rawLines :: GenParser Char ParserState [Char] -rawLines = many1 rawLine >>= return . concat +rawLines = do + first <- anyLine + rest <- many rawLine + return $ unlines (first:rest) noteBlock :: GenParser Char ParserState [Char] noteBlock = try $ do @@ -263,8 +265,9 @@ noteBlock = try $ do char ':' optional blankline optional indentSpaces - raw <- sepBy rawLines (try (blankline >> indentSpaces >> - notFollowedBy blankline)) + raw <- sepBy rawLines + (try (blankline >> indentSpaces >> + notFollowedBy blankline)) optional blanklines endPos <- getPosition let newnote = (ref, (intercalate "\n" raw) ++ "\n\n") |