From 0a4f49d3703bfb7016800148059206482278eeb6 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Wed, 5 Feb 2020 10:08:18 -0800 Subject: MediaWiki writer: prevent triple `[[[`. This confuses mediawiki's parser. So we insert a `` no-op between a literal `[` and a link. Closes #6119. --- src/Text/Pandoc/Writers/MediaWiki.hs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/Text/Pandoc/Writers/MediaWiki.hs b/src/Text/Pandoc/Writers/MediaWiki.hs index ad292200c..d63c9de2e 100644 --- a/src/Text/Pandoc/Writers/MediaWiki.hs +++ b/src/Text/Pandoc/Writers/MediaWiki.hs @@ -347,7 +347,17 @@ blockListToMediaWiki blocks = -- | Convert list of Pandoc inline elements to MediaWiki. inlineListToMediaWiki :: PandocMonad m => [Inline] -> MediaWikiWriter m Text inlineListToMediaWiki lst = - fmap T.concat $ mapM inlineToMediaWiki lst + fmap T.concat $ mapM inlineToMediaWiki $ fixup lst + where + fixup [] = [] + fixup (Str t : x : xs) + | not (T.null t) && T.last t == '[' + , isLinkOrImage x = + Str t : RawInline (Format "mediawiki") "" : x : fixup xs + fixup (x:xs) = x : fixup xs + isLinkOrImage (Link{}) = True + isLinkOrImage (Image{}) = True + isLinkOrImage _ = False -- | Convert Pandoc inline element to MediaWiki. inlineToMediaWiki :: PandocMonad m => Inline -> MediaWikiWriter m Text -- cgit v1.2.3