git.iko.soy/typeable/pandoc
on master help sign in
MediaWiki reader: internal links.
commita0d7b3f37be8f000b8651a898bacfeb9e7b4da87 authorJohn MacFarlane <jgm@berkeley.edu> dateThu 13 Sep 2012, 17:06 (14 years ago) parentfc2f7a4
3 files changed+10−4
src/Text/Pandoc/Readers/MediaWiki.hs+4−4 tests/mediawiki-reader.native+2 tests/mediawiki-reader.wiki+4
src/Text/Pandoc/Readers/MediaWiki.hs+4−4
@@ -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
tests/mediawiki-reader.native+2
@@ -80,6 +80,8 @@ Pandoc (Meta {docTitle = [], docAuthors = [], docDate = []})
8080,Para [Link [Str "Helpers"] ("Help","wikilink")]
8181,Para [Link [Str "Help"] ("Help","wikilink"),Str "ers"]
8282,Para [Link [Str "Contents"] ("Help:Contents","wikilink")]
83+,Para [Link [Str "#My",Space,Str "anchor"] ("#My_anchor","wikilink")]
84+,Para [Link [Str "and",Space,Str "text"] ("Page#with_anchor","wikilink")]
8385,Header 2 [Str "lists"]
8486,BulletList
8587 [[Plain [Str "Start",Space,Str "each",Space,Str "line"]]
tests/mediawiki-reader.wiki+4
@@ -159,6 +159,10 @@ http://johnmacfarlane.net/pandoc/
159159
160160[[Help:Contents|]]
161161
162+[[#My anchor]]
163+
164+[[Page#with anchor|and text]]
165+
162166== lists ==
163167
164168* Start each line