diff options
author | John MacFarlane <jgm@berkeley.edu> | 2010-12-20 19:34:47 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2010-12-20 19:36:40 -0800 |
commit | 8889ae8b5b091eb9d35bdf4698d39c562cb2e374 (patch) | |
tree | 35cf17094e260b47bee07a1f8842269ffed6d00b | |
parent | 0086329c36a09342b3ad5cade5bc4259b04c3bfb (diff) | |
download | pandoc-8889ae8b5b091eb9d35bdf4698d39c562cb2e374.tar.gz |
Markdown writer: Use delimited code block if there are attributes.
(Unless in strict mode.)
-rw-r--r-- | src/Text/Pandoc/Writers/Markdown.hs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs index 135f7a7f6..50bf05a54 100644 --- a/src/Text/Pandoc/Writers/Markdown.hs +++ b/src/Text/Pandoc/Writers/Markdown.hs @@ -229,8 +229,27 @@ blockToMarkdown opts (CodeBlock (_,classes,_) str) | "haskell" `elem` classes && "literate" `elem` classes && writerLiterateHaskell opts = return $ prefixed "> " (text str) <> blankline -blockToMarkdown opts (CodeBlock _ str) = return $ - nest (writerTabStop opts) (text str) <> blankline +blockToMarkdown opts (CodeBlock attribs str) = return $ + if writerStrictMarkdown opts || attribs == ([],[],[]) + then nest (writerTabStop opts) (text str) <> blankline + else -- use delimited code block + flush $ tildes <> space <> attrs <> cr <> text str <> + cr <> tildes <> blankline + where tildes = text "~~~~" + attrs = braces $ hsep [attribId, attribClasses, attribKeys] + attribId = case attribs of + ([],_,_) -> empty + (i,_,_) -> "#" <> text i + attribClasses = case attribs of + (_,[],_) -> empty + (_,cs,_) -> hsep $ + map (text . ('.':)) + cs + attribKeys = case attribs of + (_,_,[]) -> empty + (_,_,ks) -> hsep $ + map (\(k,v) -> text k + <> "=\"" <> text v <> "\"") ks blockToMarkdown opts (BlockQuote blocks) = do st <- get -- if we're writing literate haskell, put a space before the bird tracks |