aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Readers/Markdown.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text/Pandoc/Readers/Markdown.hs')
-rw-r--r--src/Text/Pandoc/Readers/Markdown.hs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
index 42d719e28..4790f83ff 100644
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -254,12 +254,15 @@ yamlMetaBlock = try $ do
then return ()
else do
v' <- yamlToMeta v
- updateState $ \st ->
- let smeta = stateMeta' st
- in st{ stateMeta' =
- (do v'' <- v'
- m <- smeta
- return $ B.setMeta (T.unpack k) v'' m)}
+ let k' = T.unpack k
+ updateState $ \st -> st{ stateMeta' =
+ (do m <- stateMeta' st
+ -- if there's already a value, leave it unchanged
+ case lookupMeta k' m of
+ Just _ -> return m
+ Nothing -> do
+ v'' <- v'
+ return $ B.setMeta (T.unpack k) v'' m)}
) alist
Right Yaml.Null -> return ()
Right _ -> do