git.iko.soy/typeable/pandoc
on master help sign in
Markdown Reader: yamlToMeta respects extensions (#5276)
0216b68Mauro Bieg
src/Text/Pandoc/App.hs+5−4
@@ -211,10 +211,6 @@ convertWithOpts opts = do
211 ("application/xml", jatsCSL)
211 ("application/xml", jatsCSL)
212 return $ ("csl", jatsEncoded) : optMetadata opts
212 return $ ("csl", jatsEncoded) : optMetadata opts
213 else return $ optMetadata opts
213 else return $ optMetadata opts
214− metadataFromFile <-
215− case optMetadataFile opts of
216− Nothing -> return mempty
217− Just file -> readFileLazy file >>= yamlToMeta
218
214
219 case lookup "lang" (optMetadata opts) of
215 case lookup "lang" (optMetadata opts) of
220 Just l -> case parseBCP47 l of
216 Just l -> case parseBCP47 l of
@@ -235,6 +231,11 @@ convertWithOpts opts = do
235 , readerStripComments = optStripComments opts
231 , readerStripComments = optStripComments opts
236 }
232 }
237
233
234+ metadataFromFile <-
235+ case optMetadataFile opts of
236+ Nothing -> return mempty
237+ Just file -> readFileLazy file >>= yamlToMeta readerOpts
238+
238 let transforms = (case optBaseHeaderLevel opts of
239 let transforms = (case optBaseHeaderLevel opts of
239 x | x > 1 -> (headerShift (x - 1) :)
240 x | x > 1 -> (headerShift (x - 1) :)
240 | otherwise -> id) .
241 | otherwise -> id) .
src/Text/Pandoc/Readers/Markdown.hs+2−3
@@ -249,12 +249,11 @@ yamlMetaBlock = try $ do
249
249
250-- | Read a YAML string and convert it to pandoc metadata.
250-- | Read a YAML string and convert it to pandoc metadata.
251-- String scalars in the YAML are parsed as Markdown.
251-- String scalars in the YAML are parsed as Markdown.
252−yamlToMeta :: PandocMonad m => BS.ByteString -> m Meta
252+yamlToMeta :: PandocMonad m => ReaderOptions -> BS.ByteString -> m Meta
253−yamlToMeta bstr = do
253+yamlToMeta opts bstr = do
254 let parser = do
254 let parser = do
255 meta <- yamlBsToMeta bstr
255 meta <- yamlBsToMeta bstr
256 return $ runF meta defaultParserState
256 return $ runF meta defaultParserState
257− opts = def{ readerExtensions = pandocExtensions }
258 parsed <- readWithM parser def{ stateOptions = opts } ""
257 parsed <- readWithM parser def{ stateOptions = opts } ""
259 case parsed of
258 case parsed of
260 Right result -> return result
259 Right result -> return result