git.iko.soy/typeable/pandoc
on master help sign in
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.

commit5ecadd7bfac0fea7b4269822b82aacf63fb192be authorJohn MacFarlane <fiddlosopher@gmail.com> dateSun 13 Jan 2013, 09:25 (14 years ago) parent15829d5
2 files changed+10−6
src/Text/Pandoc/Writers/RST.hs+8−4 tests/writer.rst+2−2
src/Text/Pandoc/Writers/RST.hs+8−4
@@ -153,9 +153,13 @@ blockToRST (Para [Image txt (src,tit)]) = do
153153 let fig = "figure:: " <> text src
154154 let alt = ":alt: " <> if null tit then capt else text tit
155155 return $ hang 3 ".. " $ fig $$ alt $+$ capt $$ blankline
156−blockToRST (Para inlines) = do
157− contents <- inlineListToRST inlines
158− return $ contents <> blankline
156+blockToRST (Para inlines)
157+ | LineBreak `elem` inlines = do -- use line block if LineBreaks
158+ lns <- mapM inlineListToRST $ splitBy (==LineBreak) inlines
159+ return $ (nowrap $ vcat $ map (text "| " <>) lns) <> blankline
160+ | otherwise = do
161+ contents <- inlineListToRST inlines
162+ return $ contents <> blankline
159163blockToRST (RawBlock f str) =
160164 return $ blankline <> ".. raw:: " <> text f $+$
161165 (nest 3 $ text str) $$ blankline
@@ -346,7 +350,7 @@ inlineToRST (Math t str) = do
346350 else blankline $$ (".. math:: " <> text str) $$ blankline
347351inlineToRST (RawInline "rst" x) = return $ text x
348352inlineToRST (RawInline _ _) = return empty
349−inlineToRST (LineBreak) = return cr -- there's no line break in RST
353+inlineToRST (LineBreak) = return cr -- there's no line break in RST (see Para)
350354inlineToRST Space = return space
351355-- autolink
352356inlineToRST (Link [Str str] (src, _))
tests/writer.rst+2−2
@@ -59,8 +59,8 @@ item.
5959
6060Here’s one with a bullet. \* criminey.
6161
62−There should be a hard line break
63−here.
62+| There should be a hard line break
63+| here.
6464
6565--------------
6666