From 51dafe19c33bce9f3ec80f3bc99e25b04d539372 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Fri, 2 Aug 2013 17:16:45 -0700 Subject: Markdown & RST writers: Omit 'references' from metadata block at top. Otherwise we get references repeated in two places. --- src/Text/Pandoc/Writers/Markdown.hs | 10 ++++++++-- src/Text/Pandoc/Writers/RST.hs | 4 +++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs index 80402a757..f6525efde 100644 --- a/src/Text/Pandoc/Writers/Markdown.hs +++ b/src/Text/Pandoc/Writers/Markdown.hs @@ -32,6 +32,7 @@ Markdown: -} module Text.Pandoc.Writers.Markdown (writeMarkdown, writePlain) where import Text.Pandoc.Definition +import Text.Pandoc.Builder (deleteMeta) import Text.Pandoc.Generic import Text.Pandoc.Templates (renderTemplate') import Text.Pandoc.Shared @@ -132,6 +133,7 @@ plainTitleBlock tit auths dat = dat <> cr yamlMetadataBlock :: Value -> Doc +yamlMetadataBlock (Object h) | H.null h = empty yamlMetadataBlock v = "---" $$ (jsonToYaml v) $$ "..." jsonToYaml :: Value -> Doc @@ -168,6 +170,10 @@ pandocToMarkdown opts (Pandoc meta blocks) = do (fmap (render colwidth) . blockListToMarkdown opts) (fmap (render colwidth) . inlineListToMarkdown opts) meta + topMeta <- metaToJSON opts{ writerVariables = [] } + (fmap (render colwidth) . blockListToMarkdown opts) + (fmap (render colwidth) . inlineListToMarkdown opts) + (deleteMeta "references" meta) let title' = maybe empty text $ getField "title" metadata let authors' = maybe [] (map text) $ getField "author" metadata let date' = maybe empty text $ getField "date" metadata @@ -175,11 +181,11 @@ pandocToMarkdown opts (Pandoc meta blocks) = do True | isPlain -> plainTitleBlock title' authors' date' | isEnabled Ext_yaml_metadata_block opts -> - yamlMetadataBlock metadata + yamlMetadataBlock topMeta | isEnabled Ext_pandoc_title_block opts -> pandocTitleBlock title' authors' date' | isEnabled Ext_mmd_title_block opts -> - mmdTitleBlock metadata + mmdTitleBlock topMeta | otherwise -> empty False -> empty let headerBlocks = filter isHeaderBlock blocks diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs index 606793842..cb0978802 100644 --- a/src/Text/Pandoc/Writers/RST.hs +++ b/src/Text/Pandoc/Writers/RST.hs @@ -76,7 +76,9 @@ pandocToRST (Pandoc meta blocks) = do metadata <- metaToJSON opts (fmap (render colwidth) . blockListToRST) (fmap (trimr . render colwidth) . inlineListToRST) - $ deleteMeta "title" $ deleteMeta "subtitle" meta + $ deleteMeta "references" + $ deleteMeta "title" + $ deleteMeta "subtitle" meta body <- blockListToRST blocks notes <- liftM (reverse . stNotes) get >>= notesToRST -- note that the notes may contain refs, so we do them first -- cgit v1.2.3