packages feed

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 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/") ]