From e43c2e75a1284f464ce1ef9b3b6e12ea2b645f4a Mon Sep 17 00:00:00 2001 From: Albert Krewinkel Date: Thu, 14 Nov 2019 14:28:30 +0100 Subject: RST writer: fix backslash escaping after strings The check whether a complex inline element following a string must be escaped, now depends on the last character of the string instead of the first. Fixes: #5906 --- src/Text/Pandoc/Writers/RST.hs | 4 ++-- test/Tests/Writers/RST.hs | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs index b299e6135..4a3b1b066 100644 --- a/src/Text/Pandoc/Writers/RST.hs +++ b/src/Text/Pandoc/Writers/RST.hs @@ -462,7 +462,7 @@ transformInlines = insertBS . okBeforeComplex Space = True okBeforeComplex SoftBreak = True okBeforeComplex LineBreak = True - okBeforeComplex (Str (T.uncons -> Just (c,_))) + okBeforeComplex (Str (T.unsnoc -> Just (_,c))) = isSpace c || c `elemText` "-:/'\"<([{–—" okBeforeComplex _ = False isComplex :: Inline -> Bool @@ -491,7 +491,7 @@ flatten outer combineAll = foldl combine [] combine :: [Inline] -> Inline -> [Inline] - combine f i = + combine f i = case (outer, i) of -- quotes are not rendered using RST inlines, so we can keep -- them and they will be readable and parsable diff --git a/test/Tests/Writers/RST.hs b/test/Tests/Writers/RST.hs index 8727b38be..e6377c02f 100644 --- a/test/Tests/Writers/RST.hs +++ b/test/Tests/Writers/RST.hs @@ -105,6 +105,9 @@ tests = [ testGroup "rubrics" , "keeps quotes" =: strong (str "f" <> doubleQuoted (str "d") <> str "l") =?> "**fā€œdā€l**" + , "backslash inserted between str and code" =: + str "/api?query=" <> code "foo" =?> + "/api?query=\\ ``foo``" ] , testGroup "headings" [ "normal heading" =: -- cgit v1.2.3