gitit 0.10.1.2 → 0.10.2
raw patch · 7 files changed
+107/−59 lines, 7 filesdep ~pandocdep ~pandoc-typesPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: pandoc, pandoc-types
API changes (from Hackage documentation)
Files
- CHANGES +13/−0
- Network/Gitit/Config.hs +1/−1
- Network/Gitit/ContentTransformer.hs +13/−5
- Network/Gitit/Export.hs +32/−21
- Network/Gitit/Initialize.hs +11/−7
- gitit.cabal +5/−5
- plugins/Interwiki.hs +32/−20
CHANGES view
@@ -1,3 +1,16 @@+Version 0.10.2 released 09 Feb 2013++* Updated to work with pandoc 1.10.++* Fixed path for MathMLInHTML.js script. Closes #345.+ Thanks to tstgruby.++* Updated interwiki plugin (gwern).++* Made it possible to export pages with images stored in the+ repository itself (as opposed to the static directory). Thanks+ to Claudio Bley for the patch.+ Version 0.10.1.2 released 11 Jan 2013 * Fixed regression in option parsing. An earlier patch
Network/Gitit/Config.hs view
@@ -110,7 +110,7 @@ let (pt, lhs) = parsePageType cfDefaultPageType let markupHelpFile = show pt ++ if lhs then "+LHS" else "" markupHelpPath <- liftIO $ getDataFileName $ "data" </> "markupHelp" </> markupHelpFile- markupHelpText <- liftM (writeHtmlString defaultWriterOptions . readMarkdown defaultParserState) $+ markupHelpText <- liftM (writeHtmlString def . readMarkdown def) $ liftIO $ readFileUTF8 markupHelpPath mimeMap' <- liftIO $ readMimeTypesFile cfMimeTypesFile
Network/Gitit/ContentTransformer.hs view
@@ -88,7 +88,6 @@ import Text.HTML.SanitizeXSS (sanitizeBalance) import Text.Highlighting.Kate import Text.Pandoc hiding (MathML, WebTeX, MathJax)-import Text.Pandoc.Shared (ObfuscationMethod(..)) import Text.XHtml hiding ( (</>), dir, method, password, rev ) #if MIN_VERSION_blaze_html(0,5,0) import Text.Blaze.Html.Renderer.String as Blaze ( renderHtml )@@ -96,10 +95,12 @@ import Text.Blaze.Renderer.String as Blaze ( renderHtml ) #endif import qualified Data.Text as T+import qualified Data.Set as Set import qualified Data.ByteString as S (concat) import qualified Data.ByteString.Lazy as L (toChunks, fromChunks) import qualified Data.FileStore as FS import qualified Text.Pandoc as Pandoc+ -- -- ContentTransformer runners --@@ -346,7 +347,7 @@ cfg <- lift getConfig return $ primHtml $ T.unpack . (if xssSanitize cfg then sanitizeBalance else id) . T.pack $- writeHtmlString defaultWriterOptions{+ writeHtmlString def{ writerStandalone = True , writerTemplate = "$if(toc)$<div id=\"TOC\">\n$toc$\n</div>\n$endif$\n$body$" , writerHTMLMathMethod =@@ -357,7 +358,11 @@ _ -> JsMath (Just $ base' ++ "/js/jsMath/easy/load.js") , writerTableOfContents = toc- , writerLiterateHaskell = bird+ , writerExtensions = if bird+ then Set.insert+ Ext_literate_haskell+ $ writerExtensions def+ else writerExtensions def -- note: javascript obfuscation gives problems on preview , writerEmailObfuscation = ReferenceObfuscation } pandocContents@@ -500,8 +505,11 @@ readerFor :: PageType -> Bool -> String -> Pandoc readerFor pt lhs =- let defPS = defaultParserState{ stateSmart = True- , stateLiterateHaskell = lhs }+ let defPS = def{ readerSmart = True+ , readerExtensions = if lhs+ then Set.insert Ext_literate_haskell+ $ readerExtensions def+ else readerExtensions def } in case pt of RST -> readRST defPS Markdown -> readMarkdown defPS
Network/Gitit/Export.hs view
@@ -23,7 +23,7 @@ import Text.Pandoc hiding (HTMLMathMethod(..)) import qualified Text.Pandoc as Pandoc import Text.Pandoc.SelfContained as SelfContained-import Text.Pandoc.Shared (escapeStringUsing, readDataFile)+import Text.Pandoc.Shared (escapeStringUsing, readDataFileUTF8) import Network.Gitit.Server import Network.Gitit.Framework (pathForPage, getWikiBase) import Network.Gitit.Util (withTempDir, readFileUTF8)@@ -41,15 +41,18 @@ import System.Environment (getEnvironment) import System.Exit (ExitCode(..)) import System.IO (openTempFile)-import System.Directory (getCurrentDirectory, setCurrentDirectory, removeFile)+import System.Directory (getCurrentDirectory, setCurrentDirectory, removeFile,+ doesFileExist) import System.Process (runProcess, waitForProcess) import Codec.Binary.UTF8.String (encodeString) import Text.HTML.SanitizeXSS+import Text.Pandoc.Writers.RTF (writeRTFWithEmbeddedImages) import qualified Data.Text as T import Data.List (isPrefixOf)+import Paths_gitit (getDataFileName) defaultRespOptions :: WriterOptions-defaultRespOptions = defaultWriterOptions { writerStandalone = True }+defaultRespOptions = def { writerStandalone = True } respond :: String -> String@@ -74,13 +77,10 @@ doc' <- if ext `elem` ["odt","pdf","epub","docx","rtf"] then fixURLs page doc else return doc- doc'' <- if ext == "rtf"- then liftIO $ bottomUpM rtfEmbedImage doc'- else return doc' respond mimetype ext (fn opts{writerTemplate = template ,writerSourceDirectory = repositoryPath cfg ,writerUserDataDir = pandocUserData cfg})- page doc''+ page doc' respondS :: String -> String -> String -> (WriterOptions -> Pandoc -> String) -> WriterOptions -> String -> Pandoc -> Handler@@ -114,8 +114,8 @@ $ T.pack body' variables' <- if mathMethod cfg == MathML then do- s <- liftIO $ readDataFile (pandocUserData cfg) $- "data"</>"MathMLinHTML.js"+ s <- liftIO $ readDataFileUTF8 (pandocUserData cfg)+ "MathMLinHTML.js" return [("mathml-script", s)] else return [] template' <- liftIO $ getDefaultTemplate (pandocUserData cfg) templ@@ -124,7 +124,7 @@ Left e -> liftIO $ throwIO e dzcore <- if templ == "dzslides" then do- dztempl <- liftIO $ readDataFile (pandocUserData cfg)+ dztempl <- liftIO $ readDataFileUTF8 (pandocUserData cfg) $ "dzslides" </> "template.html" return $ unlines $ dropWhile (not . isPrefixOf "<!-- {{{{ dzslides core")@@ -152,8 +152,8 @@ respondRTF :: String -> Pandoc -> Handler-respondRTF = respondS "rtf" "application/rtf" "rtf"- writeRTF defaultRespOptions+respondRTF = respondX "rtf" "application/rtf" "rtf"+ (\o d -> fromString `fmap` writeRTFWithEmbeddedImages o d) defaultRespOptions respondRST :: String -> Pandoc -> Handler respondRST = respondS "rst" "text/plain; charset=utf-8" ""@@ -197,16 +197,16 @@ respondODT :: String -> Pandoc -> Handler respondODT = respondX "opendocument" "application/vnd.oasis.opendocument.text"- "odt" (writeODT Nothing) defaultRespOptions+ "odt" writeODT defaultRespOptions respondEPUB :: String -> Pandoc -> Handler-respondEPUB = respondX "html" "application/epub+zip" "epub" (writeEPUB Nothing [])+respondEPUB = respondX "html" "application/epub+zip" "epub" writeEPUB defaultRespOptions respondDocx :: String -> Pandoc -> Handler respondDocx = respondX "native" "application/vnd.openxmlformats-officedocument.wordprocessingml.document"- "docx" (writeDocx Nothing) defaultRespOptions+ "docx" writeDocx defaultRespOptions --- | Run shell command and return error status. Assumes -- UTF-8 locale. Note that this does not actually go through \/bin\/sh!@@ -276,16 +276,27 @@ -- images in the staticDir with their correct absolute file path. fixURLs :: String -> Pandoc -> GititServerPart Pandoc fixURLs page pndc = do- curdir <- liftIO getCurrentDirectory cfg <- getConfig+ defaultStatic <- liftIO $ getDataFileName $ "data" </> "static" - let go (Image ils (url, title)) = Image ils (fixURL url, title)- go x = x+ let static = staticDir cfg+ let repoPath = repositoryPath cfg - fixURL ('/':url) = curdir </> staticDir cfg </> url- fixURL url = curdir </> repositoryPath cfg </> takeDirectory page </> url+ let go (Image ils (url, title)) = do+ fixedURL <- fixURL url+ return $ Image ils (fixedURL, title)+ go x = return x - return $ bottomUp go pndc+ fixURL ('/':url) = resolve url+ fixURL url = resolve $ takeDirectory page </> url++ resolve p = do+ sp <- doesFileExist $ static </> p+ dsp <- doesFileExist $ defaultStatic </> p+ return (if sp then static </> p+ else (if dsp then defaultStatic </> p+ else repoPath </> p))+ liftIO $ bottomUpM go pndc exportFormats :: Config -> [(String, String -> Pandoc -> Handler)] exportFormats cfg = if pdfExport cfg
Network/Gitit/Initialize.hs view
@@ -27,6 +27,7 @@ import System.FilePath ((</>), (<.>)) import Data.FileStore import qualified Data.Map as M+import qualified Data.Set as Set import Network.Gitit.Util (readFileUTF8) import Network.Gitit.Types import Network.Gitit.State@@ -118,13 +119,16 @@ let fs = filestoreFromConfig conf pt = defaultPageType conf toPandoc = readMarkdown- defaultParserState{ stateSmart = True }- defOpts = defaultWriterOptions{- writerStandalone = False- , writerHTMLMathMethod = JsMath- (Just "/js/jsMath/easy/load.js")- , writerLiterateHaskell = showLHSBirdTracks conf- }+ def{ readerSmart = True }+ defOpts = def{ writerStandalone = False+ , writerHTMLMathMethod = JsMath+ (Just "/js/jsMath/easy/load.js")+ , writerExtensions = if showLHSBirdTracks conf+ then Set.insert+ Ext_literate_haskell+ $ writerExtensions def+ else writerExtensions def+ } -- note: we convert this (markdown) to the default page format converter = case defaultPageType conf of Markdown -> id
gitit.cabal view
@@ -1,5 +1,5 @@ name: gitit-version: 0.10.1.2+version: 0.10.2 Cabal-version: >= 1.6 build-type: Simple synopsis: Wiki using happstack, git or darcs, and pandoc.@@ -117,8 +117,8 @@ exposed-modules: Network.Gitit.Interface build-depends: ghc, ghc-paths cpp-options: -D_PLUGINS- build-depends: base >= 3, pandoc >= 1.9.0.5 && < 1.10,- pandoc-types >= 1.9.0.2 && < 1.10, filepath, safe+ build-depends: base >= 3, pandoc >= 1.10.0.5 && < 1.11,+ pandoc-types >= 1.10 && < 1.11, filepath, safe extensions: CPP if impl(ghc >= 6.12) ghc-options: -Wall -fno-warn-unused-do-bind@@ -134,8 +134,8 @@ pretty, xhtml, containers,- pandoc >= 1.9.0.5 && < 1.10,- pandoc-types >= 1.9.0.2 && < 1.10,+ pandoc >= 1.10.0.5 && < 1.11,+ pandoc-types >= 1.10 && < 1.11, process, filepath, directory,
plugins/Interwiki.hs view
@@ -61,24 +61,20 @@ ("Hoogle", "http://www.haskell.org/hoogle/?hoogle=")] -- This mapping is derived from <https://secure.wikimedia.org/wikipedia/meta/wiki/Interwiki_map>--- as of 5:18 PM, 6 February 2012.-wpInterwikiMap = [ ("AbbeNormal", "http://ourpla.net/cgi/pikie?"),- ("AIWiki", "http://www.ifi.unizh.ch/ailab/aiwiki/aiw.cgi?"),+-- as of 6:12 PM, 6 February 2013.+wpInterwikiMap = [ ("AbbeNormal", "http://johnabbe.wagn.org/"), ("Acronym", "http://www.acronymfinder.com/af-query.asp?String=exact&Acronym="), ("Advisory", "http://advisory.wikimedia.org/wiki/"), ("Advogato", "http://www.advogato.org/"), ("Aew", "http://wiki.arabeyes.org/"),- ("Airwarfare", "http://airwarfare.com/mediawiki-1.4.5/index.php?"), ("AllWiki", "http://allwiki.com/index.php/"), ("Appropedia", "http://www.appropedia.org/"), ("AquariumWiki", "http://www.theaquariumwiki.com/"), ("AspieNetWiki", "http://aspie.mela.de/index.php/"), ("AtmWiki", "http://www.otterstedt.de/wiki/index.php/"), ("BCNbio", "http://historiapolitica.bcn.cl/resenas_parlamentarias/wiki/"),- ("BEMI", "http://bemi.free.fr/vikio/index.php?"), ("BLW", "http://britainloveswikipedia.org/wiki/"), ("BattlestarWiki", "http://en.battlestarwiki.org/wiki/"),- ("BenefitsWiki", "http://www.benefitslink.com/cgi-bin/wiki.cgi?"), ("BibleWiki", "http://bible.tmtm.com/wiki/"), ("BluWiki", "http://bluwiki.com/go/"), ("Botwiki", "http://botwiki.sno.cc/wiki/"),@@ -87,12 +83,8 @@ ("Bytesmiths", "http://www.Bytesmiths.com/wiki/"), ("C2", "http://c2.com/cgi/wiki?"), ("C2find", "http://c2.com/cgi/wiki?FindPage&value="),- ("CANWiki", "http://www.can-wiki.info/"), ("CKWiss", "http://ck-wissen.de/ckwiki/index.php?title="),- ("CNDbName", "http://cndb.com/actor.html?name="),- ("CNDbTitle", "http://cndb.com/movie.html?title="), ("Cache", "http://www.google.com/search?q=cache:"),- ("CanyonWiki", "http://www.canyonwiki.com/wiki/index.php/"), ("CellWiki", "http://cell.wikia.com/wiki/"), ("CentralWikia", "http://community.wikia.com/wiki/"), ("ChEJ", "http://esperanto.blahus.cz/cxej/vikio/index.php/"),@@ -111,12 +103,11 @@ ("DCDatabase", "http://dc.wikia.com/"), ("DCMA", "http://www.christian-morgenstern.de/dcma/"), ("DOI", "http://dx.doi.org/"),- ("DRAE", "http://buscon.rae.es/draeI/SrvltGUIBusUsual?LEMA="),+ ("DRAE", "http://lema.rae.es/drae/?val="), ("DWJWiki", "http://www.suberic.net/cgi-bin/dwj/wiki.cgi?"), ("Dcc", "http://www.dccwiki.com/"), ("DejaNews", "http://www.deja.com/=dnc/getdoc.xp?AN="), ("Delicious", "http://www.delicious.com/tag/"),- ("Demokraatia", "http://wiki.demokraatia.ee/index.php/"), ("Devmo", "https://developer.mozilla.org/en/docs/"), ("Dict", "http://www.dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query="), ("Dictionary", "http://www.dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query="),@@ -126,7 +117,6 @@ ("Dreamhost", "http://wiki.dreamhost.com/index.php/"), ("DrumCorpsWiki", "http://www.drumcorpswiki.com/index.php/"), ("ELibre", "http://enciclopedia.us.es/index.php/"),- ("EcheI", "http://www.ikso.net/cgi-bin/wiki.pl?"), ("EcoReality", "http://www.EcoReality.org/wiki/"), ("EcxeI", "http://www.ikso.net/cgi-bin/wiki.pl?"), ("EmacsWiki", "http://www.emacswiki.org/cgi-bin/wiki.pl?"),@@ -147,7 +137,7 @@ ("FlickrUser", "http://www.flickr.com/people/"), ("FloralWIKI", "http://www.floralwiki.co.uk/wiki/"), ("FlyerWiki-de", "http://de.flyerwiki.net/index.php/"),- ("Foldoc", "http://www.foldoc.org/"),+ ("Foldoc", "http://foldoc.org/"), ("ForthFreak", "http://wiki.forthfreak.net/index.cgi?"), ("Foundation", "http://wikimediafoundation.org/wiki/"), ("FoxWiki", "http://fox.wikis.com/wc.dll?Wiki~"),@@ -162,6 +152,8 @@ ("GaussWiki", "http://gauss.ffii.org/"), ("GenWiki", "http://wiki.genealogy.net/index.php/"), ("Gentoo-Wiki", "http://gentoo-wiki.com/"),+ ("Gerrit", "https://gerrit.wikimedia.org/r/"),+ ("Git", "https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/a=log;h=refs/heads/master;"), ("GlobalVoices", "http://cyber.law.harvard.edu/dyn/globalvoices/wiki/"), ("GlossarWiki", "http://glossar.hs-augsburg.de/"), ("GlossaryWiki", "http://glossary.hs-augsburg.de/"),@@ -176,13 +168,13 @@ ("HRFWiki", "http://fanstuff.hrwiki.org/index.php/"), ("HRWiki", "http://www.hrwiki.org/index.php/"), ("HammondWiki", "http://www.dairiki.org/HammondWiki/index.php3?"),- ("HerzKinderWiki", "http://www.herzkinderinfo.de/Mediawiki/index.php/"), ("HupWiki", "http://wiki.hup.hu/index.php/"), ("IMDbCharacter", "http://www.imdb.com/character/ch/"), ("IMDbCompany", "http://www.imdb.com/company/co/"), ("IMDbName", "http://www.imdb.com/name/nm/"), ("IMDbTitle", "http://www.imdb.com/title/tt/"), ("IRC", "http://www.sil.org/iso639-3/documentation.asp?id="),+ ("ISSN", "http://www.worldcat.org/issn/"), ("Incubator", "http://incubator.wikimedia.org/wiki/"), ("Infosecpedia", "http://infosecpedia.org/wiki/"), ("Infosphere", "http://theinfosphere.org/"),@@ -234,6 +226,7 @@ ("MozillaWiki", "https://wiki.mozilla.org/"), ("MozillaZineKB", "http://kb.mozillazine.org/"), ("MusicBrainz", "http://musicbrainz.org/doc/"),+ ("NARA", "http://research.archives.gov/description/"), ("NKcells", "http://www.nkcells.info/wiki/index.php/"), ("NoSmoke", "http://no-smok.net/nsmk/"), ("Nost", "http://nostalgia.wikipedia.org/wiki/"),@@ -308,6 +301,7 @@ ("TclersWiki", "http://wiki.tcl.tk/"), ("Technorati", "http://www.technorati.com/search/"), ("Tenwiki", "http://ten.wikipedia.org/wiki/"),+ ("Test2wiki", "//test2.wikipedia.org/wiki/"), ("Testwiki", "http://test.wikipedia.org/wiki/"), ("Thelemapedia", "http://www.thelemapedia.org/index.php/"), ("Theopedia", "http://www.theopedia.com/"),@@ -323,12 +317,13 @@ ("Unreal", "http://wiki.beyondunreal.com/wiki/"), ("Urbandict", "http://www.urbandictionary.com/define.php?term="), ("UseMod", "http://www.usemod.com/cgi-bin/wiki.pl?"),+ ("VIAF", "http://viaf.org/viaf/"), ("VKoL", "http://kol.coldfront.net/thekolwiki/index.php/"), ("VLOS", "http://www.thuvienkhoahoc.com/tusach/"),- ("ValueWiki", "http://www.valuewiki.com/w/"), ("Vinismo", "http://vinismo.com/en/"), ("VoIPinfo", "http://www.voip-info.org/wiki/view/"), ("WLUG", "http://www.wlug.org.nz/"),+ ("WMDEblog", "//blog.wikimedia.de/"), ("WMF", "http://wikimediafoundation.org/wiki/"), ("WMFblog", "http://blog.wikimedia.org/"), ("Webisodes", "http://www.webisodes.org/"),@@ -351,7 +346,8 @@ ("Wikichat", "http://www.wikichat.org/"), ("Wikicities", "http://www.wikia.com/wiki/"), ("Wikicity", "http://www.wikia.com/wiki/c:"),- ("Wikilivres", "http://wikilivres.info/wiki/"),+ ("Wikidata", "//wikidata.org/wiki/"),+ ("Wikilivres", "http://wikilivres.ca/wiki/"), ("Wikimedia", "http://wikimediafoundation.org/wiki/"), ("Wikinews", "http://en.wikinews.org/wiki/"), ("Wikinfo", "http://www.wikinfo.org/index.php/"),@@ -366,6 +362,7 @@ ("Wikispot", "http://wikispot.org/?action=gotowikipage&v="), ("Wikitech", "http://wikitech.wikimedia.org/view/"), ("Wikiversity", "http://en.wikiversity.org/wiki/"),+ ("Wikivoyage", "//en.wikivoyage.org/wiki/"), ("Wiktionary", "http://en.wiktionary.org/wiki/"), ("Wipipedia", "http://www.londonfetishscene.com/wipi/index.php/"), ("Wm2005", "http://wikimania2005.wikimedia.org/wiki/"),@@ -376,11 +373,11 @@ ("Wm2010", "http://wikimania2010.wikimedia.org/wiki/"), ("Wm2011", "http://wikimania2011.wikimedia.org/wiki/"), ("Wm2011", "http://wikimania2011.wikimedia.org/wiki/"),+ ("Wm2013", "//wikimania2013.wikimedia.org/wiki/"), ("Wmania", "http://wikimania.wikimedia.org/wiki/"), ("Wmteam", "http://wikimaniateam.wikimedia.org/wiki/"), ("WoWWiki", "http://www.wowwiki.com/"), ("Wookieepedia", "http://starwars.wikia.com/wiki/"),- ("World66", "http://www.world66.com/"), ("Wqy", "http://wqy.sourceforge.net/cgi-bin/index.cgi?"), ("WurmPedia", "http://www.wurmonline.com/wiki/index.php/"), ("ZRHwiki", "http://www.zrhwiki.ch/wiki/"),@@ -404,6 +401,7 @@ ("gutenbergwiki", "http://www.gutenberg.org/wiki/"), ("heroeswiki", "http://heroeswiki.com/"), ("infoAnarchy", "http://www.infoanarchy.org/en/"),+ ("labsconsole", "https://labsconsole.wikimedia.org/wiki/"), ("lyricwiki", "http://lyrics.wikia.com/"), ("mailarchive", "http://lists.wikimedia.org/pipermail/"), ("nostalgia", "http://nostalgia.wikipedia.org/wiki/"),@@ -416,7 +414,6 @@ ("semantic-mw", "http://www.semantic-mediawiki.org/wiki/"), ("silcode", "http://www.sil.org/iso639-3/documentation.asp?id="), ("spcom", "http://spcom.wikimedia.org/wiki/"),- ("stable", "http://stable.toolserver.org/"), ("stats", "http://stats.wikimedia.org/"), ("svn", "http://svn.wikimedia.org/viewvc/mediawiki/?view=log"), ("translatewiki", "http://translatewiki.net/wiki/"),@@ -427,13 +424,19 @@ ("wikisophia", "http://wikisophia.org/index.php?title="), ("wmar", "http://www.wikimedia.org.ar/wiki/"), ("wmau", "http://wikimedia.org.au/wiki/"),+ ("wmbd", "//bd.wikimedia.org/wiki/"), ("wmbe", "http://be.wikimedia.org/wiki/"), ("wmbr", "http://br.wikimedia.org/wiki/"), ("wmca", "http://wikimedia.ca/wiki/"), ("wmch", "http://www.wikimedia.ch/"),+ ("wmcl", "http://www.wikimediachile.cl/index.php?title="),+ ("wmco", "//co.wikimedia.org/wiki/"), ("wmcz", "http://meta.wikimedia.org/wiki/Wikimedia_Czech_Republic/"), ("wmdc", "http://wikimediadc.org/wiki/"), ("wmde", "http://wikimedia.de/wiki/"),+ ("wmdk", "//dk.wikimedia.org/wiki/"),+ ("wmee", "//et.wikimedia.org/wiki/"),+ ("wmet", "//et.wikimedia.org/wiki/"), ("wmfi", "http://fi.wikimedia.org/wiki/"), ("wmfr", "http://wikimedia.fr/"), ("wmhk", "http://wikimedia.hk/index.php/"),@@ -441,16 +444,25 @@ ("wmid", "http://www.wikimedia.or.id/wiki/"), ("wmil", "http://www.wikimedia.org.il/"), ("wmin", "http://wiki.wikimedia.in/"),- ("wmit", "http://wikimedia.it/index.php/"),+ ("wmit", "http://wiki.wikimedia.it/wiki/"),+ ("wmke", "http://wikimedia.or.ke/"),+ ("wmmk", "//mk.wikimedia.org/wiki/"), ("wmmx", "http://mx.wikimedia.org/wiki/"), ("wmnl", "http://nl.wikimedia.org/wiki/"), ("wmno", "http://no.wikimedia.org/wiki/"), ("wmnyc", "http://nyc.wikimedia.org/wiki/"),+ ("wmpa-us", "http://pa.us.wikimedia.org/wiki/"),+ ("wmph", "http://www.wikimedia.ph/wmph/index.php?title="), ("wmpl", "http://pl.wikimedia.org/wiki/"),+ ("wmpt", "http://wikimedia.pt/"), ("wmrs", "http://rs.wikimedia.org/wiki/"), ("wmru", "http://ru.wikimedia.org/wiki/"), ("wmse", "http://se.wikimedia.org/wiki/"),+ ("wmtr", "//tr.wikimedia.org/wiki/"), ("wmtw", "http://wikimedia.tw/wiki/index.php5/"),+ ("wmua", "//ua.wikimedia.org/wiki/"), ("wmuk", "http://uk.wikimedia.org/wiki/"),+ ("wmve", "http://wikimedia.org.ve/index.php/"),+ ("wmza", "http://wikimedia.org.za/wiki/"), ("ĈEJ", "http://esperanto.blahus.cz/cxej/vikio/index.php/"), ("ZZZ", "http://wiki.zzz.ee/index.php/") ]