@@ -40,12 +40,13 @@ import Data.List ( isPrefixOf, intersperse, intercalate, transpose )
40import Text.Pandoc.Pretty
40import Text.Pandoc.Pretty
41import Control.Monad.State
41import Control.Monad.State
43−data WriterState = WriterState { }
43+data WriterState = WriterState { defListMarker :: String }
45-- | Convert Pandoc to Asciidoc.
45-- | Convert Pandoc to Asciidoc.
46writeAsciidoc :: WriterOptions -> Pandoc -> String
46writeAsciidoc :: WriterOptions -> Pandoc -> String
47writeAsciidoc opts document =
47writeAsciidoc opts document =
48− evalState (pandocToAsciidoc opts document) WriterState{ }
48+ evalState (pandocToAsciidoc opts document) WriterState{
49+ defListMarker = "::" }
50-- | Return markdown representation of document.
51-- | Return markdown representation of document.
51pandocToAsciidoc :: WriterOptions -> Pandoc -> State WriterState String
52pandocToAsciidoc :: WriterOptions -> Pandoc -> State WriterState String
@@ -221,14 +222,16 @@ definitionListItemToAsciidoc :: WriterOptions
221 -> State WriterState Doc
222 -> State WriterState Doc
222definitionListItemToAsciidoc opts (label, defs) = do
223definitionListItemToAsciidoc opts (label, defs) = do
223 labelText <- inlineListToAsciidoc opts label
224 labelText <- inlineListToAsciidoc opts label
224− let tabStop = writerTabStop opts
225+ marker <- defListMarker `fmap` get
225− let leader = " ~"
226+ if marker == "::"
226− let sps = case writerTabStop opts - 3 of
227+ then modify (\st -> st{ defListMarker = ";;"})
227− n | n > 0 -> text $ replicate n ' '
228+ else modify (\st -> st{ defListMarker = "::"})
228− _ -> text " "
229+ let defsToAsciidoc :: [Block] -> State WriterState Doc
229− defs' <- mapM (mapM (blockToAsciidoc opts)) defs
230+ defsToAsciidoc ds = vcat `fmap` mapM (blockToAsciidoc opts) ds
230− let contents = vcat $ map (\d -> hang tabStop (leader <> sps) $ vcat d <> cr) defs'
231+ defs' <- mapM defsToAsciidoc defs
232+ modify (\st -> st{ defListMarker = marker })
233+ let contents = nest 2 $ vsep defs'
231− return $ labelText <> cr <> contents <> cr
234+ return $ labelText <> text marker <> cr <> contents <> cr
233-- | Convert list of Pandoc block elements to markdown.
236-- | Convert list of Pandoc block elements to markdown.
234blockListToAsciidoc :: WriterOptions -- ^ Options
237blockListToAsciidoc :: WriterOptions -- ^ Options