git.iko.soy/typeable/pandoc
on master help sign in
MediaWiki writer: spaces to underscores in wikilink URL.

This mimics MediaWiki itself. Closes #1982.

commit0b42eb5f581e04ba4ea4baca4d5256e81bc6310e authorJohn MacFarlane <jgm@berkeley.edu> dateSat 7 Mar 2015, 10:58 (12 years ago) parent48eaadc
1 file changed+8−2
src/Text/Pandoc/Readers/MediaWiki.hs+8−2
src/Text/Pandoc/Readers/MediaWiki.hs+8−2
@@ -593,11 +593,17 @@ imageOption =
593593 <|> try (many1 (oneOf "x0123456789") <* string "px")
594594 <|> try (oneOfStrings ["link=","alt=","page=","class="] <* many (noneOf "|]"))
595595
596+collapseUnderscores :: String -> String
597+collapseUnderscores [] = []
598+collapseUnderscores ('_':'_':xs) = collapseUnderscores ('_':xs)
599+collapseUnderscores (x:xs) = x : collapseUnderscores xs
600+
601+addUnderscores :: String -> String
602+addUnderscores = collapseUnderscores . intercalate "_" . words
603+
596604internalLink :: MWParser Inlines
597605internalLink = try $ do
598606 sym "[["
599− let addUnderscores x = let (pref,suff) = break (=='#') x
600− in pref ++ intercalate "_" (words suff)
601607 pagename <- unwords . words <$> many (noneOf "|]")
602608 label <- option (B.text pagename) $ char '|' *>
603609 ( (mconcat <$> many1 (notFollowedBy (char ']') *> inline))