From 457571e0c896d7ffbd7f53c9df4a9067d9ba0f68 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Fri, 18 Nov 2011 19:38:00 -0800 Subject: Fixed continuations in asciidoc definition lists. --- src/Text/Pandoc/Writers/Asciidoc.hs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/Text') diff --git a/src/Text/Pandoc/Writers/Asciidoc.hs b/src/Text/Pandoc/Writers/Asciidoc.hs index f88594680..a4ed7f98d 100644 --- a/src/Text/Pandoc/Writers/Asciidoc.hs +++ b/src/Text/Pandoc/Writers/Asciidoc.hs @@ -42,7 +42,7 @@ import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Shared import Text.Pandoc.Parsing hiding (blankline) import Text.ParserCombinators.Parsec ( runParser, GenParser ) -import Data.List ( isPrefixOf, intercalate ) +import Data.List ( isPrefixOf, intersperse, intercalate ) import Text.Pandoc.Pretty import Control.Monad.State @@ -147,9 +147,15 @@ blockToAsciidoc _ (CodeBlock (_,classes,_) str) = return $ else text $ intercalate "," $ "code" : classes blockToAsciidoc opts (BlockQuote blocks) = do contents <- blockListToAsciidoc opts blocks - let cols = offset contents + let isBlock (BlockQuote _) = True + isBlock _ = False + -- if there are nested block quotes, put in an open block + let contents' = if any isBlock blocks + then "--" $$ contents $$ "--" + else contents + let cols = offset contents' let bar = text $ replicate cols '_' - return $ bar $$ contents $$ bar <> blankline + return $ bar $$ chomp contents' $$ bar <> blankline blockToAsciidoc opts (Table caption aligns widths headers rows) = do caption' <- inlineListToAsciidoc opts caption let caption'' = if null caption @@ -269,11 +275,13 @@ definitionListItemToAsciidoc opts (label, defs) = do if marker == "::" then modify (\st -> st{ defListMarker = ";;"}) else modify (\st -> st{ defListMarker = "::"}) + let divider = cr <> text "+" <> cr let defsToAsciidoc :: [Block] -> State WriterState Doc - defsToAsciidoc ds = vcat `fmap` mapM (blockToAsciidoc opts) ds + defsToAsciidoc ds = (vcat . intersperse divider . map chomp) + `fmap` mapM (blockToAsciidoc opts) ds defs' <- mapM defsToAsciidoc defs modify (\st -> st{ defListMarker = marker }) - let contents = nest 2 $ vsep defs' + let contents = nest 2 $ vcat $ intersperse divider $ map chomp defs' return $ labelText <> text marker <> cr <> contents <> cr -- | Convert list of Pandoc block elements to markdown. -- cgit v1.2.3