@@ -30,8 +30,6 @@ Conversion of mediawiki text to 'Pandoc' document.
3030-}
3131{-
3232TODO:
33−_ support internal links http://www.mediawiki.org/wiki/Help:Links
34−_ support external links (partially implemented)
3533_ support images http://www.mediawiki.org/wiki/Help:Images
3634_ support tables http://www.mediawiki.org/wiki/Help:Tables
3735- footnotes?
@@ -51,7 +49,7 @@ import Text.Pandoc.Shared ( stripTrailingNewlines, safeRead )
5149import Data.Monoid (mconcat, mempty)
5250import Control.Applicative ((<$>), (<*), (*>), (<$))
5351import Control.Monad
54−import Data.List (intersperse)
52+import Data.List (intersperse, intercalate )
5553import Text.HTML.TagSoup
5654import Data.Sequence (viewl, ViewL(..), (<|))
5755
@@ -379,6 +377,8 @@ endline = () <$ try (newline <*
379377internalLink :: MWParser Inlines
380378internalLink = try $ do
381379 string "[["
380+ let addUnderscores x = let (pref,suff) = break (=='#') x
381+ in pref ++ intercalate "_" (words suff)
382382 pagename <- unwords . words <$> many (noneOf "|]")
383383 label <- option (B.text pagename) $ char '|' *>
384384 ( (mconcat <$> many1 (notFollowedBy (char ']') *> inline))
@@ -387,7 +387,7 @@ internalLink = try $ do
387387 <|> (return $ B.text $ drop 1 $ dropWhile (/=':') pagename) )
388388 string "]]"
389389 linktrail <- B.text <$> many (char '\'' <|> letter)
390− return $ B.link pagename "wikilink" (label <> linktrail)
390+ return $ B.link (addUnderscores pagename) "wikilink" (label <> linktrail)
391391
392392externalLink :: MWParser Inlines
393393externalLink = try $ do