diff options
Diffstat (limited to 'src/Text/Pandoc/Writers/RST.hs')
-rw-r--r-- | src/Text/Pandoc/Writers/RST.hs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs index 98c39bdaf..21f1acd6e 100644 --- a/src/Text/Pandoc/Writers/RST.hs +++ b/src/Text/Pandoc/Writers/RST.hs @@ -201,11 +201,12 @@ blockToRST (Para [Image attr txt (src,'f':'i':'g':':':tit)]) = do return $ hang 3 ".. " (fig $$ alt $$ classes $$ dims $+$ capt) $$ blankline blockToRST (Para inlines) | LineBreak `elem` inlines = do -- use line block if LineBreaks - lns <- mapM inlineListToRST $ splitBy (==LineBreak) inlines - return $ (vcat $ map (hang 2 (text "| ")) lns) <> blankline + linesToLineBlock $ splitBy (==LineBreak) inlines | otherwise = do contents <- inlineListToRST inlines return $ contents <> blankline +blockToRST (LineBlock lns) = + linesToLineBlock lns blockToRST (RawBlock f@(Format f') str) | f == "rst" = return $ text str | otherwise = return $ blankline <> ".. raw:: " <> @@ -328,6 +329,12 @@ definitionListItemToRST (label, defs) = do tabstop <- get >>= (return . writerTabStop . stOptions) return $ label' $$ nest tabstop (nestle contents <> cr) +-- | Format a list of lines as line block. +linesToLineBlock :: [[Inline]] -> State WriterState Doc +linesToLineBlock inlineLines = do + lns <- mapM inlineListToRST inlineLines + return $ (vcat $ map (hang 2 (text "| ")) lns) <> blankline + -- | Convert list of Pandoc block elements to RST. blockListToRST' :: Bool -> [Block] -- ^ List of block elements |