aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <[email protected]>2013-08-02 17:16:45 -0700
committerJohn MacFarlane <[email protected]>2013-08-02 22:12:54 -0700
commit51dafe19c33bce9f3ec80f3bc99e25b04d539372 (patch)
treec6529b44c1d1d124f5e70ee586378c2102cf485b
parent8c8e182b15a34a20673240ff4231e96a8f76fdf6 (diff)
Markdown & RST writers: Omit 'references' from metadata block at top.issue771
Otherwise we get references repeated in two places.
-rw-r--r--src/Text/Pandoc/Writers/Markdown.hs10
-rw-r--r--src/Text/Pandoc/Writers/RST.hs4
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: <http://daringfireball.net/projects/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