CINXE.COM

Module:Countries - Wikimedia Commons

<!DOCTYPE html> <html class="client-nojs" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Module:Countries - Wikimedia Commons</title> <script>(function(){var className="client-js";var cookie=document.cookie.match(/(?:^|; )commonswikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"6c68df2b-06e9-463e-9210-642e64bb1dc6","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Module:Countries","wgTitle":"Countries","wgCurRevisionId":586574659,"wgRevisionId":586574659,"wgArticleId":62028240,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"], "wgCategories":["Heavily used modules","Modules for general use"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"Scribunto","wgRelevantPageName":"Module:Countries","wgRelevantArticleId":62028240,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["templateeditor"],"wgRestrictionMove":["templateeditor"],"wgNoticeProject":"commons","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":false,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":30000,"upwizPropertyTitles":{"P180":"Main subjects visible in this work"},"upwizPropertyPlaceholders":{"P180":"e.g., Angolan giraffe"},"upwizPropertyCopyLabels":{"P180":"Main subjects"},"wgEditSubmitButtonLabelPublish":true,"wgULSPosition": "personal","wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q94334052","wbmiDefaultProperties":["P180"],"wbmiPropertyTitles":{"P180":"Items portrayed in this file"},"wbmiPropertyTypes":{"P180":"wikibase-item"},"wbmiRepoApiUrl":"/w/api.php","wbmiHelpUrls":{"P180":"https://commons.wikimedia.org/wiki/Special:MyLanguage/Commons:Depicts"},"wbmiExternalEntitySearchBaseUri":"https://www.wikidata.org/w/api.php","wbmiSupportedDataTypes":["wikibase-item","string","quantity","time","monolingualtext","external-id","globe-coordinate","url"],"wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"]};RLSTATE={"ext.gadget.Long-Image-Names-in-Categories":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.pygments":"ready", "skins.vector.styles.legacy":"ready","jquery.tablesorter.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","codex-search-styles":"ready","ext.uls.pt":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","jquery.tablesorter","mediawiki.toc","skins.vector.legacy.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.Slideshow","ext.gadget.ZoomViewer","ext.gadget.CollapsibleTemplates","ext.gadget.fastcci","ext.gadget.Stockphoto","ext.gadget.WatchlistNotice","ext.gadget.AjaxQuickDelete","ext.gadget.WikiMiniAtlas","ext.gadget.LanguageSelect","ext.gadget.PictureOfTheYearEnhancements","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.wikimediaEvents.wikibase","ext.navigationTiming","ext.uls.compactlinks" ,"ext.uls.interface","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=codex-search-styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.pt%7Cext.visualEditor.desktopArticleTarget.noscript%7Cjquery.tablesorter.styles%7Cskins.vector.styles.legacy%7Cwikibase.client.init&amp;only=styles&amp;skin=vector"> <script async="" src="/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=ext.gadget.Long-Image-Names-in-Categories&amp;only=styles&amp;skin=vector"> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector"> <meta name="generator" content="MediaWiki 1.44.0-wmf.5"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Module:Countries - Wikimedia Commons"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//commons.m.wikimedia.org/wiki/Module:Countries"> <link rel="apple-touch-icon" href="/static/apple-touch/commons.png"> <link rel="icon" href="/static/favicon/commons.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikimedia Commons"> <link rel="EditURI" type="application/rsd+xml" href="//commons.wikimedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://commons.wikimedia.org/wiki/Module:Countries"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"> <link rel="alternate" type="application/atom+xml" title="Wikimedia Commons Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin-vector-legacy mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject page-Module_Countries rootpage-Module_Countries skin-vector action-view"><div id="mw-page-base" class="noprint"></div> <div id="mw-head-base" class="noprint"></div> <div id="content" class="mw-body" role="main"> <a id="top"></a> <div id="siteNotice"><!-- CentralNotice --></div> <div class="mw-indicators"> </div> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-namespace">Module</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">Countries</span></h1> <div id="bodyContent" class="vector-body"> <div id="siteSub" class="noprint">From Wikimedia Commons, the free media repository</div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="contentSub2"></div> <div id="jump-to-nav"></div> <a class="mw-jump-link" href="#mw-head">Jump to navigation</a> <a class="mw-jump-link" href="#searchInput">Jump to search</a> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div style="float:right"><div style="position:relative"> <div style="width:100px;height:100px;border-radius: 50%;;background-color:#19198A"></div> <div style="position:absolute;top:40px;color:#fff;font-family:Helvetica,Arial,sans-serif;font-weight:bold;font-size:52.5px;line-height:52.5px;">Lua</div> <div style="width:26.7px;height:26.7px;border-radius: 50%;;background-color:#fff;position:absolute;top:13.138699525547px;left:60.161300474453px"></div> </div></div><p><span class="plainlinks"> <a class="mw-selflink-fragment" href="#com-module-code"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:o-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:-webkit-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:linear-gradient(to bottom,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:o-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:-webkit-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:linear-gradient(to bottom,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);; padding:.8em;">Code</span></span></a><a href="/wiki/Module_talk:Countries" title="Module talk:Countries"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:o-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:-webkit-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:linear-gradient(to bottom,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:o-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:-webkit-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:linear-gradient(to bottom,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);; padding:.8em;">Discussion</span></span></a><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Module:Countries&amp;action=edit"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:o-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:-webkit-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:linear-gradient(to bottom,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:o-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:-webkit-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:linear-gradient(to bottom,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);; padding:.8em;">Edit</span></span></a><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Module:Countries&amp;action=history"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:o-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:-webkit-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:linear-gradient(to bottom,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:o-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:-webkit-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:linear-gradient(to bottom,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);; padding:.8em;">History</span></span></a><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special:WhatLinksHere/:Module:Countries&amp;limit=999"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:o-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:-webkit-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:linear-gradient(to bottom,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:o-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:-webkit-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:linear-gradient(to bottom,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);; padding:.8em;">Links</span></span></a><a class="external text" href="https://tools.wmflabs.org/templatecount/index.php?lang=commons&amp;namespace=828&amp;name=Countries"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:o-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:-webkit-linear-gradient(top,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);background-image:linear-gradient(to bottom,#d9dcdd 0%, #bfc7cc 50%, #aab8bf 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:o-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:-webkit-linear-gradient(top,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);background-image:linear-gradient(to bottom,#f2f6f8 0%, #d8e1e7 50%, #c3d4dd 100%);; padding:.8em;">Link count</span></span></a> <a href="/wiki/Special:PrefixIndex/Module:Countries" title="Special:PrefixIndex/Module:Countries"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:o-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:-webkit-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:linear-gradient(to bottom,#c4ceb9 0%, #a8b79a 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:o-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:-webkit-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:linear-gradient(to bottom,#ebf7de 0%, #cee0bc 100%);; padding:.8em;">Subpages&#58;</span></span></a><a href="/wiki/Special:MyLanguage/Module:Countries/doc" title="Special:MyLanguage/Module:Countries/doc"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:o-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:-webkit-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:linear-gradient(to bottom,#c4ceb9 0%, #a8b79a 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:o-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:-webkit-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:linear-gradient(to bottom,#ebf7de 0%, #cee0bc 100%);; padding:.8em;">Documentation</span></span></a><a href="/w/index.php?title=Module:Countries/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/testcases (page does not exist)"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:o-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:-webkit-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:linear-gradient(to bottom,#c4ceb9 0%, #a8b79a 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:o-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:-webkit-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:linear-gradient(to bottom,#ebf7de 0%, #cee0bc 100%);; padding:.8em;">Tests</span></span></a><a href="/w/index.php?title=Module_talk:Countries/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/testcases (page does not exist)"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:o-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:-webkit-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:linear-gradient(to bottom,#c4ceb9 0%, #a8b79a 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:o-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:-webkit-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:linear-gradient(to bottom,#ebf7de 0%, #cee0bc 100%);; padding:.8em;">Results</span></span></a><a href="/wiki/Module:Countries/sandbox" title="Module:Countries/sandbox"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:o-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:-webkit-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:linear-gradient(to bottom,#c4ceb9 0%, #a8b79a 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:o-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:-webkit-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:linear-gradient(to bottom,#ebf7de 0%, #cee0bc 100%);; padding:.8em;">Sandbox</span></span></a><a class="mw-selflink selflink"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:o-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:-webkit-linear-gradient(top,#c4ceb9 0%, #a8b79a 100%);background-image:linear-gradient(to bottom,#c4ceb9 0%, #a8b79a 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:o-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:-webkit-linear-gradient(top,#ebf7de 0%, #cee0bc 100%);background-image:linear-gradient(to bottom,#ebf7de 0%, #cee0bc 100%);; padding:.8em;">Live code</span></span></a> <a href="/wiki/Special:PrefixIndex/Module:" title="Special:PrefixIndex/Module:"><span style="display:inline-block; padding:0 1px 0 0; background-image:-moz-linear-gradient(top,#d6d4c7 0%, #c4bb8b 100%);background-image:o-linear-gradient(top,#d6d4c7 0%, #c4bb8b 100%);background-image:-webkit-linear-gradient(top,#d6d4c7 0%, #c4bb8b 100%);background-image:linear-gradient(to bottom,#d6d4c7 0%, #c4bb8b 100%);;"><span style="display:inline-block;background-image:-moz-linear-gradient(top,#fefcea 0%, #ede3a6 100%);background-image:o-linear-gradient(top,#fefcea 0%, #ede3a6 100%);background-image:-webkit-linear-gradient(top,#fefcea 0%, #ede3a6 100%);background-image:linear-gradient(to bottom,#fefcea 0%, #ede3a6 100%);; padding:.8em;">All modules</span></span></a></span> <style data-mw-deduplicate="TemplateStyles:r861166424">.mw-parser-output td.mbox-imageright{border:none;padding:2px 0.9em 2px 0;text-align:center}.mw-parser-output td.mbox-empty-cell{border:none;padding:0;width:1px}</style></p><table class="messagebox plainlinks layouttemplate en" lang="en" dir="ltr" style="margin:2px auto;width:80%;border:2px solid #f4c430;background:var(--background-color-warning-subtle,#ffe);color:var(--color-base,#222);border-inline-start-width:8px;border-collapse:collapse;margin-left:5.2em;padding:3px"><tbody><tr> <td class="mbox-image" style="padding-inline-start:.9em" dir="ltr"><span typeof="mw:File"><span><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Dialog-warning-yellow.svg/55px-Dialog-warning-yellow.svg.png" decoding="async" width="55" height="55" class="mw-file-element" srcset="https://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Dialog-warning-yellow.svg/83px-Dialog-warning-yellow.svg.png 1.5x, https://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Dialog-warning-yellow.svg/110px-Dialog-warning-yellow.svg.png 2x" data-file-width="48" data-file-height="48" /></span></span></td><td class="mbox-text"><div lang="en" dir="ltr" class="description en" style="display:inline;"><b>Note:</b> This module is used on a lot of pages. In order not to put too much load on the servers, edits should be kept to a bare minimum. Please <b>discuss proposed changes on <a href="/wiki/Module_talk:Countries" title="Module talk:Countries">the talk page</a></b> first. <p>Afterwards, changes can <b>initially</b> be done at and tested with <a href="/wiki/Module:Countries/sandbox" title="Module:Countries/sandbox">Module:Countries/sandbox</a>. </p> <div style="font-size:0.9em"><div></div> <ul><li>Editing a module causes <b>all pages that use the module to be re-rendered</b>. If the module is used often, this can put a lot of load on the servers since it fills up the <a href="https://www.mediawiki.org/wiki/Manual:Job_queue" class="extiw" title="mw:Manual:Job queue">job queue</a>.</li> <li>Keep in mind that displays produced by modules used on file description pages also <b>show up on other wikis</b>.</li></ul> </div></div></td></tr></tbody></table> <p><b>This module implements templates that output a "Countries of" navigation box.</b> </p><p><a class="mw-selflink selflink">Module:Countries</a> is the main module. Data for each supported region is defined in a submodule. It may also be used to create navigation box for other types of regions (not just lists of countries in a continent), this main module could be used as well to render a list of administrative or electoral subdivisions in any country or region, or for a list of teams in a sport competition, or for a list of named elements in a chemical classification). </p> <div id="toc" class="toc" role="navigation" aria-labelledby="mw-toc-heading"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="en" dir="ltr"><h2 id="mw-toc-heading">Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div> <ul> <li class="toclevel-1"><a href="#Example_of_module_for_the_list_of_countries_of_Africa"><span class="tocnumber">1</span> <span class="toctext">Example of module for the list of countries of Africa</span></a> <ul> <li class="toclevel-2"><a href="#Changes"><span class="tocnumber">1.1</span> <span class="toctext">Changes</span></a></li> </ul> </li> <li class="toclevel-1"><a href="#Currently_supported_specializations_for_list_of_countries,_territories_or_subdivisions_of_an_area"><span class="tocnumber">2</span> <span class="toctext">Currently supported specializations for list of countries, territories or subdivisions of an area</span></a> <ul> <li class="toclevel-2"><a href="#Modules_in_Commons"><span class="tocnumber">2.1</span> <span class="toctext">Modules in Commons</span></a></li> <li class="toclevel-2"><a href="#Templates_in_Commons_using_these_modules"><span class="tocnumber">2.2</span> <span class="toctext">Templates in Commons using these modules</span></a></li> </ul> </li> <li class="toclevel-1"><a href="#Summary_information_about_each_item"><span class="tocnumber">3</span> <span class="toctext">Summary information about each item</span></a></li> <li class="toclevel-1"><a href="#History"><span class="tocnumber">4</span> <span class="toctext">History</span></a></li> <li class="toclevel-1"><a href="#Code"><span class="tocnumber">5</span> <span class="toctext">Code</span></a></li> </ul> </div> <div class="mw-heading mw-heading2"><h2 id="Example_of_module_for_the_list_of_countries_of_Africa">Example of module for the list of countries of Africa</h2></div> <p>For example, <a href="/wiki/Module:Countries/Africa" title="Module:Countries/Africa">Module:Countries/Africa</a> specifies the all text displayed and the countries listed for Africa. </p><p>That module is then used to render the navigation box requested by template <a href="/wiki/Template:Countries_of_Africa" title="Template:Countries of Africa">&#123;&#123;Countries of Africa&#125;&#125;</a>, which displays its results with: </p> <dl><dd><code>{{#invoke:Countries|main|Africa}}</code></dd></dl> <p>The first unnamed parameter (<code>Africa</code>) identifies the submodule defining the countries in Africa. The parameter is case sensitive, it can be the full name of the data module, but if there's no colon indicated in this value, the full page name of the data module will be based on a common prefix prepended to this parameter. </p><p>Pages using the module with an invalid parameter are added to the tracking <a href="/wiki/Category:Countries_template_with_invalid_parameters" title="Category:Countries template with invalid parameters">Category:Countries template with invalid parameters</a>. The tracking category is also added if the list of countries selected by the user's language has a country code that is not defined in the <code>infos</code> table (or <code>countries</code> table, but not both). For testing, the parameter <code>|nocat=yes</code> can be used in the template to suppress the category. </p><p>Codes used in lists of items can be arbitrarily chosen, but should remain short (they may include digits, and their lettercase is significant, but they must not contain any space). For administrative units these codes should preferably be formed starting by a capitalized ISO 3166 country or territory code (if possible); for international sports teams/delegations, these codes should be based on standard IOC codes instead; for chemical elements these codes could be standardized codes as well like <code>C</code> or <code>H</code> for carbon or hydrogen. If needed, additional letters, digits or hyphens may be used to specify a precision or disambiguation. </p><p>Usually, these codes will not be longer than 8 ASCII characters (including extensions) and should be language-neutral, and independant of possible changes of official or translated names. Items in the data module just list the default name or optional aliases used in Wikimedia Commons categories, frequently but not alwyas in English; actual names and translations displayed in the generated navigation box (when templates are not used with <code>|all=1</code>) are taken from Wikidata items associated to each data item with their <code>qid='Q<i>nnn'</i>,</code> property. </p><p>The translated names from Wikidata may be automatically sorted (however the automatic sort is language-neutral and may be very crude for some languages, it is based on the NFKD normalization of the Unicode-encoded names from Wikidata, where combining characters and format controls have then been removed from the text used for the primary and secondary key; then primary characters (forced to lowercase) are sorted in binary order. This works for all common alphabets, abjads, abugidas, or even for syllabaries and the Hangul alphabet used in Korean (thanks to the supported NFKD decomposition). However, this does not work with a few scripts whose primary lowercase characters have codepoints that could not be fully assigned by Unicode in ascending binary order (e.g. for the sinographic script used in Chinese, but also for some alphabets whose base lowercase letters were encoded with additional blocks, out of the binary sequential order, and for which the automatic sort key generator cannot replace them by other suitable primary letters in the main alphabetic sequence). For such case, or if a language sorts differently than the default UCA order, the sort order can be customized for specific languages and the automatic sort order (normally used by default for all languages whose sort order is not customized) will not be used. Supporting an automatic sort for Chinese is challenging (it would require the support by Mediawiki, accessible from Scribunto, to generate UCA collation keys for each language from the ICU library, which for now only provides support for case transforms and standard normalizations; fully implementing UCA for sorting in pure Lua would require to maintain large datatables that would slow down the module each time it's used, even for just the language-neutral order using the standard DUCET). </p><p>Codes for data items are normally used only internally by this module, but may be displayed (using a builtin default presentation) using a <code>|showcode=1</code> parameter in templates calling the modules. If these codes are not appropriate and one wans to display other codes, items in each list can specify a <code>note='[<i>CUSTOM-CODE</i>]',</code> property in the data module: this custom note will be shown just after each displayed wikilink (see an example in <a href="/wiki/Module:Most_populous_cities_of_the_world" title="Module:Most populous cities of the world">Module:Most populous cities of the world</a>, where codes used in the main list of cities are not used but custimized by truncating them to only their leading country code). </p><p>Data items for each code can also associate a <code>mark='<i>MARK</i>',</code> specifying a very brief footnote call, displayed in superscript immediately after each generated wikilink (but before the code or note); the footnote will be generated by an additional formatted section (that contains no list of codes). The datamodule specify how to format these sections and can apply conditional displays (only when one of the items actually generate a visible wikilink in a specified section, whose name appear in the condition encoded after each formating string). </p> <div class="mw-heading mw-heading3"><h3 id="Changes">Changes</h3></div> <p>Changes should be performed in the appropriate sandbox module and tested using the corresponding sandbox template. For example, a change to the text displayed or the countries listed for Africa would be made in <a href="/wiki/Module:Countries/Africa/sandbox" title="Module:Countries/Africa/sandbox">Module:Countries/Africa/sandbox</a>. </p><p><a href="/wiki/Template:Countries_of_Africa/sandbox" title="Template:Countries of Africa/sandbox">&#123;&#123;Countries of Africa/sandbox&#125;&#125;</a> displays its results with: </p> <dl><dd><code>{{#invoke:Countries/sandbox|main|Africa}}</code></dd></dl> <p>Use this sandbox template to test changes to the sandbox module for Africa. </p> <div class="mw-heading mw-heading2"><h2 id="Currently_supported_specializations_for_list_of_countries,_territories_or_subdivisions_of_an_area"><span id="Currently_supported_specializations_for_list_of_countries.2C_territories_or_subdivisions_of_an_area"></span>Currently supported specializations for list of countries, territories or subdivisions of an area</h2></div> <p>The specific modules and their sandboxes defined for list of countries, territories or subdivisions of an area are implemented as the following subpages of the main module, and their associated templates (see <a href="/wiki/Module:Convert/tester" title="Module:Convert/tester">Module:Convert/tester</a>). </p><p>The sandbox versions of modules should be identical, except temporarily for testing changes (rendered with the sandbox template, in their comparative test cases) </p> <table class="wikitable" width="100%"><tbody><tr style="vertical-align:top"><td> <div class="mw-heading mw-heading4"><h4 id="Modules_in_Commons"><a href="/wiki/Module:Convert/tester" title="Module:Convert/tester">Modules in Commons</a></h4></div> <ul style="margin:0;margin-left:1.6em"> <li><a class="mw-selflink selflink">Module:Countries</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/sandbox" title="Module:Countries/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/wiki/Module_talk:Countries" title="Module talk:Countries">talk</a></li> <li><a href="/wiki/Module:Countries/Africa" title="Module:Countries/Africa">Module:Countries/Africa</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/Africa/sandbox" title="Module:Countries/Africa/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/Africa/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/Africa/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/Africa&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/Africa (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Countries/Americas" title="Module:Countries/Americas">Module:Countries/Americas</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/Americas/sandbox" title="Module:Countries/Americas/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/Americas/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/Americas/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/Americas&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/Americas (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Countries/Arab_world" title="Module:Countries/Arab world">Module:Countries/Arab world</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/Arab_world/sandbox" title="Module:Countries/Arab world/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/Arab_world/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/Arab world/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/Arab_world&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/Arab world (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Countries/Asia" title="Module:Countries/Asia">Module:Countries/Asia</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/Asia/sandbox" title="Module:Countries/Asia/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/Asia/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/Asia/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/wiki/Module_talk:Countries/Asia" title="Module talk:Countries/Asia">talk</a></li> <li><a href="/wiki/Module:Countries/Caribbean" title="Module:Countries/Caribbean">Module:Countries/Caribbean</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/Caribbean/sandbox" title="Module:Countries/Caribbean/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/Caribbean/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/Caribbean/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/Caribbean&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/Caribbean (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Countries/Central_America" title="Module:Countries/Central America">Module:Countries/Central America</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/Central_America/sandbox" title="Module:Countries/Central America/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/Central_America/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/Central America/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/Central_America&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/Central America (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Countries/Europe" title="Module:Countries/Europe">Module:Countries/Europe</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/Europe/sandbox" title="Module:Countries/Europe/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/Europe/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/Europe/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/wiki/Module_talk:Countries/Europe" title="Module talk:Countries/Europe">talk</a></li> <li><a href="/wiki/Module:Countries/European_Union" title="Module:Countries/European Union">Module:Countries/European Union</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/European_Union/sandbox" title="Module:Countries/European Union/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/European_Union/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/European Union/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/European_Union&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/European Union (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Countries/North_America" title="Module:Countries/North America">Module:Countries/North America</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/North_America/sandbox" title="Module:Countries/North America/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/North_America/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/North America/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/North_America&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/North America (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Countries/North_America_(subcontinent)" title="Module:Countries/North America (subcontinent)">Module:Countries/North America (subcontinent)</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/North_America_(subcontinent)/sandbox" title="Module:Countries/North America (subcontinent)/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/North_America_(subcontinent)/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/North America (subcontinent)/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/North_America_(subcontinent)&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/North America (subcontinent) (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Countries/Oceania" title="Module:Countries/Oceania">Module:Countries/Oceania</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/Oceania/sandbox" title="Module:Countries/Oceania/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Module%3ACountries%2FOceania&amp;page2=Module%3ACountries%2FOceania%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/Oceania/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/Oceania/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/Oceania&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/Oceania (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Countries/South_America" title="Module:Countries/South America">Module:Countries/South America</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/South_America/sandbox" title="Module:Countries/South America/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/South_America/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/South America/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/South_America&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/South America (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Countries/CRT_other" title="Module:Countries/CRT other">Module:Countries/CRT other</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/CRT_other/sandbox" title="Module:Countries/CRT other/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/CRT_other/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/CRT other/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/CRT_other&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/CRT other (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Countries/Olympic_teams" title="Module:Countries/Olympic teams">Module:Countries/Olympic teams</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/Olympic_teams/sandbox" title="Module:Countries/Olympic teams/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/Olympic_teams/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/Olympic teams/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/Olympic_teams&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/Olympic teams (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Countries/United_Kingdom" title="Module:Countries/United Kingdom">Module:Countries/United Kingdom</a>&#160;<b>·</b> <a href="/wiki/Module:Countries/United_Kingdom/sandbox" title="Module:Countries/United Kingdom/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Module%3ACountries%2FUnited+Kingdom&amp;page2=Module%3ACountries%2FUnited+Kingdom%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/w/index.php?title=Module:Countries/United_Kingdom/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Countries/United Kingdom/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Countries/United_Kingdom&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Countries/United Kingdom (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Regions_of_France" title="Module:Regions of France">Module:Regions of France</a>&#160;<b>·</b> <a href="/wiki/Module:Regions_of_France/sandbox" title="Module:Regions of France/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Regions_of_France/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Regions of France/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Regions_of_France&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Regions of France (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Departments_of_France" title="Module:Departments of France">Module:Departments of France</a>&#160;<b>·</b> <a href="/wiki/Module:Departments_of_France/sandbox" title="Module:Departments of France/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Module%3ADepartments+of+France&amp;page2=Module%3ADepartments+of+France%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/w/index.php?title=Module:Departments_of_France/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Departments of France/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Departments_of_France&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Departments of France (page does not exist)">talk</a></li> <li><a href="/wiki/Module:States_of_the_United_States" title="Module:States of the United States">Module:States of the United States</a>&#160;<b>·</b> <a href="/wiki/Module:States_of_the_United_States/sandbox" title="Module:States of the United States/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:States_of_the_United_States/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:States of the United States/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:States_of_the_United_States&amp;action=edit&amp;redlink=1" class="new" title="Module talk:States of the United States (page does not exist)">talk</a></li> <li><a href="/wiki/Module:Most_populous_cities_of_the_world" title="Module:Most populous cities of the world">Module:Most populous cities of the world</a>&#160;<b>·</b> <a href="/wiki/Module:Most_populous_cities_of_the_world/sandbox" title="Module:Most populous cities of the world/sandbox">sandbox</a>&#160;<b>·</b> <a href="/w/index.php?title=Module:Most_populous_cities_of_the_world/testcases&amp;action=edit&amp;redlink=1" class="new" title="Module:Most populous cities of the world/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Module_talk:Most_populous_cities_of_the_world&amp;action=edit&amp;redlink=1" class="new" title="Module talk:Most populous cities of the world (page does not exist)">talk</a></li> </ul> </td><td> <div class="mw-heading mw-heading4"><h4 id="Templates_in_Commons_using_these_modules"><a href="/wiki/Module:Convert/tester" title="Module:Convert/tester">Templates in Commons using these modules</a></h4></div> <div>The sandbox versions of these templates should be different as they use the sandbox version of the modules.</div> <ul style="margin:0;margin-left:1.6em"> <li><a href="/wiki/Template:Countries_of_Africa" title="Template:Countries of Africa">&#123;&#123;Countries of Africa&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_Africa/sandbox" title="Template:Countries of Africa/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+Africa&amp;page2=Template%3ACountries+of+Africa%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_Africa/testcases" title="Template:Countries of Africa/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:Countries_of_Africa" title="Template talk:Countries of Africa">talk</a></li> <li><a href="/wiki/Template:Countries_of_the_Americas" title="Template:Countries of the Americas">&#123;&#123;Countries of the Americas&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_the_Americas/sandbox" title="Template:Countries of the Americas/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+the+Americas&amp;page2=Template%3ACountries+of+the+Americas%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_the_Americas/testcases" title="Template:Countries of the Americas/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:Countries_of_the_Americas" title="Template talk:Countries of the Americas">talk</a></li> <li><a href="/wiki/Template:Countries_of_the_Arab_world" title="Template:Countries of the Arab world">&#123;&#123;Countries of the Arab world&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_the_Arab_world/sandbox" title="Template:Countries of the Arab world/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+the+Arab+world&amp;page2=Template%3ACountries+of+the+Arab+world%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_the_Arab_world/testcases" title="Template:Countries of the Arab world/testcases">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Template_talk:Countries_of_the_Arab_world&amp;action=edit&amp;redlink=1" class="new" title="Template talk:Countries of the Arab world (page does not exist)">talk</a></li> <li><a href="/wiki/Template:Countries_of_Asia" title="Template:Countries of Asia">&#123;&#123;Countries of Asia&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_Asia/sandbox" title="Template:Countries of Asia/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+Asia&amp;page2=Template%3ACountries+of+Asia%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_Asia/testcases" title="Template:Countries of Asia/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:Countries_of_Asia" title="Template talk:Countries of Asia">talk</a></li> <li><a href="/wiki/Template:Countries_of_the_Caribbean" title="Template:Countries of the Caribbean">&#123;&#123;Countries of the Caribbean&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_the_Caribbean/sandbox" title="Template:Countries of the Caribbean/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+the+Caribbean&amp;page2=Template%3ACountries+of+the+Caribbean%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_the_Caribbean/testcases" title="Template:Countries of the Caribbean/testcases">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Template_talk:Countries_of_the_Caribbean&amp;action=edit&amp;redlink=1" class="new" title="Template talk:Countries of the Caribbean (page does not exist)">talk</a></li> <li><a href="/wiki/Template:Countries_of_Central_America" title="Template:Countries of Central America">&#123;&#123;Countries of Central America&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_Central_America/sandbox" title="Template:Countries of Central America/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+Central+America&amp;page2=Template%3ACountries+of+Central+America%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_Central_America/testcases" title="Template:Countries of Central America/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:Countries_of_Central_America" title="Template talk:Countries of Central America">talk</a></li> <li><a href="/wiki/Template:Countries_of_Europe" title="Template:Countries of Europe">&#123;&#123;Countries of Europe&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_Europe/sandbox" title="Template:Countries of Europe/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+Europe&amp;page2=Template%3ACountries+of+Europe%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_Europe/testcases" title="Template:Countries of Europe/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:Countries_of_Europe" title="Template talk:Countries of Europe">talk</a></li> <li><a href="/wiki/Template:Countries_of_the_European_Union" title="Template:Countries of the European Union">&#123;&#123;Countries of the European Union&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_the_European_Union/sandbox" title="Template:Countries of the European Union/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+the+European+Union&amp;page2=Template%3ACountries+of+the+European+Union%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_the_European_Union/testcases" title="Template:Countries of the European Union/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:Countries_of_the_European_Union" title="Template talk:Countries of the European Union">talk</a></li> <li><a href="/wiki/Template:Countries_of_North_America" title="Template:Countries of North America">&#123;&#123;Countries of North America&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_North_America/sandbox" title="Template:Countries of North America/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+North+America&amp;page2=Template%3ACountries+of+North+America%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_North_America/testcases" title="Template:Countries of North America/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:Countries_of_North_America" title="Template talk:Countries of North America">talk</a></li> <li><a href="/wiki/Template:Countries_of_North_America_(subcontinent)" title="Template:Countries of North America (subcontinent)">&#123;&#123;Countries of North America (subcontinent)&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_North_America_(subcontinent)/sandbox" title="Template:Countries of North America (subcontinent)/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+North+America+%28subcontinent%29&amp;page2=Template%3ACountries+of+North+America+%28subcontinent%29%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_North_America_(subcontinent)/testcases" title="Template:Countries of North America (subcontinent)/testcases">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Template_talk:Countries_of_North_America_(subcontinent)&amp;action=edit&amp;redlink=1" class="new" title="Template talk:Countries of North America (subcontinent) (page does not exist)">talk</a></li> <li><a href="/wiki/Template:Countries_of_Oceania" title="Template:Countries of Oceania">&#123;&#123;Countries of Oceania&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_Oceania/sandbox" title="Template:Countries of Oceania/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+Oceania&amp;page2=Template%3ACountries+of+Oceania%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_Oceania/testcases" title="Template:Countries of Oceania/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:Countries_of_Oceania" title="Template talk:Countries of Oceania">talk</a></li> <li><a href="/wiki/Template:Countries_of_South_America" title="Template:Countries of South America">&#123;&#123;Countries of South America&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_South_America/sandbox" title="Template:Countries of South America/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+South+America&amp;page2=Template%3ACountries+of+South+America%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_South_America/testcases" title="Template:Countries of South America/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:Countries_of_South_America" title="Template talk:Countries of South America">talk</a></li> <li><a href="/wiki/Template:Copyright_rules_by_territory" title="Template:Copyright rules by territory">&#123;&#123;Copyright rules by territory&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Copyright_rules_by_territory/sandbox" title="Template:Copyright rules by territory/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACopyright+rules+by+territory&amp;page2=Template%3ACopyright+rules+by+territory%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/w/index.php?title=Template:Copyright_rules_by_territory/testcases&amp;action=edit&amp;redlink=1" class="new" title="Template:Copyright rules by territory/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Template_talk:Copyright_rules_by_territory&amp;action=edit&amp;redlink=1" class="new" title="Template talk:Copyright rules by territory (page does not exist)">talk</a></li> <li><a href="/wiki/Template:Olympic_teams" title="Template:Olympic teams">&#123;&#123;Olympic teams&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Olympic_teams/sandbox" title="Template:Olympic teams/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3AOlympic+teams&amp;page2=Template%3AOlympic+teams%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Olympic_teams/testcases" title="Template:Olympic teams/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:Olympic_teams" title="Template talk:Olympic teams">talk</a></li> <li><a href="/wiki/Template:Countries_of_the_United_Kingdom" class="mw-redirect" title="Template:Countries of the United Kingdom">&#123;&#123;Countries of the United Kingdom&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_the_United_Kingdom/sandbox" class="mw-redirect" title="Template:Countries of the United Kingdom/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ACountries+of+the+United+Kingdom&amp;page2=Template%3ACountries+of+the+United+Kingdom%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Countries_of_the_United_Kingdom/testcases" title="Template:Countries of the United Kingdom/testcases">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Template_talk:Countries_of_the_United_Kingdom&amp;action=edit&amp;redlink=1" class="new" title="Template talk:Countries of the United Kingdom (page does not exist)">talk</a></li> <li><a href="/wiki/Template:Regions_of_France" title="Template:Regions of France">&#123;&#123;Regions of France&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Regions_of_France/sandbox" title="Template:Regions of France/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ARegions+of+France&amp;page2=Template%3ARegions+of+France%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Regions_of_France/testcases" title="Template:Regions of France/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:Regions_of_France" title="Template talk:Regions of France">talk</a></li> <li><a href="/wiki/Template:Departments_of_France" title="Template:Departments of France">&#123;&#123;Departments of France&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Departments_of_France/sandbox" title="Template:Departments of France/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3ADepartments+of+France&amp;page2=Template%3ADepartments+of+France%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:Departments_of_France/testcases" title="Template:Departments of France/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:Departments_of_France" title="Template talk:Departments of France">talk</a></li> <li><a href="/wiki/Template:States_of_the_United_States" title="Template:States of the United States">&#123;&#123;States of the United States&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:States_of_the_United_States/sandbox" title="Template:States of the United States/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3AStates+of+the+United+States&amp;page2=Template%3AStates+of+the+United+States%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/wiki/Template:States_of_the_United_States/testcases" title="Template:States of the United States/testcases">testcases</a>&#160;<b>·</b> <a href="/wiki/Template_talk:States_of_the_United_States" title="Template talk:States of the United States">talk</a></li> <li><a href="/wiki/Template:Most_populous_cities_of_the_world" title="Template:Most populous cities of the world">&#123;&#123;Most populous cities of the world&#125;&#125;</a>&#160;<b>·</b> <a href="/wiki/Template:Most_populous_cities_of_the_world/sandbox" title="Template:Most populous cities of the world/sandbox">sandbox</a> <small style="background:#FDD;color:#AAA">(<span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Template%3AMost+populous+cities+of+the+world&amp;page2=Template%3AMost+populous+cities+of+the+world%2Fsandbox">different content</a></span>)</small>&#160;<b>·</b> <a href="/w/index.php?title=Template:Most_populous_cities_of_the_world/testcases&amp;action=edit&amp;redlink=1" class="new" title="Template:Most populous cities of the world/testcases (page does not exist)">testcases</a>&#160;<b>·</b> <a href="/w/index.php?title=Template_talk:Most_populous_cities_of_the_world&amp;action=edit&amp;redlink=1" class="new" title="Template talk:Most populous cities of the world (page does not exist)">talk</a></li> </ul> </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="Summary_information_about_each_item">Summary information about each item</h2></div> <p>See <a href="/wiki/Module_talk:Countries/show" title="Module talk:Countries/show">Module talk:Countries/show</a> for a summary of all information about specific items in lists, including links to the item at Wikidata. If there appears to be an error in the name for a item, find the item in this list, then use the link to the item to check what changes may have occurred at Wikidata. </p> <div class="mw-heading mw-heading2"><h2 id="History">History</h2></div> <ul><li>Report at <a href="https://phabricator.wikimedia.org/T171392" class="extiw" title="phab:T171392">phab:T171392</a> July 2017 (Lua out-of-memory problems resulting in "Error: 503, Service Unavailable").</li> <li>Problem discussed at <a href="https://en.wikipedia.org/wiki/Wikipedia:Village_pump_(technical)/Archive_158#Commons_images" class="extiw" title="en:Wikipedia:Village pump (technical)/Archive 158">en:WP:VPT</a> August 2017.</li> <li>Module started September 2017 based on data and logic copied from <a href="/wiki/Template:Countries_of_Europe" title="Template:Countries of Europe">Template:Countries of Europe</a> to implement that template.</li> <li>Use <a href="/wiki/Module:Redirect" title="Module:Redirect">Module:Redirect</a> to parse soft category redirects in their content. July 2020.</li></ul> <h2 id="Code" id="com-module-code">Code</h2><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos" data-line="1"></span></a><span class="cm">--[==[</span> </span><span id="L-2"><a href="#L-2"><span class="linenos" data-line="2"></span></a><span class="cm">This module implements templates that output a countries navbox.</span> </span><span id="L-3"><a href="#L-3"><span class="linenos" data-line="3"></span></a><span class="cm">First usage was at [[Template:Countries of Europe]].</span> </span><span id="L-4"><a href="#L-4"><span class="linenos" data-line="4"></span></a><span class="cm">--]==]</span> </span><span id="L-5"><a href="#L-5"><span class="linenos" data-line="5"></span></a> </span><span id="L-6"><a href="#L-6"><span class="linenos" data-line="6"></span></a><span class="c1">-- Locally used by langSwitch().</span> </span><span id="L-7"><a href="#L-7"><span class="linenos" data-line="7"></span></a><span class="kd">local</span> <span class="n">_langSwitch</span> <span class="c1">-- Cache for loading &#39;Module:Fallback&#39; lazily.</span> </span><span id="L-8"><a href="#L-8"><span class="linenos" data-line="8"></span></a> </span><span id="L-9"><a href="#L-9"><span class="linenos" data-line="9"></span></a><span class="c1">-- Locally used by getList():getCodes() and _main().</span> </span><span id="L-10"><a href="#L-10"><span class="linenos" data-line="10"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">langSwitch</span><span class="p">(</span><span class="n">translations</span><span class="p">,</span> <span class="n">lang</span><span class="p">)</span> </span><span id="L-11"><a href="#L-11"><span class="linenos" data-line="11"></span></a> <span class="kr">if</span> <span class="n">translations</span><span class="p">[</span><span class="n">lang</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-12"><a href="#L-12"><span class="linenos" data-line="12"></span></a> <span class="kr">return</span> <span class="n">translations</span><span class="p">[</span><span class="n">lang</span><span class="p">]</span> </span><span id="L-13"><a href="#L-13"><span class="linenos" data-line="13"></span></a> <span class="kr">end</span> </span><span id="L-14"><a href="#L-14"><span class="linenos" data-line="14"></span></a> <span class="cm">--[==[ Note: the sandbox version handles BCP 47 rules more strictly for</span> </span><span id="L-15"><a href="#L-15"><span class="linenos" data-line="15"></span></a><span class="cm"> fallbacks. In addition it is a bit faster, uses less temporary memory than</span> </span><span id="L-16"><a href="#L-16"><span class="linenos" data-line="16"></span></a><span class="cm"> the current non-sandbox version of Module:Fallback.</span> </span><span id="L-17"><a href="#L-17"><span class="linenos" data-line="17"></span></a><span class="cm"> --]==]</span> </span><span id="L-18"><a href="#L-18"><span class="linenos" data-line="18"></span></a> <span class="n">_langSwitch</span> <span class="o">=</span> <span class="n">_langSwitch</span> <span class="ow">or</span> <span class="nb">require</span><span class="p">(</span><span class="s1">&#39;Module:Fallback/sandbox&#39;</span><span class="p">).</span><span class="n">_langSwitch</span> </span><span id="L-19"><a href="#L-19"><span class="linenos" data-line="19"></span></a> <span class="kr">return</span> <span class="n">_langSwitch</span><span class="p">(</span><span class="n">translations</span><span class="p">,</span> <span class="n">lang</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-20"><a href="#L-20"><span class="linenos" data-line="20"></span></a><span class="kr">end</span> </span><span id="L-21"><a href="#L-21"><span class="linenos" data-line="21"></span></a> </span><span id="L-22"><a href="#L-22"><span class="linenos" data-line="22"></span></a><span class="c1">-- Locally used by getList():getTitle() and getGroupData().</span> </span><span id="L-23"><a href="#L-23"><span class="linenos" data-line="23"></span></a><span class="cm">--[==[</span> </span><span id="L-24"><a href="#L-24"><span class="linenos" data-line="24"></span></a><span class="cm">If text is a non-empty string (not just containing spaces), return its trimmed</span> </span><span id="L-25"><a href="#L-25"><span class="linenos" data-line="25"></span></a><span class="cm">content. Otherwise, return nil (text is an empty string or is not a string).</span> </span><span id="L-26"><a href="#L-26"><span class="linenos" data-line="26"></span></a><span class="cm">--]==]</span> </span><span id="L-27"><a href="#L-27"><span class="linenos" data-line="27"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">stripToNil</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> </span><span id="L-28"><a href="#L-28"><span class="linenos" data-line="28"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> <span class="kr">then</span> </span><span id="L-29"><a href="#L-29"><span class="linenos" data-line="29"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">&#39;^%s*(.-)%s*$&#39;</span><span class="p">)</span> <span class="c1">-- trim starting and trailing spaces</span> </span><span id="L-30"><a href="#L-30"><span class="linenos" data-line="30"></span></a> <span class="kr">if</span> <span class="n">text</span> <span class="o">~=</span> <span class="s1">&#39;&#39;</span> <span class="kr">then</span> <span class="c1">-- not nil and not empty</span> </span><span id="L-31"><a href="#L-31"><span class="linenos" data-line="31"></span></a> <span class="kr">return</span> <span class="n">text</span><span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s1">&#39;%s+&#39;</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="p">)</span> <span class="c1">-- compress and normalize inner spaces</span> </span><span id="L-32"><a href="#L-32"><span class="linenos" data-line="32"></span></a> <span class="kr">end</span> </span><span id="L-33"><a href="#L-33"><span class="linenos" data-line="33"></span></a> <span class="kr">end</span> </span><span id="L-34"><a href="#L-34"><span class="linenos" data-line="34"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-35"><a href="#L-35"><span class="linenos" data-line="35"></span></a><span class="kr">end</span> </span><span id="L-36"><a href="#L-36"><span class="linenos" data-line="36"></span></a> </span><span id="L-37"><a href="#L-37"><span class="linenos" data-line="37"></span></a><span class="c1">-- Locally used by getTargetFromCatRedirect().</span> </span><span id="L-38"><a href="#L-38"><span class="linenos" data-line="38"></span></a><span class="kd">local</span> <span class="n">_getTargetFromCatRedirect</span> <span class="c1">-- Cache for loading &#39;Module:Redirect&#39; lazily.</span> </span><span id="L-39"><a href="#L-39"><span class="linenos" data-line="39"></span></a> </span><span id="L-40"><a href="#L-40"><span class="linenos" data-line="40"></span></a><span class="cm">--[==[</span> </span><span id="L-41"><a href="#L-41"><span class="linenos" data-line="41"></span></a><span class="cm">Detect soft redirect in wiki page content of &#39;Category:&#39; pages using template</span> </span><span id="L-42"><a href="#L-42"><span class="linenos" data-line="42"></span></a><span class="cm">{{Category redirect|target}} or one of its known aliases on Commons.</span> </span><span id="L-43"><a href="#L-43"><span class="linenos" data-line="43"></span></a><span class="cm">Loaded lazily from &#39;Module:Redirect&#39;.</span> </span><span id="L-44"><a href="#L-44"><span class="linenos" data-line="44"></span></a><span class="cm">--]==]</span> </span><span id="L-45"><a href="#L-45"><span class="linenos" data-line="45"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getTargetFromCatRedirect</span><span class="p">(...)</span> </span><span id="L-46"><a href="#L-46"><span class="linenos" data-line="46"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">_getTargetFromCatRedirect</span> <span class="kr">then</span> </span><span id="L-47"><a href="#L-47"><span class="linenos" data-line="47"></span></a> <span class="n">_getTargetFromCatRedirect</span> <span class="o">=</span> </span><span id="L-48"><a href="#L-48"><span class="linenos" data-line="48"></span></a> <span class="nb">require</span><span class="p">(</span><span class="s1">&#39;Module:Redirect&#39;</span><span class="p">).</span><span class="n">getTargetFromCatRedirect</span> </span><span id="L-49"><a href="#L-49"><span class="linenos" data-line="49"></span></a> <span class="kr">end</span> </span><span id="L-50"><a href="#L-50"><span class="linenos" data-line="50"></span></a> <span class="n">getTargetFromCatRedirect</span> <span class="o">=</span> <span class="n">_getTargetFromCatRedirect</span> </span><span id="L-51"><a href="#L-51"><span class="linenos" data-line="51"></span></a> <span class="kr">return</span> <span class="n">getTargetFromCatRedirect</span><span class="p">(...)</span> </span><span id="L-52"><a href="#L-52"><span class="linenos" data-line="52"></span></a><span class="kr">end</span> </span><span id="L-53"><a href="#L-53"><span class="linenos" data-line="53"></span></a> </span><span id="L-54"><a href="#L-54"><span class="linenos" data-line="54"></span></a><span class="c1">-- Locally used by getList().</span> </span><span id="L-55"><a href="#L-55"><span class="linenos" data-line="55"></span></a><span class="kd">local</span> <span class="n">_makeSortKey</span> <span class="c1">-- Cache for loading &#39;Module:MakeSortKey&#39; lazily.</span> </span><span id="L-56"><a href="#L-56"><span class="linenos" data-line="56"></span></a> </span><span id="L-57"><a href="#L-57"><span class="linenos" data-line="57"></span></a><span class="c1">-- Locally used by _main().</span> </span><span id="L-58"><a href="#L-58"><span class="linenos" data-line="58"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getList</span><span class="p">(</span><span class="n">lists</span><span class="p">,</span> <span class="n">exclude</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="n">infos</span><span class="p">)</span> </span><span id="L-59"><a href="#L-59"><span class="linenos" data-line="59"></span></a> </span><span id="L-60"><a href="#L-60"><span class="linenos" data-line="60"></span></a> <span class="cm">--[==[ Return:</span> </span><span id="L-61"><a href="#L-61"><span class="linenos" data-line="61"></span></a><span class="cm"> * title of redirect target (prefixed by &#39;:&#39; if it&#39;s a category), if the</span> </span><span id="L-62"><a href="#L-62"><span class="linenos" data-line="62"></span></a><span class="cm"> specified page is a redirect and target exists;</span> </span><span id="L-63"><a href="#L-63"><span class="linenos" data-line="63"></span></a><span class="cm"> * false if specified page is not a suitable target, try next page if any;</span> </span><span id="L-64"><a href="#L-64"><span class="linenos" data-line="64"></span></a><span class="cm"> * nil if specified page should be used as the target</span> </span><span id="L-65"><a href="#L-65"><span class="linenos" data-line="65"></span></a><span class="cm"> --]==]</span> </span><span id="L-66"><a href="#L-66"><span class="linenos" data-line="66"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">getRedirectTarget</span><span class="p">(</span><span class="n">titleObj</span><span class="p">)</span> </span><span id="L-67"><a href="#L-67"><span class="linenos" data-line="67"></span></a> <span class="kr">if</span> <span class="n">titleObj</span><span class="p">.</span><span class="n">isRedirect</span> <span class="kr">then</span> </span><span id="L-68"><a href="#L-68"><span class="linenos" data-line="68"></span></a> <span class="c1">-- target is false if target page with that title does not exist</span> </span><span id="L-69"><a href="#L-69"><span class="linenos" data-line="69"></span></a> <span class="kd">local</span> <span class="n">target</span> <span class="o">=</span> <span class="n">titleObj</span><span class="p">.</span><span class="n">redirectTarget</span><span class="p">.</span><span class="n">prefixedText</span> </span><span id="L-70"><a href="#L-70"><span class="linenos" data-line="70"></span></a> <span class="kr">return</span> <span class="nb">type</span><span class="p">(</span><span class="n">target</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> </span><span id="L-71"><a href="#L-71"><span class="linenos" data-line="71"></span></a> <span class="ow">and</span> <span class="n">target</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">&#39;^%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:&#39;</span><span class="p">)</span> </span><span id="L-72"><a href="#L-72"><span class="linenos" data-line="72"></span></a> <span class="ow">and</span> <span class="p">(</span><span class="s1">&#39;:&#39;</span> <span class="o">..</span> <span class="n">target</span><span class="p">)</span> <span class="ow">or</span> <span class="n">target</span> </span><span id="L-73"><a href="#L-73"><span class="linenos" data-line="73"></span></a> <span class="kr">end</span> </span><span id="L-74"><a href="#L-74"><span class="linenos" data-line="74"></span></a> <span class="kd">local</span> <span class="n">content</span> <span class="o">=</span> <span class="n">titleObj</span><span class="p">:</span><span class="n">getContent</span><span class="p">()</span> </span><span id="L-75"><a href="#L-75"><span class="linenos" data-line="75"></span></a> <span class="kr">if</span> <span class="n">content</span> <span class="kr">then</span> </span><span id="L-76"><a href="#L-76"><span class="linenos" data-line="76"></span></a> <span class="kd">local</span> <span class="n">target</span> <span class="o">=</span> <span class="n">getTargetFromCatRedirect</span><span class="p">(</span><span class="n">content</span><span class="p">)</span> </span><span id="L-77"><a href="#L-77"><span class="linenos" data-line="77"></span></a> <span class="kr">if</span> <span class="n">target</span> <span class="kr">then</span> </span><span id="L-78"><a href="#L-78"><span class="linenos" data-line="78"></span></a> <span class="kr">return</span> <span class="s1">&#39;:&#39;</span> <span class="o">..</span> <span class="n">target</span> </span><span id="L-79"><a href="#L-79"><span class="linenos" data-line="79"></span></a> <span class="kr">end</span> </span><span id="L-80"><a href="#L-80"><span class="linenos" data-line="80"></span></a> <span class="kr">if</span> <span class="n">content</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">&#39;{{%s*[Dd]isambig%s*}}&#39;</span><span class="p">)</span> </span><span id="L-81"><a href="#L-81"><span class="linenos" data-line="81"></span></a> <span class="ow">or</span> <span class="n">content</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">&#39;{{%s*[Dd]ab%s*}}&#39;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-82"><a href="#L-82"><span class="linenos" data-line="82"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-83"><a href="#L-83"><span class="linenos" data-line="83"></span></a> <span class="kr">end</span> </span><span id="L-84"><a href="#L-84"><span class="linenos" data-line="84"></span></a> <span class="kr">end</span> </span><span id="L-85"><a href="#L-85"><span class="linenos" data-line="85"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-86"><a href="#L-86"><span class="linenos" data-line="86"></span></a> <span class="kr">end</span> </span><span id="L-87"><a href="#L-87"><span class="linenos" data-line="87"></span></a> </span><span id="L-88"><a href="#L-88"><span class="linenos" data-line="88"></span></a> <span class="cm">--[==[</span> </span><span id="L-89"><a href="#L-89"><span class="linenos" data-line="89"></span></a><span class="cm"> Avoid overhead of checking target for a country with no alternative name.</span> </span><span id="L-90"><a href="#L-90"><span class="linenos" data-line="90"></span></a><span class="cm"> LATER: It appears the extra overhead may be low; perhaps remove this?</span> </span><span id="L-91"><a href="#L-91"><span class="linenos" data-line="91"></span></a><span class="cm"> --]==]</span> </span><span id="L-92"><a href="#L-92"><span class="linenos" data-line="92"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">getNilTarget</span><span class="p">(</span><span class="n">titleObj</span><span class="p">)</span> </span><span id="L-93"><a href="#L-93"><span class="linenos" data-line="93"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-94"><a href="#L-94"><span class="linenos" data-line="94"></span></a> <span class="kr">end</span> </span><span id="L-95"><a href="#L-95"><span class="linenos" data-line="95"></span></a> </span><span id="L-96"><a href="#L-96"><span class="linenos" data-line="96"></span></a> <span class="c1">-- Locally used by getTitle() and makeItem() and set as info = codes[code].</span> </span><span id="L-97"><a href="#L-97"><span class="linenos" data-line="97"></span></a> <span class="kd">local</span> <span class="n">info</span> </span><span id="L-98"><a href="#L-98"><span class="linenos" data-line="98"></span></a> </span><span id="L-99"><a href="#L-99"><span class="linenos" data-line="99"></span></a> <span class="cm">--[==[</span> </span><span id="L-100"><a href="#L-100"><span class="linenos" data-line="100"></span></a><span class="cm"> Return the title of a link to an existing page (if not &#39;all&#39;),</span> </span><span id="L-101"><a href="#L-101"><span class="linenos" data-line="101"></span></a><span class="cm"> or nil if there&#39;s none.</span> </span><span id="L-102"><a href="#L-102"><span class="linenos" data-line="102"></span></a><span class="cm"> Uses (info, options) from getList().</span> </span><span id="L-103"><a href="#L-103"><span class="linenos" data-line="103"></span></a><span class="cm"> --]==]</span> </span><span id="L-104"><a href="#L-104"><span class="linenos" data-line="104"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">getTitle</span><span class="p">(</span><span class="n">tryThe</span><span class="p">)</span> </span><span id="L-105"><a href="#L-105"><span class="linenos" data-line="105"></span></a> <span class="kd">local</span> <span class="n">pfx</span> <span class="o">=</span> <span class="p">(</span><span class="n">stripToNil</span><span class="p">(</span><span class="n">options</span><span class="p">.</span><span class="n">prefix</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="o">..</span> <span class="n">options</span><span class="p">.</span><span class="n">presep</span> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a> <span class="cm">--[==[ Enforce a single leading &#39;:&#39; for links to special namespaces</span> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></span></a><span class="cm"> (namespace names are not case-significant).</span> </span><span id="L-108"><a href="#L-108"><span class="linenos" data-line="108"></span></a><span class="cm"> --]==]</span> </span><span id="L-109"><a href="#L-109"><span class="linenos" data-line="109"></span></a> <span class="kd">local</span> <span class="n">ns</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="n">pfx</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">&#39;^:*%s-(%w+)%s*:%s*(.-)$&#39;</span><span class="p">)</span> </span><span id="L-110"><a href="#L-110"><span class="linenos" data-line="110"></span></a> <span class="kr">if</span> <span class="n">ns</span> <span class="kr">then</span> </span><span id="L-111"><a href="#L-111"><span class="linenos" data-line="111"></span></a> <span class="cm">--[==[ TODO: should we recognize interwiki prefixes here</span> </span><span id="L-112"><a href="#L-112"><span class="linenos" data-line="112"></span></a><span class="cm"> (e.g. &quot;fr:&quot; or &quot;de:&quot; which are also special namespaces)</span> </span><span id="L-113"><a href="#L-113"><span class="linenos" data-line="113"></span></a><span class="cm"> to enforce an inline link to the other wiki, instead of generating</span> </span><span id="L-114"><a href="#L-114"><span class="linenos" data-line="114"></span></a><span class="cm"> an interwiki on the side bar?</span> </span><span id="L-115"><a href="#L-115"><span class="linenos" data-line="115"></span></a><span class="cm"> This is for not needed on international wikis like Commons, but may</span> </span><span id="L-116"><a href="#L-116"><span class="linenos" data-line="116"></span></a><span class="cm"> be needed on Wikipedia.</span> </span><span id="L-117"><a href="#L-117"><span class="linenos" data-line="117"></span></a><span class="cm"> --]==]</span> </span><span id="L-118"><a href="#L-118"><span class="linenos" data-line="118"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">special</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">({</span><span class="s1">&#39;Category&#39;</span><span class="p">,</span> <span class="s1">&#39;File&#39;</span><span class="p">,</span> <span class="s1">&#39;Special&#39;</span><span class="p">})</span> <span class="kr">do</span> </span><span id="L-119"><a href="#L-119"><span class="linenos" data-line="119"></span></a> <span class="kr">if</span> <span class="n">special</span><span class="p">:</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="n">ns</span><span class="p">:</span><span class="n">lower</span><span class="p">()</span> <span class="kr">then</span> </span><span id="L-120"><a href="#L-120"><span class="linenos" data-line="120"></span></a> <span class="n">pfx</span> <span class="o">=</span> <span class="s1">&#39;:&#39;</span> <span class="o">..</span> <span class="n">special</span> <span class="o">..</span> <span class="s1">&#39;:&#39;</span> <span class="o">..</span> <span class="n">name</span> </span><span id="L-121"><a href="#L-121"><span class="linenos" data-line="121"></span></a> <span class="kr">end</span> </span><span id="L-122"><a href="#L-122"><span class="linenos" data-line="122"></span></a> <span class="kr">end</span> </span><span id="L-123"><a href="#L-123"><span class="linenos" data-line="123"></span></a> <span class="kr">end</span> </span><span id="L-124"><a href="#L-124"><span class="linenos" data-line="124"></span></a> <span class="kd">local</span> <span class="n">sfx</span> <span class="o">=</span> <span class="n">stripToNil</span><span class="p">(</span><span class="n">options</span><span class="p">.</span><span class="n">suffix</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-125"><a href="#L-125"><span class="linenos" data-line="125"></span></a> <span class="cm">--[==[ Replace final parts found in (option.suffix), according to the</span> </span><span id="L-126"><a href="#L-126"><span class="linenos" data-line="126"></span></a><span class="cm"> optional (subst) table defined in the (info) taken from the entry</span> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a><span class="cm"> defined for the country code in (lists)</span> </span><span id="L-128"><a href="#L-128"><span class="linenos" data-line="128"></span></a><span class="cm"> --]==]</span> </span><span id="L-129"><a href="#L-129"><span class="linenos" data-line="129"></span></a> <span class="n">sfx</span> <span class="o">=</span> <span class="n">options</span><span class="p">.</span><span class="n">sufsep</span> <span class="o">..</span> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">subst</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;table&#39;</span> <span class="ow">and</span> </span><span id="L-130"><a href="#L-130"><span class="linenos" data-line="130"></span></a> <span class="n">sfx</span><span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s1">&#39;%S.+$&#39;</span><span class="p">,</span> <span class="n">info</span><span class="p">.</span><span class="n">subst</span><span class="p">)</span> <span class="ow">or</span> <span class="n">sfx</span><span class="p">)</span> </span><span id="L-131"><a href="#L-131"><span class="linenos" data-line="131"></span></a> <span class="kd">local</span> <span class="n">getTarget</span> <span class="o">=</span> <span class="o">#</span><span class="n">info</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">getRedirectTarget</span> <span class="ow">or</span> <span class="n">getNilTarget</span> </span><span id="L-132"><a href="#L-132"><span class="linenos" data-line="132"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">name</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">info</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-133"><a href="#L-133"><span class="linenos" data-line="133"></span></a> <span class="kr">if</span> <span class="n">tryThe</span> <span class="kr">then</span> </span><span id="L-134"><a href="#L-134"><span class="linenos" data-line="134"></span></a> <span class="kr">if</span> <span class="n">i</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-135"><a href="#L-135"><span class="linenos" data-line="135"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-136"><a href="#L-136"><span class="linenos" data-line="136"></span></a> <span class="kr">end</span> </span><span id="L-137"><a href="#L-137"><span class="linenos" data-line="137"></span></a> <span class="n">name</span> <span class="o">=</span> <span class="s1">&#39;the &#39;</span> <span class="o">..</span> <span class="n">name</span> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></span></a> <span class="kr">end</span> </span><span id="L-139"><a href="#L-139"><span class="linenos" data-line="139"></span></a> <span class="cm">--[==[ Compress whitespaces in excess possibly introduced by</span> </span><span id="L-140"><a href="#L-140"><span class="linenos" data-line="140"></span></a><span class="cm"> (option.presep, option.sufsep) in (pfx) or (sfx), or left after</span> </span><span id="L-141"><a href="#L-141"><span class="linenos" data-line="141"></span></a><span class="cm"> applying (info.subst) to the (option.suffix)</span> </span><span id="L-142"><a href="#L-142"><span class="linenos" data-line="142"></span></a><span class="cm"> --]==]</span> </span><span id="L-143"><a href="#L-143"><span class="linenos" data-line="143"></span></a> <span class="kd">local</span> <span class="n">title</span> <span class="o">=</span> <span class="n">stripToNil</span><span class="p">(</span><span class="n">pfx</span> <span class="o">..</span> <span class="n">name</span> <span class="o">..</span> <span class="n">sfx</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a> <span class="kr">if</span> <span class="n">options</span><span class="p">.</span><span class="n">all</span> <span class="kr">then</span> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></span></a> <span class="kr">return</span> <span class="n">title</span> </span><span id="L-146"><a href="#L-146"><span class="linenos" data-line="146"></span></a> <span class="kr">end</span> </span><span id="L-147"><a href="#L-147"><span class="linenos" data-line="147"></span></a> <span class="kd">local</span> <span class="n">titleObj</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="n">title</span><span class="p">)</span> </span><span id="L-148"><a href="#L-148"><span class="linenos" data-line="148"></span></a> <span class="kr">if</span> <span class="n">titleObj</span> <span class="ow">and</span> <span class="n">titleObj</span><span class="p">.</span><span class="n">exists</span> <span class="kr">then</span> </span><span id="L-149"><a href="#L-149"><span class="linenos" data-line="149"></span></a> <span class="kd">local</span> <span class="n">t</span> <span class="o">=</span> <span class="n">getTarget</span><span class="p">(</span><span class="n">titleObj</span><span class="p">)</span> </span><span id="L-150"><a href="#L-150"><span class="linenos" data-line="150"></span></a> <span class="kr">if</span> <span class="n">t</span> <span class="o">~=</span> <span class="kc">false</span> <span class="kr">then</span> </span><span id="L-151"><a href="#L-151"><span class="linenos" data-line="151"></span></a> <span class="kr">return</span> <span class="n">t</span> <span class="ow">or</span> <span class="n">title</span> </span><span id="L-152"><a href="#L-152"><span class="linenos" data-line="152"></span></a> <span class="kr">end</span> </span><span id="L-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a> <span class="kr">end</span> </span><span id="L-154"><a href="#L-154"><span class="linenos" data-line="154"></span></a> <span class="kr">end</span> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a> <span class="kr">end</span> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></span></a> </span><span id="L-158"><a href="#L-158"><span class="linenos" data-line="158"></span></a> <span class="kd">local</span> <span class="n">itemPattern</span> <span class="o">=</span> <span class="s1">&#39;[[{title}|&lt;bdi&gt;{label}&lt;/bdi&gt;]]{post}{bullet}&#39;</span> </span><span id="L-159"><a href="#L-159"><span class="linenos" data-line="159"></span></a> <span class="kd">local</span> <span class="n">head</span><span class="p">,</span> <span class="n">trail</span> <span class="o">=</span> <span class="s1">&#39;&lt;span style=&quot;white-space:nowrap&quot;&gt;&#39;</span><span class="p">,</span> <span class="s1">&#39;&lt;/span&gt;&#39;</span> </span><span id="L-160"><a href="#L-160"><span class="linenos" data-line="160"></span></a> <span class="cm">--[==[ These bullets are used by makeItem(), but also after processing</span> </span><span id="L-161"><a href="#L-161"><span class="linenos" data-line="161"></span></a><span class="cm"> all items to remove the last bullet==stdBullet.</span> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></span></a><span class="cm"> --]==]</span> </span><span id="L-163"><a href="#L-163"><span class="linenos" data-line="163"></span></a> <span class="kd">local</span> <span class="n">altBullet</span><span class="p">,</span> <span class="n">stdBullet</span> <span class="o">=</span> <span class="s1">&#39; ≈&#39;</span><span class="p">,</span> <span class="s2">&quot; &#39;&#39;&#39;·&#39;&#39;&#39;&quot;</span> </span><span id="L-164"><a href="#L-164"><span class="linenos" data-line="164"></span></a> <span class="cm">--[==[ trail is used here, but also after processing all items to remove</span> </span><span id="L-165"><a href="#L-165"><span class="linenos" data-line="165"></span></a><span class="cm"> the last bullet==stdBullet.</span> </span><span id="L-166"><a href="#L-166"><span class="linenos" data-line="166"></span></a><span class="cm"> --]==]</span> </span><span id="L-167"><a href="#L-167"><span class="linenos" data-line="167"></span></a> <span class="n">itemPattern</span> <span class="o">=</span> <span class="n">head</span> <span class="o">..</span> <span class="n">itemPattern</span> <span class="o">..</span> <span class="n">trail</span> </span><span id="L-168"><a href="#L-168"><span class="linenos" data-line="168"></span></a> <span class="kd">local</span> <span class="n">post</span> </span><span id="L-169"><a href="#L-169"><span class="linenos" data-line="169"></span></a> </span><span id="L-170"><a href="#L-170"><span class="linenos" data-line="170"></span></a> <span class="c1">-- Locally used recursively.</span> </span><span id="L-171"><a href="#L-171"><span class="linenos" data-line="171"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">makeItem</span><span class="p">(</span><span class="n">tryThe</span><span class="p">)</span> </span><span id="L-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a> <span class="kd">local</span> <span class="n">pretitle</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-173"><a href="#L-173"><span class="linenos" data-line="173"></span></a> <span class="kd">local</span> <span class="n">itemLabel</span> </span><span id="L-174"><a href="#L-174"><span class="linenos" data-line="174"></span></a> <span class="kd">local</span> <span class="n">bullet</span> <span class="o">=</span> <span class="n">stdBullet</span> </span><span id="L-175"><a href="#L-175"><span class="linenos" data-line="175"></span></a> <span class="kd">local</span> <span class="n">second</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-176"><a href="#L-176"><span class="linenos" data-line="176"></span></a> <span class="kr">if</span> <span class="n">tryThe</span> <span class="kr">then</span> </span><span id="L-177"><a href="#L-177"><span class="linenos" data-line="177"></span></a> <span class="cm">--[==[ LATER:</span> </span><span id="L-178"><a href="#L-178"><span class="linenos" data-line="178"></span></a><span class="cm"> This assumes &#39;the&#39; applies to the first name, and only the first.</span> </span><span id="L-179"><a href="#L-179"><span class="linenos" data-line="179"></span></a><span class="cm"> --]==]</span> </span><span id="L-180"><a href="#L-180"><span class="linenos" data-line="180"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">info</span><span class="p">.</span><span class="n">the</span> <span class="kr">then</span> </span><span id="L-181"><a href="#L-181"><span class="linenos" data-line="181"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-182"><a href="#L-182"><span class="linenos" data-line="182"></span></a> <span class="kr">end</span> </span><span id="L-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a> <span class="kr">if</span> <span class="n">options</span><span class="p">.</span><span class="n">all</span> <span class="kr">then</span> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a> <span class="n">pretitle</span> <span class="o">=</span> <span class="s1">&#39;the &#39;</span> </span><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a> <span class="n">itemLabel</span><span class="p">,</span> <span class="n">second</span> <span class="o">=</span> <span class="n">makeItem</span><span class="p">()</span> </span><span id="L-186"><a href="#L-186"><span class="linenos" data-line="186"></span></a> <span class="n">bullet</span> <span class="o">=</span> <span class="n">altBullet</span> </span><span id="L-187"><a href="#L-187"><span class="linenos" data-line="187"></span></a> <span class="n">second</span> <span class="o">=</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="n">second</span> </span><span id="L-188"><a href="#L-188"><span class="linenos" data-line="188"></span></a> <span class="kr">end</span> </span><span id="L-189"><a href="#L-189"><span class="linenos" data-line="189"></span></a> <span class="kr">end</span> </span><span id="L-190"><a href="#L-190"><span class="linenos" data-line="190"></span></a> <span class="kd">local</span> <span class="n">title</span> <span class="o">=</span> <span class="n">getTitle</span><span class="p">(</span><span class="n">tryThe</span><span class="p">)</span> </span><span id="L-191"><a href="#L-191"><span class="linenos" data-line="191"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">title</span> <span class="kr">then</span> </span><span id="L-192"><a href="#L-192"><span class="linenos" data-line="192"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-193"><a href="#L-193"><span class="linenos" data-line="193"></span></a> <span class="kr">end</span> </span><span id="L-194"><a href="#L-194"><span class="linenos" data-line="194"></span></a> <span class="n">itemLabel</span> <span class="o">=</span> </span><span id="L-195"><a href="#L-195"><span class="linenos" data-line="195"></span></a> <span class="ow">not</span> <span class="n">options</span><span class="p">.</span><span class="n">all</span> <span class="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getLabelByLang</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">qid</span><span class="p">,</span> <span class="n">options</span><span class="p">.</span><span class="n">lang</span><span class="p">)</span> <span class="ow">or</span> </span><span id="L-196"><a href="#L-196"><span class="linenos" data-line="196"></span></a> <span class="p">(</span><span class="n">pretitle</span> <span class="o">..</span> <span class="n">info</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> </span><span id="L-197"><a href="#L-197"><span class="linenos" data-line="197"></span></a> <span class="kr">return</span> <span class="n">itemLabel</span><span class="p">,</span> </span><span id="L-198"><a href="#L-198"><span class="linenos" data-line="198"></span></a> <span class="p">(</span><span class="n">itemPattern</span><span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s1">&#39;{(%a+)}&#39;</span><span class="p">,</span> <span class="p">{</span> </span><span id="L-199"><a href="#L-199"><span class="linenos" data-line="199"></span></a> <span class="n">title</span> <span class="o">=</span> <span class="n">title</span><span class="p">,</span> </span><span id="L-200"><a href="#L-200"><span class="linenos" data-line="200"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">itemLabel</span><span class="p">,</span> </span><span id="L-201"><a href="#L-201"><span class="linenos" data-line="201"></span></a> <span class="n">post</span> <span class="o">=</span> <span class="n">post</span><span class="p">,</span> </span><span id="L-202"><a href="#L-202"><span class="linenos" data-line="202"></span></a> <span class="n">bullet</span> <span class="o">=</span> <span class="n">bullet</span><span class="p">,</span> </span><span id="L-203"><a href="#L-203"><span class="linenos" data-line="203"></span></a> <span class="p">})</span> </span><span id="L-204"><a href="#L-204"><span class="linenos" data-line="204"></span></a> <span class="p">)</span> <span class="o">..</span> <span class="n">second</span> </span><span id="L-205"><a href="#L-205"><span class="linenos" data-line="205"></span></a> <span class="kr">end</span> </span><span id="L-206"><a href="#L-206"><span class="linenos" data-line="206"></span></a> </span><span id="L-207"><a href="#L-207"><span class="linenos" data-line="207"></span></a> <span class="cm">--[==[ Language selection.</span> </span><span id="L-208"><a href="#L-208"><span class="linenos" data-line="208"></span></a><span class="cm"> The following works with a list that defines results for various languages.</span> </span><span id="L-209"><a href="#L-209"><span class="linenos" data-line="209"></span></a><span class="cm"> It also handles the special entries illustrated in the following.</span> </span><span id="L-210"><a href="#L-210"><span class="linenos" data-line="210"></span></a><span class="cm"> If the provided list does not contain an entry for the provided lang,</span> </span><span id="L-211"><a href="#L-211"><span class="linenos" data-line="211"></span></a><span class="cm"> langSwitch() will look for fallbacks defined in that list: assume &#39;LX&#39; and</span> </span><span id="L-212"><a href="#L-212"><span class="linenos" data-line="212"></span></a><span class="cm"> &#39;LY&#39; are language codes that are not defined in the list, and &#39;LX&#39; falls</span> </span><span id="L-213"><a href="#L-213"><span class="linenos" data-line="213"></span></a><span class="cm"> back to &#39;en&#39;, while &#39;LY&#39; falls back to &#39;default&#39;. Currently, the latter</span> </span><span id="L-214"><a href="#L-214"><span class="linenos" data-line="214"></span></a><span class="cm"> cannot occur, but it conceivably could.</span> </span><span id="L-215"><a href="#L-215"><span class="linenos" data-line="215"></span></a><span class="cm"> list = {</span> </span><span id="L-216"><a href="#L-216"><span class="linenos" data-line="216"></span></a><span class="cm"> automatic = &#39;AB CD EF GH&#39;, -- country codes</span> </span><span id="L-217"><a href="#L-217"><span class="linenos" data-line="217"></span></a><span class="cm"> english = &#39;automatic&#39;, -- uselang=en → &#39;AB CD EF GH&#39; without sort</span> </span><span id="L-218"><a href="#L-218"><span class="linenos" data-line="218"></span></a><span class="cm"> default = &#39;automatic sorted&#39;, -- uselang=LY → &#39;AB CD EF GH&#39; after sorting</span> </span><span id="L-219"><a href="#L-219"><span class="linenos" data-line="219"></span></a><span class="cm"> en = &#39;automatic sorted&#39;, -- uselang=LX → &#39;AB CD EF GH&#39; after sorting</span> </span><span id="L-220"><a href="#L-220"><span class="linenos" data-line="220"></span></a><span class="cm"> },</span> </span><span id="L-221"><a href="#L-221"><span class="linenos" data-line="221"></span></a><span class="cm"> * We&#39;ll use codes = the space-separated codes which are the most</span> </span><span id="L-222"><a href="#L-222"><span class="linenos" data-line="222"></span></a><span class="cm"> appropriate order for lang.</span> </span><span id="L-223"><a href="#L-223"><span class="linenos" data-line="223"></span></a><span class="cm"> * We&#39;ll use getSortKey = nil or a function to make a sort key, if the</span> </span><span id="L-224"><a href="#L-224"><span class="linenos" data-line="224"></span></a><span class="cm"> entry was &#39;automatic sorted&#39;.</span> </span><span id="L-225"><a href="#L-225"><span class="linenos" data-line="225"></span></a><span class="cm"> * The two entries &#39;automatic&#39; and &#39;english&#39; override what langSwitch alone</span> </span><span id="L-226"><a href="#L-226"><span class="linenos" data-line="226"></span></a><span class="cm"> would return. But a specific language may be set to use.</span> </span><span id="L-227"><a href="#L-227"><span class="linenos" data-line="227"></span></a><span class="cm"> As an optimization, lang==&#39;en&#39; uses the &#39;english&#39; entry setting, if defined:</span> </span><span id="L-228"><a href="#L-228"><span class="linenos" data-line="228"></span></a><span class="cm"> * when english==&#39;automatic&#39;, the result is the automatic setting, which</span> </span><span id="L-229"><a href="#L-229"><span class="linenos" data-line="229"></span></a><span class="cm"> may or may not use the overhead of sorting.</span> </span><span id="L-230"><a href="#L-230"><span class="linenos" data-line="230"></span></a><span class="cm"> Sorting applies to country names obtained from Wikidata in the user&#39;s</span> </span><span id="L-231"><a href="#L-231"><span class="linenos" data-line="231"></span></a><span class="cm"> language:</span> </span><span id="L-232"><a href="#L-232"><span class="linenos" data-line="232"></span></a><span class="cm"> * The automatic sorting is crude (language neutral) and will often be</span> </span><span id="L-233"><a href="#L-233"><span class="linenos" data-line="233"></span></a><span class="cm"> unhelpful for specific languages (notably for the ideographic script</span> </span><span id="L-234"><a href="#L-234"><span class="linenos" data-line="234"></span></a><span class="cm"> which remains sorted in binary order and still requires manual sorting).</span> </span><span id="L-235"><a href="#L-235"><span class="linenos" data-line="235"></span></a><span class="cm"> * It is based on sort keys computed in Module:MakeSortKey.</span> </span><span id="L-236"><a href="#L-236"><span class="linenos" data-line="236"></span></a><span class="cm"> --]==]</span> </span><span id="L-237"><a href="#L-237"><span class="linenos" data-line="237"></span></a> <span class="kd">local</span> <span class="n">codes</span> </span><span id="L-238"><a href="#L-238"><span class="linenos" data-line="238"></span></a> <span class="kr">if</span> <span class="n">options</span><span class="p">.</span><span class="n">lang</span> <span class="o">==</span> <span class="s1">&#39;en&#39;</span> <span class="ow">and</span> <span class="n">lists</span><span class="p">.</span><span class="n">english</span> <span class="kr">then</span> </span><span id="L-239"><a href="#L-239"><span class="linenos" data-line="239"></span></a> <span class="n">codes</span> <span class="o">=</span> <span class="n">lists</span><span class="p">.</span><span class="n">english</span> </span><span id="L-240"><a href="#L-240"><span class="linenos" data-line="240"></span></a> <span class="kr">else</span> </span><span id="L-241"><a href="#L-241"><span class="linenos" data-line="241"></span></a> <span class="n">codes</span> <span class="o">=</span> <span class="n">langSwitch</span><span class="p">(</span><span class="n">lists</span><span class="p">,</span> <span class="n">options</span><span class="p">.</span><span class="n">lang</span><span class="p">)</span> </span><span id="L-242"><a href="#L-242"><span class="linenos" data-line="242"></span></a> <span class="kr">end</span> </span><span id="L-243"><a href="#L-243"><span class="linenos" data-line="243"></span></a> </span><span id="L-244"><a href="#L-244"><span class="linenos" data-line="244"></span></a> <span class="kd">local</span> <span class="n">getSortKey</span> </span><span id="L-245"><a href="#L-245"><span class="linenos" data-line="245"></span></a> <span class="kr">if</span> <span class="n">codes</span> <span class="o">==</span> <span class="s1">&#39;automatic&#39;</span> <span class="ow">or</span> <span class="n">codes</span> <span class="o">==</span> <span class="s1">&#39;automatic sorted&#39;</span> <span class="kr">then</span> </span><span id="L-246"><a href="#L-246"><span class="linenos" data-line="246"></span></a> <span class="kr">if</span> <span class="n">codes</span> <span class="o">==</span> <span class="s1">&#39;automatic sorted&#39;</span> <span class="kr">then</span> </span><span id="L-247"><a href="#L-247"><span class="linenos" data-line="247"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">_makeSortKey</span> <span class="kr">then</span> </span><span id="L-248"><a href="#L-248"><span class="linenos" data-line="248"></span></a> <span class="n">_makeSortKey</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="s1">&#39;Module:MakeSortKey&#39;</span><span class="p">).</span><span class="n">makeSortKey</span> </span><span id="L-249"><a href="#L-249"><span class="linenos" data-line="249"></span></a> <span class="kr">end</span> </span><span id="L-250"><a href="#L-250"><span class="linenos" data-line="250"></span></a> <span class="n">getSortKey</span> <span class="o">=</span> <span class="n">_makeSortKey</span> </span><span id="L-251"><a href="#L-251"><span class="linenos" data-line="251"></span></a> <span class="kr">end</span> </span><span id="L-252"><a href="#L-252"><span class="linenos" data-line="252"></span></a> <span class="n">codes</span> <span class="o">=</span> <span class="n">lists</span><span class="p">.</span><span class="n">automatic</span> <span class="ow">or</span> <span class="nb">error</span><span class="p">(</span><span class="s1">&#39;Codes list uses &quot;&#39;</span> </span><span id="L-253"><a href="#L-253"><span class="linenos" data-line="253"></span></a> <span class="o">..</span> <span class="n">codes</span> <span class="o">..</span> <span class="s1">&#39;&quot; but &quot;automatic&quot; is not defined&#39;</span><span class="p">)</span> </span><span id="L-254"><a href="#L-254"><span class="linenos" data-line="254"></span></a> <span class="kr">end</span> </span><span id="L-255"><a href="#L-255"><span class="linenos" data-line="255"></span></a> </span><span id="L-256"><a href="#L-256"><span class="linenos" data-line="256"></span></a> <span class="cm">--[==[</span> </span><span id="L-257"><a href="#L-257"><span class="linenos" data-line="257"></span></a><span class="cm"> Split the space-separated list of codes, find and process their info to</span> </span><span id="L-258"><a href="#L-258"><span class="linenos" data-line="258"></span></a><span class="cm"> build the unsorted items to display. Items will be actually sorted, if</span> </span><span id="L-259"><a href="#L-259"><span class="linenos" data-line="259"></span></a><span class="cm"> wanted, once they are complete.</span> </span><span id="L-260"><a href="#L-260"><span class="linenos" data-line="260"></span></a><span class="cm"> --]==]</span> </span><span id="L-261"><a href="#L-261"><span class="linenos" data-line="261"></span></a> <span class="kd">local</span> <span class="n">items</span><span class="p">,</span> <span class="n">wantSort</span> <span class="o">=</span> <span class="p">{},</span> <span class="n">getSortKey</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">options</span><span class="p">.</span><span class="n">all</span> </span><span id="L-262"><a href="#L-262"><span class="linenos" data-line="262"></span></a> <span class="kr">for</span> <span class="n">code</span> <span class="kr">in</span> <span class="n">codes</span><span class="p">:</span><span class="n">gmatch</span><span class="p">(</span><span class="s1">&#39;%S+&#39;</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-263"><a href="#L-263"><span class="linenos" data-line="263"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">exclude</span><span class="p">[</span><span class="n">code</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-264"><a href="#L-264"><span class="linenos" data-line="264"></span></a> <span class="n">info</span> <span class="o">=</span> <span class="n">infos</span><span class="p">[</span><span class="n">code</span><span class="p">]</span> </span><span id="L-265"><a href="#L-265"><span class="linenos" data-line="265"></span></a> <span class="kr">if</span> <span class="n">info</span> <span class="kr">then</span> </span><span id="L-266"><a href="#L-266"><span class="linenos" data-line="266"></span></a> <span class="n">post</span> <span class="o">=</span> </span><span id="L-267"><a href="#L-267"><span class="linenos" data-line="267"></span></a> <span class="p">(</span><span class="n">options</span><span class="p">.</span><span class="n">showcode</span> <span class="ow">and</span> </span><span id="L-268"><a href="#L-268"><span class="linenos" data-line="268"></span></a> <span class="p">(</span><span class="s1">&#39; &lt;bdi&gt;[&lt;kbd&gt;&#39;</span> <span class="o">..</span> <span class="n">code</span> <span class="o">..</span> <span class="s1">&#39;&lt;/kbd&gt;]&lt;/bdi&gt;&#39;</span><span class="p">)</span> </span><span id="L-269"><a href="#L-269"><span class="linenos" data-line="269"></span></a> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="o">..</span> </span><span id="L-270"><a href="#L-270"><span class="linenos" data-line="270"></span></a> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">mark</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> <span class="ow">and</span> </span><span id="L-271"><a href="#L-271"><span class="linenos" data-line="271"></span></a> <span class="p">(</span><span class="s1">&#39;&lt;sup&gt;&lt;bdi&gt;&#39;</span> <span class="o">..</span> <span class="n">info</span><span class="p">.</span><span class="n">mark</span> <span class="o">..</span> <span class="s1">&#39;&lt;/bdi&gt;&lt;/sup&gt;&#39;</span><span class="p">)</span> </span><span id="L-272"><a href="#L-272"><span class="linenos" data-line="272"></span></a> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="o">..</span> </span><span id="L-273"><a href="#L-273"><span class="linenos" data-line="273"></span></a> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">note</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> <span class="ow">and</span> </span><span id="L-274"><a href="#L-274"><span class="linenos" data-line="274"></span></a> <span class="p">(</span><span class="s1">&#39; &lt;bdi&gt;&#39;</span> <span class="o">..</span> <span class="n">info</span><span class="p">.</span><span class="n">note</span> <span class="o">..</span> <span class="s1">&#39;&lt;/bdi&gt;&#39;</span><span class="p">)</span> </span><span id="L-275"><a href="#L-275"><span class="linenos" data-line="275"></span></a> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> </span><span id="L-276"><a href="#L-276"><span class="linenos" data-line="276"></span></a> <span class="n">post</span> <span class="o">=</span> <span class="n">post</span> <span class="o">~=</span> <span class="s1">&#39;&#39;</span> <span class="ow">and</span> <span class="s1">&#39;&lt;small style=&quot;font-size:88%&quot;&gt;&#39;</span> </span><span id="L-277"><a href="#L-277"><span class="linenos" data-line="277"></span></a> <span class="o">..</span> <span class="n">post</span> <span class="o">..</span> <span class="s1">&#39;&lt;/small&gt;&#39;</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-278"><a href="#L-278"><span class="linenos" data-line="278"></span></a> <span class="kd">local</span> <span class="n">itemLabel</span><span class="p">,</span> <span class="n">result</span> <span class="o">=</span> <span class="n">makeItem</span><span class="p">(</span><span class="kc">true</span><span class="p">)</span> </span><span id="L-279"><a href="#L-279"><span class="linenos" data-line="279"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">result</span> <span class="kr">then</span> </span><span id="L-280"><a href="#L-280"><span class="linenos" data-line="280"></span></a> <span class="n">itemLabel</span><span class="p">,</span> <span class="n">result</span> <span class="o">=</span> <span class="n">makeItem</span><span class="p">()</span> </span><span id="L-281"><a href="#L-281"><span class="linenos" data-line="281"></span></a> <span class="kr">end</span> </span><span id="L-282"><a href="#L-282"><span class="linenos" data-line="282"></span></a> <span class="kr">if</span> <span class="n">result</span> <span class="kr">then</span> </span><span id="L-283"><a href="#L-283"><span class="linenos" data-line="283"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">items</span><span class="p">,</span> </span><span id="L-284"><a href="#L-284"><span class="linenos" data-line="284"></span></a> <span class="n">wantSort</span> <span class="ow">and</span> <span class="p">{</span> </span><span id="L-285"><a href="#L-285"><span class="linenos" data-line="285"></span></a> <span class="n">getSortKey</span><span class="p">(</span><span class="n">itemLabel</span><span class="p">,</span> <span class="n">options</span><span class="p">.</span><span class="n">lang</span><span class="p">),</span> </span><span id="L-286"><a href="#L-286"><span class="linenos" data-line="286"></span></a> <span class="n">result</span> </span><span id="L-287"><a href="#L-287"><span class="linenos" data-line="287"></span></a> <span class="p">}</span> <span class="ow">or</span> <span class="n">result</span><span class="p">)</span> </span><span id="L-288"><a href="#L-288"><span class="linenos" data-line="288"></span></a> <span class="kr">end</span> </span><span id="L-289"><a href="#L-289"><span class="linenos" data-line="289"></span></a> <span class="kr">else</span> </span><span id="L-290"><a href="#L-290"><span class="linenos" data-line="290"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">message</span> <span class="o">=</span> <span class="n">options</span><span class="p">.</span><span class="n">message</span> <span class="ow">or</span> <span class="p">(</span><span class="s1">&#39;No info about code &quot;&#39;</span> </span><span id="L-291"><a href="#L-291"><span class="linenos" data-line="291"></span></a> <span class="o">..</span> <span class="n">code</span> <span class="o">..</span> <span class="s1">&#39;&quot;&#39;</span><span class="p">)</span> </span><span id="L-292"><a href="#L-292"><span class="linenos" data-line="292"></span></a> <span class="kr">end</span> </span><span id="L-293"><a href="#L-293"><span class="linenos" data-line="293"></span></a> <span class="kr">end</span> </span><span id="L-294"><a href="#L-294"><span class="linenos" data-line="294"></span></a> <span class="kr">end</span> </span><span id="L-295"><a href="#L-295"><span class="linenos" data-line="295"></span></a> </span><span id="L-296"><a href="#L-296"><span class="linenos" data-line="296"></span></a> <span class="cm">--[==[</span> </span><span id="L-297"><a href="#L-297"><span class="linenos" data-line="297"></span></a><span class="cm"> Sort the items, if wanted, using the sort key (precomputed above)</span> </span><span id="L-298"><a href="#L-298"><span class="linenos" data-line="298"></span></a><span class="cm"> with which they were associated.</span> </span><span id="L-299"><a href="#L-299"><span class="linenos" data-line="299"></span></a><span class="cm"> --]==]</span> </span><span id="L-300"><a href="#L-300"><span class="linenos" data-line="300"></span></a> <span class="kr">if</span> <span class="n">wantSort</span> <span class="kr">then</span> </span><span id="L-301"><a href="#L-301"><span class="linenos" data-line="301"></span></a> <span class="nb">table.sort</span><span class="p">(</span><span class="n">items</span><span class="p">,</span> <span class="kr">function</span> <span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span> <span class="kr">return</span> <span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="kr">end</span><span class="p">)</span> </span><span id="L-302"><a href="#L-302"><span class="linenos" data-line="302"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">v</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">items</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-303"><a href="#L-303"><span class="linenos" data-line="303"></span></a> <span class="n">items</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> </span><span id="L-304"><a href="#L-304"><span class="linenos" data-line="304"></span></a> <span class="kr">end</span> </span><span id="L-305"><a href="#L-305"><span class="linenos" data-line="305"></span></a> <span class="kr">end</span> </span><span id="L-306"><a href="#L-306"><span class="linenos" data-line="306"></span></a> </span><span id="L-307"><a href="#L-307"><span class="linenos" data-line="307"></span></a> <span class="cm">--[==[</span> </span><span id="L-308"><a href="#L-308"><span class="linenos" data-line="308"></span></a><span class="cm"> Pack the items into a single string, and remove the last</span> </span><span id="L-309"><a href="#L-309"><span class="linenos" data-line="309"></span></a><span class="cm"> bullet==stdBullet just before trail.</span> </span><span id="L-310"><a href="#L-310"><span class="linenos" data-line="310"></span></a><span class="cm"> --]==]</span> </span><span id="L-311"><a href="#L-311"><span class="linenos" data-line="311"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="nb">table.concat</span><span class="p">(</span><span class="n">items</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="p">)</span> </span><span id="L-312"><a href="#L-312"><span class="linenos" data-line="312"></span></a> <span class="kd">local</span> <span class="n">stdBulletTrail</span> <span class="o">=</span> <span class="n">stdBullet</span> <span class="o">..</span> <span class="n">trail</span> </span><span id="L-313"><a href="#L-313"><span class="linenos" data-line="313"></span></a> <span class="kd">local</span> <span class="n">stdBulletTrailLen</span> <span class="o">=</span> <span class="o">#</span><span class="n">stdBulletTrail</span> </span><span id="L-314"><a href="#L-314"><span class="linenos" data-line="314"></span></a> <span class="kr">if</span> <span class="n">result</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="o">-</span><span class="n">stdBulletTrailLen</span><span class="p">)</span> <span class="o">==</span> <span class="n">stdBulletTrail</span> <span class="kr">then</span> </span><span id="L-315"><a href="#L-315"><span class="linenos" data-line="315"></span></a> <span class="c1">-- Omit trailing bullet from last item</span> </span><span id="L-316"><a href="#L-316"><span class="linenos" data-line="316"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">result</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="n">stdBulletTrailLen</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">..</span> <span class="n">trail</span> </span><span id="L-317"><a href="#L-317"><span class="linenos" data-line="317"></span></a> <span class="kr">end</span> </span><span id="L-318"><a href="#L-318"><span class="linenos" data-line="318"></span></a> <span class="kr">return</span> <span class="n">result</span> </span><span id="L-319"><a href="#L-319"><span class="linenos" data-line="319"></span></a><span class="kr">end</span> </span><span id="L-320"><a href="#L-320"><span class="linenos" data-line="320"></span></a> </span><span id="L-321"><a href="#L-321"><span class="linenos" data-line="321"></span></a><span class="c1">-- Locally used by _main() and main().</span> </span><span id="L-322"><a href="#L-322"><span class="linenos" data-line="322"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">isnonempty</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> </span><span id="L-323"><a href="#L-323"><span class="linenos" data-line="323"></span></a> <span class="kr">return</span> <span class="n">text</span> <span class="ow">and</span> <span class="n">text</span> <span class="o">~=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-324"><a href="#L-324"><span class="linenos" data-line="324"></span></a><span class="kr">end</span> </span><span id="L-325"><a href="#L-325"><span class="linenos" data-line="325"></span></a> </span><span id="L-326"><a href="#L-326"><span class="linenos" data-line="326"></span></a><span class="c1">-- Locally used by main().</span> </span><span id="L-327"><a href="#L-327"><span class="linenos" data-line="327"></span></a><span class="cm">--[==[</span> </span><span id="L-328"><a href="#L-328"><span class="linenos" data-line="328"></span></a><span class="cm">Exported by this module, for usage in Lua.</span> </span><span id="L-329"><a href="#L-329"><span class="linenos" data-line="329"></span></a><span class="cm">--]==]</span> </span><span id="L-330"><a href="#L-330"><span class="linenos" data-line="330"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">_main</span><span class="p">(</span><span class="n">options</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span> </span><span id="L-331"><a href="#L-331"><span class="linenos" data-line="331"></span></a> <span class="c1">-- Caller must provide a valid language code in options.lang.</span> </span><span id="L-332"><a href="#L-332"><span class="linenos" data-line="332"></span></a> <span class="kd">local</span> <span class="n">lang</span> <span class="o">=</span> <span class="n">options</span><span class="p">.</span><span class="n">lang</span> </span><span id="L-333"><a href="#L-333"><span class="linenos" data-line="333"></span></a> <span class="kd">local</span> <span class="n">langObj</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">language</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="n">lang</span><span class="p">)</span> </span><span id="L-334"><a href="#L-334"><span class="linenos" data-line="334"></span></a> </span><span id="L-335"><a href="#L-335"><span class="linenos" data-line="335"></span></a> <span class="cm">--[==[</span> </span><span id="L-336"><a href="#L-336"><span class="linenos" data-line="336"></span></a><span class="cm"> Generate the table of variable names supported in placeholders</span> </span><span id="L-337"><a href="#L-337"><span class="linenos" data-line="337"></span></a><span class="cm"> (inside patterns or subpatterns), or in simple conditions.</span> </span><span id="L-338"><a href="#L-338"><span class="linenos" data-line="338"></span></a><span class="cm"> --]==]</span> </span><span id="L-339"><a href="#L-339"><span class="linenos" data-line="339"></span></a> <span class="kd">local</span> <span class="n">var</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-340"><a href="#L-340"><span class="linenos" data-line="340"></span></a> <span class="c1">-- These supported variables are independant of the sections.</span> </span><span id="L-341"><a href="#L-341"><span class="linenos" data-line="341"></span></a> <span class="n">lang</span> <span class="o">=</span> <span class="n">lang</span><span class="p">,</span> </span><span id="L-342"><a href="#L-342"><span class="linenos" data-line="342"></span></a> <span class="n">dir</span> <span class="o">=</span> <span class="n">langObj</span><span class="p">:</span><span class="n">getDir</span><span class="p">(),</span> <span class="c1">-- value = &#39;ltr&#39; or &#39;rtl&#39;</span> </span><span id="L-343"><a href="#L-343"><span class="linenos" data-line="343"></span></a> <span class="n">colon</span> <span class="o">=</span> <span class="n">options</span><span class="p">.</span><span class="n">colon</span> <span class="ow">or</span> <span class="s1">&#39;: &#39;</span><span class="p">,</span> </span><span id="L-344"><a href="#L-344"><span class="linenos" data-line="344"></span></a> <span class="p">}</span> </span><span id="L-345"><a href="#L-345"><span class="linenos" data-line="345"></span></a> <span class="kd">local</span> <span class="n">wantSimple</span> <span class="o">=</span> <span class="n">options</span><span class="p">.</span><span class="n">simple</span> <span class="ow">and</span> <span class="n">data</span><span class="p">.</span><span class="n">simple</span> </span><span id="L-346"><a href="#L-346"><span class="linenos" data-line="346"></span></a> <span class="kd">local</span> <span class="n">exceptions</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">simple</span> <span class="ow">or</span> <span class="p">{}</span> </span><span id="L-347"><a href="#L-347"><span class="linenos" data-line="347"></span></a> <span class="c1">-- Each section adds two variables for its title and its list of items.</span> </span><span id="L-348"><a href="#L-348"><span class="linenos" data-line="348"></span></a> <span class="kd">local</span> <span class="n">sections</span> <span class="o">=</span> <span class="n">exceptions</span><span class="p">.</span><span class="n">sections</span> <span class="ow">or</span> <span class="p">{}</span> </span><span id="L-349"><a href="#L-349"><span class="linenos" data-line="349"></span></a> <span class="kr">for</span> <span class="n">section</span><span class="p">,</span> <span class="n">titles</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">titles</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-350"><a href="#L-350"><span class="linenos" data-line="350"></span></a> <span class="c1">-- Add support for the variable named like &#39;{section}title&#39;.</span> </span><span id="L-351"><a href="#L-351"><span class="linenos" data-line="351"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">wantSimple</span> <span class="ow">or</span> <span class="n">sections</span><span class="p">[</span><span class="n">section</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-352"><a href="#L-352"><span class="linenos" data-line="352"></span></a> <span class="n">var</span><span class="p">[</span><span class="n">section</span> <span class="o">..</span> <span class="s1">&#39;title&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;&lt;bdi&gt;&#39;</span> <span class="o">..</span> <span class="n">langSwitch</span><span class="p">(</span><span class="n">titles</span><span class="p">,</span> <span class="n">lang</span><span class="p">)</span> </span><span id="L-353"><a href="#L-353"><span class="linenos" data-line="353"></span></a> <span class="o">..</span> <span class="s1">&#39;&lt;/bdi&gt;&#39;</span> </span><span id="L-354"><a href="#L-354"><span class="linenos" data-line="354"></span></a> <span class="kr">end</span> </span><span id="L-355"><a href="#L-355"><span class="linenos" data-line="355"></span></a> <span class="kr">end</span> </span><span id="L-356"><a href="#L-356"><span class="linenos" data-line="356"></span></a> <span class="kr">for</span> <span class="n">section</span><span class="p">,</span> <span class="n">lists</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">lists</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-357"><a href="#L-357"><span class="linenos" data-line="357"></span></a> <span class="c1">-- Add support for the variable named like &#39;{section}list&#39;.</span> </span><span id="L-358"><a href="#L-358"><span class="linenos" data-line="358"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">wantSimple</span> <span class="ow">or</span> <span class="n">sections</span><span class="p">[</span><span class="n">section</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-359"><a href="#L-359"><span class="linenos" data-line="359"></span></a> <span class="kd">local</span> <span class="n">exclude</span> <span class="o">=</span> <span class="n">wantSimple</span> <span class="ow">and</span> <span class="p">{}</span> <span class="ow">or</span> <span class="n">sections</span><span class="p">[</span><span class="n">section</span><span class="p">]</span> <span class="ow">or</span> <span class="p">{}</span> </span><span id="L-360"><a href="#L-360"><span class="linenos" data-line="360"></span></a> <span class="n">var</span><span class="p">[</span><span class="n">section</span> <span class="o">..</span> <span class="s1">&#39;list&#39;</span><span class="p">]</span> </span><span id="L-361"><a href="#L-361"><span class="linenos" data-line="361"></span></a> <span class="o">=</span> <span class="n">getList</span><span class="p">(</span><span class="n">lists</span><span class="p">,</span> <span class="n">exclude</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="n">data</span><span class="p">.</span><span class="n">infos</span><span class="p">)</span> </span><span id="L-362"><a href="#L-362"><span class="linenos" data-line="362"></span></a> <span class="kr">end</span> </span><span id="L-363"><a href="#L-363"><span class="linenos" data-line="363"></span></a> <span class="kr">end</span> </span><span id="L-364"><a href="#L-364"><span class="linenos" data-line="364"></span></a> </span><span id="L-365"><a href="#L-365"><span class="linenos" data-line="365"></span></a> <span class="cm">--[==[</span> </span><span id="L-366"><a href="#L-366"><span class="linenos" data-line="366"></span></a><span class="cm"> The pattern may contain &#39;{variablename}&#39; placeholders to be replaced by</span> </span><span id="L-367"><a href="#L-367"><span class="linenos" data-line="367"></span></a><span class="cm"> the value of `var[&#39;variablename&#39;]`. See above for supported variables.</span> </span><span id="L-368"><a href="#L-368"><span class="linenos" data-line="368"></span></a><span class="cm"> --]==]</span> </span><span id="L-369"><a href="#L-369"><span class="linenos" data-line="369"></span></a> <span class="kd">local</span> <span class="n">pattern</span> <span class="o">=</span> <span class="n">wantSimple</span> <span class="ow">and</span> <span class="n">exceptions</span><span class="p">.</span><span class="n">pattern</span> <span class="ow">or</span> <span class="n">data</span><span class="p">.</span><span class="n">pattern</span> </span><span id="L-370"><a href="#L-370"><span class="linenos" data-line="370"></span></a> <span class="kd">local</span> <span class="n">usedpattern</span> </span><span id="L-371"><a href="#L-371"><span class="linenos" data-line="371"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">pattern</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> <span class="kr">then</span> </span><span id="L-372"><a href="#L-372"><span class="linenos" data-line="372"></span></a> <span class="c1">-- This is an unconditional pattern, represented as a simple string</span> </span><span id="L-373"><a href="#L-373"><span class="linenos" data-line="373"></span></a> <span class="n">usedpattern</span> <span class="o">=</span> <span class="n">pattern</span> </span><span id="L-374"><a href="#L-374"><span class="linenos" data-line="374"></span></a> <span class="kr">elseif</span> <span class="nb">type</span><span class="p">(</span><span class="n">pattern</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;table&#39;</span> <span class="kr">then</span> </span><span id="L-375"><a href="#L-375"><span class="linenos" data-line="375"></span></a> <span class="cm">--[==[ pattern is an array containing an ordered array of conditional</span> </span><span id="L-376"><a href="#L-376"><span class="linenos" data-line="376"></span></a><span class="cm"> patterns, added in the same order to the result (non-integer keys in</span> </span><span id="L-377"><a href="#L-377"><span class="linenos" data-line="377"></span></a><span class="cm"> this table are ignored).</span> </span><span id="L-378"><a href="#L-378"><span class="linenos" data-line="378"></span></a><span class="cm"> --]==]</span> </span><span id="L-379"><a href="#L-379"><span class="linenos" data-line="379"></span></a> <span class="n">usedpattern</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-380"><a href="#L-380"><span class="linenos" data-line="380"></span></a> <span class="c1">-- Note: keys not in the numbered sequence are ignored.</span> </span><span id="L-381"><a href="#L-381"><span class="linenos" data-line="381"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">condpattern</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">pattern</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-382"><a href="#L-382"><span class="linenos" data-line="382"></span></a> <span class="cm">--[=[</span> </span><span id="L-383"><a href="#L-383"><span class="linenos" data-line="383"></span></a><span class="cm"> Each conditional pattern is represented either:</span> </span><span id="L-384"><a href="#L-384"><span class="linenos" data-line="384"></span></a><span class="cm"> - as a simple string when there&#39;s no condition (this unconditional</span> </span><span id="L-385"><a href="#L-385"><span class="linenos" data-line="385"></span></a><span class="cm"> pattern will be always added to the result), or</span> </span><span id="L-386"><a href="#L-386"><span class="linenos" data-line="386"></span></a><span class="cm"> - as an ordered table, whose first element is a subpattern string</span> </span><span id="L-387"><a href="#L-387"><span class="linenos" data-line="387"></span></a><span class="cm"> and the other elements represent an union of several</span> </span><span id="L-388"><a href="#L-388"><span class="linenos" data-line="388"></span></a><span class="cm"> (non-exclusive) conditions.</span> </span><span id="L-389"><a href="#L-389"><span class="linenos" data-line="389"></span></a><span class="cm"> (If any one of the conditions evaluates to true (OR), the conditional</span> </span><span id="L-390"><a href="#L-390"><span class="linenos" data-line="390"></span></a><span class="cm"> subpattern will be used.)</span> </span><span id="L-391"><a href="#L-391"><span class="linenos" data-line="391"></span></a><span class="cm"> Each condition may itself be represented either:</span> </span><span id="L-392"><a href="#L-392"><span class="linenos" data-line="392"></span></a><span class="cm"> - as a simple string for simple conditions, or</span> </span><span id="L-393"><a href="#L-393"><span class="linenos" data-line="393"></span></a><span class="cm"> - as an ordered table of subconditions, i.e. a conjunction of several</span> </span><span id="L-394"><a href="#L-394"><span class="linenos" data-line="394"></span></a><span class="cm"> (non-exclusive) simple conditions.</span> </span><span id="L-395"><a href="#L-395"><span class="linenos" data-line="395"></span></a><span class="cm"> (If any one of the subconditions evaluates to false (AND), the</span> </span><span id="L-396"><a href="#L-396"><span class="linenos" data-line="396"></span></a><span class="cm"> conditional subpattern will NOT be used. Simple conditions are</span> </span><span id="L-397"><a href="#L-397"><span class="linenos" data-line="397"></span></a><span class="cm"> represented as strings, used to evaluate tests based on names of</span> </span><span id="L-398"><a href="#L-398"><span class="linenos" data-line="398"></span></a><span class="cm"> variables (usable in placeholders of patterns or subpatterns.)</span> </span><span id="L-399"><a href="#L-399"><span class="linenos" data-line="399"></span></a><span class="cm"> The variable names used in simple conditions don&#39;t need to be</span> </span><span id="L-400"><a href="#L-400"><span class="linenos" data-line="400"></span></a><span class="cm"> present within the pattern or subpattern strings.</span> </span><span id="L-401"><a href="#L-401"><span class="linenos" data-line="401"></span></a><span class="cm"> A simple condition can currently take one the following forms:</span> </span><span id="L-402"><a href="#L-402"><span class="linenos" data-line="402"></span></a><span class="cm"> - &#39;variablename&#39;: the simple condition is true if the variable</span> </span><span id="L-403"><a href="#L-403"><span class="linenos" data-line="403"></span></a><span class="cm"> with that name is non-empty;</span> </span><span id="L-404"><a href="#L-404"><span class="linenos" data-line="404"></span></a><span class="cm"> - &#39;!variablename&#39;: the simple condition is true if the variable</span> </span><span id="L-405"><a href="#L-405"><span class="linenos" data-line="405"></span></a><span class="cm"> with that name is empty.</span> </span><span id="L-406"><a href="#L-406"><span class="linenos" data-line="406"></span></a><span class="cm"> --]=]</span> </span><span id="L-407"><a href="#L-407"><span class="linenos" data-line="407"></span></a> <span class="kd">local</span> <span class="n">subpattern</span><span class="p">,</span> <span class="n">condition</span> </span><span id="L-408"><a href="#L-408"><span class="linenos" data-line="408"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">condpattern</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> <span class="kr">then</span> <span class="c1">-- Unconditional subpattern.</span> </span><span id="L-409"><a href="#L-409"><span class="linenos" data-line="409"></span></a> <span class="n">subpattern</span><span class="p">,</span> <span class="n">condition</span> <span class="o">=</span> <span class="n">condpattern</span><span class="p">,</span> <span class="kc">true</span> </span><span id="L-410"><a href="#L-410"><span class="linenos" data-line="410"></span></a> <span class="kr">elseif</span> <span class="nb">type</span><span class="p">(</span><span class="n">condpattern</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;table&#39;</span> <span class="kr">then</span> <span class="c1">-- Conditional subpattern.</span> </span><span id="L-411"><a href="#L-411"><span class="linenos" data-line="411"></span></a> <span class="n">subpattern</span><span class="p">,</span> <span class="n">condition</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="kc">false</span> </span><span id="L-412"><a href="#L-412"><span class="linenos" data-line="412"></span></a> <span class="c1">-- Note: keys not in the numbered sequence are ignored.</span> </span><span id="L-413"><a href="#L-413"><span class="linenos" data-line="413"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">v</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">condpattern</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-414"><a href="#L-414"><span class="linenos" data-line="414"></span></a> <span class="cm">--[==[ The first element is the subpattern, other numbered</span> </span><span id="L-415"><a href="#L-415"><span class="linenos" data-line="415"></span></a><span class="cm"> elements are its conditions (forming an union).</span> </span><span id="L-416"><a href="#L-416"><span class="linenos" data-line="416"></span></a><span class="cm"> --]==]</span> </span><span id="L-417"><a href="#L-417"><span class="linenos" data-line="417"></span></a> <span class="kr">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-418"><a href="#L-418"><span class="linenos" data-line="418"></span></a> <span class="n">subpattern</span> <span class="o">=</span> <span class="n">v</span> </span><span id="L-419"><a href="#L-419"><span class="linenos" data-line="419"></span></a> <span class="c1">-- Handle conditions that are simple strings.</span> </span><span id="L-420"><a href="#L-420"><span class="linenos" data-line="420"></span></a> <span class="kr">elseif</span> <span class="nb">type</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> <span class="kr">then</span> </span><span id="L-421"><a href="#L-421"><span class="linenos" data-line="421"></span></a> <span class="cm">--[==[ Evaluate the condition string which is for now a</span> </span><span id="L-422"><a href="#L-422"><span class="linenos" data-line="422"></span></a><span class="cm"> simple variable name:</span> </span><span id="L-423"><a href="#L-423"><span class="linenos" data-line="423"></span></a><span class="cm"> * the condition &#39;!variablename&#39; is true if this variable</span> </span><span id="L-424"><a href="#L-424"><span class="linenos" data-line="424"></span></a><span class="cm"> has an empty string value;</span> </span><span id="L-425"><a href="#L-425"><span class="linenos" data-line="425"></span></a><span class="cm"> * the condition &#39;variablename&#39; is true if this variable</span> </span><span id="L-426"><a href="#L-426"><span class="linenos" data-line="426"></span></a><span class="cm"> has a non-empty string value;</span> </span><span id="L-427"><a href="#L-427"><span class="linenos" data-line="427"></span></a><span class="cm"> * the supported variable names are defined above (e.g.</span> </span><span id="L-428"><a href="#L-428"><span class="linenos" data-line="428"></span></a><span class="cm"> {section}..&#39;title&#39; and {section}..&#39;list&#39;).</span> </span><span id="L-429"><a href="#L-429"><span class="linenos" data-line="429"></span></a><span class="cm"> --]==]</span> </span><span id="L-430"><a href="#L-430"><span class="linenos" data-line="430"></span></a> <span class="kr">if</span> <span class="n">v</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;!&#39;</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">isnonempty</span><span class="p">(</span><span class="n">var</span><span class="p">[</span><span class="n">v</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">2</span><span class="p">)])</span> </span><span id="L-431"><a href="#L-431"><span class="linenos" data-line="431"></span></a> <span class="ow">or</span> <span class="n">v</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;!&#39;</span> <span class="ow">and</span> <span class="n">isnonempty</span><span class="p">(</span><span class="n">var</span><span class="p">[</span><span class="n">v</span><span class="p">])</span> <span class="kr">then</span> </span><span id="L-432"><a href="#L-432"><span class="linenos" data-line="432"></span></a> <span class="n">condition</span> <span class="o">=</span> <span class="kc">true</span> <span class="c1">-- Subpattern EFFECTIVELY used.</span> </span><span id="L-433"><a href="#L-433"><span class="linenos" data-line="433"></span></a> <span class="kr">break</span> <span class="c1">-- Don&#39;t need to evaluate other conditions.</span> </span><span id="L-434"><a href="#L-434"><span class="linenos" data-line="434"></span></a> <span class="c1">--else</span> </span><span id="L-435"><a href="#L-435"><span class="linenos" data-line="435"></span></a> <span class="cm">--[==[</span> </span><span id="L-436"><a href="#L-436"><span class="linenos" data-line="436"></span></a><span class="cm"> Other string values of v are ignored. This</span> </span><span id="L-437"><a href="#L-437"><span class="linenos" data-line="437"></span></a><span class="cm"> condition evaluates as false, other possible</span> </span><span id="L-438"><a href="#L-438"><span class="linenos" data-line="438"></span></a><span class="cm"> conditions must be evaluated.</span> </span><span id="L-439"><a href="#L-439"><span class="linenos" data-line="439"></span></a><span class="cm"> --]==]</span> </span><span id="L-440"><a href="#L-440"><span class="linenos" data-line="440"></span></a> <span class="kr">end</span> </span><span id="L-441"><a href="#L-441"><span class="linenos" data-line="441"></span></a> <span class="cm">--[==[ Handle conditions that are arrays of subconditions</span> </span><span id="L-442"><a href="#L-442"><span class="linenos" data-line="442"></span></a><span class="cm"> (AND). If any subcondition evaluates to false, the</span> </span><span id="L-443"><a href="#L-443"><span class="linenos" data-line="443"></span></a><span class="cm"> condition also evaluates to false, and other conditions</span> </span><span id="L-444"><a href="#L-444"><span class="linenos" data-line="444"></span></a><span class="cm"> must be checked to evaluate them as OR).</span> </span><span id="L-445"><a href="#L-445"><span class="linenos" data-line="445"></span></a><span class="cm"> --]==]</span> </span><span id="L-446"><a href="#L-446"><span class="linenos" data-line="446"></span></a> <span class="kr">elseif</span> <span class="nb">type</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;table&#39;</span> <span class="kr">then</span> </span><span id="L-447"><a href="#L-447"><span class="linenos" data-line="447"></span></a> <span class="cm">--[==[ The subpattern will then be used unless a</span> </span><span id="L-448"><a href="#L-448"><span class="linenos" data-line="448"></span></a><span class="cm"> subcondition evaluates to false.</span> </span><span id="L-449"><a href="#L-449"><span class="linenos" data-line="449"></span></a><span class="cm"> --]==]</span> </span><span id="L-450"><a href="#L-450"><span class="linenos" data-line="450"></span></a> <span class="n">condition</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-451"><a href="#L-451"><span class="linenos" data-line="451"></span></a> <span class="c1">-- Note: keys not in the numbered sequence are ignored.</span> </span><span id="L-452"><a href="#L-452"><span class="linenos" data-line="452"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">w</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-453"><a href="#L-453"><span class="linenos" data-line="453"></span></a> <span class="c1">-- Handle subconditions that are simple strings.</span> </span><span id="L-454"><a href="#L-454"><span class="linenos" data-line="454"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">w</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> <span class="kr">then</span> </span><span id="L-455"><a href="#L-455"><span class="linenos" data-line="455"></span></a> <span class="cm">--[==[ Evaluate the subcondition string which</span> </span><span id="L-456"><a href="#L-456"><span class="linenos" data-line="456"></span></a><span class="cm"> is for now a simple variable name (like above).</span> </span><span id="L-457"><a href="#L-457"><span class="linenos" data-line="457"></span></a><span class="cm"> --]==]</span> </span><span id="L-458"><a href="#L-458"><span class="linenos" data-line="458"></span></a> <span class="kr">if</span> <span class="n">w</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;!&#39;</span> </span><span id="L-459"><a href="#L-459"><span class="linenos" data-line="459"></span></a> <span class="ow">and</span> <span class="n">isnonempty</span><span class="p">(</span><span class="n">var</span><span class="p">[</span><span class="n">w</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">2</span><span class="p">)])</span> </span><span id="L-460"><a href="#L-460"><span class="linenos" data-line="460"></span></a> <span class="ow">or</span> <span class="n">w</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;!&#39;</span> </span><span id="L-461"><a href="#L-461"><span class="linenos" data-line="461"></span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">isnonempty</span><span class="p">(</span><span class="n">var</span><span class="p">[</span><span class="n">w</span><span class="p">])</span> </span><span id="L-462"><a href="#L-462"><span class="linenos" data-line="462"></span></a> <span class="kr">then</span> </span><span id="L-463"><a href="#L-463"><span class="linenos" data-line="463"></span></a> <span class="n">condition</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-464"><a href="#L-464"><span class="linenos" data-line="464"></span></a> <span class="cm">--[==[ This subcondition is evaluated as</span> </span><span id="L-465"><a href="#L-465"><span class="linenos" data-line="465"></span></a><span class="cm"> false. The subpattern may still be used,</span> </span><span id="L-466"><a href="#L-466"><span class="linenos" data-line="466"></span></a><span class="cm"> but need to evaluate other conditions.</span> </span><span id="L-467"><a href="#L-467"><span class="linenos" data-line="467"></span></a><span class="cm"> ]==]</span> </span><span id="L-468"><a href="#L-468"><span class="linenos" data-line="468"></span></a> <span class="kr">break</span> </span><span id="L-469"><a href="#L-469"><span class="linenos" data-line="469"></span></a> <span class="c1">--else</span> </span><span id="L-470"><a href="#L-470"><span class="linenos" data-line="470"></span></a> <span class="cm">--[==[</span> </span><span id="L-471"><a href="#L-471"><span class="linenos" data-line="471"></span></a><span class="cm"> Other string values of v are ignored. This</span> </span><span id="L-472"><a href="#L-472"><span class="linenos" data-line="472"></span></a><span class="cm"> subcondition evaluates as false, other</span> </span><span id="L-473"><a href="#L-473"><span class="linenos" data-line="473"></span></a><span class="cm"> possible subconditions must be evaluated.</span> </span><span id="L-474"><a href="#L-474"><span class="linenos" data-line="474"></span></a><span class="cm"> --]==]</span> </span><span id="L-475"><a href="#L-475"><span class="linenos" data-line="475"></span></a> <span class="kr">end</span> </span><span id="L-476"><a href="#L-476"><span class="linenos" data-line="476"></span></a> <span class="kr">else</span> </span><span id="L-477"><a href="#L-477"><span class="linenos" data-line="477"></span></a> <span class="cm">--[==[ Don&#39;t know what to do with this type of</span> </span><span id="L-478"><a href="#L-478"><span class="linenos" data-line="478"></span></a><span class="cm"> subcondition. And because this is part of a</span> </span><span id="L-479"><a href="#L-479"><span class="linenos" data-line="479"></span></a><span class="cm"> conjonction (AND), the subcondition evaluates</span> </span><span id="L-480"><a href="#L-480"><span class="linenos" data-line="480"></span></a><span class="cm"> as false. The subpattern may still be used, but</span> </span><span id="L-481"><a href="#L-481"><span class="linenos" data-line="481"></span></a><span class="cm"> we need to evaluate other conditions.</span> </span><span id="L-482"><a href="#L-482"><span class="linenos" data-line="482"></span></a><span class="cm"> --]==]</span> </span><span id="L-483"><a href="#L-483"><span class="linenos" data-line="483"></span></a> <span class="n">condition</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-484"><a href="#L-484"><span class="linenos" data-line="484"></span></a> <span class="kr">break</span> </span><span id="L-485"><a href="#L-485"><span class="linenos" data-line="485"></span></a> <span class="kr">end</span> </span><span id="L-486"><a href="#L-486"><span class="linenos" data-line="486"></span></a> <span class="kr">end</span> </span><span id="L-487"><a href="#L-487"><span class="linenos" data-line="487"></span></a> <span class="kr">if</span> <span class="n">condition</span> <span class="kr">then</span> </span><span id="L-488"><a href="#L-488"><span class="linenos" data-line="488"></span></a> <span class="cm">--[==[ If the array of subconditions (AND) is still</span> </span><span id="L-489"><a href="#L-489"><span class="linenos" data-line="489"></span></a><span class="cm"> true, the main condition (OR) instantly evaluates</span> </span><span id="L-490"><a href="#L-490"><span class="linenos" data-line="490"></span></a><span class="cm"> as true. The subpattern will EFFECTIVELY be used.</span> </span><span id="L-491"><a href="#L-491"><span class="linenos" data-line="491"></span></a><span class="cm"> Don&#39;t need to evaluate other conditions.</span> </span><span id="L-492"><a href="#L-492"><span class="linenos" data-line="492"></span></a><span class="cm"> --]==]</span> </span><span id="L-493"><a href="#L-493"><span class="linenos" data-line="493"></span></a> <span class="kr">break</span> </span><span id="L-494"><a href="#L-494"><span class="linenos" data-line="494"></span></a> <span class="kr">end</span> </span><span id="L-495"><a href="#L-495"><span class="linenos" data-line="495"></span></a> <span class="c1">--else</span> </span><span id="L-496"><a href="#L-496"><span class="linenos" data-line="496"></span></a> <span class="cm">--[==[ Don&#39;t know what to do with this type of</span> </span><span id="L-497"><a href="#L-497"><span class="linenos" data-line="497"></span></a><span class="cm"> condition. And because this is part of an union (OR),</span> </span><span id="L-498"><a href="#L-498"><span class="linenos" data-line="498"></span></a><span class="cm"> it is ignored, but we can evaluate other conditions.</span> </span><span id="L-499"><a href="#L-499"><span class="linenos" data-line="499"></span></a><span class="cm"> --]==]</span> </span><span id="L-500"><a href="#L-500"><span class="linenos" data-line="500"></span></a> <span class="kr">end</span> </span><span id="L-501"><a href="#L-501"><span class="linenos" data-line="501"></span></a> <span class="kr">end</span> </span><span id="L-502"><a href="#L-502"><span class="linenos" data-line="502"></span></a> <span class="kr">end</span> </span><span id="L-503"><a href="#L-503"><span class="linenos" data-line="503"></span></a> <span class="kr">if</span> <span class="n">condition</span> <span class="kr">then</span> </span><span id="L-504"><a href="#L-504"><span class="linenos" data-line="504"></span></a> <span class="n">usedpattern</span> <span class="o">=</span> <span class="n">usedpattern</span> <span class="o">..</span> <span class="n">subpattern</span> </span><span id="L-505"><a href="#L-505"><span class="linenos" data-line="505"></span></a> <span class="kr">end</span> </span><span id="L-506"><a href="#L-506"><span class="linenos" data-line="506"></span></a> <span class="kr">end</span> </span><span id="L-507"><a href="#L-507"><span class="linenos" data-line="507"></span></a> <span class="c1">--else</span> </span><span id="L-508"><a href="#L-508"><span class="linenos" data-line="508"></span></a> <span class="cm">--[==[ Don&#39;t know what to do with this type of pattern (not used in</span> </span><span id="L-509"><a href="#L-509"><span class="linenos" data-line="509"></span></a><span class="cm"> the final pattern)</span> </span><span id="L-510"><a href="#L-510"><span class="linenos" data-line="510"></span></a><span class="cm"> --]==]</span> </span><span id="L-511"><a href="#L-511"><span class="linenos" data-line="511"></span></a> <span class="kr">end</span> </span><span id="L-512"><a href="#L-512"><span class="linenos" data-line="512"></span></a> <span class="kr">return</span> <span class="n">usedpattern</span><span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s1">&#39;{(%a+)}&#39;</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> </span><span id="L-513"><a href="#L-513"><span class="linenos" data-line="513"></span></a><span class="kr">end</span> </span><span id="L-514"><a href="#L-514"><span class="linenos" data-line="514"></span></a> </span><span id="L-515"><a href="#L-515"><span class="linenos" data-line="515"></span></a><span class="c1">-- Locally used by getGroupData() and show().</span> </span><span id="L-516"><a href="#L-516"><span class="linenos" data-line="516"></span></a><span class="cm">--[==[</span> </span><span id="L-517"><a href="#L-517"><span class="linenos" data-line="517"></span></a><span class="cm">If there&#39;s no &#39;:&#39; in the id, it is assumed to be in a subpage of</span> </span><span id="L-518"><a href="#L-518"><span class="linenos" data-line="518"></span></a><span class="cm">Module:Countries; otherwise it can be the full page name of any other module</span> </span><span id="L-519"><a href="#L-519"><span class="linenos" data-line="519"></span></a><span class="cm">stored anywhere. Also autodetect the &#39;/sandbox&#39; version according to the</span> </span><span id="L-520"><a href="#L-520"><span class="linenos" data-line="520"></span></a><span class="cm">parent page name.</span> </span><span id="L-521"><a href="#L-521"><span class="linenos" data-line="521"></span></a><span class="cm">--]==]</span> </span><span id="L-522"><a href="#L-522"><span class="linenos" data-line="522"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getDataModuleName</span><span class="p">(</span><span class="n">frame</span><span class="p">,</span> <span class="n">id</span><span class="p">)</span> </span><span id="L-523"><a href="#L-523"><span class="linenos" data-line="523"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="n">id</span><span class="p">:</span><span class="n">find</span><span class="p">(</span><span class="s1">&#39;:&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> <span class="ow">and</span> <span class="n">id</span> <span class="ow">or</span> <span class="s1">&#39;Module:Countries/&#39;</span> <span class="o">..</span> <span class="n">id</span><span class="p">)</span> <span class="o">..</span> </span><span id="L-524"><a href="#L-524"><span class="linenos" data-line="524"></span></a> <span class="p">(</span><span class="n">frame</span> <span class="ow">and</span> <span class="n">frame</span><span class="p">:</span><span class="n">getTitle</span><span class="p">():</span><span class="n">find</span><span class="p">(</span><span class="s1">&#39;sandbox&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-525"><a href="#L-525"><span class="linenos" data-line="525"></span></a> <span class="ow">and</span> <span class="s1">&#39;/sandbox&#39;</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> </span><span id="L-526"><a href="#L-526"><span class="linenos" data-line="526"></span></a><span class="kr">end</span> </span><span id="L-527"><a href="#L-527"><span class="linenos" data-line="527"></span></a> </span><span id="L-528"><a href="#L-528"><span class="linenos" data-line="528"></span></a><span class="c1">-- Locally used by main().</span> </span><span id="L-529"><a href="#L-529"><span class="linenos" data-line="529"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getGroupData</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-530"><a href="#L-530"><span class="linenos" data-line="530"></span></a> <span class="cm">--[==[ Return table of data defining a group of items for the first</span> </span><span id="L-531"><a href="#L-531"><span class="linenos" data-line="531"></span></a><span class="cm"> template parameter. The data will rarely be used more than once on a</span> </span><span id="L-532"><a href="#L-532"><span class="linenos" data-line="532"></span></a><span class="cm"> page, so mw.loadData is not useful.</span> </span><span id="L-533"><a href="#L-533"><span class="linenos" data-line="533"></span></a><span class="cm"> --]==]</span> </span><span id="L-534"><a href="#L-534"><span class="linenos" data-line="534"></span></a> <span class="kd">local</span> <span class="n">data</span> </span><span id="L-535"><a href="#L-535"><span class="linenos" data-line="535"></span></a> <span class="c1">-- Id of the group (case sensitive), e.g. &#39;Europe&#39; or &#39;Module:CustomData&#39;.</span> </span><span id="L-536"><a href="#L-536"><span class="linenos" data-line="536"></span></a> <span class="kd">local</span> <span class="n">id</span> <span class="o">=</span> <span class="n">stripToNil</span><span class="p">(</span><span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> </span><span id="L-537"><a href="#L-537"><span class="linenos" data-line="537"></span></a> <span class="kr">if</span> <span class="n">id</span> <span class="kr">then</span> </span><span id="L-538"><a href="#L-538"><span class="linenos" data-line="538"></span></a> <span class="kd">local</span> <span class="n">module</span><span class="p">,</span> <span class="n">status</span> <span class="o">=</span> <span class="n">getDataModuleName</span><span class="p">(</span><span class="n">frame</span><span class="p">,</span> <span class="n">id</span><span class="p">),</span> <span class="kc">nil</span> </span><span id="L-539"><a href="#L-539"><span class="linenos" data-line="539"></span></a> <span class="n">status</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="nb">pcall</span><span class="p">(</span><span class="nb">require</span><span class="p">,</span> <span class="n">module</span><span class="p">)</span> </span><span id="L-540"><a href="#L-540"><span class="linenos" data-line="540"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">status</span> <span class="kr">then</span> </span><span id="L-541"><a href="#L-541"><span class="linenos" data-line="541"></span></a> <span class="nb">error</span><span class="p">(</span><span class="s1">&#39;Data could not be loaded from [[:&#39;</span> <span class="o">..</span> <span class="n">module</span> <span class="o">..</span><span class="s1">&#39;]]&#39;</span><span class="p">)</span> </span><span id="L-542"><a href="#L-542"><span class="linenos" data-line="542"></span></a> <span class="kr">end</span> </span><span id="L-543"><a href="#L-543"><span class="linenos" data-line="543"></span></a> <span class="kr">end</span> </span><span id="L-544"><a href="#L-544"><span class="linenos" data-line="544"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;table&#39;</span> <span class="kr">then</span> </span><span id="L-545"><a href="#L-545"><span class="linenos" data-line="545"></span></a> <span class="nb">error</span><span class="p">(</span><span class="s1">&#39;First template parameter must specify a defined data module&#39;</span><span class="p">)</span> </span><span id="L-546"><a href="#L-546"><span class="linenos" data-line="546"></span></a> <span class="kr">end</span> </span><span id="L-547"><a href="#L-547"><span class="linenos" data-line="547"></span></a> <span class="c1">-- Compatiblity note: `.infos` is preferred, `.countries` is legacy.</span> </span><span id="L-548"><a href="#L-548"><span class="linenos" data-line="548"></span></a> <span class="c1">-- We do not allow to define both (would be ambiguous).</span> </span><span id="L-549"><a href="#L-549"><span class="linenos" data-line="549"></span></a> <span class="kr">if</span> <span class="n">data</span><span class="p">.</span><span class="n">infos</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">and</span> <span class="n">data</span><span class="p">.</span><span class="n">countries</span> <span class="o">~=</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-550"><a href="#L-550"><span class="linenos" data-line="550"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">infos</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">countries</span> </span><span id="L-551"><a href="#L-551"><span class="linenos" data-line="551"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">countries</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-552"><a href="#L-552"><span class="linenos" data-line="552"></span></a> <span class="kr">end</span> </span><span id="L-553"><a href="#L-553"><span class="linenos" data-line="553"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">titles</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;table&#39;</span> <span class="ow">or</span> </span><span id="L-554"><a href="#L-554"><span class="linenos" data-line="554"></span></a> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">lists</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;table&#39;</span> <span class="ow">or</span> </span><span id="L-555"><a href="#L-555"><span class="linenos" data-line="555"></span></a> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">infos</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;table&#39;</span> <span class="ow">or</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">countries</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;nil&#39;</span> <span class="ow">or</span> </span><span id="L-556"><a href="#L-556"><span class="linenos" data-line="556"></span></a> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">pattern</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;string&#39;</span> <span class="ow">and</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">pattern</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;table&#39;</span> <span class="ow">or</span> </span><span id="L-557"><a href="#L-557"><span class="linenos" data-line="557"></span></a> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">simple</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;nil&#39;</span> <span class="ow">and</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">simple</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;table&#39;</span> <span class="ow">or</span> </span><span id="L-558"><a href="#L-558"><span class="linenos" data-line="558"></span></a> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">simple</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;table&#39;</span> <span class="ow">and</span> <span class="p">(</span> </span><span id="L-559"><a href="#L-559"><span class="linenos" data-line="559"></span></a> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">simple</span><span class="p">.</span><span class="n">pattern</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;string&#39;</span> </span><span id="L-560"><a href="#L-560"><span class="linenos" data-line="560"></span></a> <span class="ow">and</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">simple</span><span class="p">.</span><span class="n">pattern</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;table&#39;</span> <span class="ow">or</span> </span><span id="L-561"><a href="#L-561"><span class="linenos" data-line="561"></span></a> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">simple</span><span class="p">.</span><span class="n">sections</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;table&#39;</span> </span><span id="L-562"><a href="#L-562"><span class="linenos" data-line="562"></span></a> <span class="p">)</span> <span class="kr">then</span> </span><span id="L-563"><a href="#L-563"><span class="linenos" data-line="563"></span></a> <span class="nb">error</span><span class="p">(</span><span class="s1">&#39;The specified data module (&#39;</span> </span><span id="L-564"><a href="#L-564"><span class="linenos" data-line="564"></span></a> <span class="o">..</span> <span class="n">id</span> <span class="o">..</span> <span class="s1">&#39;) is not validly defined&#39;</span><span class="p">)</span> </span><span id="L-565"><a href="#L-565"><span class="linenos" data-line="565"></span></a> <span class="kr">end</span> </span><span id="L-566"><a href="#L-566"><span class="linenos" data-line="566"></span></a> <span class="kr">if</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">mode</span> <span class="o">==</span> <span class="s1">&#39;fop&#39;</span> <span class="kr">then</span> </span><span id="L-567"><a href="#L-567"><span class="linenos" data-line="567"></span></a> <span class="cm">--[==[</span> </span><span id="L-568"><a href="#L-568"><span class="linenos" data-line="568"></span></a><span class="cm"> For Module:TNTExpandByCountries which generates</span> </span><span id="L-569"><a href="#L-569"><span class="linenos" data-line="569"></span></a><span class="cm"> &quot;Commons:Freedom of panorama&quot; pages:</span> </span><span id="L-570"><a href="#L-570"><span class="linenos" data-line="570"></span></a><span class="cm"> * Use any given fop exception name. For example, the exception</span> </span><span id="L-571"><a href="#L-571"><span class="linenos" data-line="571"></span></a><span class="cm"> fop = &#39;Luxembourg&#39; means that [[Luxembourg|...]] should be the</span> </span><span id="L-572"><a href="#L-572"><span class="linenos" data-line="572"></span></a><span class="cm"> returned link so TNTExpandByCountries uses Template:Luxembourg</span> </span><span id="L-573"><a href="#L-573"><span class="linenos" data-line="573"></span></a><span class="cm"> which correctly contains {{Label|Q32|...}}.</span> </span><span id="L-574"><a href="#L-574"><span class="linenos" data-line="574"></span></a><span class="cm"> * Do not follow redirects. That occurs if only one name for a country</span> </span><span id="L-575"><a href="#L-575"><span class="linenos" data-line="575"></span></a><span class="cm"> code is given.</span> </span><span id="L-576"><a href="#L-576"><span class="linenos" data-line="576"></span></a><span class="cm"> --]==]</span> </span><span id="L-577"><a href="#L-577"><span class="linenos" data-line="577"></span></a> <span class="kr">for</span> <span class="n">code</span><span class="p">,</span> <span class="n">spec</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">infos</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-578"><a href="#L-578"><span class="linenos" data-line="578"></span></a> <span class="kr">if</span> <span class="n">spec</span><span class="p">.</span><span class="n">fop</span> <span class="kr">then</span> </span><span id="L-579"><a href="#L-579"><span class="linenos" data-line="579"></span></a> <span class="kr">if</span> <span class="n">spec</span><span class="p">.</span><span class="n">fop</span> <span class="o">==</span> <span class="s1">&#39;EXCLUDE&#39;</span> <span class="kr">then</span> </span><span id="L-580"><a href="#L-580"><span class="linenos" data-line="580"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">infos</span><span class="p">[</span><span class="n">code</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-581"><a href="#L-581"><span class="linenos" data-line="581"></span></a> <span class="kr">else</span> </span><span id="L-582"><a href="#L-582"><span class="linenos" data-line="582"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">infos</span><span class="p">[</span><span class="n">code</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-583"><a href="#L-583"><span class="linenos" data-line="583"></span></a> <span class="n">spec</span><span class="p">.</span><span class="n">fop</span><span class="p">,</span> <span class="n">qid</span> <span class="o">=</span> <span class="n">spec</span><span class="p">.</span><span class="n">qid</span> </span><span id="L-584"><a href="#L-584"><span class="linenos" data-line="584"></span></a> <span class="c1">-- other fields in `spec` are not needed.</span> </span><span id="L-585"><a href="#L-585"><span class="linenos" data-line="585"></span></a> <span class="p">}</span> </span><span id="L-586"><a href="#L-586"><span class="linenos" data-line="586"></span></a> <span class="kr">end</span> </span><span id="L-587"><a href="#L-587"><span class="linenos" data-line="587"></span></a> <span class="kr">end</span> </span><span id="L-588"><a href="#L-588"><span class="linenos" data-line="588"></span></a> <span class="kr">end</span> </span><span id="L-589"><a href="#L-589"><span class="linenos" data-line="589"></span></a> <span class="kr">end</span> </span><span id="L-590"><a href="#L-590"><span class="linenos" data-line="590"></span></a> <span class="kr">return</span> <span class="n">data</span> </span><span id="L-591"><a href="#L-591"><span class="linenos" data-line="591"></span></a><span class="kr">end</span> </span><span id="L-592"><a href="#L-592"><span class="linenos" data-line="592"></span></a> </span><span id="L-593"><a href="#L-593"><span class="linenos" data-line="593"></span></a><span class="cm">--[==[</span> </span><span id="L-594"><a href="#L-594"><span class="linenos" data-line="594"></span></a><span class="cm">Exported by this module, for usage in wiki templates.</span> </span><span id="L-595"><a href="#L-595"><span class="linenos" data-line="595"></span></a><span class="cm">--]==]</span> </span><span id="L-596"><a href="#L-596"><span class="linenos" data-line="596"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">main</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-597"><a href="#L-597"><span class="linenos" data-line="597"></span></a> <span class="kd">local</span> <span class="n">args</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> </span><span id="L-598"><a href="#L-598"><span class="linenos" data-line="598"></span></a> <span class="kd">local</span> <span class="n">options</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-599"><a href="#L-599"><span class="linenos" data-line="599"></span></a> <span class="cm">--[==[</span> </span><span id="L-600"><a href="#L-600"><span class="linenos" data-line="600"></span></a><span class="cm"> Use default args set by &quot;{{#invoke:}}&quot; used in any page or in the</span> </span><span id="L-601"><a href="#L-601"><span class="linenos" data-line="601"></span></a><span class="cm"> main template.</span> </span><span id="L-602"><a href="#L-602"><span class="linenos" data-line="602"></span></a><span class="cm"> --]==]</span> </span><span id="L-603"><a href="#L-603"><span class="linenos" data-line="603"></span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">prefix</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> </span><span id="L-604"><a href="#L-604"><span class="linenos" data-line="604"></span></a> <span class="n">presep</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">presep</span> <span class="ow">or</span> <span class="n">args</span><span class="p">.</span><span class="n">sep</span> <span class="ow">or</span> <span class="s1">&#39; &#39;</span><span class="p">,</span> </span><span id="L-605"><a href="#L-605"><span class="linenos" data-line="605"></span></a> <span class="n">sufsep</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">sufsep</span> <span class="ow">or</span> <span class="n">args</span><span class="p">.</span><span class="n">sep</span> <span class="ow">or</span> <span class="s1">&#39; &#39;</span><span class="p">,</span> </span><span id="L-606"><a href="#L-606"><span class="linenos" data-line="606"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">suffix</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> </span><span id="L-607"><a href="#L-607"><span class="linenos" data-line="607"></span></a> <span class="n">simple</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">simple</span><span class="p">,</span> </span><span id="L-608"><a href="#L-608"><span class="linenos" data-line="608"></span></a> <span class="n">showcode</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">showcode</span><span class="p">,</span> </span><span id="L-609"><a href="#L-609"><span class="linenos" data-line="609"></span></a> <span class="n">all</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">all</span><span class="p">,</span> </span><span id="L-610"><a href="#L-610"><span class="linenos" data-line="610"></span></a> <span class="n">nocat</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">nocat</span><span class="p">,</span> </span><span id="L-611"><a href="#L-611"><span class="linenos" data-line="611"></span></a> <span class="n">lang</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">lang</span> <span class="ow">or</span> <span class="n">frame</span><span class="p">:</span><span class="n">callParserFunction</span><span class="p">(</span><span class="s1">&#39;Int&#39;</span><span class="p">,</span> <span class="s1">&#39;Lang&#39;</span><span class="p">),</span> </span><span id="L-612"><a href="#L-612"><span class="linenos" data-line="612"></span></a> <span class="p">}</span> </span><span id="L-613"><a href="#L-613"><span class="linenos" data-line="613"></span></a> <span class="kd">local</span> <span class="n">lang</span> <span class="o">=</span> <span class="n">options</span><span class="p">.</span><span class="n">lang</span> </span><span id="L-614"><a href="#L-614"><span class="linenos" data-line="614"></span></a> </span><span id="L-615"><a href="#L-615"><span class="linenos" data-line="615"></span></a> <span class="cm">--[==[</span> </span><span id="L-616"><a href="#L-616"><span class="linenos" data-line="616"></span></a><span class="cm"> Override args with those passed to the main template (and check them</span> </span><span id="L-617"><a href="#L-617"><span class="linenos" data-line="617"></span></a><span class="cm"> verbosely).</span> </span><span id="L-618"><a href="#L-618"><span class="linenos" data-line="618"></span></a><span class="cm"> --]==]</span> </span><span id="L-619"><a href="#L-619"><span class="linenos" data-line="619"></span></a> <span class="n">args</span> <span class="o">=</span> <span class="n">frame</span><span class="p">:</span><span class="n">getParent</span><span class="p">().</span><span class="n">args</span> </span><span id="L-620"><a href="#L-620"><span class="linenos" data-line="620"></span></a> <span class="kr">if</span> <span class="n">args</span> <span class="kr">then</span> </span><span id="L-621"><a href="#L-621"><span class="linenos" data-line="621"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">prefix</span> <span class="ow">or</span> <span class="n">options</span><span class="p">.</span><span class="n">prefix</span> </span><span id="L-622"><a href="#L-622"><span class="linenos" data-line="622"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">presep</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">presep</span> <span class="ow">or</span> <span class="n">args</span><span class="p">.</span><span class="n">sep</span> <span class="ow">or</span> <span class="n">options</span><span class="p">.</span><span class="n">presep</span> </span><span id="L-623"><a href="#L-623"><span class="linenos" data-line="623"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">sufsep</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">sufsep</span> <span class="ow">or</span> <span class="n">args</span><span class="p">.</span><span class="n">sep</span> <span class="ow">or</span> <span class="n">options</span><span class="p">.</span><span class="n">presep</span> </span><span id="L-624"><a href="#L-624"><span class="linenos" data-line="624"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">suffix</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">suffix</span> <span class="ow">or</span> <span class="n">options</span><span class="p">.</span><span class="n">suffix</span> </span><span id="L-625"><a href="#L-625"><span class="linenos" data-line="625"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">simple</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">simple</span> <span class="ow">or</span> <span class="n">options</span><span class="p">.</span><span class="n">simple</span> </span><span id="L-626"><a href="#L-626"><span class="linenos" data-line="626"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">showcode</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">showcode</span> <span class="ow">or</span> <span class="n">options</span><span class="p">.</span><span class="n">showcode</span> </span><span id="L-627"><a href="#L-627"><span class="linenos" data-line="627"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">all</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">all</span> <span class="ow">or</span> <span class="n">options</span><span class="p">.</span><span class="n">all</span> </span><span id="L-628"><a href="#L-628"><span class="linenos" data-line="628"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">nocat</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">nocat</span> <span class="ow">or</span> <span class="n">options</span><span class="p">.</span><span class="n">nocat</span> </span><span id="L-629"><a href="#L-629"><span class="linenos" data-line="629"></span></a> <span class="kd">local</span> <span class="n">goodArgs</span><span class="p">,</span> <span class="n">badArgs</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-630"><a href="#L-630"><span class="linenos" data-line="630"></span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> </span><span id="L-631"><a href="#L-631"><span class="linenos" data-line="631"></span></a> <span class="n">presep</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> </span><span id="L-632"><a href="#L-632"><span class="linenos" data-line="632"></span></a> <span class="n">sufsep</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> </span><span id="L-633"><a href="#L-633"><span class="linenos" data-line="633"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> </span><span id="L-634"><a href="#L-634"><span class="linenos" data-line="634"></span></a> <span class="n">sep</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> </span><span id="L-635"><a href="#L-635"><span class="linenos" data-line="635"></span></a> <span class="n">simple</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> </span><span id="L-636"><a href="#L-636"><span class="linenos" data-line="636"></span></a> <span class="n">showcode</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> </span><span id="L-637"><a href="#L-637"><span class="linenos" data-line="637"></span></a> <span class="n">all</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> </span><span id="L-638"><a href="#L-638"><span class="linenos" data-line="638"></span></a> <span class="n">nocat</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> </span><span id="L-639"><a href="#L-639"><span class="linenos" data-line="639"></span></a> <span class="p">},</span> <span class="p">{}</span> </span><span id="L-640"><a href="#L-640"><span class="linenos" data-line="640"></span></a> <span class="kr">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-641"><a href="#L-641"><span class="linenos" data-line="641"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">goodArgs</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-642"><a href="#L-642"><span class="linenos" data-line="642"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">badArgs</span><span class="p">,</span> <span class="n">k</span> <span class="o">..</span> <span class="s1">&#39;=&#39;</span> <span class="o">..</span> <span class="n">v</span><span class="p">)</span> </span><span id="L-643"><a href="#L-643"><span class="linenos" data-line="643"></span></a> <span class="kr">end</span> </span><span id="L-644"><a href="#L-644"><span class="linenos" data-line="644"></span></a> <span class="kr">end</span> </span><span id="L-645"><a href="#L-645"><span class="linenos" data-line="645"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">badArgs</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-646"><a href="#L-646"><span class="linenos" data-line="646"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">message</span> <span class="o">=</span> <span class="s1">&#39;invalid parameter &quot;|&#39;</span> </span><span id="L-647"><a href="#L-647"><span class="linenos" data-line="647"></span></a> <span class="o">..</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">nowiki</span><span class="p">(</span><span class="nb">table.concat</span><span class="p">(</span><span class="n">badArgs</span><span class="p">,</span> <span class="s1">&#39;|&#39;</span><span class="p">))</span> <span class="o">..</span> <span class="s1">&#39;&quot;&#39;</span> </span><span id="L-648"><a href="#L-648"><span class="linenos" data-line="648"></span></a> <span class="kr">end</span> </span><span id="L-649"><a href="#L-649"><span class="linenos" data-line="649"></span></a> <span class="kr">end</span> </span><span id="L-650"><a href="#L-650"><span class="linenos" data-line="650"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">colon</span> <span class="o">=</span> <span class="n">frame</span><span class="p">:</span><span class="n">expandTemplate</span><span class="p">({</span> </span><span id="L-651"><a href="#L-651"><span class="linenos" data-line="651"></span></a> <span class="n">title</span> <span class="o">=</span> <span class="s1">&#39;colon&#39;</span><span class="p">,</span> </span><span id="L-652"><a href="#L-652"><span class="linenos" data-line="652"></span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-653"><a href="#L-653"><span class="linenos" data-line="653"></span></a> <span class="n">lang</span> <span class="o">=</span> <span class="n">lang</span><span class="p">,</span> </span><span id="L-654"><a href="#L-654"><span class="linenos" data-line="654"></span></a> <span class="p">},</span> </span><span id="L-655"><a href="#L-655"><span class="linenos" data-line="655"></span></a> <span class="p">})</span> </span><span id="L-656"><a href="#L-656"><span class="linenos" data-line="656"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">simple</span> <span class="o">=</span> <span class="n">isnonempty</span><span class="p">(</span><span class="n">options</span><span class="p">.</span><span class="n">simple</span><span class="p">)</span> </span><span id="L-657"><a href="#L-657"><span class="linenos" data-line="657"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">showcode</span> <span class="o">=</span> <span class="n">isnonempty</span><span class="p">(</span><span class="n">options</span><span class="p">.</span><span class="n">showcode</span><span class="p">)</span> </span><span id="L-658"><a href="#L-658"><span class="linenos" data-line="658"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">all</span> <span class="o">=</span> <span class="n">isnonempty</span><span class="p">(</span><span class="n">options</span><span class="p">.</span><span class="n">all</span><span class="p">)</span> </span><span id="L-659"><a href="#L-659"><span class="linenos" data-line="659"></span></a> <span class="n">options</span><span class="p">.</span><span class="n">nocat</span> <span class="o">=</span> <span class="n">isnonempty</span><span class="p">(</span><span class="n">options</span><span class="p">.</span><span class="n">nocat</span><span class="p">)</span> </span><span id="L-660"><a href="#L-660"><span class="linenos" data-line="660"></span></a> </span><span id="L-661"><a href="#L-661"><span class="linenos" data-line="661"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="n">_main</span><span class="p">(</span><span class="n">options</span><span class="p">,</span> <span class="n">getGroupData</span><span class="p">(</span><span class="n">frame</span><span class="p">))</span> </span><span id="L-662"><a href="#L-662"><span class="linenos" data-line="662"></span></a> <span class="kr">if</span> <span class="n">options</span><span class="p">.</span><span class="n">message</span> <span class="kr">then</span> </span><span id="L-663"><a href="#L-663"><span class="linenos" data-line="663"></span></a> <span class="cm">--[==[</span> </span><span id="L-664"><a href="#L-664"><span class="linenos" data-line="664"></span></a><span class="cm"> Check if a warning should be displayed for invalid input.</span> </span><span id="L-665"><a href="#L-665"><span class="linenos" data-line="665"></span></a><span class="cm"> --]==]</span> </span><span id="L-666"><a href="#L-666"><span class="linenos" data-line="666"></span></a> <span class="kd">local</span> <span class="n">success</span><span class="p">,</span> <span class="n">revid</span> <span class="o">=</span> <span class="nb">pcall</span><span class="p">(</span><span class="kr">function</span> <span class="p">()</span> </span><span id="L-667"><a href="#L-667"><span class="linenos" data-line="667"></span></a> <span class="kr">return</span> <span class="n">frame</span><span class="p">:</span><span class="n">preprocess</span><span class="p">(</span><span class="s1">&#39;{{REVISIONID}}&#39;</span><span class="p">)</span> </span><span id="L-668"><a href="#L-668"><span class="linenos" data-line="668"></span></a> <span class="kr">end</span><span class="p">)</span> </span><span id="L-669"><a href="#L-669"><span class="linenos" data-line="669"></span></a> <span class="kr">if</span> <span class="n">success</span> <span class="ow">and</span> <span class="n">revid</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span> <span class="kr">then</span> </span><span id="L-670"><a href="#L-670"><span class="linenos" data-line="670"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">result</span> <span class="o">..</span> <span class="s1">&#39;&lt;strong class=&quot;error&quot;&gt;Error: &#39;</span> </span><span id="L-671"><a href="#L-671"><span class="linenos" data-line="671"></span></a> <span class="o">..</span> <span class="n">options</span><span class="p">.</span><span class="n">message</span> <span class="o">..</span> <span class="s1">&#39;&lt;/strong&gt;&#39;</span> </span><span id="L-672"><a href="#L-672"><span class="linenos" data-line="672"></span></a> <span class="kr">end</span> </span><span id="L-673"><a href="#L-673"><span class="linenos" data-line="673"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">options</span><span class="p">.</span><span class="n">nocat</span> <span class="kr">then</span> </span><span id="L-674"><a href="#L-674"><span class="linenos" data-line="674"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">result</span> </span><span id="L-675"><a href="#L-675"><span class="linenos" data-line="675"></span></a> <span class="o">..</span> <span class="s1">&#39;[[Category:Countries template with invalid parameters]]&#39;</span> </span><span id="L-676"><a href="#L-676"><span class="linenos" data-line="676"></span></a> <span class="kr">end</span> </span><span id="L-677"><a href="#L-677"><span class="linenos" data-line="677"></span></a> <span class="kr">end</span> </span><span id="L-678"><a href="#L-678"><span class="linenos" data-line="678"></span></a> <span class="kr">return</span> <span class="n">result</span> </span><span id="L-679"><a href="#L-679"><span class="linenos" data-line="679"></span></a><span class="kr">end</span> </span><span id="L-680"><a href="#L-680"><span class="linenos" data-line="680"></span></a> </span><span id="L-681"><a href="#L-681"><span class="linenos" data-line="681"></span></a><span class="cm">--[==[</span> </span><span id="L-682"><a href="#L-682"><span class="linenos" data-line="682"></span></a><span class="cm">Exported by this module, for usage by {{#invoke:thisModule|show}} in wiki.</span> </span><span id="L-683"><a href="#L-683"><span class="linenos" data-line="683"></span></a><span class="cm">For documentation, return wikitext listing data from the country modules.</span> </span><span id="L-684"><a href="#L-684"><span class="linenos" data-line="684"></span></a><span class="cm">See [[Module talk:Countries/show]] for results.</span> </span><span id="L-685"><a href="#L-685"><span class="linenos" data-line="685"></span></a><span class="cm">--]==]</span> </span><span id="L-686"><a href="#L-686"><span class="linenos" data-line="686"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">show</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-687"><a href="#L-687"><span class="linenos" data-line="687"></span></a> <span class="kd">local</span> <span class="n">templateids</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-688"><a href="#L-688"><span class="linenos" data-line="688"></span></a> <span class="cm">--[==[</span> </span><span id="L-689"><a href="#L-689"><span class="linenos" data-line="689"></span></a><span class="cm"> Format for each entry: { &#39;&lt;Template name&gt;&#39;, &#39;&lt;Data module id&gt;&#39; },</span> </span><span id="L-690"><a href="#L-690"><span class="linenos" data-line="690"></span></a> </span><span id="L-691"><a href="#L-691"><span class="linenos" data-line="691"></span></a><span class="cm"> Note: without any embedded &#39;:&#39;, the &#39;&lt;Data module id&gt;&#39; indicates</span> </span><span id="L-692"><a href="#L-692"><span class="linenos" data-line="692"></span></a><span class="cm"> loading &#39;Module:Countries/&lt;Data module id&gt;&#39; by default. Data modules</span> </span><span id="L-693"><a href="#L-693"><span class="linenos" data-line="693"></span></a><span class="cm"> do not necessarily have to be subpages of &#39;Module:Countries&#39;, but must</span> </span><span id="L-694"><a href="#L-694"><span class="linenos" data-line="694"></span></a><span class="cm"> then specify their full page name (starting by &#39;Module:&#39;).</span> </span><span id="L-695"><a href="#L-695"><span class="linenos" data-line="695"></span></a> </span><span id="L-696"><a href="#L-696"><span class="linenos" data-line="696"></span></a><span class="cm"> Templates and data modules don&#39;t need to be listed all, they are only</span> </span><span id="L-697"><a href="#L-697"><span class="linenos" data-line="697"></span></a><span class="cm"> here to be used on the report shown on [[Module talk:Countries/show]],</span> </span><span id="L-698"><a href="#L-698"><span class="linenos" data-line="698"></span></a><span class="cm"> which performs extensive check of all features of this module.</span> </span><span id="L-699"><a href="#L-699"><span class="linenos" data-line="699"></span></a><span class="cm"> --]==]</span> </span><span id="L-700"><a href="#L-700"><span class="linenos" data-line="700"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries of Africa&#39;</span><span class="p">,</span> <span class="s1">&#39;Africa&#39;</span> <span class="p">},</span> </span><span id="L-701"><a href="#L-701"><span class="linenos" data-line="701"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries of the Americas&#39;</span><span class="p">,</span> <span class="s1">&#39;Americas&#39;</span> <span class="p">},</span> </span><span id="L-702"><a href="#L-702"><span class="linenos" data-line="702"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries of the Arab world&#39;</span><span class="p">,</span> <span class="s1">&#39;Arab world&#39;</span> <span class="p">},</span> </span><span id="L-703"><a href="#L-703"><span class="linenos" data-line="703"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries of Asia&#39;</span><span class="p">,</span> <span class="s1">&#39;Asia&#39;</span> <span class="p">},</span> </span><span id="L-704"><a href="#L-704"><span class="linenos" data-line="704"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries of the Caribbean&#39;</span><span class="p">,</span> <span class="s1">&#39;Caribbean&#39;</span> <span class="p">},</span> </span><span id="L-705"><a href="#L-705"><span class="linenos" data-line="705"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries of Central America&#39;</span><span class="p">,</span> <span class="s1">&#39;Central America&#39;</span> <span class="p">},</span> </span><span id="L-706"><a href="#L-706"><span class="linenos" data-line="706"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries of Europe&#39;</span><span class="p">,</span> <span class="s1">&#39;Europe&#39;</span> <span class="p">},</span> </span><span id="L-707"><a href="#L-707"><span class="linenos" data-line="707"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries of the European Union&#39;</span><span class="p">,</span> <span class="s1">&#39;European Union&#39;</span> <span class="p">},</span> </span><span id="L-708"><a href="#L-708"><span class="linenos" data-line="708"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries of North America&#39;</span><span class="p">,</span> <span class="s1">&#39;North America&#39;</span> <span class="p">},</span> </span><span id="L-709"><a href="#L-709"><span class="linenos" data-line="709"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries of North America (subcontinent)&#39;</span><span class="p">,</span> <span class="s1">&#39;North America (subcontinent)&#39;</span> <span class="p">},</span> </span><span id="L-710"><a href="#L-710"><span class="linenos" data-line="710"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries of Oceania&#39;</span><span class="p">,</span> <span class="s1">&#39;Oceania&#39;</span> <span class="p">},</span> </span><span id="L-711"><a href="#L-711"><span class="linenos" data-line="711"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries of South America&#39;</span><span class="p">,</span> <span class="s1">&#39;South America&#39;</span> <span class="p">},</span> </span><span id="L-712"><a href="#L-712"><span class="linenos" data-line="712"></span></a> <span class="p">{</span> <span class="s1">&#39;Countries in the United Kingdom&#39;</span><span class="p">,</span> <span class="s1">&#39;United Kingdom&#39;</span> <span class="p">},</span> </span><span id="L-713"><a href="#L-713"><span class="linenos" data-line="713"></span></a> <span class="p">{</span> <span class="s1">&#39;Copyright rules by territory&#39;</span><span class="p">,</span> <span class="s1">&#39;CRT other&#39;</span> <span class="p">},</span> </span><span id="L-714"><a href="#L-714"><span class="linenos" data-line="714"></span></a> <span class="p">{</span> <span class="s1">&#39;Olympic teams&#39;</span><span class="p">,</span> <span class="s1">&#39;Olympic teams&#39;</span> <span class="p">},</span> </span><span id="L-715"><a href="#L-715"><span class="linenos" data-line="715"></span></a> <span class="p">{</span> <span class="s1">&#39;Most populous cities of the world&#39;</span><span class="p">,</span> <span class="s1">&#39;Module:Most populous cities of the world&#39;</span> <span class="p">},</span> </span><span id="L-716"><a href="#L-716"><span class="linenos" data-line="716"></span></a> <span class="p">{</span> <span class="s1">&#39;Regions of France&#39;</span><span class="p">,</span> <span class="s1">&#39;Module:Regions of France&#39;</span> <span class="p">},</span> </span><span id="L-717"><a href="#L-717"><span class="linenos" data-line="717"></span></a> <span class="p">{</span> <span class="s1">&#39;Departments of France&#39;</span><span class="p">,</span> <span class="s1">&#39;Module:Departments of France&#39;</span> <span class="p">},</span> </span><span id="L-718"><a href="#L-718"><span class="linenos" data-line="718"></span></a> <span class="p">}</span> </span><span id="L-719"><a href="#L-719"><span class="linenos" data-line="719"></span></a> <span class="kd">local</span> <span class="n">lines</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-720"><a href="#L-720"><span class="linenos" data-line="720"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">output</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> </span><span id="L-721"><a href="#L-721"><span class="linenos" data-line="721"></span></a> <span class="n">lines</span><span class="p">[</span><span class="o">#</span><span class="n">lines</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">line</span> </span><span id="L-722"><a href="#L-722"><span class="linenos" data-line="722"></span></a> <span class="kr">end</span> </span><span id="L-723"><a href="#L-723"><span class="linenos" data-line="723"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">templateid</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">templateids</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-724"><a href="#L-724"><span class="linenos" data-line="724"></span></a> <span class="kd">local</span> <span class="n">template</span><span class="p">,</span> <span class="n">id</span> <span class="o">=</span> <span class="n">templateid</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">templateid</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> </span><span id="L-725"><a href="#L-725"><span class="linenos" data-line="725"></span></a> <span class="kd">local</span> <span class="n">module</span> <span class="o">=</span> <span class="n">getDataModuleName</span><span class="p">(</span><span class="n">frame</span><span class="p">,</span> <span class="n">id</span><span class="p">)</span> </span><span id="L-726"><a href="#L-726"><span class="linenos" data-line="726"></span></a> <span class="kd">local</span> <span class="n">data</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="n">module</span><span class="p">)</span> </span><span id="L-727"><a href="#L-727"><span class="linenos" data-line="727"></span></a> <span class="c1">-- Compatibility note: `.infos` is prefered, `.countries` is legacy.</span> </span><span id="L-728"><a href="#L-728"><span class="linenos" data-line="728"></span></a> <span class="kd">local</span> <span class="n">infos</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">infos</span> <span class="ow">or</span> <span class="n">data</span><span class="p">.</span><span class="n">countries</span> </span><span id="L-729"><a href="#L-729"><span class="linenos" data-line="729"></span></a> <span class="kr">if</span> <span class="n">infos</span> <span class="kr">then</span> </span><span id="L-730"><a href="#L-730"><span class="linenos" data-line="730"></span></a> <span class="kd">local</span> <span class="n">codes</span><span class="p">,</span> <span class="n">maxnames</span><span class="p">,</span> <span class="n">usethe</span> <span class="o">=</span> <span class="p">{},</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">false</span> </span><span id="L-731"><a href="#L-731"><span class="linenos" data-line="731"></span></a> <span class="kr">for</span> <span class="n">code</span><span class="p">,</span> <span class="n">info</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">infos</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-732"><a href="#L-732"><span class="linenos" data-line="732"></span></a> <span class="n">codes</span><span class="p">[</span><span class="o">#</span><span class="n">codes</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> <span class="o">..</span> <span class="n">code</span> </span><span id="L-733"><a href="#L-733"><span class="linenos" data-line="733"></span></a> <span class="n">maxnames</span> <span class="o">=</span> <span class="nb">math.max</span><span class="p">(</span><span class="o">#</span><span class="n">info</span><span class="p">,</span> <span class="n">maxnames</span><span class="p">)</span> </span><span id="L-734"><a href="#L-734"><span class="linenos" data-line="734"></span></a> <span class="n">usethe</span> <span class="o">=</span> <span class="n">usethe</span> <span class="ow">or</span> <span class="n">info</span><span class="p">.</span><span class="n">the</span> </span><span id="L-735"><a href="#L-735"><span class="linenos" data-line="735"></span></a> <span class="kr">end</span> </span><span id="L-736"><a href="#L-736"><span class="linenos" data-line="736"></span></a> <span class="nb">table.sort</span><span class="p">(</span><span class="n">codes</span><span class="p">)</span> </span><span id="L-737"><a href="#L-737"><span class="linenos" data-line="737"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;== &#39;</span> <span class="o">..</span> <span class="n">template</span> <span class="o">..</span> <span class="s1">&#39; ==&#39;</span><span class="p">)</span> </span><span id="L-738"><a href="#L-738"><span class="linenos" data-line="738"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;* [[Template:&#39;</span> <span class="o">..</span> <span class="n">template</span> <span class="o">..</span> <span class="s1">&#39;]]&#39;</span><span class="p">)</span> </span><span id="L-739"><a href="#L-739"><span class="linenos" data-line="739"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;* [[&#39;</span> <span class="o">..</span> <span class="n">module</span> <span class="o">..</span> <span class="s1">&#39;]]&#39;</span><span class="p">)</span> </span><span id="L-740"><a href="#L-740"><span class="linenos" data-line="740"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;{|class=&quot;wikitable sortable&quot;&#39;</span><span class="p">)</span> </span><span id="L-741"><a href="#L-741"><span class="linenos" data-line="741"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;|-&#39;</span><span class="p">)</span> </span><span id="L-742"><a href="#L-742"><span class="linenos" data-line="742"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;!scope=&quot;col&quot;| Code&#39;</span><span class="p">)</span> </span><span id="L-743"><a href="#L-743"><span class="linenos" data-line="743"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;!scope=&quot;col&quot;| Wikidata&#39;</span><span class="p">)</span> </span><span id="L-744"><a href="#L-744"><span class="linenos" data-line="744"></span></a> <span class="kr">if</span> <span class="n">usethe</span> <span class="kr">then</span> </span><span id="L-745"><a href="#L-745"><span class="linenos" data-line="745"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;!scope=&quot;col&quot;| the&#39;</span><span class="p">)</span> </span><span id="L-746"><a href="#L-746"><span class="linenos" data-line="746"></span></a> <span class="kr">end</span> </span><span id="L-747"><a href="#L-747"><span class="linenos" data-line="747"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;!scope=&quot;col&quot; colspan=&quot;&#39;</span> <span class="o">..</span> <span class="p">(</span><span class="n">maxnames</span> <span class="o">&lt;</span> <span class="mi">2</span> <span class="ow">and</span> <span class="n">maxnames</span> <span class="ow">or</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-748"><a href="#L-748"><span class="linenos" data-line="748"></span></a> <span class="o">..</span> <span class="s1">&#39;&quot;| Name&#39;</span> <span class="o">..</span> <span class="p">(</span><span class="n">maxnames</span> <span class="o">&lt;=</span> <span class="mi">1</span> <span class="ow">and</span> <span class="s1">&#39;&#39;</span> </span><span id="L-749"><a href="#L-749"><span class="linenos" data-line="749"></span></a> <span class="ow">or</span> <span class="n">maxnames</span> <span class="o">==</span> <span class="mi">2</span> <span class="ow">and</span> <span class="s1">&#39; and alias&#39;</span> </span><span id="L-750"><a href="#L-750"><span class="linenos" data-line="750"></span></a> <span class="ow">or</span> <span class="s1">&#39; and aliases&#39;</span><span class="p">)</span> </span><span id="L-751"><a href="#L-751"><span class="linenos" data-line="751"></span></a> <span class="o">..</span> <span class="s1">&#39; on Commons&#39;</span><span class="p">)</span> </span><span id="L-752"><a href="#L-752"><span class="linenos" data-line="752"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">code</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">codes</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-753"><a href="#L-753"><span class="linenos" data-line="753"></span></a> <span class="kd">local</span> <span class="n">info</span> <span class="o">=</span> <span class="n">infos</span><span class="p">[</span><span class="n">code</span><span class="p">]</span> </span><span id="L-754"><a href="#L-754"><span class="linenos" data-line="754"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;|-&#39;</span><span class="p">)</span> </span><span id="L-755"><a href="#L-755"><span class="linenos" data-line="755"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;!scope=&quot;row&quot; style=&quot;text-align:left&quot;| &lt;kbd style=&quot;font-size:smaller&quot;&gt;&#39;</span> </span><span id="L-756"><a href="#L-756"><span class="linenos" data-line="756"></span></a> <span class="o">..</span> <span class="n">code</span> <span class="o">..</span> <span class="s1">&#39;&lt;/kbd&gt;&#39;</span><span class="p">)</span> </span><span id="L-757"><a href="#L-757"><span class="linenos" data-line="757"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;| &lt;small&gt;&#39;</span> <span class="o">..</span> <span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">qid</span> <span class="ow">and</span> <span class="p">(</span><span class="s1">&#39;[[d:&#39;</span> <span class="o">..</span> <span class="n">info</span><span class="p">.</span><span class="n">qid</span> <span class="o">..</span> <span class="s1">&#39;|&#39;</span> </span><span id="L-758"><a href="#L-758"><span class="linenos" data-line="758"></span></a> <span class="o">..</span> <span class="n">info</span><span class="p">.</span><span class="n">qid</span> <span class="o">..</span> <span class="s1">&#39;]]&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="o">..</span> <span class="s1">&#39;&lt;/small&gt;&#39;</span><span class="p">)</span> </span><span id="L-759"><a href="#L-759"><span class="linenos" data-line="759"></span></a> <span class="kr">if</span> <span class="n">usethe</span> <span class="kr">then</span> </span><span id="L-760"><a href="#L-760"><span class="linenos" data-line="760"></span></a> <span class="n">output</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">the</span> </span><span id="L-761"><a href="#L-761"><span class="linenos" data-line="761"></span></a> <span class="ow">and</span> <span class="p">(</span><span class="s1">&#39;| [[The &#39;</span> <span class="o">..</span> <span class="n">info</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-762"><a href="#L-762"><span class="linenos" data-line="762"></span></a> <span class="o">..</span> <span class="s1">&#39;|the]] &lt;small&gt;([[:Category:The &#39;</span> <span class="o">..</span> <span class="n">info</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-763"><a href="#L-763"><span class="linenos" data-line="763"></span></a> <span class="o">..</span> <span class="s1">&#39;|cat]])&lt;/small&gt;&#39;</span><span class="p">)</span> </span><span id="L-764"><a href="#L-764"><span class="linenos" data-line="764"></span></a> <span class="ow">or</span> <span class="s1">&#39;|style=&quot;background:#CCC&quot;| &amp;nbsp;&#39;</span><span class="p">)</span> </span><span id="L-765"><a href="#L-765"><span class="linenos" data-line="765"></span></a> <span class="kr">end</span> </span><span id="L-766"><a href="#L-766"><span class="linenos" data-line="766"></span></a> <span class="n">output</span><span class="p">(</span><span class="n">info</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-767"><a href="#L-767"><span class="linenos" data-line="767"></span></a> <span class="ow">and</span> <span class="p">(</span><span class="s1">&#39;| [[&#39;</span> <span class="o">..</span> <span class="n">info</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">..</span> <span class="s1">&#39;]] &lt;small&gt;([[:Category:&#39;</span> </span><span id="L-768"><a href="#L-768"><span class="linenos" data-line="768"></span></a> <span class="o">..</span> <span class="n">info</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">..</span> <span class="s1">&#39;|cat]])&lt;/small&gt;&#39;</span><span class="p">)</span> </span><span id="L-769"><a href="#L-769"><span class="linenos" data-line="769"></span></a> <span class="ow">or</span> <span class="s1">&#39;|style=&quot;background:#CCC&quot;| &amp;nbsp;&#39;</span><span class="p">)</span> </span><span id="L-770"><a href="#L-770"><span class="linenos" data-line="770"></span></a> <span class="kr">if</span> <span class="n">maxnames</span> <span class="o">&gt;=</span> <span class="mi">2</span> <span class="kr">then</span> </span><span id="L-771"><a href="#L-771"><span class="linenos" data-line="771"></span></a> <span class="kd">local</span> <span class="n">aliases</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-772"><a href="#L-772"><span class="linenos" data-line="772"></span></a> <span class="kr">for</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="o">#</span><span class="n">info</span> <span class="kr">do</span> </span><span id="L-773"><a href="#L-773"><span class="linenos" data-line="773"></span></a> <span class="n">aliases</span><span class="p">[</span><span class="o">#</span><span class="n">aliases</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;[[&#39;</span> <span class="o">..</span> <span class="n">info</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> </span><span id="L-774"><a href="#L-774"><span class="linenos" data-line="774"></span></a> <span class="o">..</span> <span class="s1">&#39;]] &lt;small&gt;([[:Category:&#39;</span> <span class="o">..</span> <span class="n">info</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> </span><span id="L-775"><a href="#L-775"><span class="linenos" data-line="775"></span></a> <span class="o">..</span> <span class="s1">&#39;|cat]])&lt;/small&gt;&#39;</span> </span><span id="L-776"><a href="#L-776"><span class="linenos" data-line="776"></span></a> <span class="kr">end</span> </span><span id="L-777"><a href="#L-777"><span class="linenos" data-line="777"></span></a> <span class="n">output</span><span class="p">(</span><span class="o">#</span><span class="n">aliases</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="p">(</span><span class="s1">&#39;| &#39;</span> </span><span id="L-778"><a href="#L-778"><span class="linenos" data-line="778"></span></a> <span class="o">..</span> <span class="nb">table.concat</span><span class="p">(</span><span class="n">aliases</span><span class="p">,</span> <span class="s1">&#39;, &#39;</span><span class="p">))</span> </span><span id="L-779"><a href="#L-779"><span class="linenos" data-line="779"></span></a> <span class="ow">or</span> <span class="s1">&#39;|style=&quot;background:#CCC&quot;| &amp;nbsp;&#39;</span><span class="p">)</span> </span><span id="L-780"><a href="#L-780"><span class="linenos" data-line="780"></span></a> <span class="kr">end</span> </span><span id="L-781"><a href="#L-781"><span class="linenos" data-line="781"></span></a> <span class="kr">end</span> </span><span id="L-782"><a href="#L-782"><span class="linenos" data-line="782"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;|}&#39;</span><span class="p">)</span> </span><span id="L-783"><a href="#L-783"><span class="linenos" data-line="783"></span></a> <span class="n">output</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span> </span><span id="L-784"><a href="#L-784"><span class="linenos" data-line="784"></span></a> <span class="kr">end</span> </span><span id="L-785"><a href="#L-785"><span class="linenos" data-line="785"></span></a> <span class="kr">end</span> </span><span id="L-786"><a href="#L-786"><span class="linenos" data-line="786"></span></a> <span class="kr">return</span> <span class="nb">table.concat</span><span class="p">(</span><span class="n">lines</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> </span><span id="L-787"><a href="#L-787"><span class="linenos" data-line="787"></span></a><span class="kr">end</span> </span><span id="L-788"><a href="#L-788"><span class="linenos" data-line="788"></span></a> </span><span id="L-789"><a href="#L-789"><span class="linenos" data-line="789"></span></a><span class="cm">--[==[</span> </span><span id="L-790"><a href="#L-790"><span class="linenos" data-line="790"></span></a><span class="cm">Exports.</span> </span><span id="L-791"><a href="#L-791"><span class="linenos" data-line="791"></span></a><span class="cm">--]==]</span> </span><span id="L-792"><a href="#L-792"><span class="linenos" data-line="792"></span></a><span class="kr">return</span> <span class="p">{</span> </span><span id="L-793"><a href="#L-793"><span class="linenos" data-line="793"></span></a> <span class="n">main</span> <span class="o">=</span> <span class="n">main</span><span class="p">,</span> <span class="c1">-- For use in a MediaWiki template.</span> </span><span id="L-794"><a href="#L-794"><span class="linenos" data-line="794"></span></a> <span class="n">_main</span> <span class="o">=</span> <span class="n">_main</span><span class="p">,</span> <span class="c1">-- For use in Lua only.</span> </span><span id="L-795"><a href="#L-795"><span class="linenos" data-line="795"></span></a> <span class="n">show</span> <span class="o">=</span> <span class="n">show</span><span class="p">,</span> <span class="c1">-- Only for the documentation of this module.</span> </span><span id="L-796"><a href="#L-796"><span class="linenos" data-line="796"></span></a><span class="p">}</span> </span></pre></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐5c59558b9d‐gvzrv Cached time: 20241129091817 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.189 seconds Real time usage: 0.372 seconds Preprocessor visited node count: 2423/1000000 Post‐expand include size: 80406/2097152 bytes Template argument size: 6731/2097152 bytes Highest expansion depth: 13/100 Expensive parser function count: 1/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 339/5000000 bytes Lua time usage: 0.093/10.000 seconds Lua memory usage: 1340091/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 312.688 1 -total 83.06% 259.722 1 Module:Countries/doc 14.83% 46.381 1 Template:Module-nav 8.49% 26.552 6 Template:Module-nav/tab 8.30% 25.941 1 Template:Heavily_used_module 6.35% 19.846 5 Template:Module-nav/i18n 4.85% 15.163 5 Template:LangSwitch 4.24% 13.264 1 Template:Heavily_used_module/layout 3.12% 9.752 6 Template:Module-nav/tab2 2.91% 9.090 1 Template:Mbox --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1&amp;useformat=desktop" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://commons.wikimedia.org/w/index.php?title=Module:Countries&amp;oldid=586574659">https://commons.wikimedia.org/w/index.php?title=Module:Countries&amp;oldid=586574659</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Categories</a>: <ul><li><a href="/wiki/Category:Heavily_used_modules" title="Category:Heavily used modules">Heavily used modules</a></li><li><a href="/wiki/Category:Modules_for_general_use" title="Category:Modules for general use">Modules for general use</a></li></ul></div></div> </div> </div> <div id="mw-navigation"> <h2>Navigation menu</h2> <div id="mw-head"> <nav id="p-personal" class="mw-portlet mw-portlet-personal vector-user-menu-legacy vector-menu" aria-labelledby="p-personal-label" > <h3 id="p-personal-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Personal tools</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-uls" class="mw-list-item active"><a class="uls-trigger" href="#"><span>English</span></a></li><li id="pt-anonuserpage" class="mw-list-item"><span title="The user page for the IP address you are editing as">Not logged in</span></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li><li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-createaccount" class="mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&amp;returnto=Module%3ACountries" title="You are encouraged to create an account and log in; however, it is not mandatory"><span>Create account</span></a></li><li id="pt-login" class="mw-list-item"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Module%3ACountries" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span>Log in</span></a></li> </ul> </div> </nav> <div id="left-navigation"> <nav id="p-namespaces" class="mw-portlet mw-portlet-namespaces vector-menu-tabs vector-menu-tabs-legacy vector-menu" aria-labelledby="p-namespaces-label" > <h3 id="p-namespaces-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Namespaces</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-module" class="selected mw-list-item"><a href="/wiki/Module:Countries" title="View the module page [c]" accesskey="c"><span>Module</span></a></li><li id="ca-talk" class="mw-list-item"><a href="/wiki/Module_talk:Countries" rel="discussion" title="Discussion about the content page [t]" accesskey="t"><span>Discussion</span></a></li> </ul> </div> </nav> <nav id="p-variants" class="mw-portlet mw-portlet-variants emptyPortlet vector-menu-dropdown vector-menu" aria-labelledby="p-variants-label" > <input type="checkbox" id="p-variants-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-variants" class="vector-menu-checkbox" aria-labelledby="p-variants-label" > <label id="p-variants-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">English</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </nav> </div> <div id="right-navigation"> <nav id="p-views" class="mw-portlet mw-portlet-views vector-menu-tabs vector-menu-tabs-legacy vector-menu" aria-labelledby="p-views-label" > <h3 id="p-views-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Views</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected mw-list-item"><a href="/wiki/Module:Countries"><span>View</span></a></li><li id="ca-viewsource" class="mw-list-item"><a href="/w/index.php?title=Module:Countries&amp;action=edit" title="This page is protected.&#10;You can view its source [e]" accesskey="e"><span>View source</span></a></li><li id="ca-history" class="mw-list-item"><a href="/w/index.php?title=Module:Countries&amp;action=history" title="Past revisions of this page [h]" accesskey="h"><span>History</span></a></li> </ul> </div> </nav> <nav id="p-cactions" class="mw-portlet mw-portlet-cactions emptyPortlet vector-menu-dropdown vector-menu" aria-labelledby="p-cactions-label" title="More options" > <input type="checkbox" id="p-cactions-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-cactions" class="vector-menu-checkbox" aria-labelledby="p-cactions-label" > <label id="p-cactions-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">More</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </nav> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box"> <h3 >Search</h3> <form action="/w/index.php" id="searchform" class="vector-search-box-form"> <div id="simpleSearch" class="vector-search-box-inner" data-search-loc="header-navigation"> <input class="vector-search-box-input" type="search" name="search" placeholder="Search Wikimedia Commons" aria-label="Search Wikimedia Commons" autocapitalize="sentences" title="Search Wikimedia Commons [f]" accesskey="f" id="searchInput" > <input type="hidden" name="title" value="Special:MediaSearch"> <input id="mw-searchButton" class="searchButton mw-fallbackSearchButton" type="submit" name="fulltext" title="Search the pages for this text" value="Search"> <input id="searchButton" class="searchButton" type="submit" name="go" title="Go to a page with this exact name if it exists" value="Go"> </div> </form> </div> </div> </div> <div id="mw-panel" class="vector-legacy-sidebar"> <div id="p-logo" role="banner"> <a class="mw-wiki-logo" href="/wiki/Main_Page" title="Visit the main page"></a> </div> <nav id="p-navigation" class="mw-portlet mw-portlet-navigation vector-menu-portal portal vector-menu" aria-labelledby="p-navigation-label" > <h3 id="p-navigation-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Navigate</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-welcome" class="mw-list-item"><a href="/wiki/Commons:Welcome"><span>Welcome</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Commons:Community_portal" title="About the project, what you can do, where to find things"><span>Community portal</span></a></li><li id="n-village-pump" class="mw-list-item"><a href="/wiki/Commons:Village_pump"><span>Village pump</span></a></li><li id="n-help" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Help:Contents" title="The place to find out"><span>Help center</span></a></li> </ul> </div> </nav> <nav id="p-participate" class="mw-portlet mw-portlet-participate vector-menu-portal portal vector-menu" aria-labelledby="p-participate-label" > <h3 id="p-participate-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Participate</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-uploadbtn" class="mw-list-item"><a href="/wiki/Special:UploadWizard"><span>Upload file</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-latestfiles" class="mw-list-item"><a href="/wiki/Special:NewFiles"><span>Latest files</span></a></li><li id="n-randomimage" class="mw-list-item"><a href="/wiki/Special:Random/File" title="Load a random file [x]" accesskey="x"><span>Random file</span></a></li><li id="n-contact" class="mw-list-item"><a href="/wiki/Commons:Contact_us"><span>Contact us</span></a></li> </ul> </div> </nav> <nav id="p-tb" class="mw-portlet mw-portlet-tb vector-menu-portal portal vector-menu" aria-labelledby="p-tb-label" > <h3 id="p-tb-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Tools</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Module:Countries" title="A list of all wiki pages that link here [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Module:Countries" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Module:Countries&amp;oldid=586574659" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Module:Countries&amp;action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fcommons.wikimedia.org%2Fwiki%2FModule%3ACountries"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fcommons.wikimedia.org%2Fwiki%2FModule%3ACountries"><span>Download QR code</span></a></li> </ul> </div> </nav> <nav id="p-electronpdfservice-sidebar-portlet-heading" class="mw-portlet mw-portlet-electronpdfservice-sidebar-portlet-heading vector-menu-portal portal vector-menu" aria-labelledby="p-electronpdfservice-sidebar-portlet-heading-label" > <h3 id="p-electronpdfservice-sidebar-portlet-heading-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Print/export</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="electron-print_pdf" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&amp;page=Module%3ACountries&amp;action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </nav> <nav id="p-wikibase-otherprojects" class="mw-portlet mw-portlet-wikibase-otherprojects vector-menu-portal portal vector-menu" aria-labelledby="p-wikibase-otherprojects-label" > <h3 id="p-wikibase-otherprojects-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">In other projects</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q94334052" title="Link to connected data repository item [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </nav> <nav id="p-lang" class="mw-portlet mw-portlet-lang vector-menu-portal portal vector-menu" aria-labelledby="p-lang-label" > <h3 id="p-lang-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">In Wikipedia</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-add wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q94334052#sitelinks-wikipedia" title="Add interlanguage links" class="wbc-editpage">Add links</a></span></div> </div> </nav> </div> </div> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 27 August 2021, at 16:00.</li> <li id="footer-info-copyright">Files are available under licenses specified on their description page. All structured data from the file namespace is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/publicdomain/zero/1.0/">Creative Commons CC0 License</a>; all unstructured text is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-ShareAlike License</a>; additional terms may apply. By using this site, you agree to the <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and the <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy Policy</a>.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Commons:Welcome">About Wikimedia Commons</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Commons:General_disclaimer">Disclaimers</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/commons.wikimedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//commons.m.wikimedia.org/w/index.php?title=Module:Countries&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> <script>(RLQ=window.RLQ||[]).push(function(){mw.log.warn("This page is using the deprecated ResourceLoader module \"codex-search-styles\".\n[1.43] Use a CodexModule with codexComponents to set your specific components used: https://www.mediawiki.org/wiki/Codex#Using_a_limited_subset_of_components");mw.config.set({"wgHostname":"mw-web.codfw.main-5c59558b9d-gvzrv","wgBackendResponseTime":593,"wgPageParseReport":{"limitreport":{"cputime":"0.189","walltime":"0.372","ppvisitednodes":{"value":2423,"limit":1000000},"postexpandincludesize":{"value":80406,"limit":2097152},"templateargumentsize":{"value":6731,"limit":2097152},"expansiondepth":{"value":13,"limit":100},"expensivefunctioncount":{"value":1,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":339,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 312.688 1 -total"," 83.06% 259.722 1 Module:Countries/doc"," 14.83% 46.381 1 Template:Module-nav"," 8.49% 26.552 6 Template:Module-nav/tab"," 8.30% 25.941 1 Template:Heavily_used_module"," 6.35% 19.846 5 Template:Module-nav/i18n"," 4.85% 15.163 5 Template:LangSwitch"," 4.24% 13.264 1 Template:Heavily_used_module/layout"," 3.12% 9.752 6 Template:Module-nav/tab2"," 2.91% 9.090 1 Template:Mbox"]},"scribunto":{"limitreport-timeusage":{"value":"0.093","limit":"10.000"},"limitreport-memusage":{"value":1340091,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-5c59558b9d-gvzrv","timestamp":"20241129091817","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10