aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2021-05-31 21:34:51 -0600
committerJohn MacFarlane <jgm@berkeley.edu>2021-05-31 21:34:51 -0600
commit62f46b3995425c9a3ec87cba0eb8a4d736adec07 (patch)
tree2f50499f158097e353f8790d99c350211d7f14ed
parentbe144dd7de081d10bcc7a4d77b98c1b879f7995d (diff)
downloadpandoc-62f46b3995425c9a3ec87cba0eb8a4d736adec07.tar.gz
Fix regression with commonmark/gfm yaml metdata block parsing.
A regression in 2.14 led to the document body being omitted after YAML metadata in some cases. This is now fixed. Closes #7339.
-rw-r--r--src/Text/Pandoc/Readers/CommonMark.hs10
-rw-r--r--test/command/7339.md11
2 files changed, 16 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Readers/CommonMark.hs b/src/Text/Pandoc/Readers/CommonMark.hs
index 228e65312..411d64278 100644
--- a/src/Text/Pandoc/Readers/CommonMark.hs
+++ b/src/Text/Pandoc/Readers/CommonMark.hs
@@ -30,7 +30,7 @@ import Text.Pandoc.Readers.Metadata (yamlMetaBlock)
import Control.Monad.Except
import Data.Functor.Identity (runIdentity)
import Data.Typeable
-import Text.Pandoc.Parsing (runParserT, getPosition,
+import Text.Pandoc.Parsing (runParserT, getInput,
runF, defaultParserState, option, many1, anyChar,
Sources(..), ToSources(..), ParserT, Future,
sourceName)
@@ -44,14 +44,14 @@ readCommonMark opts s
let sources = toSources s
let toks = concatMap sourceToToks (unSources sources)
res <- runParserT (do meta <- yamlMetaBlock (metaValueParser opts)
- pos <- getPosition
- return (meta, pos))
+ rest <- getInput
+ return (meta, rest))
defaultParserState "YAML metadata" (toSources s)
case res of
Left _ -> readCommonMarkBody opts sources toks
- Right (meta, pos) -> do
+ Right (meta, rest) -> do
-- strip off metadata section and parse body
- let body = dropWhile (\t -> tokPos t < pos) toks
+ let body = concatMap sourceToToks (unSources rest)
Pandoc _ bs <- readCommonMarkBody opts sources body
return $ Pandoc (runF meta defaultParserState) bs
| otherwise = do
diff --git a/test/command/7339.md b/test/command/7339.md
new file mode 100644
index 000000000..9697c1c32
--- /dev/null
+++ b/test/command/7339.md
@@ -0,0 +1,11 @@
+```
+% pandoc -f gfm -s -t native
+---
+title: Test
+---
+
+Hi
+^D
+Pandoc (Meta {unMeta = fromList [("title",MetaInlines [Str "Test"])]})
+[Para [Str "Hi"]]
+```