From 909083090a63f65f4e720d210272c4bd6866cbee Mon Sep 17 00:00:00 2001 From: Albert Krewinkel Date: Sun, 27 Oct 2019 22:39:32 +0100 Subject: Org reader: fix parsing of empty comment lines Comment lines in Org-mode can be completely empty; both of these line should produce no output: # a comment # The reader used to produce a wrong result for the latter, but ignores that line as well now. Fixes: #5856 --- src/Text/Pandoc/Readers/Org/BlockStarts.hs | 4 +++- test/Tests/Readers/Org/Block.hs | 12 +++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Text/Pandoc/Readers/Org/BlockStarts.hs b/src/Text/Pandoc/Readers/Org/BlockStarts.hs index d1e13eb70..58db4f46c 100644 --- a/src/Text/Pandoc/Readers/Org/BlockStarts.hs +++ b/src/Text/Pandoc/Readers/Org/BlockStarts.hs @@ -92,7 +92,9 @@ metaLineStart :: Monad m => OrgParser m () metaLineStart = try $ skipSpaces <* string "#+" commentLineStart :: Monad m => OrgParser m () -commentLineStart = try $ skipSpaces <* string "# " +commentLineStart = try $ + -- the first char after '#' must be a plain space character or a newline + skipSpaces <* string "#" <* lookAhead (oneOf " \n") exampleLineStart :: Monad m => OrgParser m () exampleLineStart = () <$ try (skipSpaces *> string ": ") diff --git a/test/Tests/Readers/Org/Block.hs b/test/Tests/Readers/Org/Block.hs index f5ea66343..35fd4c1fa 100644 --- a/test/Tests/Readers/Org/Block.hs +++ b/test/Tests/Readers/Org/Block.hs @@ -73,13 +73,23 @@ tests = "----- em and en dash" =?> para "\8212\8211 em and en dash" - , "Comment Block" =: + , testGroup "Comments" + [ "Comment Block" =: T.unlines [ "#+BEGIN_COMMENT" , "stuff" , "bla" , "#+END_COMMENT"] =?> (mempty::Blocks) + , "Comment line" =: + T.unlines [ "# this is a comment" ] =?> + (mempty :: Blocks) + + , "Empty comment line" =: + T.unlines [ " #" ] =?> + (mempty :: Blocks) + ] + , testGroup "Blocks and fragments" [ "HTML block" =: T.unlines [ "#+BEGIN_HTML" -- cgit v1.2.3