From 5ecadd7bfac0fea7b4269822b82aacf63fb192be Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sun, 13 Jan 2013 09:25:56 -0800 Subject: Use line block in RST writer when a paragraph contains linebreaks. Previously linebreaks weren't supported in RST, since RST has no native linebreak construct. --- src/Text/Pandoc/Writers/RST.hs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs index 85ca98f5a..a8513a7be 100644 --- a/src/Text/Pandoc/Writers/RST.hs +++ b/src/Text/Pandoc/Writers/RST.hs @@ -153,9 +153,13 @@ blockToRST (Para [Image txt (src,tit)]) = do let fig = "figure:: " <> text src let alt = ":alt: " <> if null tit then capt else text tit return $ hang 3 ".. " $ fig $$ alt $+$ capt $$ blankline -blockToRST (Para inlines) = do - contents <- inlineListToRST inlines - return $ contents <> blankline +blockToRST (Para inlines) + | LineBreak `elem` inlines = do -- use line block if LineBreaks + lns <- mapM inlineListToRST $ splitBy (==LineBreak) inlines + return $ (nowrap $ vcat $ map (text "| " <>) lns) <> blankline + | otherwise = do + contents <- inlineListToRST inlines + return $ contents <> blankline blockToRST (RawBlock f str) = return $ blankline <> ".. raw:: " <> text f $+$ (nest 3 $ text str) $$ blankline @@ -346,7 +350,7 @@ inlineToRST (Math t str) = do else blankline $$ (".. math:: " <> text str) $$ blankline inlineToRST (RawInline "rst" x) = return $ text x inlineToRST (RawInline _ _) = return empty -inlineToRST (LineBreak) = return cr -- there's no line break in RST +inlineToRST (LineBreak) = return cr -- there's no line break in RST (see Para) inlineToRST Space = return space -- autolink inlineToRST (Link [Str str] (src, _)) -- cgit v1.2.3