git.iko.soy/typeable/pandoc
on master help sign in
Markdown reader: Fixed regression on left-biased union for metadata.
7fc6919John MacFarlane
src/Text/Pandoc/Readers/Markdown.hs+9−6
@@ -254,12 +254,15 @@ yamlMetaBlock = try $ do
254 then return ()
254 then return ()
255 else do
255 else do
256 v' <- yamlToMeta v
256 v' <- yamlToMeta v
257+ let k' = T.unpack k
257− updateState $ \st ->
258+ updateState $ \st -> st{ stateMeta' =
258− let smeta = stateMeta' st
259+ (do m <- stateMeta' st
259− in st{ stateMeta' =
260+ -- if there's already a value, leave it unchanged
260− (do v'' <- v'
261+ case lookupMeta k' m of
261− m <- smeta
262+ Just _ -> return m
263+ Nothing -> do
264+ v'' <- v'
262− return $ B.setMeta (T.unpack k) v'' m)}
265+ return $ B.setMeta (T.unpack k) v'' m)}
263 ) alist
266 ) alist
264 Right Yaml.Null -> return ()
267 Right Yaml.Null -> return ()
265 Right _ -> do
268 Right _ -> do
test/command/multiple-metadata-blocks.mdnew file+15
@@ -0,0 +1,15 @@
1+If multiple blocks define a field, the first is used.
2+
3+```
4+% pandoc -s -t native
5+---
6+foo: bar
7+...
8+
9+---
10+foo: bim
11+...
12+^D
13+Pandoc (Meta {unMeta = fromList [("foo",MetaInlines [Str "bar"])]})
14+[]
15+```