aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Writers/RST.hs
diff options
context:
space:
mode:
authorFrancesco Occhipinti <focchi.pinti@gmail.com>2018-03-18 04:39:26 +0100
committerJohn MacFarlane <jgm@berkeley.edu>2018-03-17 20:39:26 -0700
commitba965d17365f3b6d14f3fd652d0a0d03a491057f (patch)
treeda4a605f99dfebc6b8760e1f60722e894d579801 /src/Text/Pandoc/Writers/RST.hs
parente5845f33ad071dbea142ef1ff96d689fe7a71b86 (diff)
downloadpandoc-ba965d17365f3b6d14f3fd652d0a0d03a491057f.tar.gz
RST writer: filter out empty inline containers (#4434).
There is nothing in RST that corresponds to e.g. `Emph []`, so we just filter out elements like this.
Diffstat (limited to 'src/Text/Pandoc/Writers/RST.hs')
-rw-r--r--src/Text/Pandoc/Writers/RST.hs21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs
index 28d44533a..db914a849 100644
--- a/src/Text/Pandoc/Writers/RST.hs
+++ b/src/Text/Pandoc/Writers/RST.hs
@@ -378,9 +378,24 @@ blockListToRST :: PandocMonad m
blockListToRST = blockListToRST' False
transformInlines :: [Inline] -> [Inline]
-transformInlines =
- removeLeadingTrailingSpace . removeSpaceAfterDisplayMath . insertBS
- where -- remove spaces after displaymath, as they screw up indentation:
+transformInlines = removeLeadingTrailingSpace . insertBS
+ . filter hasContents . removeSpaceAfterDisplayMath
+ where -- empty inlines are not valid RST syntax
+ hasContents :: Inline -> Bool
+ hasContents (Str "") = False
+ hasContents (Emph []) = False
+ hasContents (Strong []) = False
+ hasContents (Strikeout []) = False
+ hasContents (Superscript []) = False
+ hasContents (Subscript []) = False
+ hasContents (SmallCaps []) = False
+ hasContents (Quoted _ []) = False
+ hasContents (Cite _ []) = False
+ hasContents (Span _ []) = False
+ hasContents (Link _ [] ("", "")) = False
+ hasContents (Image _ [] ("", "")) = False
+ hasContents _ = True
+ -- remove spaces after displaymath, as they screw up indentation:
removeSpaceAfterDisplayMath (Math DisplayMath x : zs) =
Math DisplayMath x : dropWhile (==Space) zs
removeSpaceAfterDisplayMath (x:xs) = x : removeSpaceAfterDisplayMath xs