@@ -15,7 +15,6 @@ Conversion of markdown-formatted plain text to 'Pandoc' document.
1515-}
1616module Text.Pandoc.Readers.Markdown (
1717 readMarkdown,
18− yamlMetaBlock,
1918 yamlToMeta,
2019 yamlToRefs ) where
2120
@@ -29,7 +28,6 @@ import Data.Maybe
2928import qualified Data.Set as Set
3029import Data.Text (Text)
3130import qualified Data.Text as T
32−import qualified Data.Text.Lazy as TL
3331import qualified Data.ByteString.Lazy as BL
3432import System.FilePath (addExtension, takeExtension)
3533import Text.HTML.TagSoup hiding (Row)
@@ -47,9 +45,8 @@ import Text.Pandoc.Readers.HTML (htmlInBalanced, htmlTag, isBlockTag,
4745 isCommentTag, isInlineTag, isTextTag)
4846import Text.Pandoc.Readers.LaTeX (applyMacros, rawLaTeXBlock, rawLaTeXInline)
4947import Text.Pandoc.Shared
50−import qualified Text.Pandoc.UTF8 as UTF8
5148import Text.Pandoc.XML (fromEntities)
52−import Text.Pandoc.Readers.Metadata (yamlBsToMeta, yamlBsToRefs)
49+import Text.Pandoc.Readers.Metadata (yamlBsToMeta, yamlBsToRefs, yamlMetaBlock)
5350
5451type MarkdownParser m = ParserT Text ParserState m
5552
@@ -275,31 +272,14 @@ pandocTitleBlock = do
275272 $ nullMeta
276273 updateState $ \st -> st{ stateMeta' = stateMeta' st <> meta' }
277274
278−yamlMetaBlock :: (HasLastStrPosition st, PandocMonad m)
279− => ParserT Text st m (Future st Blocks)
280− -> ParserT Text st m (Future st Meta)
281−yamlMetaBlock parser = try $ do
282− string "---"
283− blankline
284− notFollowedBy blankline -- if --- is followed by a blank it's an HRULE
285− rawYamlLines <- manyTill anyLine stopLine
286− -- by including --- and ..., we allow yaml blocks with just comments:
287− let rawYaml = T.unlines ("---" : (rawYamlLines ++ ["..."]))
288− optional blanklines
289− yamlBsToMeta (fmap B.toMetaValue <$> parser)
290− $ UTF8.fromTextLazy $ TL.fromStrict rawYaml
291−
292275yamlMetaBlock' :: PandocMonad m => MarkdownParser m (F Blocks)
293276yamlMetaBlock' = do
294277 guardEnabled Ext_yaml_metadata_block
295− newMetaF <- yamlMetaBlock parseBlocks
278+ newMetaF <- yamlMetaBlock (fmap B.toMetaValue <$> parseBlocks)
296279 -- Since `<>` is left-biased, existing values are not touched:
297280 updateState $ \st -> st{ stateMeta' = stateMeta' st <> newMetaF }
298281 return mempty
299282
300−stopLine :: PandocMonad m => ParserT Text st m ()
301−stopLine = try $ (string "---" <|> string "...") >> blankline >> return ()
302−
303283mmdTitleBlock :: PandocMonad m => MarkdownParser m ()
304284mmdTitleBlock = do
305285 guardEnabled Ext_mmd_title_block