aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc
diff options
context:
space:
mode:
authormb21 <mb21@users.noreply.github.com>2018-09-15 13:22:45 +0200
committermb21 <mb21@users.noreply.github.com>2018-09-15 13:22:45 +0200
commit51c122245797ee8d699698765bfb1ad92041cd05 (patch)
treef86e81bb4c1fbb5d83d6c698a8168e05af0a1675 /src/Text/Pandoc
parent700f7a141f94616734b08df291b44e7a7ae64991 (diff)
downloadpandoc-51c122245797ee8d699698765bfb1ad92041cd05.tar.gz
Markdown Reader: factor out yamlBsToMeta
Diffstat (limited to 'src/Text/Pandoc')
-rw-r--r--src/Text/Pandoc/Readers/Markdown.hs12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
index 2ab61f90e..4efbd25eb 100644
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -36,6 +36,7 @@ module Text.Pandoc.Readers.Markdown ( readMarkdown ) where
import Prelude
import Control.Monad
import Control.Monad.Except (throwError)
+import qualified Data.ByteString.Lazy as BS
import Data.Char (isAlphaNum, isPunctuation, isSpace, toLower)
import Data.List (intercalate, sortBy, transpose, elemIndex)
import qualified Data.Map as M
@@ -233,7 +234,6 @@ pandocTitleBlock = try $ do
yamlMetaBlock :: PandocMonad m => MarkdownParser m (F Blocks)
yamlMetaBlock = try $ do
guardEnabled Ext_yaml_metadata_block
- pos <- getPosition
string "---"
blankline
notFollowedBy blankline -- if --- is followed by a blank it's an HRULE
@@ -241,8 +241,13 @@ yamlMetaBlock = try $ do
-- by including --- and ..., we allow yaml blocks with just comments:
let rawYaml = unlines ("---" : (rawYamlLines ++ ["..."]))
optional blanklines
- case YAML.decodeNode' YAML.failsafeSchemaResolver False False
- (UTF8.fromStringLazy rawYaml) of
+ yamlBsToMeta $ UTF8.fromStringLazy rawYaml
+ return mempty
+
+yamlBsToMeta :: PandocMonad m => BS.ByteString -> MarkdownParser m ()
+yamlBsToMeta bstr = do
+ pos <- getPosition
+ case YAML.decodeNode' YAML.failsafeSchemaResolver False False bstr of
Right [YAML.Doc (YAML.Mapping _ hashmap)] ->
mapM_ (\(key, v) -> do
k <- nodeToKey key
@@ -271,7 +276,6 @@ yamlMetaBlock = try $ do
logMessage $ CouldNotParseYamlMetadata
err' pos
return ()
- return mempty
nodeToKey :: Monad m => YAML.Node -> m Text
nodeToKey (YAML.Scalar (YAML.SStr t)) = return t