MediaWiki writer: prevent triple [[[.

This confuses mediawiki's parser.  So we insert a `<nowiki/>`
no-op between a literal `[` and a link.  Closes #6119.
This commit is contained in:
John MacFarlane 2020-02-05 10:08:18 -08:00
parent 9c4dc8b49b
commit 0a4f49d370
2 changed files with 21 additions and 1 deletions

View file

@ -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") "<nowiki/>" : 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

10
test/command/6119.md Normal file
View file

@ -0,0 +1,10 @@
```
% pandoc -t mediawiki
[[link](url)]
[![image](url)]
^D
[<nowiki/>[[url|link]]]
[<nowiki/>[[File:url|image]]]
```