CINXE.COM

Modulo:Wikidades - Wikipèdia Vèneta, ła ensiclopedia łìbara

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="vec" dir="ltr"> <head> <meta charset="UTF-8"> <title>Modulo:Wikidades - Wikipèdia Vèneta, ła ensiclopedia łìbara</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )vecwikimwclientpreferences=([^;]+)/);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":[",\t."," \t,"],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"dmy","wgMonthNames":["","zenaro","febraro","marso","apriłe","majo","zugno","lujo","agosto","setenbre","otobre","novenbre","disenbre"],"wgRequestId":"fa68260b-30d9-401c-a8f6-a8c050d32a1a","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Modulo:Wikidades","wgTitle":"Wikidades","wgCurRevisionId":1169707,"wgRevisionId":1169707,"wgArticleId":142287,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgPageViewLanguage":"vec","wgPageContentLanguage":"vec","wgPageContentModel":"Scribunto","wgRelevantPageName":"Modulo:Wikidades","wgRelevantArticleId":142287,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":true,"wgFlaggedRevsParams":{"tags":{"accuracy":{"levels":3}}},"wgStableRevisionId":1169707,"wgMediaViewerOnClick":true, "wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":80000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q86580938","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false,"wgSiteNoticeId":"2.3"};RLSTATE={"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.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.flaggedRevs.basic":"ready","mediawiki.codex.messagebox.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready","ext.dismissableSiteNotice.styles":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.flaggedRevs.advanced","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface", "ext.cx.eventlogging.campaigns","wikibase.client.vector-2022","ext.checkUser.clientHints","wikibase.sidebar.tracking","ext.dismissableSiteNotice"];</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=vec&amp;modules=ext.dismissableSiteNotice.styles%7Cext.flaggedRevs.basic%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cmediawiki.codex.messagebox.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=vec&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=vec&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <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="Modulo:Wikidades - Wikipèdia Vèneta, ła ensiclopedia łìbara"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//vec.m.wikipedia.org/wiki/Modulo:Wikidades"> <link rel="alternate" type="application/x-wiki" title="Canbia" href="/w/index.php?title=Modulo:Wikidades&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (vec)"> <link rel="EditURI" type="application/rsd+xml" href="//vec.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://vec.wikipedia.org/wiki/Modulo:Wikidades"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.vec"> <link rel="alternate" type="application/atom+xml" title="Feed Atom de Wikipedia" href="/w/index.php?title=Spe%C3%A7a%C5%82e:%C3%99ltimiCanbiamenti&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject mw-editable page-Modulo_Wikidades rootpage-Modulo_Wikidades skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Salta al contegnùo</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Sito"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Menù prinsipal" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Menù prinsipal</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Menù prinsipal</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">sposta in tel menù in parte</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">scondi</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navegasion </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-Pàjina-prinsipałe" class="mw-list-item"><a href="/wiki/Wikipedia:Prinsipio"><span>Pàjina prinsipałe</span></a></li><li id="n-Canbiaminti-in-ùltema" class="mw-list-item"><a href="/wiki/Spe%C3%A7a%C5%82e:%C3%99ltimiCanbiamenti"><span>Canbiaminti in ùltema</span></a></li><li id="n-Pàjina-a-òcio" class="mw-list-item"><a href="/wiki/Spe%C3%A7a%C5%82e:PaginaAOcio"><span>Pàjina a òcio</span></a></li><li id="n-Vetrina" class="mw-list-item"><a href="/wiki/Wikipedia:Vetrina"><span>Vetrina</span></a></li> </ul> </div> </div> <div id="p-Comunità" class="vector-menu mw-portlet mw-portlet-Comunità" > <div class="vector-menu-heading"> Comunità </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-Ciàcołe" class="mw-list-item"><a href="/wiki/Wikipedia:Ci%C3%A0co%C5%82e"><span>Ciàcołe</span></a></li><li id="n-Modełi-racomandai" class="mw-list-item"><a href="/wiki/Wikipedia:Mode%C5%82i_racomandai"><span>Modełi racomandai</span></a></li><li id="n-Coordenamento" class="mw-list-item"><a href="/wiki/Projeto:Coordenamento"><span>Coordenamento</span></a></li><li id="n-Convension-de-scritura" class="mw-list-item"><a href="/wiki/Juto:Convension_de_scritura"><span>Convension de scritura</span></a></li><li id="n-Comunità" class="mw-list-item"><a href="/wiki/Porta%C5%82e:Comunit%C3%A0"><span>Comunità</span></a></li><li id="n-El-Wikipedian" class="mw-list-item"><a href="/wiki/Wikipedia:Wikipedian"><span>El Wikipedian</span></a></li><li id="n-Chat-IRC" class="mw-list-item"><a href="/wiki/Juto:Cana%C5%82e_IRC"><span>Chat IRC</span></a></li><li id="n-Juto" class="mw-list-item"><a href="/wiki/Juto:Juto"><span>Juto</span></a></li><li id="n-Sondaji" class="mw-list-item"><a href="/wiki/Wikipedia:Sondaji"><span>Sondaji</span></a></li><li id="n-Contati" class="mw-list-item"><a href="/wiki/Wikipedia:Contati"><span>Contati</span></a></li><li id="n-Donasion" class="mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_vec.wikipedia.org&amp;uselang=vec"><span>Donasion</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Wikipedia:Prinsipio" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="Ła ençiclopedia lìbara" src="/static/images/mobile/copyright/wikipedia-tagline-vec.svg" width="119" height="14" style="width: 7.4375em; height: 0.875em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Spe%C3%A7a%C5%82e:Serca" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Serca drento de Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Serca</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Serca drento de Wikipedia" aria-label="Serca drento de Wikipedia" autocapitalize="sentences" title="Serca drento de Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Speçałe:Serca"> </div> <button class="cdx-button cdx-search-input__end-button">Serca</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Instrumenti personałi"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Inpostasion de letura"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Modifica la dimensione, la larghezza e il colore del testo" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Inpostasion de letura" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Inpostasion de letura</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_vec.wikipedia.org&amp;uselang=vec" class=""><span>Donasion</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Spe%C3%A7a%C5%82e:CreaUtente&amp;returnto=Modulo%3AWikidades" title="Te consejemo de rejistrarte e de ndar rento, anca se no xé na obligasion" class=""><span>Crea utensa</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Spe%C3%A7a%C5%82e:Entra&amp;returnto=Modulo%3AWikidades" title="Te consejemo de far l&#039;entrada, ma no te ghè da farlo par forsa. [o]" accesskey="o" class=""><span>Lòghite</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Altre posibilità" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Instrumenti personałi" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Instrumenti personałi</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal" title="Menu utente" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_vec.wikipedia.org&amp;uselang=vec"><span>Donasion</span></a></li><li id="pt-contribute" class="mw-list-item"><a href="/wiki/Spe%C3%A7a%C5%82e:Contribute"><span class="vector-icon mw-ui-icon-edit mw-ui-icon-wikimedia-edit"></span> <span>Contribuisci</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Spe%C3%A7a%C5%82e:CreaUtente&amp;returnto=Modulo%3AWikidades" title="Te consejemo de rejistrarte e de ndar rento, anca se no xé na obligasion"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Crea utensa</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Spe%C3%A7a%C5%82e:Entra&amp;returnto=Modulo%3AWikidades" title="Te consejemo de far l&#039;entrada, ma no te ghè da farlo par forsa. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Lòghite</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pagine per utenti anonimi <a href="/wiki/Juto:Introduzione" aria-label="Inparà piassè su come modìfegar"><span>par savérghine de pì</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Spe%C3%A7a%C5%82e:LeMeDiscussion" title="Discusioni riguardo ƚe modifiche fate da sto indiriso IP [n]" accesskey="n"><span>Discusion</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><div id="mw-dismissablenotice-anonplace"></div><script>(function(){var node=document.getElementById("mw-dismissablenotice-anonplace");if(node){node.outerHTML="\u003Cdiv class=\"mw-dismissable-notice\"\u003E\u003Cdiv class=\"mw-dismissable-notice-close\"\u003E[\u003Ca tabindex=\"0\" role=\"button\"\u003Escondi\u003C/a\u003E]\u003C/div\u003E\u003Cdiv class=\"mw-dismissable-notice-body\"\u003E\u003C!-- CentralNotice --\u003E\u003Cdiv id=\"localNotice\" data-nosnippet=\"\"\u003E\u003Cdiv class=\"sitenotice\" lang=\"vec\" dir=\"ltr\"\u003E\u003Cp\u003E\u003Cspan class=\"plainlinks\" style=\"font-size:small\"\u003E\n\u003C/span\u003E\u003C/p\u003E\n \u003Ci\u003E\u003Cdiv class=\"center\"\u003E\u003Csmall\u003EWikipèdia Vèneta co \u003Cb\u003E69\u0026#160;357 artìcułi\u003C/b\u003E, stai scrivesti da \u003Cb\u003E37\u0026#160;434 cołaboradori\u003C/b\u003E. \u003Cmark\u003EDivien anca ti cołaborador\u003C/mark\u003E, a ze \u003Cmark\u003Efàsiłe\u003C/mark\u003E e \u003Cmark\u003Eràpido\u003C/mark\u003E! Se za te ghè na utensa, \u003Ca href=\"/wiki/Spe%C3%A7a%C5%82e:Entra\" title=\"Speçałe:Entra\"\u003E\u003Cb\u003Elòghite\u003C/b\u003E\u003C/a\u003E, o sanò \u003Ca href=\"/wiki/Spe%C3%A7a%C5%82e:CreaUtente\" title=\"Speçałe:CreaUtente\"\u003E\u003Cb\u003Enòtate\u003C/b\u003E\u003C/a\u003E. Gràsie de core!\u003C/small\u003E\u003C/div\u003E\u003C/i\u003E\u003Cp\u003E\u003Cbr /\u003E \n\u003C/p\u003E\u003Cp class=\"mw-empty-elt\"\u003E\n\u003C/p\u003E\u003Cp\u003E\u003Cbr /\u003E\n\u003C/p\u003E\u003C/div\u003E\u003C/div\u003E\u003C/div\u003E\u003C/div\u003E";}}());</script></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Sito"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Somario" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Somario</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">sposta in tel menù in parte</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">scondi</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Scuminsio</div> </a> </li> <li id="toc-Functions" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Functions"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Functions</span> </div> </a> <ul id="toc-Functions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Function_claim" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Function_claim"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Function claim</span> </div> </a> <button aria-controls="toc-Function_claim-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Mostra o scondi la sesion Function claim</span> </button> <ul id="toc-Function_claim-sublist" class="vector-toc-list"> <li id="toc-General_parameters" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#General_parameters"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>General parameters</span> </div> </a> <ul id="toc-General_parameters-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Parameters_for_formatting" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Parameters_for_formatting"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Parameters for formatting</span> </div> </a> <ul id="toc-Parameters_for_formatting-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Parameters_of_table_with_property_and_qualifiers" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Parameters_of_table_with_property_and_qualifiers"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>Parameters of table with property and qualifiers</span> </div> </a> <ul id="toc-Parameters_of_table_with_property_and_qualifiers-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Function_getLabel" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Function_getLabel"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Function getLabel</span> </div> </a> <ul id="toc-Function_getLabel-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Function_getParentValues" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Function_getParentValues"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Function getParentValues</span> </div> </a> <ul id="toc-Function_getParentValues-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Function_linkWithParentLabel" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Function_linkWithParentLabel"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Function linkWithParentLabel</span> </div> </a> <ul id="toc-Function_linkWithParentLabel-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Function_yearsOld" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Function_yearsOld"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Function yearsOld</span> </div> </a> <ul id="toc-Function_yearsOld-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Function_editAtWikidata" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Function_editAtWikidata"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Function editAtWikidata</span> </div> </a> <ul id="toc-Function_editAtWikidata-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Utility_functions" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Utility_functions"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Utility functions</span> </div> </a> <ul id="toc-Utility_functions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Wikidata_redirects" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Wikidata_redirects"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>Wikidata redirects</span> </div> </a> <ul id="toc-Wikidata_redirects-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Using_from_another_module" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Using_from_another_module"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>Using from another module</span> </div> </a> <ul id="toc-Using_from_another_module-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Dependencies" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Dependencies"> <div class="vector-toc-text"> <span class="vector-toc-numb">11</span> <span>Dependencies</span> </div> </a> <ul id="toc-Dependencies-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">12</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Somario" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Mostra o scondi el somario" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Mostra o scondi el somario</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-namespace">Modulo</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">Wikidades</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Varda sta pajina inte n&#039;altra łengua. Xe disponibile in " > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-31" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">31 łéngue</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D9%88%D8%AD%D8%AF%D8%A9:Wikidata.Ca" title="وحدة:Wikidata.Ca - àrabo" lang="ar" hreflang="ar" data-title="وحدة:Wikidata.Ca" data-language-autonym="العربية" data-language-local-name="àrabo" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-ast mw-list-item"><a href="https://ast.wikipedia.org/wiki/M%C3%B3dulu:Wikidata" title="Módulu:Wikidata - asturian" lang="ast" hreflang="ast" data-title="Módulu:Wikidata" data-language-autonym="Asturianu" data-language-local-name="asturian" class="interlanguage-link-target"><span>Asturianu</span></a></li><li class="interlanguage-link interwiki-atj mw-list-item"><a href="https://atj.wikipedia.org/wiki/Aitapihikewin:Wikidata" title="Aitapihikewin:Wikidata - atikamec" lang="atj" hreflang="atj" data-title="Aitapihikewin:Wikidata" data-language-autonym="Atikamekw" data-language-local-name="atikamec" class="interlanguage-link-target"><span>Atikamekw</span></a></li><li class="interlanguage-link interwiki-ban mw-list-item"><a href="https://ban.wikipedia.org/wiki/Modul:Wikidata" title="Modul:Wikidata - balineze" lang="ban" hreflang="ban" data-title="Modul:Wikidata" data-language-autonym="Basa Bali" data-language-local-name="balineze" class="interlanguage-link-target"><span>Basa Bali</span></a></li><li class="interlanguage-link interwiki-bjn mw-list-item"><a href="https://bjn.wikipedia.org/wiki/Modul:Wikidata" title="Modul:Wikidata - banjar" lang="bjn" hreflang="bjn" data-title="Modul:Wikidata" data-language-autonym="Banjar" data-language-local-name="banjar" class="interlanguage-link-target"><span>Banjar</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/M%C3%B2dul:Wikidades" title="Mòdul:Wikidades - catalan" lang="ca" hreflang="ca" data-title="Mòdul:Wikidades" data-language-autonym="Català" data-language-local-name="catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-ckb mw-list-item"><a href="https://ckb.wikipedia.org/wiki/%D9%85%DB%86%D8%AF%DB%8C%D9%88%D9%88%D9%84:Wikidata.Ca" title="مۆدیوول:Wikidata.Ca - curdo sentrale" lang="ckb" hreflang="ckb" data-title="مۆدیوول:Wikidata.Ca" data-language-autonym="کوردی" data-language-local-name="curdo sentrale" class="interlanguage-link-target"><span>کوردی</span></a></li><li class="interlanguage-link interwiki-dag mw-list-item"><a href="https://dag.wikipedia.org/wiki/Module:Wikidata" title="Module:Wikidata - Dagbani" lang="dag" hreflang="dag" data-title="Module:Wikidata" data-language-autonym="Dagbanli" data-language-local-name="Dagbani" class="interlanguage-link-target"><span>Dagbanli</span></a></li><li class="interlanguage-link interwiki-din mw-list-item"><a href="https://din.wikipedia.org/wiki/Muk%C3%A4%C3%A4c%C3%ABt%C3%B6k:Wikidata" title="Mukääcëtök:Wikidata - dinca" lang="din" hreflang="din" data-title="Mukääcëtök:Wikidata" data-language-autonym="Thuɔŋjäŋ" data-language-local-name="dinca" class="interlanguage-link-target"><span>Thuɔŋjäŋ</span></a></li><li class="interlanguage-link interwiki-eo mw-list-item"><a href="https://eo.wikipedia.org/wiki/Modulo:Wikidades" title="Modulo:Wikidades - esperanto" lang="eo" hreflang="eo" data-title="Modulo:Wikidades" data-language-autonym="Esperanto" data-language-local-name="esperanto" class="interlanguage-link-target"><span>Esperanto</span></a></li><li class="interlanguage-link interwiki-eu mw-list-item"><a href="https://eu.wikipedia.org/wiki/Modulu:Wikidata" title="Modulu:Wikidata - basco" lang="eu" hreflang="eu" data-title="Modulu:Wikidata" data-language-autonym="Euskara" data-language-local-name="basco" class="interlanguage-link-target"><span>Euskara</span></a></li><li class="interlanguage-link interwiki-ga mw-list-item"><a href="https://ga.wikipedia.org/wiki/Module:Wikidades" title="Module:Wikidades - irlandeze" lang="ga" hreflang="ga" data-title="Module:Wikidades" data-language-autonym="Gaeilge" data-language-local-name="irlandeze" class="interlanguage-link-target"><span>Gaeilge</span></a></li><li class="interlanguage-link interwiki-gd mw-list-item"><a href="https://gd.wikipedia.org/wiki/M%C3%B2ideal:Wikidata" title="Mòideal:Wikidata - gaèlego scoseze" lang="gd" hreflang="gd" data-title="Mòideal:Wikidata" data-language-autonym="Gàidhlig" data-language-local-name="gaèlego scoseze" class="interlanguage-link-target"><span>Gàidhlig</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/M%C3%B3dulo:Wikidades" title="Módulo:Wikidades - galisian" lang="gl" hreflang="gl" data-title="Módulo:Wikidades" data-language-autonym="Galego" data-language-local-name="galisian" class="interlanguage-link-target"><span>Galego</span></a></li><li class="interlanguage-link interwiki-glk mw-list-item"><a href="https://glk.wikipedia.org/wiki/%D9%85%D8%A7%D8%AC%DB%8A%D9%84:Wikidata.Ca" title="ماجۊل:Wikidata.Ca - gilaki" lang="glk" hreflang="glk" data-title="ماجۊل:Wikidata.Ca" data-language-autonym="گیلکی" data-language-local-name="gilaki" class="interlanguage-link-target"><span>گیلکی</span></a></li><li class="interlanguage-link interwiki-guc mw-list-item"><a href="https://guc.wikipedia.org/wiki/M%C3%B3dulo:Wikidata" title="Módulo:Wikidata - wayuu" lang="guc" hreflang="guc" data-title="Módulo:Wikidata" data-language-autonym="Wayuunaiki" data-language-local-name="wayuu" class="interlanguage-link-target"><span>Wayuunaiki</span></a></li><li class="interlanguage-link interwiki-ha mw-list-item"><a href="https://ha.wikipedia.org/wiki/Module:Wikidata" title="Module:Wikidata - hausa" lang="ha" hreflang="ha" data-title="Module:Wikidata" data-language-autonym="Hausa" data-language-local-name="hausa" class="interlanguage-link-target"><span>Hausa</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/Modul:Wikidata" title="Modul:Wikidata - indonezian" lang="id" hreflang="id" data-title="Modul:Wikidata" data-language-autonym="Bahasa Indonesia" data-language-local-name="indonezian" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-kab mw-list-item"><a href="https://kab.wikipedia.org/wiki/Module:Wikidata" title="Module:Wikidata - cabil" lang="kab" hreflang="kab" data-title="Module:Wikidata" data-language-autonym="Taqbaylit" data-language-local-name="cabil" class="interlanguage-link-target"><span>Taqbaylit</span></a></li><li class="interlanguage-link interwiki-mad mw-list-item"><a href="https://mad.wikipedia.org/wiki/Modul:Wikidata" title="Modul:Wikidata - madureze" lang="mad" hreflang="mad" data-title="Modul:Wikidata" data-language-autonym="Madhurâ" data-language-local-name="madureze" class="interlanguage-link-target"><span>Madhurâ</span></a></li><li class="interlanguage-link interwiki-min mw-list-item"><a href="https://min.wikipedia.org/wiki/Modul:Wikidata" title="Modul:Wikidata - minangkabau" lang="min" hreflang="min" data-title="Modul:Wikidata" data-language-autonym="Minangkabau" data-language-local-name="minangkabau" class="interlanguage-link-target"><span>Minangkabau</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Modul:Wikidata.Ca" title="Modul:Wikidata.Ca - maleze" lang="ms" hreflang="ms" data-title="Modul:Wikidata.Ca" data-language-autonym="Bahasa Melayu" data-language-local-name="maleze" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-mt mw-list-item"><a href="https://mt.wikipedia.org/wiki/Module:Wikidata" title="Module:Wikidata - malteze" lang="mt" hreflang="mt" data-title="Module:Wikidata" data-language-autonym="Malti" data-language-local-name="malteze" class="interlanguage-link-target"><span>Malti</span></a></li><li class="interlanguage-link interwiki-mzn mw-list-item"><a href="https://mzn.wikipedia.org/wiki/%D9%85%D8%A7%DA%98%D9%88%D9%84:Wikidata.Ca" title="ماژول:Wikidata.Ca - mazandarani" lang="mzn" hreflang="mzn" data-title="ماژول:Wikidata.Ca" data-language-autonym="مازِرونی" data-language-local-name="mazandarani" class="interlanguage-link-target"><span>مازِرونی</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/Modul:Wikidades" title="Modul:Wikidades - norvejeze bokmal" lang="nb" hreflang="nb" data-title="Modul:Wikidades" data-language-autonym="Norsk bokmål" data-language-local-name="norvejeze bokmal" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-oc mw-list-item"><a href="https://oc.wikipedia.org/wiki/M%C3%B2dul:Wikidadas" title="Mòdul:Wikidadas - ositan" lang="oc" hreflang="oc" data-title="Mòdul:Wikidadas" data-language-autonym="Occitan" data-language-local-name="ositan" class="interlanguage-link-target"><span>Occitan</span></a></li><li class="interlanguage-link interwiki-qu mw-list-item"><a href="https://qu.wikipedia.org/wiki/M%C3%B3dulo:Wikidata2" title="Módulo:Wikidata2 - cuechua" lang="qu" hreflang="qu" data-title="Módulo:Wikidata2" data-language-autonym="Runa Simi" data-language-local-name="cuechua" class="interlanguage-link-target"><span>Runa Simi</span></a></li><li class="interlanguage-link interwiki-se mw-list-item"><a href="https://se.wikipedia.org/wiki/Modula:Ca:Wikidata" title="Modula:Ca:Wikidata - sami setentrionale" lang="se" hreflang="se" data-title="Modula:Ca:Wikidata" data-language-autonym="Davvisámegiella" data-language-local-name="sami setentrionale" class="interlanguage-link-target"><span>Davvisámegiella</span></a></li><li class="interlanguage-link interwiki-ss mw-list-item"><a href="https://ss.wikipedia.org/wiki/Module:Wikidata" title="Module:Wikidata - zwati" lang="ss" hreflang="ss" data-title="Module:Wikidata" data-language-autonym="SiSwati" data-language-local-name="zwati" class="interlanguage-link-target"><span>SiSwati</span></a></li><li class="interlanguage-link interwiki-ts mw-list-item"><a href="https://ts.wikipedia.org/wiki/Module:Wikidata" title="Module:Wikidata - tsonga" lang="ts" hreflang="ts" data-title="Module:Wikidata" data-language-autonym="Xitsonga" data-language-local-name="tsonga" class="interlanguage-link-target"><span>Xitsonga</span></a></li><li class="interlanguage-link interwiki-ur mw-list-item"><a href="https://ur.wikipedia.org/wiki/%D9%85%D8%A7%DA%88%DB%8C%D9%88%D9%84:Wikidata.Ca" title="ماڈیول:Wikidata.Ca - urdu" lang="ur" hreflang="ur" data-title="ماڈیول:Wikidata.Ca" data-language-autonym="اردو" data-language-local-name="urdu" class="interlanguage-link-target"><span>اردو</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q86580938#sitelinks-wikipedia" title="Canbia colegamenti interlenguìsteghi" class="wbc-editpage">Canbia lingambo</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="spasio-nomi"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-module" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Modulo:Wikidades" title="Vedi la pagina del modulo [c]" accesskey="c"><span>Modulo</span></a></li><li id="ca-talk" class="new vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Discussioni_modulo:Wikidades&amp;action=edit&amp;redlink=1" rel="discussion" class="new" title="Discusion so el contegnuo de sta pàgina (sta pajina no ła ghe xé) [t]" accesskey="t"><span>Discusion</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Canbia ła variante de ła lengua" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Vixuałixasion"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Modulo:Wikidades"><span>Lexi</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Modulo:Wikidades&amp;action=edit" title="Cànbia el còdexe sorxente de sta pàjina. [e]" accesskey="e"><span>Canbia el còdexe</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Modulo:Wikidades&amp;action=history" title="Version vece de sta pagina [h]" accesskey="h"><span>Varda l'istorego</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Instrumenti par łe pàjine"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Instrumenti" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Instrumenti</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Instrumenti</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">sposta in tel menù in parte</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">scondi</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="Altre opzioni" > <div class="vector-menu-heading"> Asion </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Modulo:Wikidades"><span>Lexi</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Modulo:Wikidades&amp;action=edit" title="Cànbia el còdexe sorxente de sta pàjina. [e]" accesskey="e"><span>Canbia el còdexe</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Modulo:Wikidades&amp;action=history"><span>Varda l'istorego</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> Xenerałe </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Spe%C3%A7a%C5%82e:PuntaQua/Modulo:Wikidades" title="Elenco de tute le pagine che ponta a sta cuà [j]" accesskey="j"><span>Pajine che łe ponta cuà</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Spe%C3%A7a%C5%82e:CanbiamentiLig%C3%A0/Modulo:Wikidades" rel="nofollow" title="I canbiamenti in ultima a łe pajine pontae a sta cua [k]" accesskey="k"><span>Canbiamenti ligài a sta pàjina</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Spe%C3%A7a%C5%82e:PagineSpeciali" title="Lista de tute le pajine speçałi [q]" accesskey="q"><span>Pajine speçałi</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Modulo:Wikidades&amp;oldid=1169707" title="Cołigamento parmanente a sta version de la pajina"><span>Lingambo parmanente</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Modulo:Wikidades&amp;action=info" title="Ulteriori informazioni su questa pagina"><span>Informasion so sta pajina</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Spe%C3%A7a%C5%82e:UrlShortener&amp;url=https%3A%2F%2Fvec.wikipedia.org%2Fwiki%2FModulo%3AWikidades"><span>Ottieni URL breve</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Spe%C3%A7a%C5%82e:QrCode&amp;url=https%3A%2F%2Fvec.wikipedia.org%2Fwiki%2FModulo%3AWikidades"><span>Scarica codice QR</span></a></li> </ul> </div> </div> <div id="p-electronpdfservice-sidebar-portlet-heading" class="vector-menu mw-portlet mw-portlet-electronpdfservice-sidebar-portlet-heading" > <div class="vector-menu-heading"> Stampa/esporta </div> <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=Spe%C3%A7a%C5%82e:DownloadAsPdf&amp;page=Modulo%3AWikidades&amp;action=show-download-screen"><span>Descarga in forma PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Version stanpabile de sta pagina [p]" accesskey="p"><span>Version par la stanpa</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In altri projeti </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-wikidata mw-list-item"><a href="https://www.wikidata.org/wiki/Module:Wikidades" hreflang="en"><span>Wikidata</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q86580938" title="Cołigamento a l&#039;ełemento de l&#039;archivo dati cołigà [g]" accesskey="g"><span>Ełemento Wikidata</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Instrumenti par łe pàjine"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Inpostasion de letura"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Inpostasion de letura</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">sposta in tel menù in parte</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">scondi</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">Da Wikipedia, l&#039;ençiclopedia libara.</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="vec" dir="ltr"><p>This is the documentation of <a class="mw-selflink selflink">Module:Wikidades</a> in English. </p><p>This module fetches formatted data from Wikidata. It works in local language and it has options for internationalization. </p><p>Wondering what does Wikidades mean? See <a href="https://vec.wiktionary.org/wiki/en:dada#Catalan" class="extiw" title="wikt:en:dada">wikt:en:dada#Catalan</a>. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Functions">Functions</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-1" title="Edit section&#039;s source code: Functions"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Basic function: </p> <ul><li><code><a href="#Function_claim">claim</a></code>: returns the value (or values) of a statement or a qualifier formatted with parameters or using a default format depending on the data type.</li></ul> <p>Other functions: </p> <ul><li><code><a href="#Function_getLabel">getLabel</a></code>: returns the label of an item, with some optional parameters.</li> <li><code><a href="#Function_getParentValues">getParentValues</a></code>: returns labels and parent values of a property, recursively.</li> <li><code><a href="#Function_linkWithParentLabel">linkWithParentLabel</a></code>: creates a link with the label of a parent property. For example, to link</li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P405" class="extiw" title="d:Property:P405">Autore tasonòmego&#32;<small>(P405)</small></a> </p> <pre>with the label </pre> <p><a href="https://www.wikidata.org/wiki/Property:P835" class="extiw" title="d:Property:P835">Scurs. zoołozia&#32;<small>(P835)</small></a> </p> <pre>from the parent item. </pre> <ul><li><code><a href="#Function_yearsOld">yearsOld</a></code>: returns the age of a person: difference between</li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P569" class="extiw" title="d:Property:P569">Data de nàsita&#32;<small>(P569)</small></a> </p> <pre>and </pre> <p><a href="https://www.wikidata.org/wiki/Property:P570" class="extiw" title="d:Property:P570">Data de morte&#32;<small>(P570)</small></a> </p><p>, when the two properties exist; or difference between <a href="https://www.wikidata.org/wiki/Property:P569" class="extiw" title="d:Property:P569">Data de nàsita&#32;<small>(P569)</small></a> </p> <pre>and current date, if there is no P570. Returns the completed years (nn) or range of years (nn/mm) depending on the precision of the dates. </pre> <ul><li><code><a href="#Function_editAtWikidata">editAtWikidata</a></code>: returns a pencil icon linked to a declaration on Wikidata. Planned to pop up an editing interface by <a href="https://www.mediawiki.org/wiki/Wikidata_Bridge" class="extiw" title="mw:Wikidata Bridge">mw:Wikidata Bridge</a>.</li></ul> <p>Other <a href="#Utility_functions">utility functions</a>: getSiteLink, lang, numStatements, validProperty, formatNum. </p> <div class="mw-heading mw-heading2"><h2 id="Function_claim">Function claim</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-2" title="Edit section&#039;s source code: Function claim"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Returns the value (or values) of a statement or a qualifier formatted with parameters or using a default format depending on the data type. By default, it refers to the Wikidata item (Qid) associated to the current page. </p><p>Full syntax: </p> <dl><dd><code>{{#invoke:Wikidades|claim|item= |lang= |property= |qualifier= |value= |list= |tablesort= |formatting= |separator= |conjunction= |editicon= |showerrors= |default= }}</code></dd></dl> <p>Additional syntax for table format: </p> <dl><dd><code>{{#invoke:Wikidades|claim|item= |lang= |property= |qualifier= |qualifier2= |...|qualifier<i>x</i>= |formatting=table |tablesort= |sorting= |rowformat= |rowsubformat1= |...|rowsubformat<i>x</i>= |colformat0= |...|colformat<i>x</i>= |case0= |...|case<i>x</i>= |separator= |conjunction= |editicon= |showerrors= |default= |references= }}</code></dd></dl> <div class="mw-heading mw-heading3"><h3 id="General_parameters">General parameters</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-3" title="Edit section&#039;s source code: General parameters"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><code>item=</code> (optional) Specifies an item (Qid) other than the associated to current page. Use it with moderation as arbitrary access to Wikidata is expensive. It can be defined in the parent frame of the template. Alias <code>from</code>.</li></ul> <ul><li><code>lang=</code> (optional) Indicates the code of a given language. It can be defined in the parent frame of the template. By default, it uses the local language of the wiki. If there is no label in this language then it tries in the fall back languages ​​defined in MediaWiki. On the debug console type =mw.dumpObject(mw.language.getFallbacksFor(mw.getContentLanguage():getCode())) to see the fallback languages of your wiki. If the label has not been found in the preferred language, it adds the language code and a label icon to translate it on Wikidata. <span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q12069631#P31" title="Edit the value on Wikidata"><img alt="Edit the value on Wikidata" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/63/Arbcom_ru_editing.svg/10px-Arbcom_ru_editing.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/63/Arbcom_ru_editing.svg/15px-Arbcom_ru_editing.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/63/Arbcom_ru_editing.svg/20px-Arbcom_ru_editing.svg.png 2x" data-file-width="600" data-file-height="600" /></a></span> to translate it on Wikidata.</li></ul> <ul><li><code>property=</code> (required) Property id of the statement (Pid). It is possible to define alternative properties with any separator, for example "P17 or P131", and it gets the first one found. It also accepts a minuscule p, but it is not recommended. It also accepts the property label, for example "property=country" is equivalent to "property=P17" for</li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P17" class="extiw" title="d:Property:P17">Stato&#32;<small>(P17)</small></a> </p><p>. </p> <ul><li><code>qualifier=</code> (optional) Qualifier (Pid) of a property value.</li></ul> <ul><li><code>value=</code> (optional) Value preferred to Wikidata one. It can be an optional parameter in a template with format {{{parameter|}}}, so if it exists then it takes the value of the parameter, if it is void then it gets the value of Wikidata. <ul><li><code>value=NONE</code> With this special value, it returns a void string. This allows to set a parameter that does not fetch anything from Wikidata, or to show only values provided in the template with <code>{{{parameter|NONE}}}</code>. It is equivalent to wiki syntax: <code>{{#ifeq:{{{parameter|}}}|NONE|&lt;!-- do nothing --&gt;}}</code>.</li></ul></li></ul> <ul><li><code>references=</code> (optional) With any value, recommended <code>yes</code> for readability, it shows the references of the value. With a numeric value it is the maximum number of references to fetch for the statement, by default 1. If exist</li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P854" class="extiw" title="d:Property:P854">URL de refarensa&#32;<small>(P854)</small></a> </p><p>, and either <a href="https://www.wikidata.org/wiki/Property:P1476" class="extiw" title="d:Property:P1476">Tìtuło&#32;<small>(P1476)</small></a> </p> <pre>or </pre> <p><a href="https://www.wikidata.org/wiki/Property:P248" class="extiw" title="d:Property:P248">Declarà da&#32;<small>(P248)</small></a> </p><p>, then it is formatted with <a href="https://www.wikidata.org/wiki/Q5637226" class="extiw" title="d:Q5637226">Modeło:Cita web (Q5637226)</a> </p> <pre>using the local parameters defined in table i18n["cite"] at <a href="/wiki/Modulo:Wikidades/i18n" title="Modulo:Wikidades/i18n">Module:Wikidades/i18n</a>. If exist </pre> <p><a href="https://www.wikidata.org/wiki/Property:P1433" class="extiw" title="d:Property:P1433">Publegà in&#32;<small>(P1433)</small></a> </p><p>, and title or stated in, then it is formatted with <a href="https://www.wikidata.org/wiki/Q5624899" class="extiw" title="d:Q5624899">Modeło:Cita publicasion (Q5624899)</a> . Otherwise, it is formatted as text. </p> <ul><li><dl><dd>If used with formatting=table (see <a href="#Parameters_of_table_with_property_and_qualifiers">below</a>) you must include a placeholder for references.</dd></dl></li></ul> <ul><li><code>list=</code> (optional): <ul><li><code>list=true</code> (default) shows a list of all preferred and normal values (see separator and conjunction below). It never fetches deprecated values.</li> <li><code>list=false</code> or <code>list=no</code> shows only one value, the best ranked (preferred or normal) or the oldest of those with the best rank.</li> <li><code>list=bestrank</code> shows a list of the best ranked values. It is equivalent to list=true if all values have the same rank. It is equivalent to list=false if only one value is best ranked. Definition <code>list=firstrank</code> is an alias.</li> <li><code>list=lang</code> for monolingual values, shows values corresponding to the language of the lang parameter. See parameters lang and formatting for monolingualtext.</li> <li><code>list=notlang</code> for monolingual values, it does not show values corresponding to the language of the lang parameter.</li> <li><code>list=<i>&lt;number&gt;</i></code> Sets the maximum number of values to be returned. Setting it to list=1 is equal to list=false. Setting it to list=0 is equal to list=true.</li> <li><code>tablesort=0</code> (optional) sorts the list in ascending order. By default, sorting is by rank (preferred, normal), and by order in Wikidata.</li></ul></li></ul> <ul><li><code>separator=</code> (optional) Separator to use in lists or tables. For lists the default is <a href="/wiki/MediaWiki:Comma-separator" title="MediaWiki:Comma-separator">MediaWiki:Comma-separator</a> (in English a comma and a blank space ',%nbsp;'). For tables the default is a line break &lt;br /&gt;. In some specials cases, a &lt;br /&gt; may not work if it is included with <a href="https://www.mediawiki.org/wiki/Strip_marker" class="extiw" title="mw:Strip marker">strip markers</a>. The alternative is to use the mark of a line feed control character: separator=LF.</li></ul> <ul><li><code>conjunction=</code> (optional) Conjunction to use as a separator between the last two elements of a list. By default it is equal to 'separator' if it is defined, otherwise it is <a href="/wiki/MediaWiki:And" title="MediaWiki:And">MediaWiki:And</a> plus <a href="/wiki/MediaWiki:Word-separator" title="MediaWiki:Word-separator">MediaWiki:Word-separator</a> (in English ' and '). For tables the default is a line break &lt;br /&gt;.</li></ul> <ul><li><code>case=</code> (optional) Grammatical case to be used. As a general case handled by the module: <ul><li>case=gender: according to</li></ul></li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P21" class="extiw" title="d:Property:P21">Sèso o zènaro&#32;<small>(P21)</small></a> </p> <pre>of the element it shows the label </pre> <p><a href="https://www.wikidata.org/wiki/Property:P2521" class="extiw" title="d:Property:P2521">Forma femenina de ła targheta&#32;<small>(P2521)</small></a> </p> <pre>of the value. </pre> <ul><li><ul><li>For other particular cases of the local wiki, see the documentation of <a href="/wiki/Modulo:Wikidades/i18n" title="Modulo:Wikidades/i18n">Module:Wikidades/i18n</a>.</li></ul></li></ul> <ul><li><code>itemgender=</code> (optional) Item where to check</li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P21" class="extiw" title="d:Property:P21">Sèso o zènaro&#32;<small>(P21)</small></a> </p> <pre>for using the feminine form if necessary. By default it is <code>item</code>. It is used in combination with case=gender. </pre> <ul><li><code>editicon=</code> (optional) Definition of the pencil icon <span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q12069631#P31" title="Edit the value on Wikidata"><img alt="Edit the value on Wikidata" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/63/Arbcom_ru_editing.svg/10px-Arbcom_ru_editing.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/63/Arbcom_ru_editing.svg/15px-Arbcom_ru_editing.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/63/Arbcom_ru_editing.svg/20px-Arbcom_ru_editing.svg.png 2x" data-file-width="600" data-file-height="600" /></a></span> to show and edit the statement fetched from Wikitada (planned to pop up an editing interface by <a href="https://www.mediawiki.org/wiki/Wikidata_Bridge" class="extiw" title="mw:Wikidata Bridge">mw:Wikidata Bridge</a>). Value of editicion is get from invoke call, or from parent frame of the template, or by default from definition of value addpencil in <a href="/wiki/Modulo:Wikidades/i18n" title="Modulo:Wikidades/i18n">Module:Wikidades/i18n</a> as wiki setting. <ul><li>editicon=true: show the icon. It will not be necessary if this is the default value of the wiki.</li> <li>editicon=false or editicon=no: do not show the icon.</li> <li>editicon=right: show the icon and align it to the right.</li></ul></li></ul> <ul><li><code>shownovalue=</code> (optional) Flag for ignoring statements defined as "no value". By default it is shownovalue=true showing message <a href="/wiki/MediaWiki:Wikibase-snakview-snaktypeselector-novalue" title="MediaWiki:Wikibase-snakview-snaktypeselector-novalue">MediaWiki:Wikibase-snakview-snaktypeselector-novalue</a>. With values shownovalue=false or shownovalue=no then the statement is ignored.</li></ul> <ul><li><code>showerrors=</code> (optional) With any value, typically 'yes', it shows error messages, if any. By default it shows the 'default' parameter.</li></ul> <ul><li><code>default=</code> (optional) Text to show for any error if 'showerrors' parameter is not defined.</li></ul> <ul><li><code>sandbox=</code> (opcional) With any value, typically 'yes', it redirects the invokes to <a href="/w/index.php?title=Modulo:Wikidades/sandbox&amp;action=edit&amp;redlink=1" class="new" title="Modulo:Wikidades/sandbox (sta pajina no ła ghe xé)">Module:Wikidades/sandbox</a>. The title of the subpage is retrieved from <a href="/wiki/MediaWiki:Sandboxlink-subpage-name" title="MediaWiki:Sandboxlink-subpage-name">MediaWiki:Sandboxlink-subpage-name</a>, "sandbox" in English, check it in the wiki language if necessary. This parameter can be used as parent from a template. It makes no sense used directly in an invoke or require for testing purposes. To be used only in preview or temporally as the sandbox module should not have any permanent link.</li></ul> <div class="mw-heading mw-heading3"><h3 id="Parameters_for_formatting">Parameters for formatting</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-4" title="Edit section&#039;s source code: Parameters for formatting"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><code>formatting=</code> (optional). Options for formatting depending on the data value and type: </p><p>Data value entity: </p> <ul><li><code>formatting=raw</code> Wikidata id (Qid or Pid) of the value.</li> <li><code>formatting=label</code> Label of the value in local language, its fall backs or as <i>raw</i>.</li> <li><code>formatting=sitelink</code> Title of the local site page, not linked. If there is no local page then it returns the format raw prefixed with interwiki link "d:".</li> <li><code>formatting=internallink</code> Internal link whenever possible: 1) to local wiki page (sitelink), 2) red link to the label if it does not exist as sitelink in another Wikidata item, 3) to Wikidata as last option.</li> <li><code>formatting=<i>pattern</i></code> Format using a pattern with $1 as a parameter to replace. It can include templates or parser functions with a non-expanded format: <code>&#123;&#123;((&#125;&#125;</code></li></ul> <p>template{{!}}$1<code>&#123;&#123;))&#125;&#125;</code> </p> <pre>or <code>&#123;&#123;((&#125;&#125;</code> </pre> <p>template{{!}}parameter name<code>&#123;&#123;=&#125;&#125;</code> $1<code>&#123;&#123;))&#125;&#125;</code> , or alike. </p> <dl><dd>The default format is a <a href="https://meta.wikimedia.org/wiki/Help:Piped_link" class="extiw" title="m:Help:Piped link">piped link</a> with link target as <i>sitelink</i> and link label as <i>label</i>. A link to Wikidata is formatted with <span style="color:#5f9cbb;">light blue color</span> different from the <span style="color:#0645AD;">internal blue link</span>. <ul><li><code>formatting=ucfirst</code> Variant of the default piped link with uppercase in first letter of label. In a list, it is used only for the first value.</li> <li><code>formatting=ucinternallink</code> Both "ucfirst" and "internallink".</li></ul></dd></dl> <p>Data value string: </p> <dl><dd>General: <ul><li><code>formatting=<i>pattern</i></code> Format using a pattern with $1 as a parameter to replace, for example: <code>formatting=[http://whc.unesco.org/en/list/$1 $1]</code>. For identifiers statements with an auto-generated link, the pattern can be found in the talk page of the property. It can include templates or parser functions with a non-expanded format (see above for entity).</li></ul></dd> <dd>Type URL: <ul><li><code>formatting=weblink</code> Format as external link with the website as label: [http://www.example.com example.com], [http://example.com/en/page example.com…].</li></ul></dd> <dd>Type external-id: <ul><li><code>formatting=externalid</code> Format as external link with the URL pattern from</li></ul></dd></dl> <p><a href="https://www.wikidata.org/wiki/Property:P1630" class="extiw" title="d:Property:P1630">Forma de URL&#32;<small>(P1630)</small></a> </p> <pre>in entity Pid of <code>property</code>. </pre> <dl><dd>Type math formula: <dl><dd>Returns the content wrapped with tag &lt;math&gt; that generates an image of the formula. See <a href="https://www.mediawiki.org/wiki/Extension:Math" class="extiw" title="mw:Extension:Math">mw:Extension:Math</a> and examples in</dd></dl></dd></dl> <p><a href="https://www.wikidata.org/wiki/Property:P2534" class="extiw" title="d:Property:P2534">Formula&#32;<small>(P2534)</small></a> </p><p>. </p> <dl><dd>Type musical notation <dl><dd>Returns the content wrapped with tag &lt;score&gt; that generates an image of the score. See <a href="https://www.mediawiki.org/wiki/Extension:Score" class="extiw" title="mw:Extension:Score">mw:Extension:Score</a> and examples in</dd></dl></dd></dl> <p><a href="https://www.wikidata.org/wiki/Property:P6686" class="extiw" title="d:Property:P6686">Musical motif&#32;<small>(P6686)</small></a> </p><p>. Format options: </p> <dl><dd><ul><li><code>formatting=sound</code> (optional) Adds the attribute sound="1" to the tag, embedding an audio player after the score image.</li></ul></dd></dl> <p>Data value quantity: </p> <dl><dd>By default it shows the quantity.</dd></dl> <ul><li><code>formatting=unit</code> Shows the quantity and the unit. It can show plural units if it is defined at <a href="/wiki/Modulo:Wikidades/Units" title="Modulo:Wikidades/Units">Module:Wikidades/Units</a>. <ul><li><code>formatting=unitlinked</code> Alternative with unit name linked.</li></ul></li> <li><code>formatting=unitcode</code> Shows the quantity and the code or abbreviation of the unit defined in</li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P5061" class="extiw" title="d:Property:P5061">Sìnboło unità&#32;<small>(P5061)</small></a> </p><p>. It can be changed locally at <a href="/wiki/Modulo:Wikidades/Units" title="Modulo:Wikidades/Units">Module:Wikidades/Units</a>. If not found it shows the unit name. </p> <ul><li><ul><li><code>formatting=unitcodelinked</code> Alternative with unit code linked.</li></ul></li> <li><code>formatting=duration</code> Shows a duration quantity broken into human-readable units: millennia, centuries, decades, years, days, hours, minutes, and seconds. For example, 123456 seconds: 1 day, 10 hours, 17 minutes and 36 seconds. Previously it tries to convert the unit to seconds (using convert=Q11574), otherwise it assumes the quantity is expressed in seconds. <ul><li><code>formatting=durationhms</code> Shows duration abbreviated in hours, minutes and seconds. For example, 12345 seconds: 3h 25m 45s. Format of local abbreviations can be defined at <a href="/wiki/Modulo:Wikidades/i18n" title="Modulo:Wikidades/i18n">Module:Wikidades/i18n</a> in table "hms".</li> <li><code>formatting=durationh:m:s</code> Shows duration hms simplified, as in 3:25:45, or minutes and seconds as in 01:23 or 45:00.</li> <li><code>formatting=durationm:s</code> Shows duration in minutes and seconds, even if greater than 60 minutes (i.e. used in duration of songs).</li></ul></li> <li><code>formatting=raw</code> Shows the quantity without any language format, that is with decimal point and no thousand separators. It is the appropriate format for numerical calculations. See also the <a href="#Utility_functions">function formatNum</a> for applying the format to the final result according to language definitions.</li> <li><code>formatting=<i>pattern</i></code> Format using a pattern with $1 as a parameter to replace.</li> <li><code>numformat=<i>%width.precision'flag'</i></code> Formats according to <a href="https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#string.format" class="extiw" title="mw:Extension:Scribunto/Lua reference manual">string.format specifiers</a> for numbers, where width is the total width of the returned value, a point is the decimal separator, precision is the number of decimal places to show, and flag can be: f floating point, e scientific notation, i integer, o octal, h hexadecimal, E i H upper-case, among others. For example, for number 15.656: "%.1f" formats 15.7, "%05i" formats 00015, "%.2e" formats 1.57e+01.</li> <li><code>convert=<i>Qid</i></code> (optional) Convert the quantity to the unit requested by its Qid. Conversions are made according to factors indicated in Qid for properties</li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P2370" class="extiw" title="d:Property:P2370">Conversion in unità SI&#32;<small>(P2370)</small></a> </p> <pre>or </pre> <p><a href="https://www.wikidata.org/wiki/Property:P2442" class="extiw" title="d:Property:P2442">Conversione in unità standard&#32;<small>(P2442)</small></a> </p><p>, except for temperatures defined with conversion formulas between ºC, ºF and ºK. For example, a value of "74 inch" with convert=Q174728 (<a href="https://www.wikidata.org/wiki/Q174728" class="extiw" title="d:Q174728">centimetro (Q174728)</a> ) gives "188 centimeters" according to the conversion "2.54 centimeter" indicated in <a href="https://www.wikidata.org/wiki/Q218593" class="extiw" title="d:Q218593">pollice (Q218593)</a> . It is rounded keeping the default precision of the original value according to the number of significant figures. It can be combined with formatting=unitcode. It can also be used with formatting=table, see below. </p> <ul><li><code>convert=default</code> (optional) Conversion of units defined in table convert_default at <a href="/wiki/Modulo:Wikidades/Units" title="Modulo:Wikidades/Units">Module:Wikidades/Units</a>.</li> <li><code>convert=default2</code> (optional) Variant that shows two values: the converted quantity and the original quantity in brackets.</li> <li><code>convert=M</code> Converts to millions, rounding with no decimals, if the quantity is greater than 100,000,000. Adds M before the unit name or code, for example Meuro, M$.</li></ul> <p>Data value monolingual (monolingualtext): </p> <ul><li><code>formatting=language</code> Returns the language code of a monolingual value, for example used in</li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P1448" class="extiw" title="d:Property:P1448">Nome ufisiałe&#32;<small>(P1448)</small></a> </p><p>. </p> <ul><li><code>formatting=text</code> Returns the text wrapped in a span with lang attribute, if it's different from the local language: <code>&lt;span lang="xx"&gt;foreign text&lt;/span&gt;</code>.</li> <li><code>formatting=<i>pattern</i></code> Format using a pattern with $language and $text as parameters to be replaced, for example "formatting=($language) $text".</li> <li><code>list=lang</code> Shows the values corresponding to the defined language or the default language. See lang parameter above.</li> <li><code>list=notlang</code> Does not show the values corresponding to the defined language or the default language. For example, it may be useful for</li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P1559" class="extiw" title="d:Property:P1559">Nome orizenałe&#32;<small>(P1559)</small></a> </p> <pre>avoiding redundancy in wiki local language. </pre> <p>Data value coordinates (globecoordinate): </p> <ul><li><code>formatting=latitude</code> Returns the latitude in decimal format.</li> <li><code>formatting=longitude</code> Returns the longitude in decimal format.</li> <li><code>formatting=globe</code> (default) Returns the globe parameter recognized by <a href="https://en.wikipedia.org/wiki/Template:Coord#globe:G" class="extiw" title="en:Template:Coord">Template:Coord</a>. It is requested for coordinates of globes other than Earth.</li> <li><code>formatting=$lat...$lon...$globe</code> Format using a pattern with $lat, $lon and optionally $globe as parameters to be replaced. It can include templates with non-expanded format, i.ex. <code>&#123;&#123;((&#125;&#125;</code></li></ul> <p>coord{{!}}$lat{{!}}$lon<code>&#123;&#123;))&#125;&#125;</code> . </p> <ul><li><code>formatting=dimension</code> Returns the dimension in meters equivalent to <a href="https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Geographical_coordinates#dim:D" class="extiw" title="en:Wikipedia:WikiProject Geographical coordinates">dim parameter of GeoHack</a>.</li></ul> <p>Data value datetime (labeled time): </p> <dl><dd>By default it uses the format defined <a href="/wiki/Modulo:Wikidades/i18n" title="Modulo:Wikidades/i18n">Module:Wikidades/i18n</a>, in datetime table, depending on the precision. Optionally, for precision of day:</dd></dl> <ul><li><code>formatting= <i>#time syntax</i></code> Accepts any valid format of <a href="https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions#.23time" class="extiw" title="mw:Help:Extension:ParserFunctions">#time parser function</a>. For example: formatting=d-m-Y (26-11-2024), formatting=[[j xg]] (<a href="/w/index.php?title=26_novenbre&amp;action=edit&amp;redlink=1" class="new" title="26 novenbre (sta pajina no ła ghe xé)">26 novenbre</a>), formatting=Y (2024).</li></ul> <dl><dd>Adds the calendar when it may be ambiguous: if the date is before 1582-10-15 and it is set to Gregorian, or if it is later than 1582-10-04 and it is set to Julian. See <a href="https://en.wikipedia.org/wiki/Adoption_of_the_Gregorian_calendar" class="extiw" title="en:Adoption of the Gregorian calendar">en:Adoption of the Gregorian calendar</a> for further reading.</dd></dl> <div class="mw-heading mw-heading3"><h3 id="Parameters_of_table_with_property_and_qualifiers">Parameters of table with property and qualifiers</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-5" title="Edit section&#039;s source code: Parameters of table with property and qualifiers"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <table class="wikitable" style="float:right;"> <tbody><tr> <th></th> <th>property</th> <th>qualifier1</th> <th>qualifier2 etc. </th></tr> <tr> <th>values 1st statement </th> <td>$0</td> <td>$1</td> <td>$2, etc. </td></tr> <tr> <th>2nd, etc. </th> <td>$0</td> <td>$1</td> <td>$2, etc. </td></tr></tbody></table> <p><code>formatting=table</code> A statement with qualifiers is considered as a table of values shown at right. You can define the format of the rows and each column in the table. Separators for rows by default are line breaks (see separator and conjunction above). If you really want the output in a wikitable you can use separator=&lt;/tr&gt;&lt;tr&gt; and the corresponding opening and closing tags before and after the invoke. Specific parameters for this format: </p><p>Columns: </p> <ul><li><code>qualifier1 ... qualifier<i>x</i>=</code> Qualifiers with consecutive numbers without any limitation. General parameter <code>qualifier</code> is an alias for qualifier1. <ul><li><code>qualifier<i>x</i> = P<i>id1</i> OR P<i>id2</i></code> Alternatives values for a qualifier, without limitation of successive ORs. It takes the first one found. A typical example is</li></ul></li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P585" class="extiw" title="d:Property:P585">Data&#32;<small>(P585)</small></a> </p> <pre>OR </pre> <p><a href="https://www.wikidata.org/wiki/Property:P580" class="extiw" title="d:Property:P580">Data del scumìsio&#32;<small>(P580)</small></a> </p><p>. </p> <ul><li><ul><li><code>qualifier<i>x</i> = P<i>id1</i>/P<i>id2</i></code> From the entity value of property P<i>id1</i> it gets the parent value P<i>id2</i>. This allows to obtain additional data in the table even though defined in a parent element. For example, to get railway lines with its icon: qualifier=P81/P154. It can be combined with the OR option taking priority the OR.</li> <li><code>qualifier<i>x</i> = /P<i>id</i></code> Equivalent to previous one but without P<i>id1</i>, it gets another property of same entity. This allows to obtain values defined either in a qualifier or in a property.</li></ul></li> <li><code>colformat0 ... colformat<i>x</i>=</code> Format to apply to each column, using 0 for the property and 1-x for every qualifier. It accepts the same syntax as <code>formatting</code> for each data type. See above <a href="#Parameters_for_formatting">#Parameters for formatting</a>.</li> <li><code>case0 ... case<i>x</i>=</code> Grammatical case to apply to each column. Parameter <code>case</code>, without numbering, applies to all values. See above <a href="#General_parameters">#General parameters</a>.</li> <li><code>convert0 ... convert<i>x</i>=</code> Conversion of units to apply to each column. See above <a href="#Parameters_for_formatting">#Parameters for formatting</a>, data type quantity.</li> <li><code>whitelist0 ... whitelist<i>x</i>=</code> List raw values, usually Qids, in a column to show the statement, with any separator.</li> <li><code>blacklist0 ... blacklist<i>x</i>=</code> List raw values, usually Qids, in a column to do not show the statement, with any separator. <dl><dd>Using several whitelist, or several blacklist, it works as an OR function. If a whitelist is used in a column and a blacklist in another column then results may be unexpected (see <a class="external text" href="https://ca.wikipedia.org/w/index.php?title=Tema:Ujnttzn0w9k1x0vq&amp;topic_showPostId=ujsb7o283btc0pix#flow-post-ujsb7o283btc0pix">an explanatory table, in Catalan</a>).</dd></dl></li> <li><code>selectvalue1 ... selectvalue<i>x</i>=</code> List raw values, usually Qids, in a column to show its value.</li> <li><code>ignorevalue1 ... ignorevalue<i>x</i>=</code> List raw values, usually Qids, in a column to do not show its value.</li></ul> <p>Rows: </p> <ul><li><code>rowformat=</code> Format of the rows of values for property and qualifiers. The property uses the placeholder $0 and the qualifiers $1 to $x. By default it is <code>rowformat=$0 ($1, ... $x)</code>. You can include list tags * or # and also templates or parser functions not expanded: <code>&#123;&#123;((&#125;&#125;</code></li></ul> <p>template{{!}}unnamed parameter{{!}}name<code>&#123;&#123;=&#125;&#125;</code> named parameter<code>&#123;&#123;))&#125;&#125;</code> . If used with parameter "references" (see <a href="#General_parameters">above</a>) you must include the placeholder $R0 for references. </p> <ul><li><code>rowsubformat1 ... rowsubformat<i>x</i>=</code> Previous format to apply to $1-$x defined in rowformat, only if there is any value. For example "rowformat=$0 $1" and "rowsubformat1=($1)" gives "$0 ($1)" or "$0" if $1 is void, avoiding empty parenthesis. A rowsubformat may have several variables $1-$x. Note that substitutions are made consecutively in numeric order, so it may include a posterior $x but not an anterior one as it has been already handled.</li> <li><code>tablesort=</code> with values 0 to x, it sorts the table per property (0) or per qualifier (1 to x). Sorting is in ascending order alphabetically, numerically or by date. It accepts multiple sorting keys with any separator, i.e. <code>tablesort=0/2/1</code>. By default it sorts the property by rank (preferred, normal), and by order in Wikidata.</li> <li><code>sorting=-1</code> sorts in descending order. With any other value, or by default, it sorts in ascending order. If tablesort is used with multiple keys, the sorting order is applied to all the keys.</li> <li><code>list=false</code> shows only the first row of the table, according to the order indicated or by default.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Function_getLabel">Function getLabel</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-6" title="Edit section&#039;s source code: Function getLabel"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Returns the label of an item. </p> <ul><li><code>1=</code> (first positional parameter, required) Wikitada id of the item (Qid or Pid). Alias: <code>item</code>, <code>from</code>.</li> <li><code>lang=</code> (optional) Language code, as in function claim. See above <a href="#General_parameters">#General parameters</a>.</li> <li><code>itemgender=</code> (optional) Qid to determine the gender form to use for the label, as in function claim. See above <a href="#General_parameters">#General parameters</a>.</li> <li><code>linked=</code> (optional) With any value, except 'no', it returns the label linked either to sitelink page or to Wikidata.</li> <li><code>label=</code> (optional) Shows this label instead of one fetched from Wikidata. It makes sense if used with linked=yes.</li> <li><code>editicon=</code> (optional) allows to remove the pencil edit icon, as in function claim. See above <a href="#General_parameters">#General parameters</a>.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Function_getParentValues">Function getParentValues</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-7" title="Edit section&#039;s source code: Function getParentValues"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Returns recursively values of a property labeled with a parent value. </p> <ul><li><code>item=</code> (optional) Specifies an item (Qid) other than the associated to current page. Use it with moderation, as arbitrary access to Wikidata is expensive.</li> <li><code>property=</code> (optional) Property id of the statement (Pid). By default it is</li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P131" class="extiw" title="d:Property:P131">Unità aministradiva de l&#39;ełemento&#32;<small>(P131)</small></a> </p><p>. Supports a list of alternative values ​​with any separator. </p> <ul><li><code>label=</code> (optional) Parent property id to use as label. By default, it is</li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P31" class="extiw" title="d:Property:P31">Istansa de&#32;<small>(P31)</small></a> </p><p>. </p> <ul><li><code>uptolabelid=</code> (optional) Last iteration to fetch, using Qid, if previously there is not any 'property' not found. It supports multiple values ​​with any separator.</li> <li><code>upto=</code> (optional) Quantity value of maximum number of iterations. By default it is 10 as a protection, large enough for common cases. <ul><li>upto=<i>label</i> (deprecated): Alternative to <code>uptolabelid</code> using a label value, for example "upto=country".</li></ul></li> <li><code>uptovalueid=</code> (optional) Alternative to <code>uptolabelid</code> using Qid of values instead of labels. It supports multiple values ​​with any separator. Alias uptolinkid provisionally for backwards compatibility.</li> <li><code>showlabelid=</code> (optional) White list of label Qids to show, with any separator.</li> <li><code>labelshow=</code> (deprecated) Alternative to <code>showlabelid</code> using label values with a slash as a separator.</li> <li><code>include_self=true</code> (optional) Includes current page on the output list.</li> <li><code>sorting=-1</code> (optional) Sorts the list of paired values in descending order.</li> <li><code>last_only=true</code> (optional) Only shows the last value fetched. For example, with uptolinkid=Qid and last_only=true it will show the value corresponding to label Qid.</li> <li><code>formatting=</code> (optional) Format for the property value. By default it is a piped link to local page or Wikidata (see above <a href="#Parameters_for_formatting">formatting</a> for data value entity).</li> <li><code>valuetext=</code> (optional) Property to use as link label with 'property' value as link target.</li> <li><code>labelformat=</code> (optional) Format for the label. By default, it is "label" (see above <a href="#Parameters_for_formatting">formatting</a> for data value entity).</li> <li><code>rowformat=</code> (optional) Output format for each pair of values, with placeholder $0 for the label and $1 for the value. By default it is "rowformat=$0 = $1", for example "country = [[France]]"</li> <li><code>separator=</code> (optional) Separator for each pair of label-value, by default &lt;br /&gt;.</li> <li><code>cascade=true</code> (optional) Output with indentation. It may be useful if rowformat only uses $1.</li></ul> <p>Note: labels can be fixed for needs of an infobox in <a href="/wiki/Modulo:Wikidades/labels" title="Modulo:Wikidades/labels">Module:Wikidades/labels</a>. For example, in Catalan "Municipi del Brasil" is modified to "Municipi" removing the determiner introduced by a preposition. </p> <div class="mw-heading mw-heading2"><h2 id="Function_linkWithParentLabel">Function linkWithParentLabel</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-8" title="Edit section&#039;s source code: Function linkWithParentLabel"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Creates a link with the label of a parent property. </p><p>It accepts most parameters of <a href="#Function_claim">function claim</a>, except "formatting" that uses the default "internallink". Additionally: </p> <ul><li><code>parent=</code> the parent property id to use as a link label. It accepts alternative values with any separator, as it does the parameter "property" of the function claim.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Function_yearsOld">Function yearsOld</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-9" title="Edit section&#039;s source code: Function yearsOld"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Returns the age of a person calculating the completed years between birth date and death date or current date. If both dates do not have precision of day then it shows a range of years, maximum a decade. </p><p>The syntax is: <code>{{#invoke:Wikidades|yearsOld|formatting= |item= }}</code>. Parameters <code>item</code> and <code>formatting</code> are optional. By default it shows the quantity. </p> <ul><li><code>formatting=unit</code> (optional) Gets the unit from table i18n["years-old"] at <a href="/wiki/Modulo:Wikidades/i18n" title="Modulo:Wikidades/i18n">Module:Wikidades/i18n</a> for singular, plural or other plural forms as paucal used in Slavic languages as Russian. See parser function PLURAL at <a href="https://www.mediawiki.org/wiki/Help:Magic_words#Localization" class="extiw" title="mw:Help:Magic words">mw:Help:Magic words#Localization</a>.</li> <li><code>formatting=<i>pattern</i></code> (optional) Format using a pattern with $1 as a placeholder for the quantity. A common use case is " ($1 years old)". It does not evaluate the expression in singular, plural or paucal and fetches the unit from <a href="https://www.wikidata.org/wiki/Q24564698" class="extiw" title="d:Q24564698">ani (Q24564698)</a></li></ul> <p>. As an alternative you can define a global pattern in table i18n["years-old"] that allows the parameter $1. </p> <div class="mw-heading mw-heading2"><h2 id="Function_editAtWikidata">Function editAtWikidata</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-10" title="Edit section&#039;s source code: Function editAtWikidata"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Returns the pencil icon to edit a declaration on Wikidata. </p><p>Syntax: <code>{{#invoke:Wikidades|editAtWikidata|&lt;value&gt;|item= |property= |lang= |editicon= }}</code> </p> <ul><li><code>1</code> (optional), first unnamed parameter. If it exists it will not show any icon. For example if a parameter is informed locally then it has not been fetched from Wikidata and the icon is not needed.</li> <li><code>property=<i>Pid</i></code> (required). Id of the property to link with anchor. It does not check the Pid, other anchors can be used, for example property=identifiers to link to the identifiers section.</li> <li><code>item=<i>Qid</i></code> (optional). Id of the item. It will not be necessary if it is the same as the associated page.</li> <li><code>lang=<i>code</i></code> (optional). Language code. Opening the link to Wikidata will display the page in this language. By default it uses the local wiki language for the main article space or the user language defined in the preferences for other namespaces.</li> <li><code>editicon=&lt;right/true&gt;</code> (optional). With value right it aligns to the right. Value true only makes sense if the wiki is set with ["addpencil"]=false at <a href="/wiki/Modulo:Wikidades/i18n" title="Modulo:Wikidades/i18n">Module:Wikidades/i18n</a>.</li></ul> <p>See above <a href="#General_parameters">#General parameters</a> for more reading about these parameters. </p> <div class="mw-heading mw-heading2"><h2 id="Utility_functions">Utility functions</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-11" title="Edit section&#039;s source code: Utility functions"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><code>getSiteLink</code> Returns the title of local page for a given item. Syntax: <dl><dd><code>{{#invoke:Wikidades|getSiteLink|&lt;Qid&gt;|&lt;wiki&gt;}}</code></dd> <dd>Without any parameter it returns the current page. With a Qid it returns the local page linked in the Qid item. It returns a void string if there is no local page linked. A second parameter with the wiki code it return the page linked for this wiki (enwiki, frwiki,... cawiktionary, etc.)</dd></dl></li></ul> <ul><li><code>lang</code> Returns the language code as managed by function claim. See <a href="#General_parameters">#General parameters</a> above. Syntax: <dl><dd><code>{{#invoke:Wikidades|lang|{{{lang|}}}}}</code></dd> <dd>Parameter lang is optional.</dd></dl></li></ul> <ul><li><code>numStatements</code> Returns the number of statements of a multi-value property considering only best ranked values. It allows the decide how to handle long lists. With a second unnamed parameter it counts the number of values of a qualifier. Syntax: <dl><dd><code>{{#invoke:Wikidades|numStatements|&lt;Pid&gt;|item={{{item|}}} }}</code></dd> <dd><code>{{#invoke:Wikidades|numStatements|&lt;Pid&gt;|&lt;Qual_id&gt;|item={{{item|}}} }}</code></dd> <dd>Example: {{#invoke:Wikidades|numStatements|P47|item=Q1861}} → 6</dd> <dd>For more complex queries, for example with list=true for preferred and normal ranking or with filters as whitelist, it can be used with the same syntax as <a href="#Function_claim">function claim</a>, without positional parameters.</dd></dl></li></ul> <ul><li><code>validProperty</code> Returns "void" if the property is not found, or it has only statements with values "no value" or "some value" or with deprecated rank. Syntax: <dl><dd><code>{{#invoke:Wikidades|validProperty|&lt;Pid&gt;|item={{{item|}}}</code></dd> <dd>It can be used as an alternative to #property. It accepts the same parameter used by this parser function: <code>from</code> is an alias for <code>item</code>.</dd></dl></li></ul> <ul><li><code>formatNum</code> Formats a quantity according to language definitions. It is equivalent to magic word <a href="https://www.mediawiki.org/wiki/Help:Magic_words#Formatting" class="extiw" title="mw:Help:Magic words">formatnum</a> with the option to specify a language other than the wiki default. Syntax: <dl><dd><code>{{#invoke:Wikidades|formatNum|&lt;num&gt;|&lt;lang&gt;}}</code></dd> <dd>First requested parameter is the number to format. The second optional parameter is the language code (see parameter lang of <a href="#General_parameters">function claim</a>).</dd></dl></li></ul> <ul><li><code><s>getTAValue</s></code> Old function retrieving values of</li></ul> <p><a href="https://www.wikidata.org/wiki/Property:P1323" class="extiw" title="d:Property:P1323">ID Terminologia Anatomica 98&#32;<small>(P1323)</small></a> </p><p>. Removed and replaced with a simple call {{#invoke:Wikidades | claim | property=P1323 | formatting=externalid | separator=&lt;br /&gt;}}. </p> <ul><li>For debugging functions see <a href="/wiki/Modulo:Wikidades/debug" title="Modulo:Wikidades/debug">Module:Wikidades/debug</a>.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Wikidata_redirects">Wikidata redirects</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-12" title="Edit section&#039;s source code: Wikidata redirects"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A Wikidata element can be redirected to another element, often as a result of a merge. The values ​​of a property can be provisionally a redirect, usually fixed by bot after a week. </p><p>When fetching data, it follows redirects: values fetched correspond to the target element of a redirect. If a Qid is used raw, not for fetching its data but for comparison purposes as in a filter, then a Qid redirected may provoke unexpected results. This may affect function claim with parameters whitelist, blacklist, selectvalue or ignorevalue, and function getParentValues with parameters uptolabelid, uptovalueid, showlabelid. </p><p>You can validate Qids included in a template, or other page. Use <code>{{#invoke:Wikidades/debug|validateIds|&lt;page&gt;}}</code> with the page title to check. For every Qid included in the page it shows: <span typeof="mw:File"><span title="Ok"><img alt="Ok" src="//upload.wikimedia.org/wikipedia/commons/thumb/8/80/Symbol_OK.svg/13px-Symbol_OK.svg.png" decoding="async" width="13" height="13" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/8/80/Symbol_OK.svg/20px-Symbol_OK.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/8/80/Symbol_OK.svg/26px-Symbol_OK.svg.png 2x" data-file-width="744" data-file-height="744" /></span></span> (ok), <span typeof="mw:File"><span title="Nay"><img alt="Nay" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Red_x.svg/13px-Red_x.svg.png" decoding="async" width="13" height="13" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Red_x.svg/20px-Red_x.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Red_x.svg/26px-Red_x.svg.png 2x" data-file-width="600" data-file-height="600" /></span></span> (not found) or<span typeof="mw:File"><span title="#REDIRECT"><img alt="#REDIRECT" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Redirectltr.png/40px-Redirectltr.png" decoding="async" width="40" height="17" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/b/b5/Redirectltr.png 1.5x" data-file-width="47" data-file-height="20" /></span></span>(redirect). This function is expensive and for a long list it may raise an error for not enough Lua memory. </p> <div class="mw-heading mw-heading2"><h2 id="Using_from_another_module">Using from another module</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-13" title="Edit section&#039;s source code: Using from another module"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>All functions (claim, getLabel, getParentValues, linkWithParentLabel, yearsOld, lang) can be used from other modules via <code>require</code> with the same parameters provided in a table, for example: </p> <dl><dd>require("Module:Wikidades").claim{item="Q...", property="P...", ...}</dd> <dd>require("Module:Wikidades").getLabel({"Q...", ['lang']="en"})</dd></dl> <p>Function claim can return a second value depending of parameter query that may be used on infobox modules for specific treatment. With query=untranslated it returns nil or true for values not translated in requested language. With query=num it returns the number of statements as <a href="#Utility_functions">function numStatements</a> does. </p><p>Parameters that accept "true" or "false" values can be defined as boolean type. </p> <div class="mw-heading mw-heading2"><h2 id="Dependencies">Dependencies</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-14" title="Edit section&#039;s source code: Dependencies"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Subpages relative to the main module. <ul><li><a href="/wiki/Modulo:Wikidades/i18n" title="Modulo:Wikidades/i18n">../i18n</a> (optional): translations of messages and local formats. If <code>lang</code> has a value other than local language then it searches the corresponding subpage, for example <a href="/w/index.php?title=Modulo:Wikidades/i18n/eu&amp;action=edit&amp;redlink=1" class="new" title="Modulo:Wikidades/i18n/eu (sta pajina no ła ghe xé)">../i18n/eu</a>. If it does not exist then defaults to English.</li> <li><a href="/wiki/Modulo:Wikidades/Units" title="Modulo:Wikidades/Units">../Units</a> (optional): definition of plurals and codes for units. If it does not exist or the unit is not found then it uses the unit name.</li> <li><a href="/wiki/Modulo:Wikidades/labels" title="Modulo:Wikidades/labels">../labels</a> (optional): exceptions and fixes of labels for an infobox.</li> <li><a href="/wiki/Modulo:Wikidades/debug" title="Modulo:Wikidades/debug">../debug</a>: may appear occasionally for the track function.</li></ul></li> <li>Mediawiki messages used in requested or default language: <ul><li><a href="/wiki/MediaWiki:Comma-separator" title="MediaWiki:Comma-separator">Mediawiki:Comma-separator</a>, <a href="/wiki/MediaWiki:And" title="MediaWiki:And">Mediawiki:And</a>, <a href="/wiki/MediaWiki:Word-separator" title="MediaWiki:Word-separator">Mediawiki:Word-separator</a></li> <li><a href="/wiki/MediaWiki:Wikibase-snakview-snaktypeselector-novalue" title="MediaWiki:Wikibase-snakview-snaktypeselector-novalue">Mediawiki:Wikibase-snakview-snaktypeselector-novalue</a>, <a href="/wiki/MediaWiki:Wikibase-snakview-snaktypeselector-somevalue" title="MediaWiki:Wikibase-snakview-snaktypeselector-somevalue">Mediawiki:Wikibase-snakview-snaktypeselector-somevalue</a></li> <li><a href="/wiki/MediaWiki:Wikibase-time-calendar-gregorian" title="MediaWiki:Wikibase-time-calendar-gregorian">Mediawiki:Wikibase-time-calendar-gregorian</a>, <a href="/wiki/MediaWiki:Wikibase-time-calendar-julian" title="MediaWiki:Wikibase-time-calendar-julian">Mediawiki:Wikibase-time-calendar-julian</a></li> <li><a href="/wiki/MediaWiki:Translate-taction-translate" title="MediaWiki:Translate-taction-translate">Mediawiki:Translate-taction-translate</a></li> <li><a href="/wiki/MediaWiki:Wikibase-client-data-bridge-bailout-suggestion-go-to-repo-button" title="MediaWiki:Wikibase-client-data-bridge-bailout-suggestion-go-to-repo-button">Mediawiki:Wikibase-client-data-bridge-bailout-suggestion-go-to-repo-button</a></li> <li><a href="/wiki/MediaWiki:Sandboxlink-subpage-name" title="MediaWiki:Sandboxlink-subpage-name">MediaWiki:Sandboxlink-subpage-name</a></li></ul> <dl><dd>If necessary, they can be created in <a href="https://meta.wikimedia.org/wiki/translatewiki.net" class="extiw" title="m:translatewiki.net">Translatewiki</a>. If you have an account in Translatewiki, you can access directly to it activating the following link with the title of the message and the language code: <code>[[translatewiki:MediaWiki:<i>&lt;message&gt;</i>/<i>&lt;lang&gt;</i>]]</code>.</dd></dl></li></ul> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Modulo:Wikidades/man&amp;action=edit&amp;section=T-15" title="Edit section&#039;s source code: See also"><span>canbia el còdaxe</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua" class="extiw" title="mw:Extension:Wikibase Client/Lua">Wikibase Lua functions</a>. They are the basic functions that can be found in <a href="/wiki/Modulo:Wikibase" title="Modulo:Wikibase">Module:Wikibase</a>.</li></ul> <hr /><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="c1">-- version 20231204 from master @cawiki</span> </span><span id="L-2"><a href="#L-2"><span class="linenos" data-line="2"></span></a><span class="c1">-- changes from previous version: whitelist, blacklist, ignorevalue and selectvalue work with multivalue qualifiers</span> </span><span id="L-3"><a href="#L-3"><span class="linenos" data-line="3"></span></a><span class="kd">local</span> <span class="n">p</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-4"><a href="#L-4"><span class="linenos" data-line="4"></span></a> </span><span id="L-5"><a href="#L-5"><span class="linenos" data-line="5"></span></a><span class="c1">-- Initialization of variables --------------------</span> </span><span id="L-6"><a href="#L-6"><span class="linenos" data-line="6"></span></a> </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">i18n</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">-- internationalisation at [[Module:Wikidades/i18n]]</span> </span><span id="L-8"><a href="#L-8"><span class="linenos" data-line="8"></span></a> <span class="p">[</span><span class="s2">&quot;errors&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-9"><a href="#L-9"><span class="linenos" data-line="9"></span></a> <span class="p">[</span><span class="s2">&quot;property-not-found&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Property not found.&quot;</span><span class="p">,</span> </span><span id="L-10"><a href="#L-10"><span class="linenos" data-line="10"></span></a> <span class="p">[</span><span class="s2">&quot;qualifier-not-found&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Qualifier not found.&quot;</span><span class="p">,</span> </span><span id="L-11"><a href="#L-11"><span class="linenos" data-line="11"></span></a> <span class="p">},</span> </span><span id="L-12"><a href="#L-12"><span class="linenos" data-line="12"></span></a> </span><span id="L-13"><a href="#L-13"><span class="linenos" data-line="13"></span></a> <span class="p">[</span><span class="s2">&quot;datetime&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-14"><a href="#L-14"><span class="linenos" data-line="14"></span></a> <span class="c1">-- $1 is a placeholder for the actual number</span> </span><span id="L-15"><a href="#L-15"><span class="linenos" data-line="15"></span></a> <span class="p">[</span><span class="s2">&quot;beforenow&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$1 BCE&quot;</span><span class="p">,</span> <span class="c1">-- how to format negative numbers for precisions 0 to 5</span> </span><span id="L-16"><a href="#L-16"><span class="linenos" data-line="16"></span></a> <span class="p">[</span><span class="s2">&quot;afternow&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$1 CE&quot;</span><span class="p">,</span> <span class="c1">-- how to format positive numbers for precisions 0 to 5</span> </span><span id="L-17"><a href="#L-17"><span class="linenos" data-line="17"></span></a> <span class="p">[</span><span class="s2">&quot;bc&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$1 BCE&quot;</span><span class="p">,</span> <span class="c1">-- how print negative years</span> </span><span id="L-18"><a href="#L-18"><span class="linenos" data-line="18"></span></a> <span class="p">[</span><span class="s2">&quot;ad&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$1&quot;</span><span class="p">,</span> <span class="c1">-- how print 1st century AD dates</span> </span><span id="L-19"><a href="#L-19"><span class="linenos" data-line="19"></span></a> </span><span id="L-20"><a href="#L-20"><span class="linenos" data-line="20"></span></a> <span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$1 billion years&quot;</span><span class="p">,</span> <span class="c1">-- precision: billion years</span> </span><span id="L-21"><a href="#L-21"><span class="linenos" data-line="21"></span></a> <span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$100 million years&quot;</span><span class="p">,</span> <span class="c1">-- precision: hundred million years</span> </span><span id="L-22"><a href="#L-22"><span class="linenos" data-line="22"></span></a> <span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$10 million years&quot;</span><span class="p">,</span> <span class="c1">-- precision: ten million years</span> </span><span id="L-23"><a href="#L-23"><span class="linenos" data-line="23"></span></a> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$1 million years&quot;</span><span class="p">,</span> <span class="c1">-- precision: million years</span> </span><span id="L-24"><a href="#L-24"><span class="linenos" data-line="24"></span></a> <span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$100000 years&quot;</span><span class="p">,</span> <span class="c1">-- precision: hundred thousand years; thousand separators added afterwards</span> </span><span id="L-25"><a href="#L-25"><span class="linenos" data-line="25"></span></a> <span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$10000 years&quot;</span><span class="p">,</span> <span class="c1">-- precision: ten thousand years; thousand separators added afterwards</span> </span><span id="L-26"><a href="#L-26"><span class="linenos" data-line="26"></span></a> <span class="p">[</span><span class="mi">6</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$1 millennium&quot;</span><span class="p">,</span> <span class="c1">-- precision: millennium</span> </span><span id="L-27"><a href="#L-27"><span class="linenos" data-line="27"></span></a> <span class="p">[</span><span class="mi">7</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$1 century&quot;</span><span class="p">,</span> <span class="c1">-- precision: century</span> </span><span id="L-28"><a href="#L-28"><span class="linenos" data-line="28"></span></a> <span class="p">[</span><span class="mi">8</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;$1s&quot;</span><span class="p">,</span> <span class="c1">-- precision: decade</span> </span><span id="L-29"><a href="#L-29"><span class="linenos" data-line="29"></span></a> <span class="c1">-- the following use the format of #time parser function</span> </span><span id="L-30"><a href="#L-30"><span class="linenos" data-line="30"></span></a> <span class="p">[</span><span class="mi">9</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Y&quot;</span><span class="p">,</span> <span class="c1">-- precision: year, </span> </span><span id="L-31"><a href="#L-31"><span class="linenos" data-line="31"></span></a> <span class="p">[</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;F Y&quot;</span><span class="p">,</span> <span class="c1">-- precision: month</span> </span><span id="L-32"><a href="#L-32"><span class="linenos" data-line="32"></span></a> <span class="p">[</span><span class="mi">11</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;F j, Y&quot;</span><span class="p">,</span> <span class="c1">-- precision: day</span> </span><span id="L-33"><a href="#L-33"><span class="linenos" data-line="33"></span></a> </span><span id="L-34"><a href="#L-34"><span class="linenos" data-line="34"></span></a> <span class="p">[</span><span class="s2">&quot;hms&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{[</span><span class="s2">&quot;hours&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;h&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;minutes&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;m&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;seconds&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;s&quot;</span><span class="p">},</span> <span class="c1">-- duration: xh xm xs</span> </span><span id="L-35"><a href="#L-35"><span class="linenos" data-line="35"></span></a> <span class="p">},</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="p">[</span><span class="s2">&quot;years-old&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">},</span> <span class="c1">-- year(s) old, as in {{PLURAL:$1|singular|plural}}</span> </span><span id="L-38"><a href="#L-38"><span class="linenos" data-line="38"></span></a> <span class="c1">-- two values for most languages, up to six values for some languages</span> </span><span id="L-39"><a href="#L-39"><span class="linenos" data-line="39"></span></a> <span class="c1">-- see documentation of PLURAL magic word in your language, examples:</span> </span><span id="L-40"><a href="#L-40"><span class="linenos" data-line="40"></span></a> <span class="c1">-- [&quot;years-old&quot;] = {&quot;singular&quot;, &quot;paucal&quot;, &quot;plural&quot;} in Russian and other Slavic languages</span> </span><span id="L-41"><a href="#L-41"><span class="linenos" data-line="41"></span></a> <span class="c1">-- [&quot;years-old&quot;] = {&quot;zero&quot;, &quot;one&quot;, &quot;two&quot;, &quot;few 3-10&quot;, &quot;many 11-99&quot;, &quot;other 100-102&quot;} in Arabic</span> </span><span id="L-42"><a href="#L-42"><span class="linenos" data-line="42"></span></a> </span><span id="L-43"><a href="#L-43"><span class="linenos" data-line="43"></span></a> <span class="p">[</span><span class="s2">&quot;cite&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">-- cite parameters</span> </span><span id="L-44"><a href="#L-44"><span class="linenos" data-line="44"></span></a> <span class="p">[</span><span class="s2">&quot;title&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;title&quot;</span><span class="p">,</span> </span><span id="L-45"><a href="#L-45"><span class="linenos" data-line="45"></span></a> <span class="p">[</span><span class="s2">&quot;author&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;author&quot;</span><span class="p">,</span> </span><span id="L-46"><a href="#L-46"><span class="linenos" data-line="46"></span></a> <span class="p">[</span><span class="s2">&quot;date&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;date&quot;</span><span class="p">,</span> </span><span id="L-47"><a href="#L-47"><span class="linenos" data-line="47"></span></a> <span class="p">[</span><span class="s2">&quot;pages&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;pages&quot;</span><span class="p">,</span> </span><span id="L-48"><a href="#L-48"><span class="linenos" data-line="48"></span></a> <span class="p">[</span><span class="s2">&quot;language&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;language&quot;</span><span class="p">,</span> </span><span id="L-49"><a href="#L-49"><span class="linenos" data-line="49"></span></a> <span class="c1">-- cite web parameters</span> </span><span id="L-50"><a href="#L-50"><span class="linenos" data-line="50"></span></a> <span class="p">[</span><span class="s2">&quot;url&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;url&quot;</span><span class="p">,</span> </span><span id="L-51"><a href="#L-51"><span class="linenos" data-line="51"></span></a> <span class="p">[</span><span class="s2">&quot;website&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;website&quot;</span><span class="p">,</span> </span><span id="L-52"><a href="#L-52"><span class="linenos" data-line="52"></span></a> <span class="p">[</span><span class="s2">&quot;access-date&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;access-date&quot;</span><span class="p">,</span> </span><span id="L-53"><a href="#L-53"><span class="linenos" data-line="53"></span></a> <span class="p">[</span><span class="s2">&quot;archive-url&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;archive-url&quot;</span><span class="p">,</span> </span><span id="L-54"><a href="#L-54"><span class="linenos" data-line="54"></span></a> <span class="p">[</span><span class="s2">&quot;archive-date&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;archive-date&quot;</span><span class="p">,</span> </span><span id="L-55"><a href="#L-55"><span class="linenos" data-line="55"></span></a> <span class="p">[</span><span class="s2">&quot;publisher&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;publisher&quot;</span><span class="p">,</span> </span><span id="L-56"><a href="#L-56"><span class="linenos" data-line="56"></span></a> <span class="p">[</span><span class="s2">&quot;quote&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;quote&quot;</span><span class="p">,</span> </span><span id="L-57"><a href="#L-57"><span class="linenos" data-line="57"></span></a> <span class="c1">-- cite journal parameters</span> </span><span id="L-58"><a href="#L-58"><span class="linenos" data-line="58"></span></a> <span class="p">[</span><span class="s2">&quot;work&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;work&quot;</span><span class="p">,</span> </span><span id="L-59"><a href="#L-59"><span class="linenos" data-line="59"></span></a> <span class="p">[</span><span class="s2">&quot;issue&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;issue&quot;</span><span class="p">,</span> </span><span id="L-60"><a href="#L-60"><span class="linenos" data-line="60"></span></a> <span class="p">[</span><span class="s2">&quot;issn&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;issn&quot;</span><span class="p">,</span> </span><span id="L-61"><a href="#L-61"><span class="linenos" data-line="61"></span></a> <span class="p">[</span><span class="s2">&quot;doi&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;doi&quot;</span> </span><span id="L-62"><a href="#L-62"><span class="linenos" data-line="62"></span></a> <span class="p">},</span> </span><span id="L-63"><a href="#L-63"><span class="linenos" data-line="63"></span></a> </span><span id="L-64"><a href="#L-64"><span class="linenos" data-line="64"></span></a> <span class="c1">-- default local wiki settings</span> </span><span id="L-65"><a href="#L-65"><span class="linenos" data-line="65"></span></a> <span class="p">[</span><span class="s2">&quot;addpencil&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="c1">-- adds a pencil icon linked to Wikidata statement, planned to overwrite by Wikidata Bridge</span> </span><span id="L-66"><a href="#L-66"><span class="linenos" data-line="66"></span></a> <span class="p">[</span><span class="s2">&quot;categorylabels&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="c1">-- Category:Pages with Wikidata labels not translated (void for no local category)</span> </span><span id="L-67"><a href="#L-67"><span class="linenos" data-line="67"></span></a> <span class="p">[</span><span class="s2">&quot;categoryprop&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="c1">-- Category:Pages using Wikidata property $1 (void for no local category)</span> </span><span id="L-68"><a href="#L-68"><span class="linenos" data-line="68"></span></a> <span class="p">[</span><span class="s2">&quot;categoryref&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="c1">-- Category:Pages with references from Wikidata (void for no local category)</span> </span><span id="L-69"><a href="#L-69"><span class="linenos" data-line="69"></span></a> <span class="p">[</span><span class="s2">&quot;addfallback&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span> <span class="c1">-- additional fallback language codes</span> </span><span id="L-70"><a href="#L-70"><span class="linenos" data-line="70"></span></a> <span class="p">[</span><span class="s2">&quot;suppressids&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span> <span class="c1">-- list of Qid values to suppress</span> </span><span id="L-71"><a href="#L-71"><span class="linenos" data-line="71"></span></a> <span class="p">[</span><span class="s2">&quot;qidlabels&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> <span class="c1">-- show labels as Qid if no fallback translation is available</span> </span><span id="L-72"><a href="#L-72"><span class="linenos" data-line="72"></span></a><span class="p">}</span> </span><span id="L-73"><a href="#L-73"><span class="linenos" data-line="73"></span></a> </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">cases</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1">-- functions for local grammatical cases defined at [[Module:Wikidata/i18n]]</span> </span><span id="L-75"><a href="#L-75"><span class="linenos" data-line="75"></span></a> </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">required</span> <span class="o">=</span> <span class="p">...</span> <span class="c1">-- variadic arguments from require function</span> </span><span id="L-77"><a href="#L-77"><span class="linenos" data-line="77"></span></a><span class="kd">local</span> <span class="n">wiki</span> <span class="o">=</span> </span><span id="L-78"><a href="#L-78"><span class="linenos" data-line="78"></span></a><span class="p">{</span> </span><span id="L-79"><a href="#L-79"><span class="linenos" data-line="79"></span></a> <span class="n">langcode</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">getContentLanguage</span><span class="p">().</span><span class="n">code</span><span class="p">,</span> </span><span id="L-80"><a href="#L-80"><span class="linenos" data-line="80"></span></a> <span class="n">module_title</span> <span class="o">=</span> <span class="n">required</span> <span class="ow">or</span> <span class="n">mw</span><span class="p">.</span><span class="n">getCurrentFrame</span><span class="p">():</span><span class="n">getTitle</span><span class="p">()</span> </span><span id="L-81"><a href="#L-81"><span class="linenos" data-line="81"></span></a><span class="p">}</span> </span><span id="L-82"><a href="#L-82"><span class="linenos" data-line="82"></span></a> </span><span id="L-83"><a href="#L-83"><span class="linenos" data-line="83"></span></a><span class="kd">local</span> <span class="n">untranslated</span> <span class="c1">-- used in infobox modules: nil or true</span> </span><span id="L-84"><a href="#L-84"><span class="linenos" data-line="84"></span></a><span class="kd">local</span> <span class="n">_</span> <span class="c1">-- variable for unused returned values, avoiding globals</span> </span><span id="L-85"><a href="#L-85"><span class="linenos" data-line="85"></span></a> </span><span id="L-86"><a href="#L-86"><span class="linenos" data-line="86"></span></a><span class="c1">-- Module local functions --------------------------------------------</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="c1">-- Credit to http://stackoverflow.com/a/1283608/2644759, cc-by-sa 3.0</span> </span><span id="L-89"><a href="#L-89"><span class="linenos" data-line="89"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">tableMerge</span><span class="p">(</span><span class="n">t1</span><span class="p">,</span> <span class="n">t2</span><span class="p">)</span> </span><span id="L-90"><a href="#L-90"><span class="linenos" data-line="90"></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">t2</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-91"><a href="#L-91"><span class="linenos" data-line="91"></span></a> <span class="kr">if</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="s2">&quot;table&quot;</span> <span class="kr">then</span> </span><span id="L-92"><a href="#L-92"><span class="linenos" data-line="92"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">t1</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="ow">or</span> <span class="kc">false</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;table&quot;</span> <span class="kr">then</span> </span><span id="L-93"><a href="#L-93"><span class="linenos" data-line="93"></span></a> <span class="n">tableMerge</span><span class="p">(</span><span class="n">t1</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="ow">or</span> <span class="p">{},</span> <span class="n">t2</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="ow">or</span> <span class="p">{})</span> </span><span id="L-94"><a href="#L-94"><span class="linenos" data-line="94"></span></a> <span class="kr">else</span> </span><span id="L-95"><a href="#L-95"><span class="linenos" data-line="95"></span></a> <span class="n">t1</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> </span><span id="L-96"><a href="#L-96"><span class="linenos" data-line="96"></span></a> <span class="kr">end</span> </span><span id="L-97"><a href="#L-97"><span class="linenos" data-line="97"></span></a> <span class="kr">else</span> </span><span id="L-98"><a href="#L-98"><span class="linenos" data-line="98"></span></a> <span class="n">t1</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> </span><span id="L-99"><a href="#L-99"><span class="linenos" data-line="99"></span></a> <span class="kr">end</span> </span><span id="L-100"><a href="#L-100"><span class="linenos" data-line="100"></span></a> <span class="kr">end</span> </span><span id="L-101"><a href="#L-101"><span class="linenos" data-line="101"></span></a> <span class="kr">return</span> <span class="n">t1</span> </span><span id="L-102"><a href="#L-102"><span class="linenos" data-line="102"></span></a><span class="kr">end</span> </span><span id="L-103"><a href="#L-103"><span class="linenos" data-line="103"></span></a> </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">loadI18n</span><span class="p">(</span><span class="n">lang</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">exist</span><span class="p">,</span> <span class="n">res</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">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/i18n&quot;</span><span class="p">)</span> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a> <span class="kr">if</span> <span class="n">exist</span> <span class="ow">and</span> <span class="nb">next</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="o">~=</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></span></a> <span class="n">tableMerge</span><span class="p">(</span><span class="n">i18n</span><span class="p">,</span> <span class="n">res</span><span class="p">.</span><span class="n">i18n</span><span class="p">)</span> </span><span id="L-108"><a href="#L-108"><span class="linenos" data-line="108"></span></a> <span class="n">cases</span> <span class="o">=</span> <span class="n">res</span><span class="p">.</span><span class="n">cases</span> </span><span id="L-109"><a href="#L-109"><span class="linenos" data-line="109"></span></a> <span class="kr">end</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">lang</span> <span class="o">~=</span> <span class="n">wiki</span><span class="p">.</span><span class="n">langcode</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="n">exist</span><span class="p">,</span> <span class="n">res</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">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/i18n/&quot;</span> <span class="o">..</span> <span class="n">lang</span><span class="p">)</span> </span><span id="L-112"><a href="#L-112"><span class="linenos" data-line="112"></span></a> <span class="kr">if</span> <span class="n">exist</span> <span class="ow">and</span> <span class="nb">next</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="o">~=</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-113"><a href="#L-113"><span class="linenos" data-line="113"></span></a> <span class="n">tableMerge</span><span class="p">(</span><span class="n">i18n</span><span class="p">,</span> <span class="n">res</span><span class="p">.</span><span class="n">i18n</span><span class="p">)</span> </span><span id="L-114"><a href="#L-114"><span class="linenos" data-line="114"></span></a> <span class="n">tableMerge</span><span class="p">(</span><span class="n">cases</span><span class="p">,</span> <span class="n">res</span><span class="p">.</span><span class="n">cases</span><span class="p">)</span> </span><span id="L-115"><a href="#L-115"><span class="linenos" data-line="115"></span></a> <span class="kr">end</span> </span><span id="L-116"><a href="#L-116"><span class="linenos" data-line="116"></span></a> <span class="kr">end</span> </span><span id="L-117"><a href="#L-117"><span class="linenos" data-line="117"></span></a> <span class="n">i18n</span><span class="p">.</span><span class="n">suppress</span> <span class="o">=</span> <span class="p">{}</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">id</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">suppressids</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="n">i18n</span><span class="p">.</span><span class="n">suppress</span><span class="p">[</span><span class="n">id</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-120"><a href="#L-120"><span class="linenos" data-line="120"></span></a> <span class="kr">end</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><span id="L-123"><a href="#L-123"><span class="linenos" data-line="123"></span></a><span class="c1">-- Table of language codes: requested or default and its fallbacks</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="kr">function</span> <span class="nf">findLang</span><span class="p">(</span><span class="n">langcode</span><span class="p">)</span> </span><span id="L-125"><a href="#L-125"><span class="linenos" data-line="125"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">language</span><span class="p">.</span><span class="n">isKnownLanguageTag</span><span class="p">(</span><span class="n">langcode</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">false</span> <span class="kr">then</span> </span><span id="L-126"><a href="#L-126"><span class="linenos" data-line="126"></span></a> <span class="kd">local</span> <span class="n">cframe</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">getCurrentFrame</span><span class="p">()</span> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a> <span class="kd">local</span> <span class="n">pframe</span> <span class="o">=</span> <span class="n">cframe</span><span class="p">:</span><span class="n">getParent</span><span class="p">()</span> </span><span id="L-128"><a href="#L-128"><span class="linenos" data-line="128"></span></a> <span class="n">langcode</span> <span class="o">=</span> <span class="n">pframe</span> <span class="ow">and</span> <span class="n">pframe</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">lang</span> </span><span id="L-129"><a href="#L-129"><span class="linenos" data-line="129"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">language</span><span class="p">.</span><span class="n">isKnownLanguageTag</span><span class="p">(</span><span class="n">langcode</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">false</span> <span class="kr">then</span> </span><span id="L-130"><a href="#L-130"><span class="linenos" data-line="130"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">getCurrentTitle</span><span class="p">().</span><span class="n">isContentPage</span> <span class="kr">then</span> </span><span id="L-131"><a href="#L-131"><span class="linenos" data-line="131"></span></a> <span class="n">langcode</span> <span class="o">=</span> <span class="n">cframe</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="p">{</span><span class="s1">&#39;lang&#39;</span><span class="p">})</span> </span><span id="L-132"><a href="#L-132"><span class="linenos" data-line="132"></span></a> <span class="kr">end</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">mw</span><span class="p">.</span><span class="n">language</span><span class="p">.</span><span class="n">isKnownLanguageTag</span><span class="p">(</span><span class="n">langcode</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="o">==</span> <span class="kc">false</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="n">langcode</span> <span class="o">=</span> <span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span> </span><span id="L-135"><a href="#L-135"><span class="linenos" data-line="135"></span></a> <span class="kr">end</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="kr">end</span> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></span></a> </span><span id="L-139"><a href="#L-139"><span class="linenos" data-line="139"></span></a> <span class="n">loadI18n</span><span class="p">(</span><span class="n">langcode</span><span class="p">)</span> </span><span id="L-140"><a href="#L-140"><span class="linenos" data-line="140"></span></a> </span><span id="L-141"><a href="#L-141"><span class="linenos" data-line="141"></span></a> <span class="kd">local</span> <span class="n">languages</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">getFallbacksFor</span><span class="p">(</span><span class="n">langcode</span><span class="p">)</span> </span><span id="L-142"><a href="#L-142"><span class="linenos" data-line="142"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">languages</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">langcode</span><span class="p">)</span> </span><span id="L-143"><a href="#L-143"><span class="linenos" data-line="143"></span></a> <span class="kr">if</span> <span class="n">langcode</span> <span class="o">==</span> <span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span> <span class="kr">then</span> </span><span id="L-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">l</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">addfallback</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">languages</span><span class="p">,</span> <span class="n">l</span><span class="p">)</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="kr">end</span> </span><span id="L-148"><a href="#L-148"><span class="linenos" data-line="148"></span></a> </span><span id="L-149"><a href="#L-149"><span class="linenos" data-line="149"></span></a> <span class="kr">return</span> <span class="n">languages</span> </span><span id="L-150"><a href="#L-150"><span class="linenos" data-line="150"></span></a><span class="kr">end</span> </span><span id="L-151"><a href="#L-151"><span class="linenos" data-line="151"></span></a> </span><span id="L-152"><a href="#L-152"><span class="linenos" data-line="152"></span></a><span class="c1">-- Argument is &#39;set&#39; when it exists (not nil) or when it is not an empty string.</span> </span><span id="L-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">isSet</span><span class="p">(</span><span class="n">var</span><span class="p">)</span> </span><span id="L-154"><a href="#L-154"><span class="linenos" data-line="154"></span></a> <span class="kr">return</span> <span class="ow">not</span> <span class="p">(</span><span class="n">var</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">var</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> <span class="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">trim</span><span class="p">(</span><span class="n">var</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span><span class="p">))</span> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a><span class="kr">end</span> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></span></a><span class="c1">-- Set local case to a label</span> </span><span id="L-158"><a href="#L-158"><span class="linenos" data-line="158"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">case</span><span class="p">(</span><span class="n">localcase</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="p">...)</span> </span><span id="L-159"><a href="#L-159"><span class="linenos" data-line="159"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">isSet</span><span class="p">(</span><span class="n">label</span><span class="p">)</span> <span class="kr">then</span> <span class="kr">return</span> <span class="n">label</span> <span class="kr">end</span> </span><span id="L-160"><a href="#L-160"><span class="linenos" data-line="160"></span></a> </span><span id="L-161"><a href="#L-161"><span class="linenos" data-line="161"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">localcase</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;function&quot;</span> <span class="kr">then</span> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></span></a> <span class="kr">return</span> <span class="n">localcase</span><span class="p">(</span><span class="n">label</span><span class="p">)</span> </span><span id="L-163"><a href="#L-163"><span class="linenos" data-line="163"></span></a> <span class="kr">elseif</span> <span class="n">localcase</span> <span class="o">==</span> <span class="s2">&quot;smallcaps&quot;</span> <span class="kr">then</span> </span><span id="L-164"><a href="#L-164"><span class="linenos" data-line="164"></span></a> <span class="kr">return</span> <span class="s1">&#39;&lt;span style=&quot;font-variant: small-caps;&quot;&gt;&#39;</span> <span class="o">..</span> <span class="n">label</span> <span class="o">..</span> <span class="s1">&#39;&lt;/span&gt;&#39;</span> </span><span id="L-165"><a href="#L-165"><span class="linenos" data-line="165"></span></a> <span class="kr">elseif</span> <span class="n">cases</span><span class="p">[</span><span class="n">localcase</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-166"><a href="#L-166"><span class="linenos" data-line="166"></span></a> <span class="kr">return</span> <span class="n">cases</span><span class="p">[</span><span class="n">localcase</span><span class="p">](</span><span class="n">label</span><span class="p">,</span> <span class="p">...)</span> </span><span id="L-167"><a href="#L-167"><span class="linenos" data-line="167"></span></a> <span class="kr">end</span> </span><span id="L-168"><a href="#L-168"><span class="linenos" data-line="168"></span></a> </span><span id="L-169"><a href="#L-169"><span class="linenos" data-line="169"></span></a> <span class="kr">return</span> <span class="n">label</span> </span><span id="L-170"><a href="#L-170"><span class="linenos" data-line="170"></span></a><span class="kr">end</span> </span><span id="L-171"><a href="#L-171"><span class="linenos" data-line="171"></span></a> </span><span id="L-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a><span class="c1">-- get safely a serialized snak</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="kr">function</span> <span class="nf">getSnak</span><span class="p">(</span><span class="n">statement</span><span class="p">,</span> <span class="n">snaks</span><span class="p">)</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">ret</span> <span class="o">=</span> <span class="n">statement</span> </span><span id="L-175"><a href="#L-175"><span class="linenos" data-line="175"></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">snaks</span><span class="p">)</span> <span class="kr">do</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="ow">not</span> <span class="n">ret</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-177"><a href="#L-177"><span class="linenos" data-line="177"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">ret</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> </span><span id="L-178"><a href="#L-178"><span class="linenos" data-line="178"></span></a> <span class="kr">end</span> </span><span id="L-179"><a href="#L-179"><span class="linenos" data-line="179"></span></a> <span class="kr">return</span> <span class="n">ret</span> </span><span id="L-180"><a href="#L-180"><span class="linenos" data-line="180"></span></a><span class="kr">end</span> </span><span id="L-181"><a href="#L-181"><span class="linenos" data-line="181"></span></a> </span><span id="L-182"><a href="#L-182"><span class="linenos" data-line="182"></span></a><span class="c1">-- mw.wikibase.getLabelWithLang or getLabelByLang with a table of languages</span> </span><span id="L-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getLabelByLangs</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">languages</span><span class="p">)</span> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a> <span class="kd">local</span> <span class="n">label</span> </span><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a> <span class="kd">local</span> <span class="n">lang</span> </span><span id="L-186"><a href="#L-186"><span class="linenos" data-line="186"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">l</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">languages</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-187"><a href="#L-187"><span class="linenos" data-line="187"></span></a> <span class="kr">if</span> <span class="n">l</span> <span class="o">==</span> <span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span> <span class="kr">then</span> </span><span id="L-188"><a href="#L-188"><span class="linenos" data-line="188"></span></a> <span class="c1">-- using getLabelWithLang when possible instead of getLabelByLang</span> </span><span id="L-189"><a href="#L-189"><span class="linenos" data-line="189"></span></a> <span class="n">label</span><span class="p">,</span> <span class="n">l</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getLabelWithLang</span><span class="p">(</span><span class="n">id</span><span class="p">)</span> </span><span id="L-190"><a href="#L-190"><span class="linenos" data-line="190"></span></a> <span class="kr">else</span> </span><span id="L-191"><a href="#L-191"><span class="linenos" data-line="191"></span></a> <span class="n">label</span> <span class="o">=</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">id</span><span class="p">,</span> <span class="n">l</span><span class="p">)</span> </span><span id="L-192"><a href="#L-192"><span class="linenos" data-line="192"></span></a> <span class="kr">end</span> </span><span id="L-193"><a href="#L-193"><span class="linenos" data-line="193"></span></a> <span class="kr">if</span> <span class="n">label</span> <span class="kr">then</span> </span><span id="L-194"><a href="#L-194"><span class="linenos" data-line="194"></span></a> <span class="n">lang</span> <span class="o">=</span> <span class="n">l</span> </span><span id="L-195"><a href="#L-195"><span class="linenos" data-line="195"></span></a> <span class="kr">break</span> </span><span id="L-196"><a href="#L-196"><span class="linenos" data-line="196"></span></a> <span class="kr">end</span> </span><span id="L-197"><a href="#L-197"><span class="linenos" data-line="197"></span></a> <span class="kr">end</span> </span><span id="L-198"><a href="#L-198"><span class="linenos" data-line="198"></span></a> <span class="kr">return</span> <span class="n">label</span><span class="p">,</span> <span class="n">lang</span> </span><span id="L-199"><a href="#L-199"><span class="linenos" data-line="199"></span></a><span class="kr">end</span> </span><span id="L-200"><a href="#L-200"><span class="linenos" data-line="200"></span></a> </span><span id="L-201"><a href="#L-201"><span class="linenos" data-line="201"></span></a><span class="c1">-- getBestStatements if bestrank=true, else getAllStatements with no deprecated</span> </span><span id="L-202"><a href="#L-202"><span class="linenos" data-line="202"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getStatements</span><span class="p">(</span><span class="n">entityId</span><span class="p">,</span> <span class="n">property</span><span class="p">,</span> <span class="n">bestrank</span><span class="p">)</span> </span><span id="L-203"><a href="#L-203"><span class="linenos" data-line="203"></span></a> <span class="kd">local</span> <span class="n">claims</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-204"><a href="#L-204"><span class="linenos" data-line="204"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">entityId</span> <span class="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">match</span><span class="p">(</span><span class="n">property</span><span class="p">,</span> <span class="s2">&quot;^P%d+$&quot;</span><span class="p">))</span> <span class="kr">then</span> <span class="kr">return</span> <span class="n">claims</span> <span class="kr">end</span> </span><span id="L-205"><a href="#L-205"><span class="linenos" data-line="205"></span></a> <span class="kr">if</span> <span class="n">bestrank</span> <span class="kr">then</span> </span><span id="L-206"><a href="#L-206"><span class="linenos" data-line="206"></span></a> <span class="n">claims</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getBestStatements</span><span class="p">(</span><span class="n">entityId</span><span class="p">,</span> <span class="n">property</span><span class="p">)</span> </span><span id="L-207"><a href="#L-207"><span class="linenos" data-line="207"></span></a> <span class="kr">else</span> </span><span id="L-208"><a href="#L-208"><span class="linenos" data-line="208"></span></a> <span class="kd">local</span> <span class="n">allclaims</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getAllStatements</span><span class="p">(</span><span class="n">entityId</span><span class="p">,</span> <span class="n">property</span><span class="p">)</span> </span><span id="L-209"><a href="#L-209"><span class="linenos" data-line="209"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">c</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">allclaims</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-210"><a href="#L-210"><span class="linenos" data-line="210"></span></a> <span class="kr">if</span> <span class="n">c</span><span class="p">.</span><span class="n">rank</span> <span class="o">~=</span> <span class="s2">&quot;deprecated&quot;</span> <span class="kr">then</span> </span><span id="L-211"><a href="#L-211"><span class="linenos" data-line="211"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">claims</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> </span><span id="L-212"><a href="#L-212"><span class="linenos" data-line="212"></span></a> <span class="kr">end</span> </span><span id="L-213"><a href="#L-213"><span class="linenos" data-line="213"></span></a> <span class="kr">end</span> </span><span id="L-214"><a href="#L-214"><span class="linenos" data-line="214"></span></a> <span class="kr">end</span> </span><span id="L-215"><a href="#L-215"><span class="linenos" data-line="215"></span></a> <span class="kr">return</span> <span class="n">claims</span> </span><span id="L-216"><a href="#L-216"><span class="linenos" data-line="216"></span></a><span class="kr">end</span> </span><span id="L-217"><a href="#L-217"><span class="linenos" data-line="217"></span></a> </span><span id="L-218"><a href="#L-218"><span class="linenos" data-line="218"></span></a><span class="c1">-- Is gender femenine? true or false</span> </span><span id="L-219"><a href="#L-219"><span class="linenos" data-line="219"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">feminineGender</span><span class="p">(</span><span class="n">id</span><span class="p">)</span> </span><span id="L-220"><a href="#L-220"><span class="linenos" data-line="220"></span></a> <span class="kd">local</span> <span class="n">claims</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getBestStatements</span><span class="p">(</span><span class="n">id</span> <span class="ow">or</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getEntityIdForCurrentPage</span><span class="p">(),</span><span class="s1">&#39;P21&#39;</span><span class="p">)</span> </span><span id="L-221"><a href="#L-221"><span class="linenos" data-line="221"></span></a> <span class="kd">local</span> <span class="n">gender_id</span> <span class="o">=</span> <span class="n">getSnak</span><span class="p">(</span><span class="n">claims</span><span class="p">,</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;mainsnak&quot;</span><span class="p">,</span> <span class="s2">&quot;datavalue&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">,</span> <span class="s2">&quot;id&quot;</span><span class="p">})</span> </span><span id="L-222"><a href="#L-222"><span class="linenos" data-line="222"></span></a> <span class="kr">if</span> <span class="n">gender_id</span> <span class="o">==</span> <span class="s2">&quot;Q6581072&quot;</span> <span class="ow">or</span> <span class="n">gender_id</span> <span class="o">==</span> <span class="s2">&quot;Q1052281&quot;</span> <span class="ow">or</span> <span class="n">gender_id</span> <span class="o">==</span> <span class="s2">&quot;Q43445&quot;</span> <span class="kr">then</span> <span class="c1">-- female, transgender female, female organism</span> </span><span id="L-223"><a href="#L-223"><span class="linenos" data-line="223"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-224"><a href="#L-224"><span class="linenos" data-line="224"></span></a> <span class="kr">end</span> </span><span id="L-225"><a href="#L-225"><span class="linenos" data-line="225"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-226"><a href="#L-226"><span class="linenos" data-line="226"></span></a><span class="kr">end</span> </span><span id="L-227"><a href="#L-227"><span class="linenos" data-line="227"></span></a> </span><span id="L-228"><a href="#L-228"><span class="linenos" data-line="228"></span></a><span class="c1">-- Fetch female form of label</span> </span><span id="L-229"><a href="#L-229"><span class="linenos" data-line="229"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">feminineForm</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">lang</span><span class="p">)</span> </span><span id="L-230"><a href="#L-230"><span class="linenos" data-line="230"></span></a> <span class="kd">local</span> <span class="n">feminine_claims</span> <span class="o">=</span> <span class="n">getStatements</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="s1">&#39;P2521&#39;</span><span class="p">)</span> </span><span id="L-231"><a href="#L-231"><span class="linenos" data-line="231"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">feminine_claim</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">feminine_claims</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-232"><a href="#L-232"><span class="linenos" data-line="232"></span></a> <span class="kr">if</span> <span class="n">getSnak</span><span class="p">(</span><span class="n">feminine_claim</span><span class="p">,</span> <span class="p">{</span><span class="s1">&#39;mainsnak&#39;</span><span class="p">,</span> <span class="s1">&#39;datavalue&#39;</span><span class="p">,</span> <span class="s1">&#39;value&#39;</span><span class="p">,</span> <span class="s1">&#39;language&#39;</span><span class="p">})</span> <span class="o">==</span> <span class="n">lang</span> <span class="kr">then</span> </span><span id="L-233"><a href="#L-233"><span class="linenos" data-line="233"></span></a> <span class="kr">return</span> <span class="n">feminine_claim</span><span class="p">.</span><span class="n">mainsnak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">.</span><span class="n">text</span> </span><span id="L-234"><a href="#L-234"><span class="linenos" data-line="234"></span></a> <span class="kr">end</span> </span><span id="L-235"><a href="#L-235"><span class="linenos" data-line="235"></span></a> <span class="kr">end</span> </span><span id="L-236"><a href="#L-236"><span class="linenos" data-line="236"></span></a><span class="kr">end</span> </span><span id="L-237"><a href="#L-237"><span class="linenos" data-line="237"></span></a> </span><span id="L-238"><a href="#L-238"><span class="linenos" data-line="238"></span></a><span class="c1">-- Add an icon for no label in requested language</span> </span><span id="L-239"><a href="#L-239"><span class="linenos" data-line="239"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">addLabelIcon</span><span class="p">(</span><span class="n">label_id</span><span class="p">,</span> <span class="n">lang</span><span class="p">,</span> <span class="n">uselang</span><span class="p">,</span> <span class="n">icon</span><span class="p">)</span> </span><span id="L-240"><a href="#L-240"><span class="linenos" data-line="240"></span></a> <span class="kd">local</span> <span class="n">ret_lang</span><span class="p">,</span> <span class="n">ret_icon</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span> </span><span id="L-241"><a href="#L-241"><span class="linenos" data-line="241"></span></a> <span class="kr">if</span> <span class="n">icon</span> <span class="kr">then</span> </span><span id="L-242"><a href="#L-242"><span class="linenos" data-line="242"></span></a> <span class="kr">if</span> <span class="n">lang</span> <span class="ow">and</span> <span class="n">lang</span> <span class="o">~=</span> <span class="n">uselang</span> <span class="kr">then</span> </span><span id="L-243"><a href="#L-243"><span class="linenos" data-line="243"></span></a> <span class="n">ret_lang</span> <span class="o">=</span> <span class="s2">&quot; &lt;sup&gt;(&quot;</span> <span class="o">..</span> <span class="n">lang</span> <span class="o">..</span> <span class="s2">&quot;)&lt;/sup&gt;&quot;</span> </span><span id="L-244"><a href="#L-244"><span class="linenos" data-line="244"></span></a> <span class="kr">end</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">label_id</span> <span class="ow">and</span> <span class="p">(</span><span class="n">lang</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="n">lang</span> <span class="o">~=</span> <span class="n">uselang</span><span class="p">)</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="kd">local</span> <span class="n">namespace</span> <span class="o">=</span> <span class="s1">&#39;&#39;</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="nb">string.sub</span><span class="p">(</span><span class="n">label_id</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;P&#39;</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">namespace</span> <span class="o">=</span> <span class="s1">&#39;Property:&#39;</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">ret_icon</span> <span class="o">=</span> <span class="s2">&quot; [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|&quot;</span> </span><span id="L-251"><a href="#L-251"><span class="linenos" data-line="251"></span></a> <span class="o">..</span> <span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Translate-taction-translate&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">uselang</span><span class="p">):</span><span class="n">plain</span><span class="p">()</span> </span><span id="L-252"><a href="#L-252"><span class="linenos" data-line="252"></span></a> <span class="o">..</span> <span class="s2">&quot;|link=https://www.wikidata.org/wiki/&quot;</span> <span class="o">..</span> <span class="n">namespace</span> <span class="o">..</span> <span class="n">label_id</span> <span class="o">..</span> <span class="s2">&quot;?uselang=&quot;</span> <span class="o">..</span> <span class="n">uselang</span> <span class="o">..</span> <span class="s2">&quot;]]&quot;</span> </span><span id="L-253"><a href="#L-253"><span class="linenos" data-line="253"></span></a> <span class="n">untranslated</span> <span class="o">=</span> <span class="kc">true</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 class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">categorylabels</span><span class="p">)</span> <span class="ow">and</span> <span class="n">lang</span> <span class="o">~=</span> <span class="n">uselang</span> <span class="ow">and</span> <span class="n">uselang</span> <span class="o">==</span> <span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span> <span class="kr">then</span> </span><span id="L-256"><a href="#L-256"><span class="linenos" data-line="256"></span></a> <span class="n">ret_icon</span> <span class="o">=</span> <span class="n">ret_icon</span> <span class="o">..</span> <span class="s1">&#39;[[&#39;</span> <span class="o">..</span> <span class="n">i18n</span><span class="p">.</span><span class="n">categorylabels</span> <span class="o">..</span> <span class="p">(</span><span class="n">lang</span> <span class="ow">and</span> <span class="s1">&#39;]]&#39;</span> <span class="ow">or</span> <span class="s1">&#39;/Q]]&#39;</span><span class="p">)</span> </span><span id="L-257"><a href="#L-257"><span class="linenos" data-line="257"></span></a> <span class="kr">end</span> </span><span id="L-258"><a href="#L-258"><span class="linenos" data-line="258"></span></a> <span class="kr">end</span> </span><span id="L-259"><a href="#L-259"><span class="linenos" data-line="259"></span></a> <span class="kr">return</span> <span class="n">ret_lang</span> <span class="o">..</span> <span class="n">ret_icon</span> </span><span id="L-260"><a href="#L-260"><span class="linenos" data-line="260"></span></a><span class="kr">end</span> </span><span id="L-261"><a href="#L-261"><span class="linenos" data-line="261"></span></a> </span><span id="L-262"><a href="#L-262"><span class="linenos" data-line="262"></span></a><span class="c1">-- editicon values: true/false (no=false), right, void defaults to i18n.addpencil</span> </span><span id="L-263"><a href="#L-263"><span class="linenos" data-line="263"></span></a><span class="c1">-- labelicon only by parameter</span> </span><span id="L-264"><a href="#L-264"><span class="linenos" data-line="264"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">setIcons</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">parg</span><span class="p">)</span> </span><span id="L-265"><a href="#L-265"><span class="linenos" data-line="265"></span></a> <span class="kd">local</span> <span class="n">val</span> <span class="o">=</span> <span class="n">arg</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">and</span> <span class="n">parg</span> <span class="ow">or</span> <span class="n">arg</span> </span><span id="L-266"><a href="#L-266"><span class="linenos" data-line="266"></span></a> <span class="kd">local</span> <span class="n">edit_icon</span><span class="p">,</span> <span class="n">label_icon</span> </span><span id="L-267"><a href="#L-267"><span class="linenos" data-line="267"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">isSet</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-268"><a href="#L-268"><span class="linenos" data-line="268"></span></a> <span class="n">edit_icon</span><span class="p">,</span> <span class="n">label_icon</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">.</span><span class="n">addpencil</span><span class="p">,</span> <span class="kc">true</span> </span><span id="L-269"><a href="#L-269"><span class="linenos" data-line="269"></span></a> <span class="kr">elseif</span> <span class="n">val</span> <span class="o">==</span> <span class="kc">false</span> <span class="ow">or</span> <span class="n">val</span> <span class="o">==</span> <span class="s2">&quot;false&quot;</span> <span class="ow">or</span> <span class="n">val</span> <span class="o">==</span> <span class="s2">&quot;no&quot;</span> <span class="kr">then</span> </span><span id="L-270"><a href="#L-270"><span class="linenos" data-line="270"></span></a> <span class="n">edit_icon</span><span class="p">,</span> <span class="n">label_icon</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="kc">false</span> </span><span id="L-271"><a href="#L-271"><span class="linenos" data-line="271"></span></a> <span class="kr">else</span> </span><span id="L-272"><a href="#L-272"><span class="linenos" data-line="272"></span></a> <span class="n">edit_icon</span><span class="p">,</span> <span class="n">label_icon</span> <span class="o">=</span> <span class="n">val</span><span class="p">,</span> <span class="kc">true</span> </span><span id="L-273"><a href="#L-273"><span class="linenos" data-line="273"></span></a> <span class="kr">end</span> </span><span id="L-274"><a href="#L-274"><span class="linenos" data-line="274"></span></a> <span class="kr">return</span> <span class="n">edit_icon</span><span class="p">,</span> <span class="n">label_icon</span> </span><span id="L-275"><a href="#L-275"><span class="linenos" data-line="275"></span></a><span class="kr">end</span> </span><span id="L-276"><a href="#L-276"><span class="linenos" data-line="276"></span></a> </span><span id="L-277"><a href="#L-277"><span class="linenos" data-line="277"></span></a><span class="c1">-- Add an icon for editing a statement with requirements for future Wikidata Bridge</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="kr">function</span> <span class="nf">addEditIcon</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span> </span><span id="L-279"><a href="#L-279"><span class="linenos" data-line="279"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-280"><a href="#L-280"><span class="linenos" data-line="280"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">editicon</span> <span class="ow">and</span> <span class="n">parameters</span><span class="p">.</span><span class="n">id</span> <span class="ow">and</span> <span class="n">parameters</span><span class="p">.</span><span class="n">property</span> <span class="kr">then</span> </span><span id="L-281"><a href="#L-281"><span class="linenos" data-line="281"></span></a> <span class="kd">local</span> <span class="n">bridge_flow</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">editbridge</span> <span class="ow">and</span> <span class="s1">&#39; data-bridge-edit-flow=&quot;single-best-value&quot;&#39;</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-282"><a href="#L-282"><span class="linenos" data-line="282"></span></a> <span class="kd">local</span> <span class="n">icon_style</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">editicon</span> <span class="o">==</span> <span class="s2">&quot;right&quot;</span> <span class="ow">and</span> <span class="s1">&#39; style=&quot;float: right;&quot;&#39;</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-283"><a href="#L-283"><span class="linenos" data-line="283"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="s1">&#39; &lt;span class=&quot;penicon&quot;&#39;</span> <span class="o">..</span> <span class="n">bridge_flow</span> <span class="o">..</span> <span class="n">icon_style</span> <span class="o">..</span> <span class="s1">&#39;&gt;&#39;</span> </span><span id="L-284"><a href="#L-284"><span class="linenos" data-line="284"></span></a> <span class="o">..</span> <span class="s2">&quot;[[File:Arbcom ru editing.svg|10px|baseline|&quot;</span> </span><span id="L-285"><a href="#L-285"><span class="linenos" data-line="285"></span></a> <span class="o">..</span> <span class="nb">string.gsub</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Wikibase-client-data-bridge-bailout-suggestion-go-to-repo-button&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span><span class="n">plain</span><span class="p">(),</span> <span class="s1">&#39;{{WBREPONAME}}&#39;</span><span class="p">,</span> <span class="s1">&#39;Wikidata&#39;</span><span class="p">)</span> </span><span id="L-286"><a href="#L-286"><span class="linenos" data-line="286"></span></a> <span class="o">..</span> <span class="s2">&quot;|link=https://www.wikidata.org/wiki/&quot;</span> <span class="o">..</span> <span class="n">parameters</span><span class="p">.</span><span class="n">id</span> <span class="o">..</span> <span class="s2">&quot;?uselang=&quot;</span> <span class="o">..</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">..</span> <span class="s2">&quot;#&quot;</span> <span class="o">..</span> <span class="n">parameters</span><span class="p">.</span><span class="n">property</span> <span class="o">..</span> <span class="s2">&quot;]]&quot;</span> </span><span id="L-287"><a href="#L-287"><span class="linenos" data-line="287"></span></a> <span class="o">..</span> <span class="s2">&quot;&lt;/span&gt;&quot;</span> </span><span id="L-288"><a href="#L-288"><span class="linenos" data-line="288"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">categoryprop</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-289"><a href="#L-289"><span class="linenos" data-line="289"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">ret</span> <span class="o">..</span> <span class="s2">&quot;[[&quot;</span> <span class="o">..</span> <span class="nb">string.gsub</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">categoryprop</span><span class="p">,</span> <span class="s1">&#39;$1&#39;</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">property</span><span class="p">)</span> <span class="o">..</span> <span class="s2">&quot;]]&quot;</span> </span><span id="L-290"><a href="#L-290"><span class="linenos" data-line="290"></span></a> <span class="kr">end</span> </span><span id="L-291"><a href="#L-291"><span class="linenos" data-line="291"></span></a> <span class="kr">end</span> </span><span id="L-292"><a href="#L-292"><span class="linenos" data-line="292"></span></a> <span class="kr">return</span> <span class="n">ret</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="c1">-- add edit icon to the last element of a table</span> </span><span id="L-295"><a href="#L-295"><span class="linenos" data-line="295"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">addEditIconTable</span><span class="p">(</span><span class="n">thetable</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-296"><a href="#L-296"><span class="linenos" data-line="296"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">thetable</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">editicon</span> <span class="o">==</span> <span class="kc">false</span> <span class="kr">then</span> </span><span id="L-297"><a href="#L-297"><span class="linenos" data-line="297"></span></a> <span class="kr">return</span> <span class="n">thetable</span> </span><span id="L-298"><a href="#L-298"><span class="linenos" data-line="298"></span></a> <span class="kr">end</span> </span><span id="L-299"><a href="#L-299"><span class="linenos" data-line="299"></span></a> <span class="kd">local</span> <span class="n">last_element</span> <span class="o">=</span> <span class="n">thetable</span><span class="p">[</span><span class="o">#</span><span class="n">thetable</span><span class="p">]</span> </span><span id="L-300"><a href="#L-300"><span class="linenos" data-line="300"></span></a> <span class="kd">local</span> <span class="n">the_icon</span> <span class="o">=</span> <span class="n">addEditIcon</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span> </span><span id="L-301"><a href="#L-301"><span class="linenos" data-line="301"></span></a> <span class="c1">-- add it before last html closing tags</span> </span><span id="L-302"><a href="#L-302"><span class="linenos" data-line="302"></span></a> <span class="kd">local</span> <span class="n">tags</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-303"><a href="#L-303"><span class="linenos" data-line="303"></span></a> <span class="kd">local</span> <span class="n">rev_element</span> <span class="o">=</span> <span class="nb">string.reverse</span><span class="p">(</span><span class="n">last_element</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">for</span> <span class="n">tag</span> <span class="kr">in</span> <span class="nb">string.gmatch</span><span class="p">(</span><span class="n">rev_element</span><span class="p">,</span> <span class="s1">&#39;(&gt;%l+/&lt;)&#39;</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-305"><a href="#L-305"><span class="linenos" data-line="305"></span></a> <span class="kr">if</span> <span class="nb">string.match</span><span class="p">(</span><span class="n">rev_element</span><span class="p">,</span> <span class="s1">&#39;^&#39;</span> <span class="o">..</span> <span class="n">tags</span> <span class="o">..</span> <span class="n">tag</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-306"><a href="#L-306"><span class="linenos" data-line="306"></span></a> <span class="n">tags</span> <span class="o">=</span> <span class="n">tags</span> <span class="o">..</span> <span class="n">tag</span> </span><span id="L-307"><a href="#L-307"><span class="linenos" data-line="307"></span></a> <span class="kr">else</span> </span><span id="L-308"><a href="#L-308"><span class="linenos" data-line="308"></span></a> <span class="kr">break</span> </span><span id="L-309"><a href="#L-309"><span class="linenos" data-line="309"></span></a> <span class="kr">end</span> </span><span id="L-310"><a href="#L-310"><span class="linenos" data-line="310"></span></a> <span class="kr">end</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">last_tags</span> <span class="o">=</span> <span class="nb">string.reverse</span><span class="p">(</span><span class="n">tags</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">offset</span> <span class="o">=</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">last_element</span><span class="p">,</span> <span class="n">last_tags</span> <span class="o">..</span> <span class="s1">&#39;$&#39;</span><span class="p">)</span> </span><span id="L-313"><a href="#L-313"><span class="linenos" data-line="313"></span></a> <span class="kr">if</span> <span class="n">offset</span> <span class="kr">then</span> </span><span id="L-314"><a href="#L-314"><span class="linenos" data-line="314"></span></a> <span class="n">thetable</span><span class="p">[</span><span class="o">#</span><span class="n">thetable</span><span class="p">]</span> <span class="o">=</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">last_element</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">offset</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">..</span> <span class="n">the_icon</span> <span class="o">..</span> <span class="n">last_tags</span> </span><span id="L-315"><a href="#L-315"><span class="linenos" data-line="315"></span></a> <span class="kr">else</span> </span><span id="L-316"><a href="#L-316"><span class="linenos" data-line="316"></span></a> <span class="n">thetable</span><span class="p">[</span><span class="o">#</span><span class="n">thetable</span><span class="p">]</span> <span class="o">=</span> <span class="n">last_element</span> <span class="o">..</span> <span class="n">the_icon</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">thetable</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">-- Escape Lua captures</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">captureEscapes</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">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="s2">&quot;(%%%d)&quot;</span><span class="p">,</span> <span class="s2">&quot;%%%1&quot;</span><span class="p">)</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">-- expandTemplate or callParserFunction</span> </span><span id="L-327"><a href="#L-327"><span class="linenos" data-line="327"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">expandBraces</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">formatting</span><span class="p">)</span> </span><span id="L-328"><a href="#L-328"><span class="linenos" data-line="328"></span></a> <span class="kr">if</span> <span class="n">text</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="n">formatting</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> <span class="kr">return</span> <span class="n">text</span> <span class="kr">end</span> </span><span id="L-329"><a href="#L-329"><span class="linenos" data-line="329"></span></a> <span class="c1">-- only expand braces if provided in argument, not included in value as in Q1164668</span> </span><span id="L-330"><a href="#L-330"><span class="linenos" data-line="330"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">formatting</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="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> <span class="kr">return</span> <span class="n">text</span> <span class="kr">end</span> </span><span id="L-331"><a href="#L-331"><span class="linenos" data-line="331"></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="s2">&quot;string&quot;</span> <span class="kr">then</span> </span><span id="L-332"><a href="#L-332"><span class="linenos" data-line="332"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> </span><span id="L-333"><a href="#L-333"><span class="linenos" data-line="333"></span></a> <span class="kr">end</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="kr">for</span> <span class="n">braces</span> <span class="kr">in</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gmatch</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="s2">&quot;{{(.-)}}&quot;</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-336"><a href="#L-336"><span class="linenos" data-line="336"></span></a> <span class="kd">local</span> <span class="n">parts</span> <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">split</span><span class="p">(</span><span class="n">braces</span><span class="p">,</span> <span class="s2">&quot;|&quot;</span><span class="p">)</span> </span><span id="L-337"><a href="#L-337"><span class="linenos" data-line="337"></span></a> <span class="kd">local</span> <span class="n">title_part</span> <span class="o">=</span> <span class="n">parts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-338"><a href="#L-338"><span class="linenos" data-line="338"></span></a> <span class="kd">local</span> <span class="n">parameters</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-339"><a href="#L-339"><span class="linenos" data-line="339"></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">parts</span> <span class="kr">do</span> </span><span id="L-340"><a href="#L-340"><span class="linenos" data-line="340"></span></a> <span class="kd">local</span> <span class="n">subparts</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="s2">&quot;=&quot;</span><span class="p">)</span> </span><span id="L-341"><a href="#L-341"><span class="linenos" data-line="341"></span></a> <span class="kr">if</span> <span class="n">subparts</span> <span class="kr">then</span> </span><span id="L-342"><a href="#L-342"><span class="linenos" data-line="342"></span></a> <span class="kd">local</span> <span class="n">param_name</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">sub</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="mi">1</span><span class="p">,</span> <span class="n">subparts</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-343"><a href="#L-343"><span class="linenos" data-line="343"></span></a> <span class="kd">local</span> <span class="n">param_value</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">sub</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">subparts</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> </span><span id="L-344"><a href="#L-344"><span class="linenos" data-line="344"></span></a> <span class="c1">-- reconstruct broken links by parts</span> </span><span id="L-345"><a href="#L-345"><span class="linenos" data-line="345"></span></a> <span class="kr">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="o">#</span><span class="n">parts</span> <span class="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">param_value</span><span class="p">,</span> <span class="s2">&quot;[[&quot;</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="ow">not</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">param_value</span><span class="p">,</span> <span class="s2">&quot;]]&quot;</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="kr">then</span> </span><span id="L-346"><a href="#L-346"><span class="linenos" data-line="346"></span></a> <span class="n">parameters</span><span class="p">[</span><span class="n">param_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">param_value</span> </span><span id="L-347"><a href="#L-347"><span class="linenos" data-line="347"></span></a> <span class="kd">local</span> <span class="n">part_next</span> <span class="o">=</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-348"><a href="#L-348"><span class="linenos" data-line="348"></span></a> <span class="kr">while</span> <span class="n">parts</span><span class="p">[</span><span class="n">part_next</span><span class="p">]</span> <span class="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="n">part_next</span><span class="p">],</span> <span class="s2">&quot;]]&quot;</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="kr">do</span> </span><span id="L-349"><a href="#L-349"><span class="linenos" data-line="349"></span></a> <span class="n">parameters</span><span class="p">[</span><span class="n">param_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">[</span><span class="n">param_name</span><span class="p">]</span> <span class="o">..</span> <span class="s2">&quot;|&quot;</span> <span class="o">..</span> <span class="n">parts</span><span class="p">[</span><span class="n">part_next</span><span class="p">]</span> </span><span id="L-350"><a href="#L-350"><span class="linenos" data-line="350"></span></a> <span class="n">part_next</span> <span class="o">=</span> <span class="n">part_next</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-351"><a href="#L-351"><span class="linenos" data-line="351"></span></a> <span class="kr">end</span> </span><span id="L-352"><a href="#L-352"><span class="linenos" data-line="352"></span></a> <span class="kr">else</span> </span><span id="L-353"><a href="#L-353"><span class="linenos" data-line="353"></span></a> <span class="n">parameters</span><span class="p">[</span><span class="n">param_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">param_value</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">elseif</span> <span class="ow">not</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="s2">&quot;]]&quot;</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="kr">then</span> </span><span id="L-356"><a href="#L-356"><span class="linenos" data-line="356"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">parameters</span><span class="p">,</span> <span class="n">parts</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> </span><span id="L-357"><a href="#L-357"><span class="linenos" data-line="357"></span></a> <span class="kr">end</span> </span><span id="L-358"><a href="#L-358"><span class="linenos" data-line="358"></span></a> <span class="kr">end</span> </span><span id="L-359"><a href="#L-359"><span class="linenos" data-line="359"></span></a> </span><span id="L-360"><a href="#L-360"><span class="linenos" data-line="360"></span></a> <span class="kd">local</span> <span class="n">braces_expanded</span> </span><span id="L-361"><a href="#L-361"><span class="linenos" data-line="361"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">title_part</span><span class="p">,</span> <span class="s2">&quot;:&quot;</span><span class="p">)</span> </span><span id="L-362"><a href="#L-362"><span class="linenos" data-line="362"></span></a> <span class="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">title_part</span><span class="p">,</span> <span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="o">~=</span> <span class="n">mw</span><span class="p">.</span><span class="n">site</span><span class="p">.</span><span class="n">namespaces</span><span class="p">[</span><span class="mi">10</span><span class="p">].</span><span class="n">name</span> <span class="c1">-- not a prefix Template:</span> </span><span id="L-363"><a href="#L-363"><span class="linenos" data-line="363"></span></a> <span class="kr">then</span> </span><span id="L-364"><a href="#L-364"><span class="linenos" data-line="364"></span></a> <span class="n">braces_expanded</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">getCurrentFrame</span><span class="p">():</span><span class="n">callParserFunction</span><span class="p">{</span><span class="n">name</span><span class="o">=</span><span class="n">title_part</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="n">parameters</span><span class="p">}</span> </span><span id="L-365"><a href="#L-365"><span class="linenos" data-line="365"></span></a> <span class="kr">else</span> </span><span id="L-366"><a href="#L-366"><span class="linenos" data-line="366"></span></a> <span class="n">braces_expanded</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">getCurrentFrame</span><span class="p">():</span><span class="n">expandTemplate</span><span class="p">{</span><span class="n">title</span><span class="o">=</span><span class="n">title_part</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="n">parameters</span><span class="p">}</span> </span><span id="L-367"><a href="#L-367"><span class="linenos" data-line="367"></span></a> <span class="kr">end</span> </span><span id="L-368"><a href="#L-368"><span class="linenos" data-line="368"></span></a> <span class="n">braces</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">braces</span><span class="p">,</span> <span class="s2">&quot;([%^%$%(%)%%%.%[%]%*%+%-%?])&quot;</span><span class="p">,</span> <span class="s2">&quot;%%%1&quot;</span><span class="p">)</span> <span class="c1">-- escape magic characters</span> </span><span id="L-369"><a href="#L-369"><span class="linenos" data-line="369"></span></a> <span class="n">braces_expanded</span> <span class="o">=</span> <span class="n">captureEscapes</span><span class="p">(</span><span class="n">braces_expanded</span><span class="p">)</span> </span><span id="L-370"><a href="#L-370"><span class="linenos" data-line="370"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="s2">&quot;{{&quot;</span> <span class="o">..</span> <span class="n">braces</span> <span class="o">..</span> <span class="s2">&quot;}}&quot;</span><span class="p">,</span> <span class="n">braces_expanded</span><span class="p">)</span> </span><span id="L-371"><a href="#L-371"><span class="linenos" data-line="371"></span></a> <span class="kr">end</span> </span><span id="L-372"><a href="#L-372"><span class="linenos" data-line="372"></span></a> </span><span id="L-373"><a href="#L-373"><span class="linenos" data-line="373"></span></a> <span class="kr">return</span> <span class="n">text</span> </span><span id="L-374"><a href="#L-374"><span class="linenos" data-line="374"></span></a><span class="kr">end</span> </span><span id="L-375"><a href="#L-375"><span class="linenos" data-line="375"></span></a> </span><span id="L-376"><a href="#L-376"><span class="linenos" data-line="376"></span></a><span class="c1">-- format data type math</span> </span><span id="L-377"><a href="#L-377"><span class="linenos" data-line="377"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeMath</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> </span><span id="L-378"><a href="#L-378"><span class="linenos" data-line="378"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">getCurrentFrame</span><span class="p">():</span><span class="n">callParserFunction</span><span class="p">(</span><span class="s1">&#39;#tag:math&#39;</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span> </span><span id="L-379"><a href="#L-379"><span class="linenos" data-line="379"></span></a><span class="kr">end</span> </span><span id="L-380"><a href="#L-380"><span class="linenos" data-line="380"></span></a> </span><span id="L-381"><a href="#L-381"><span class="linenos" data-line="381"></span></a><span class="c1">-- format data type musical-notation</span> </span><span id="L-382"><a href="#L-382"><span class="linenos" data-line="382"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeMusical</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">formatting</span><span class="p">)</span> </span><span id="L-383"><a href="#L-383"><span class="linenos" data-line="383"></span></a> <span class="kd">local</span> <span class="n">attr</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-384"><a href="#L-384"><span class="linenos" data-line="384"></span></a> <span class="kr">if</span> <span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;sound&#39;</span> <span class="kr">then</span> </span><span id="L-385"><a href="#L-385"><span class="linenos" data-line="385"></span></a> <span class="n">attr</span><span class="p">.</span><span class="n">sound</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-386"><a href="#L-386"><span class="linenos" data-line="386"></span></a> <span class="kr">end</span> </span><span id="L-387"><a href="#L-387"><span class="linenos" data-line="387"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">getCurrentFrame</span><span class="p">():</span><span class="n">extensionTag</span><span class="p">(</span><span class="s1">&#39;score&#39;</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span> </span><span id="L-388"><a href="#L-388"><span class="linenos" data-line="388"></span></a><span class="kr">end</span> </span><span id="L-389"><a href="#L-389"><span class="linenos" data-line="389"></span></a> </span><span id="L-390"><a href="#L-390"><span class="linenos" data-line="390"></span></a><span class="c1">-- format data type string</span> </span><span id="L-391"><a href="#L-391"><span class="linenos" data-line="391"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeString</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-392"><a href="#L-392"><span class="linenos" data-line="392"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">((</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">),</span> <span class="s1">&#39;$1&#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="kr">then</span> <span class="c1">-- formatting = a pattern</span> </span><span id="L-393"><a href="#L-393"><span class="linenos" data-line="393"></span></a> <span class="kr">return</span> <span class="n">expandBraces</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span><span class="p">,</span> <span class="s1">&#39;$1&#39;</span><span class="p">,</span> <span class="p">{[</span><span class="s1">&#39;$1&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">}),</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span><span class="p">)</span> </span><span id="L-394"><a href="#L-394"><span class="linenos" data-line="394"></span></a> <span class="kr">elseif</span> <span class="n">parameters</span><span class="p">.</span><span class="n">case</span> <span class="kr">then</span> </span><span id="L-395"><a href="#L-395"><span class="linenos" data-line="395"></span></a> <span class="kr">return</span> <span class="n">case</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">case</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">feminineGender</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">id</span><span class="p">))</span> </span><span id="L-396"><a href="#L-396"><span class="linenos" data-line="396"></span></a> <span class="kr">end</span> </span><span id="L-397"><a href="#L-397"><span class="linenos" data-line="397"></span></a> <span class="kd">local</span> <span class="n">data_number</span> <span class="o">=</span> <span class="nb">string.match</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="s2">&quot;^%d+&quot;</span><span class="p">)</span> </span><span id="L-398"><a href="#L-398"><span class="linenos" data-line="398"></span></a> <span class="kr">if</span> <span class="n">data_number</span> <span class="kr">then</span> <span class="c1">-- sort key by initial number and remaining string</span> </span><span id="L-399"><a href="#L-399"><span class="linenos" data-line="399"></span></a> <span class="kd">local</span> <span class="n">sortkey</span> <span class="o">=</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">&quot;%019d&quot;</span><span class="p">,</span> <span class="n">data_number</span> <span class="o">*</span> <span class="mi">1000</span><span class="p">)</span> </span><span id="L-400"><a href="#L-400"><span class="linenos" data-line="400"></span></a> <span class="kr">return</span> <span class="n">data</span><span class="p">,</span> <span class="n">sortkey</span> <span class="o">..</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">#</span><span class="n">data_number</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-401"><a href="#L-401"><span class="linenos" data-line="401"></span></a> <span class="kr">end</span> </span><span id="L-402"><a href="#L-402"><span class="linenos" data-line="402"></span></a> <span class="kr">return</span> <span class="n">data</span> </span><span id="L-403"><a href="#L-403"><span class="linenos" data-line="403"></span></a><span class="kr">end</span> </span><span id="L-404"><a href="#L-404"><span class="linenos" data-line="404"></span></a> </span><span id="L-405"><a href="#L-405"><span class="linenos" data-line="405"></span></a><span class="c1">-- format data type tabular-data</span> </span><span id="L-406"><a href="#L-406"><span class="linenos" data-line="406"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeTabular</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</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">icon</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="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;raw&#39;</span> <span class="kr">then</span> </span><span id="L-409"><a href="#L-409"><span class="linenos" data-line="409"></span></a> <span class="n">icon</span> <span class="o">=</span> <span class="s2">&quot;no-icon&quot;</span> </span><span id="L-410"><a href="#L-410"><span class="linenos" data-line="410"></span></a> <span class="n">data</span> <span class="o">=</span> <span class="nb">string.gsub</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="s1">&#39;^Data:&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="c1">-- remove prefix, i.e. see Module:Tabular data</span> </span><span id="L-411"><a href="#L-411"><span class="linenos" data-line="411"></span></a> <span class="kr">end</span> </span><span id="L-412"><a href="#L-412"><span class="linenos" data-line="412"></span></a> <span class="kr">return</span> <span class="n">printDatatypeString</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">),</span> <span class="n">icon</span> </span><span id="L-413"><a href="#L-413"><span class="linenos" data-line="413"></span></a><span class="kr">end</span> </span><span id="L-414"><a href="#L-414"><span class="linenos" data-line="414"></span></a> </span><span id="L-415"><a href="#L-415"><span class="linenos" data-line="415"></span></a><span class="c1">-- format data type url</span> </span><span id="L-416"><a href="#L-416"><span class="linenos" data-line="416"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeUrl</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</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">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;weblink&#39;</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="kd">local</span> <span class="n">label_parts</span> <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">split</span><span class="p">(</span><span class="nb">string.gsub</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="s1">&#39;/$&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">),</span> <span class="s1">&#39;/&#39;</span><span class="p">)</span> </span><span id="L-419"><a href="#L-419"><span class="linenos" data-line="419"></span></a> <span class="kd">local</span> <span class="n">label</span> <span class="o">=</span> <span class="nb">string.gsub</span><span class="p">(</span><span class="n">label_parts</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="s1">&#39;^www%.&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> </span><span id="L-420"><a href="#L-420"><span class="linenos" data-line="420"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">label_parts</span> <span class="o">&gt;</span> <span class="mi">3</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="n">label</span> <span class="o">=</span> <span class="n">label</span> <span class="o">..</span> <span class="s1">&#39;…&#39;</span> </span><span id="L-422"><a href="#L-422"><span class="linenos" data-line="422"></span></a> <span class="kr">end</span> </span><span id="L-423"><a href="#L-423"><span class="linenos" data-line="423"></span></a> <span class="kr">return</span> <span class="s1">&#39;[&#39;</span> <span class="o">..</span> <span class="n">data</span> <span class="o">..</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="n">label</span> <span class="o">..</span> <span class="s1">&#39;]&#39;</span> </span><span id="L-424"><a href="#L-424"><span class="linenos" data-line="424"></span></a> <span class="kr">end</span> </span><span id="L-425"><a href="#L-425"><span class="linenos" data-line="425"></span></a> <span class="kr">return</span> <span class="n">printDatatypeString</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-426"><a href="#L-426"><span class="linenos" data-line="426"></span></a><span class="kr">end</span> </span><span id="L-427"><a href="#L-427"><span class="linenos" data-line="427"></span></a> </span><span id="L-428"><a href="#L-428"><span class="linenos" data-line="428"></span></a><span class="c1">-- format data type external-id</span> </span><span id="L-429"><a href="#L-429"><span class="linenos" data-line="429"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeExternal</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</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">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;externalid&#39;</span> <span class="kr">then</span> </span><span id="L-431"><a href="#L-431"><span class="linenos" data-line="431"></span></a> <span class="kd">local</span> <span class="n">p_stat</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getBestStatements</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">property</span><span class="p">,</span> <span class="s1">&#39;P1630&#39;</span><span class="p">)</span> <span class="c1">-- formatter URL</span> </span><span id="L-432"><a href="#L-432"><span class="linenos" data-line="432"></span></a> <span class="kd">local</span> <span class="n">p_link_pattern</span> <span class="o">=</span> <span class="n">getSnak</span><span class="p">(</span><span class="n">p_stat</span><span class="p">,</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;mainsnak&quot;</span><span class="p">,</span> <span class="s2">&quot;datavalue&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">})</span> </span><span id="L-433"><a href="#L-433"><span class="linenos" data-line="433"></span></a> <span class="kr">if</span> <span class="n">p_link_pattern</span> <span class="kr">then</span> </span><span id="L-434"><a href="#L-434"><span class="linenos" data-line="434"></span></a> <span class="kd">local</span> <span class="n">p_link</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">p_link_pattern</span><span class="p">,</span> <span class="s1">&#39;$1&#39;</span><span class="p">,</span> <span class="p">{[</span><span class="s1">&#39;$1&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">})</span> </span><span id="L-435"><a href="#L-435"><span class="linenos" data-line="435"></span></a> <span class="kr">return</span> <span class="s1">&#39;[&#39;</span> <span class="o">..</span> <span class="n">p_link</span> <span class="o">..</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="n">data</span> <span class="o">..</span> <span class="s1">&#39;]&#39;</span> </span><span id="L-436"><a href="#L-436"><span class="linenos" data-line="436"></span></a> <span class="kr">end</span> </span><span id="L-437"><a href="#L-437"><span class="linenos" data-line="437"></span></a> <span class="kr">end</span> </span><span id="L-438"><a href="#L-438"><span class="linenos" data-line="438"></span></a> <span class="kr">return</span> <span class="n">printDatatypeString</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-439"><a href="#L-439"><span class="linenos" data-line="439"></span></a><span class="kr">end</span> </span><span id="L-440"><a href="#L-440"><span class="linenos" data-line="440"></span></a> </span><span id="L-441"><a href="#L-441"><span class="linenos" data-line="441"></span></a><span class="c1">-- format data type commonsMedia and geo-shape</span> </span><span id="L-442"><a href="#L-442"><span class="linenos" data-line="442"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeMedia</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-443"><a href="#L-443"><span class="linenos" data-line="443"></span></a> <span class="kd">local</span> <span class="n">icon</span> </span><span id="L-444"><a href="#L-444"><span class="linenos" data-line="444"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="nb">string.find</span><span class="p">((</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">),</span> <span class="s1">&#39;$1&#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="kr">then</span> </span><span id="L-445"><a href="#L-445"><span class="linenos" data-line="445"></span></a> <span class="n">icon</span> <span class="o">=</span> <span class="s2">&quot;no-icon&quot;</span> </span><span id="L-446"><a href="#L-446"><span class="linenos" data-line="446"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="s1">&#39;^Data:&#39;</span><span class="p">)</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="n">data</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">uri</span><span class="p">.</span><span class="n">encode</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="s1">&#39;PATH&#39;</span><span class="p">)</span> <span class="c1">-- encode special characters in filename</span> </span><span id="L-448"><a href="#L-448"><span class="linenos" data-line="448"></span></a> <span class="kr">end</span> </span><span id="L-449"><a href="#L-449"><span class="linenos" data-line="449"></span></a> <span class="kr">end</span> </span><span id="L-450"><a href="#L-450"><span class="linenos" data-line="450"></span></a> <span class="kr">return</span> <span class="n">printDatatypeString</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">),</span> <span class="n">icon</span> </span><span id="L-451"><a href="#L-451"><span class="linenos" data-line="451"></span></a><span class="kr">end</span> </span><span id="L-452"><a href="#L-452"><span class="linenos" data-line="452"></span></a> </span><span id="L-453"><a href="#L-453"><span class="linenos" data-line="453"></span></a><span class="c1">-- format data type globe-coordinate</span> </span><span id="L-454"><a href="#L-454"><span class="linenos" data-line="454"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeCoordinate</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">formatting</span><span class="p">)</span> </span><span id="L-455"><a href="#L-455"><span class="linenos" data-line="455"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">globes</span><span class="p">(</span><span class="n">globe_id</span><span class="p">)</span> </span><span id="L-456"><a href="#L-456"><span class="linenos" data-line="456"></span></a> <span class="kd">local</span> <span class="n">globes</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">&#39;Q3134&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;callisto&#39;</span><span class="p">,[</span><span class="s1">&#39;Q596&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;ceres&#39;</span><span class="p">,[</span><span class="s1">&#39;Q15040&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;dione&#39;</span><span class="p">,[</span><span class="s1">&#39;Q2&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;earth&#39;</span><span class="p">,[</span><span class="s1">&#39;Q3303&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;enceladus&#39;</span><span class="p">,</span> </span><span id="L-457"><a href="#L-457"><span class="linenos" data-line="457"></span></a> <span class="p">[</span><span class="s1">&#39;Q3143&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;europa&#39;</span><span class="p">,[</span><span class="s1">&#39;Q17975&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;phoebe&#39;</span><span class="p">,[</span><span class="s1">&#39;Q3169&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;ganymede&#39;</span><span class="p">,[</span><span class="s1">&#39;Q3123&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;io&#39;</span><span class="p">,[</span><span class="s1">&#39;Q17958&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;iapetus&#39;</span><span class="p">,</span> </span><span id="L-458"><a href="#L-458"><span class="linenos" data-line="458"></span></a> <span class="p">[</span><span class="s1">&#39;Q308&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;mercury&#39;</span><span class="p">,[</span><span class="s1">&#39;Q15034&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;mimas&#39;</span><span class="p">,[</span><span class="s1">&#39;Q405&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;moon&#39;</span><span class="p">,[</span><span class="s1">&#39;Q15050&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;rhea&#39;</span><span class="p">,[</span><span class="s1">&#39;Q15047&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;tethys&#39;</span><span class="p">,</span> </span><span id="L-459"><a href="#L-459"><span class="linenos" data-line="459"></span></a> <span class="p">[</span><span class="s1">&#39;Q111&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;mars&#39;</span><span class="p">,[</span><span class="s1">&#39;Q2565&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;titan&#39;</span><span class="p">,[</span><span class="s1">&#39;Q3359&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;triton&#39;</span><span class="p">,[</span><span class="s1">&#39;Q313&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;venus&#39;</span><span class="p">,[</span><span class="s1">&#39;Q3030&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;vesta&#39;</span><span class="p">}</span> </span><span id="L-460"><a href="#L-460"><span class="linenos" data-line="460"></span></a> <span class="kr">return</span> <span class="n">globes</span><span class="p">[</span><span class="n">globe_id</span><span class="p">]</span> </span><span id="L-461"><a href="#L-461"><span class="linenos" data-line="461"></span></a> <span class="kr">end</span> </span><span id="L-462"><a href="#L-462"><span class="linenos" data-line="462"></span></a> </span><span id="L-463"><a href="#L-463"><span class="linenos" data-line="463"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">roundPrecision</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">prec</span><span class="p">)</span> </span><span id="L-464"><a href="#L-464"><span class="linenos" data-line="464"></span></a> <span class="kr">if</span> <span class="n">prec</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="n">prec</span> <span class="o">&lt;=</span> <span class="mi">0</span> <span class="kr">then</span> <span class="kr">return</span> <span class="n">num</span> <span class="kr">end</span> </span><span id="L-465"><a href="#L-465"><span class="linenos" data-line="465"></span></a> <span class="kd">local</span> <span class="n">sig</span> <span class="o">=</span> <span class="mi">10</span><span class="o">^</span><span class="nb">math.floor</span><span class="p">(</span><span class="n">math</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">prec</span><span class="p">)</span><span class="o">+</span><span class="mf">.5</span><span class="p">)</span> <span class="c1">-- significant figure from sexagesimal precision: 0.00123 -&gt; 0.001</span> </span><span id="L-466"><a href="#L-466"><span class="linenos" data-line="466"></span></a> <span class="kr">return</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">num</span> <span class="o">/</span> <span class="n">sig</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">*</span> <span class="n">sig</span> </span><span id="L-467"><a href="#L-467"><span class="linenos" data-line="467"></span></a> <span class="kr">end</span> </span><span id="L-468"><a href="#L-468"><span class="linenos" data-line="468"></span></a> </span><span id="L-469"><a href="#L-469"><span class="linenos" data-line="469"></span></a> <span class="kd">local</span> <span class="n">precision</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">precision</span> </span><span id="L-470"><a href="#L-470"><span class="linenos" data-line="470"></span></a> <span class="kd">local</span> <span class="n">latitude</span> <span class="o">=</span> <span class="n">roundPrecision</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">latitude</span><span class="p">,</span> <span class="n">precision</span><span class="p">)</span> </span><span id="L-471"><a href="#L-471"><span class="linenos" data-line="471"></span></a> <span class="kd">local</span> <span class="n">longitude</span> <span class="o">=</span> <span class="n">roundPrecision</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">longitude</span><span class="p">,</span> <span class="n">precision</span><span class="p">)</span> </span><span id="L-472"><a href="#L-472"><span class="linenos" data-line="472"></span></a> <span class="kr">if</span> <span class="n">formatting</span> <span class="ow">and</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">formatting</span><span class="p">,</span> <span class="s1">&#39;$lat&#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="nb">string.find</span><span class="p">(</span><span class="n">formatting</span><span class="p">,</span> <span class="s1">&#39;$lon&#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="kr">then</span> </span><span id="L-473"><a href="#L-473"><span class="linenos" data-line="473"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">formatting</span><span class="p">,</span> <span class="s1">&#39;$l[ao][tn]&#39;</span><span class="p">,</span> <span class="p">{[</span><span class="s1">&#39;$lat&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">latitude</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;$lon&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">longitude</span><span class="p">})</span> </span><span id="L-474"><a href="#L-474"><span class="linenos" data-line="474"></span></a> <span class="kr">if</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">formatting</span><span class="p">,</span> <span class="s1">&#39;$globe&#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="kr">then</span> </span><span id="L-475"><a href="#L-475"><span class="linenos" data-line="475"></span></a> <span class="kd">local</span> <span class="n">myglobe</span> <span class="o">=</span> <span class="s1">&#39;earth&#39;</span> </span><span id="L-476"><a href="#L-476"><span class="linenos" data-line="476"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">globe</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-477"><a href="#L-477"><span class="linenos" data-line="477"></span></a> <span class="kd">local</span> <span class="n">globenum</span> <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">split</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">globe</span><span class="p">,</span> <span class="s1">&#39;entity/&#39;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> <span class="c1">-- http://www.wikidata.org/wiki/Q2</span> </span><span id="L-478"><a href="#L-478"><span class="linenos" data-line="478"></span></a> <span class="n">myglobe</span> <span class="o">=</span> <span class="n">globes</span><span class="p">(</span><span class="n">globenum</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;earth&#39;</span> </span><span id="L-479"><a href="#L-479"><span class="linenos" data-line="479"></span></a> <span class="kr">end</span> </span><span id="L-480"><a href="#L-480"><span class="linenos" data-line="480"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="s1">&#39;$globe&#39;</span><span class="p">,</span> <span class="n">myglobe</span><span class="p">)</span> </span><span id="L-481"><a href="#L-481"><span class="linenos" data-line="481"></span></a> <span class="kr">end</span> </span><span id="L-482"><a href="#L-482"><span class="linenos" data-line="482"></span></a> <span class="kr">return</span> <span class="n">expandBraces</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="n">formatting</span><span class="p">)</span> </span><span id="L-483"><a href="#L-483"><span class="linenos" data-line="483"></span></a> <span class="kr">elseif</span> <span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;latitude&#39;</span> <span class="kr">then</span> </span><span id="L-484"><a href="#L-484"><span class="linenos" data-line="484"></span></a> <span class="kr">return</span> <span class="n">latitude</span><span class="p">,</span> <span class="s2">&quot;no-icon&quot;</span> </span><span id="L-485"><a href="#L-485"><span class="linenos" data-line="485"></span></a> <span class="kr">elseif</span> <span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;longitude&#39;</span> <span class="kr">then</span> </span><span id="L-486"><a href="#L-486"><span class="linenos" data-line="486"></span></a> <span class="kr">return</span> <span class="n">longitude</span><span class="p">,</span> <span class="s2">&quot;no-icon&quot;</span> </span><span id="L-487"><a href="#L-487"><span class="linenos" data-line="487"></span></a> <span class="kr">elseif</span> <span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;dimension&#39;</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="kr">return</span> <span class="n">data</span><span class="p">.</span><span class="n">dimension</span><span class="p">,</span> <span class="s2">&quot;no-icon&quot;</span> </span><span id="L-489"><a href="#L-489"><span class="linenos" data-line="489"></span></a> <span class="kr">else</span> <span class="c1">--default formatting=&#39;globe&#39;</span> </span><span id="L-490"><a href="#L-490"><span class="linenos" data-line="490"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">globe</span><span class="p">)</span> <span class="o">==</span> <span class="kc">false</span> <span class="ow">or</span> <span class="n">data</span><span class="p">.</span><span class="n">globe</span> <span class="o">==</span> <span class="s1">&#39;http://www.wikidata.org/entity/Q2&#39;</span> <span class="kr">then</span> </span><span id="L-491"><a href="#L-491"><span class="linenos" data-line="491"></span></a> <span class="kr">return</span> <span class="s1">&#39;earth&#39;</span><span class="p">,</span> <span class="s2">&quot;no-icon&quot;</span> </span><span id="L-492"><a href="#L-492"><span class="linenos" data-line="492"></span></a> <span class="kr">else</span> </span><span id="L-493"><a href="#L-493"><span class="linenos" data-line="493"></span></a> <span class="kd">local</span> <span class="n">globenum</span> <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">split</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">globe</span><span class="p">,</span> <span class="s1">&#39;entity/&#39;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> </span><span id="L-494"><a href="#L-494"><span class="linenos" data-line="494"></span></a> <span class="kr">return</span> <span class="n">globes</span><span class="p">(</span><span class="n">globenum</span><span class="p">)</span> <span class="ow">or</span> <span class="n">globenum</span><span class="p">,</span> <span class="s2">&quot;no-icon&quot;</span> </span><span id="L-495"><a href="#L-495"><span class="linenos" data-line="495"></span></a> <span class="kr">end</span> </span><span id="L-496"><a href="#L-496"><span class="linenos" data-line="496"></span></a> <span class="kr">end</span> </span><span id="L-497"><a href="#L-497"><span class="linenos" data-line="497"></span></a><span class="kr">end</span> </span><span id="L-498"><a href="#L-498"><span class="linenos" data-line="498"></span></a> </span><span id="L-499"><a href="#L-499"><span class="linenos" data-line="499"></span></a><span class="c1">-- Local functions for data value quantity</span> </span><span id="L-500"><a href="#L-500"><span class="linenos" data-line="500"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">unitSymbol</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">lang</span><span class="p">)</span> <span class="c1">-- get unit symbol or code</span> </span><span id="L-501"><a href="#L-501"><span class="linenos" data-line="501"></span></a> <span class="kd">local</span> <span class="n">unit_symbol</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-502"><a href="#L-502"><span class="linenos" data-line="502"></span></a> <span class="kr">if</span> <span class="n">lang</span> <span class="o">==</span> <span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span> <span class="ow">and</span> <span class="nb">pcall</span><span class="p">(</span><span class="nb">require</span><span class="p">,</span> <span class="n">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/Units&quot;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-503"><a href="#L-503"><span class="linenos" data-line="503"></span></a> <span class="n">unit_symbol</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/Units&quot;</span><span class="p">).</span><span class="n">getUnit</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">id</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-504"><a href="#L-504"><span class="linenos" data-line="504"></span></a> <span class="kr">end</span> </span><span id="L-505"><a href="#L-505"><span class="linenos" data-line="505"></span></a> <span class="kr">if</span> <span class="n">unit_symbol</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span> <span class="kr">then</span> </span><span id="L-506"><a href="#L-506"><span class="linenos" data-line="506"></span></a> <span class="c1">-- fetch it</span> </span><span id="L-507"><a href="#L-507"><span class="linenos" data-line="507"></span></a> <span class="kd">local</span> <span class="n">claims</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getBestStatements</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="s1">&#39;P5061&#39;</span><span class="p">)</span> </span><span id="L-508"><a href="#L-508"><span class="linenos" data-line="508"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">claims</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-509"><a href="#L-509"><span class="linenos" data-line="509"></span></a> <span class="kd">local</span> <span class="n">langclaims</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-510"><a href="#L-510"><span class="linenos" data-line="510"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">lang</span><span class="p">,</span> <span class="s1">&#39;mul&#39;</span><span class="p">)</span> <span class="c1">-- multilingual as last try</span> </span><span id="L-511"><a href="#L-511"><span class="linenos" data-line="511"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">snak</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">claims</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-512"><a href="#L-512"><span class="linenos" data-line="512"></span></a> <span class="kd">local</span> <span class="n">snak_language</span> <span class="o">=</span> <span class="n">getSnak</span><span class="p">(</span><span class="n">snak</span><span class="p">,</span> <span class="p">{</span><span class="s2">&quot;mainsnak&quot;</span><span class="p">,</span> <span class="s2">&quot;datavalue&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">,</span> <span class="s2">&quot;language&quot;</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">if</span> <span class="n">snak_language</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">langclaims</span><span class="p">[</span><span class="n">snak_language</span><span class="p">]</span> <span class="kr">then</span> <span class="c1">-- just the first one by language</span> </span><span id="L-514"><a href="#L-514"><span class="linenos" data-line="514"></span></a> <span class="n">langclaims</span><span class="p">[</span><span class="n">snak_language</span><span class="p">]</span> <span class="o">=</span> <span class="n">snak</span><span class="p">.</span><span class="n">mainsnak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">.</span><span class="n">text</span> </span><span id="L-515"><a href="#L-515"><span class="linenos" data-line="515"></span></a> <span class="kr">end</span> </span><span id="L-516"><a href="#L-516"><span class="linenos" data-line="516"></span></a> <span class="kr">end</span> </span><span id="L-517"><a href="#L-517"><span class="linenos" data-line="517"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">l</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">lang</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-518"><a href="#L-518"><span class="linenos" data-line="518"></span></a> <span class="kr">if</span> <span class="n">langclaims</span><span class="p">[</span><span class="n">l</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-519"><a href="#L-519"><span class="linenos" data-line="519"></span></a> <span class="kr">return</span> <span class="n">langclaims</span><span class="p">[</span><span class="n">l</span><span class="p">]</span> </span><span id="L-520"><a href="#L-520"><span class="linenos" data-line="520"></span></a> <span class="kr">end</span> </span><span id="L-521"><a href="#L-521"><span class="linenos" data-line="521"></span></a> <span class="kr">end</span> </span><span id="L-522"><a href="#L-522"><span class="linenos" data-line="522"></span></a> <span class="kr">end</span> </span><span id="L-523"><a href="#L-523"><span class="linenos" data-line="523"></span></a> <span class="kr">end</span> </span><span id="L-524"><a href="#L-524"><span class="linenos" data-line="524"></span></a> <span class="kr">return</span> <span class="n">unit_symbol</span> </span><span id="L-525"><a href="#L-525"><span class="linenos" data-line="525"></span></a><span class="kr">end</span> </span><span id="L-526"><a href="#L-526"><span class="linenos" data-line="526"></span></a> </span><span id="L-527"><a href="#L-527"><span class="linenos" data-line="527"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getUnit</span><span class="p">(</span><span class="n">amount</span><span class="p">,</span> <span class="n">id</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> <span class="c1">-- get unit symbol or name</span> </span><span id="L-528"><a href="#L-528"><span class="linenos" data-line="528"></span></a> <span class="kd">local</span> <span class="n">suffix</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-529"><a href="#L-529"><span class="linenos" data-line="529"></span></a> <span class="kr">if</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">8</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;unitcode&quot;</span> <span class="kr">then</span> </span><span id="L-530"><a href="#L-530"><span class="linenos" data-line="530"></span></a> <span class="c1">-- get unit symbol</span> </span><span id="L-531"><a href="#L-531"><span class="linenos" data-line="531"></span></a> <span class="kd">local</span> <span class="n">unit_symbol</span> <span class="o">=</span> <span class="n">unitSymbol</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">)</span> </span><span id="L-532"><a href="#L-532"><span class="linenos" data-line="532"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">unit_symbol</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-533"><a href="#L-533"><span class="linenos" data-line="533"></span></a> <span class="kr">if</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="o">-</span><span class="mi">6</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;linked&quot;</span> <span class="kr">then</span> </span><span id="L-534"><a href="#L-534"><span class="linenos" data-line="534"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="s2">&quot;[[&quot;</span> <span class="o">..</span> <span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getSitelink</span><span class="p">(</span><span class="n">id</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">&quot;d:&quot;</span> <span class="o">..</span> <span class="n">id</span><span class="p">)</span> <span class="o">..</span> <span class="s2">&quot;|&quot;</span> <span class="o">..</span> <span class="n">unit_symbol</span> <span class="o">..</span> <span class="s2">&quot;]]&quot;</span> </span><span id="L-535"><a href="#L-535"><span class="linenos" data-line="535"></span></a> <span class="kr">else</span> </span><span id="L-536"><a href="#L-536"><span class="linenos" data-line="536"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">unit_symbol</span> </span><span id="L-537"><a href="#L-537"><span class="linenos" data-line="537"></span></a> <span class="kr">end</span> </span><span id="L-538"><a href="#L-538"><span class="linenos" data-line="538"></span></a> <span class="kr">end</span> </span><span id="L-539"><a href="#L-539"><span class="linenos" data-line="539"></span></a> <span class="kr">end</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="n">suffix</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span> <span class="kr">then</span> <span class="c1">-- formatting=unit, or formatting=unitcode not found</span> </span><span id="L-541"><a href="#L-541"><span class="linenos" data-line="541"></span></a> <span class="c1">-- get unit label</span> </span><span id="L-542"><a href="#L-542"><span class="linenos" data-line="542"></span></a> <span class="kd">local</span> <span class="n">unit_label</span><span class="p">,</span> <span class="n">lang</span> <span class="o">=</span> <span class="n">getLabelByLangs</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">)</span> </span><span id="L-543"><a href="#L-543"><span class="linenos" data-line="543"></span></a> <span class="kr">if</span> <span class="n">lang</span> <span class="o">==</span> <span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span> <span class="ow">and</span> <span class="nb">pcall</span><span class="p">(</span><span class="nb">require</span><span class="p">,</span> <span class="n">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/Units&quot;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-544"><a href="#L-544"><span class="linenos" data-line="544"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/Units&quot;</span><span class="p">).</span><span class="n">getUnit</span><span class="p">(</span><span class="n">amount</span><span class="p">,</span> <span class="n">unit_label</span><span class="p">,</span> <span class="n">id</span><span class="p">,</span> <span class="kc">false</span><span class="p">)</span> </span><span id="L-545"><a href="#L-545"><span class="linenos" data-line="545"></span></a> <span class="kr">if</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="o">-</span><span class="mi">6</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;linked&quot;</span> <span class="kr">then</span> </span><span id="L-546"><a href="#L-546"><span class="linenos" data-line="546"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="s2">&quot;[[&quot;</span> <span class="o">..</span> <span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getSitelink</span><span class="p">(</span><span class="n">id</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">&quot;d:&quot;</span> <span class="o">..</span> <span class="n">id</span><span class="p">)</span> <span class="o">..</span> <span class="s2">&quot;|&quot;</span> <span class="o">..</span> <span class="n">suffix</span> <span class="o">..</span> <span class="s2">&quot;]]&quot;</span> </span><span id="L-547"><a href="#L-547"><span class="linenos" data-line="547"></span></a> <span class="kr">end</span> </span><span id="L-548"><a href="#L-548"><span class="linenos" data-line="548"></span></a> <span class="kr">else</span> </span><span id="L-549"><a href="#L-549"><span class="linenos" data-line="549"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="p">(</span><span class="n">unit_label</span> <span class="ow">or</span> <span class="n">id</span><span class="p">)</span> <span class="o">..</span> <span class="n">addLabelIcon</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">lang</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">parameters</span><span class="p">.</span><span class="n">labelicon</span><span class="p">)</span> </span><span id="L-550"><a href="#L-550"><span class="linenos" data-line="550"></span></a> <span class="kr">end</span> </span><span id="L-551"><a href="#L-551"><span class="linenos" data-line="551"></span></a> <span class="kr">end</span> </span><span id="L-552"><a href="#L-552"><span class="linenos" data-line="552"></span></a> <span class="kr">if</span> <span class="n">suffix</span> <span class="o">~=</span> <span class="s1">&#39;&#39;</span> <span class="kr">then</span> </span><span id="L-553"><a href="#L-553"><span class="linenos" data-line="553"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="n">suffix</span> </span><span id="L-554"><a href="#L-554"><span class="linenos" data-line="554"></span></a> <span class="kr">end</span> </span><span id="L-555"><a href="#L-555"><span class="linenos" data-line="555"></span></a> <span class="kr">return</span> <span class="n">suffix</span> </span><span id="L-556"><a href="#L-556"><span class="linenos" data-line="556"></span></a><span class="kr">end</span> </span><span id="L-557"><a href="#L-557"><span class="linenos" data-line="557"></span></a> </span><span id="L-558"><a href="#L-558"><span class="linenos" data-line="558"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">roundDefPrecision</span><span class="p">(</span><span class="n">in_num</span><span class="p">,</span> <span class="n">factor</span><span class="p">)</span> </span><span id="L-559"><a href="#L-559"><span class="linenos" data-line="559"></span></a> <span class="c1">-- rounds out_num with significant figures of in_num (default precision)</span> </span><span id="L-560"><a href="#L-560"><span class="linenos" data-line="560"></span></a> <span class="kd">local</span> <span class="n">out_num</span> <span class="o">=</span> <span class="n">in_num</span> <span class="o">*</span> <span class="n">factor</span> </span><span id="L-561"><a href="#L-561"><span class="linenos" data-line="561"></span></a> <span class="kr">if</span> <span class="n">factor</span><span class="o">/</span><span class="mi">60</span> <span class="o">==</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">factor</span><span class="o">/</span><span class="mi">60</span><span class="p">)</span> <span class="ow">or</span> <span class="n">out_num</span> <span class="o">==</span> <span class="mi">0</span> <span class="kr">then</span> <span class="c1">-- sexagesimal integer or avoiding NaN</span> </span><span id="L-562"><a href="#L-562"><span class="linenos" data-line="562"></span></a> <span class="kr">return</span> <span class="n">out_num</span> </span><span id="L-563"><a href="#L-563"><span class="linenos" data-line="563"></span></a> <span class="kr">end</span> </span><span id="L-564"><a href="#L-564"><span class="linenos" data-line="564"></span></a> <span class="c1">-- first, count digits after decimal mark, handling cases like &#39;12.345e6&#39;</span> </span><span id="L-565"><a href="#L-565"><span class="linenos" data-line="565"></span></a> <span class="kd">local</span> <span class="n">exponent</span><span class="p">,</span> <span class="n">prec</span> </span><span id="L-566"><a href="#L-566"><span class="linenos" data-line="566"></span></a> <span class="kd">local</span> <span class="n">integer</span><span class="p">,</span> <span class="n">dot</span><span class="p">,</span> <span class="n">decimals</span><span class="p">,</span> <span class="n">expstr</span> <span class="o">=</span> <span class="n">in_num</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">&#39;^(%d*)(%.?)(%d*)(.*)&#39;</span><span class="p">)</span> </span><span id="L-567"><a href="#L-567"><span class="linenos" data-line="567"></span></a> <span class="kd">local</span> <span class="n">e</span> <span class="o">=</span> <span class="n">expstr</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><span id="L-568"><a href="#L-568"><span class="linenos" data-line="568"></span></a> <span class="kr">if</span> <span class="n">e</span> <span class="o">==</span> <span class="s1">&#39;e&#39;</span> <span class="ow">or</span> <span class="n">e</span> <span class="o">==</span> <span class="s1">&#39;E&#39;</span> <span class="kr">then</span> </span><span id="L-569"><a href="#L-569"><span class="linenos" data-line="569"></span></a> <span class="n">exponent</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">expstr</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-570"><a href="#L-570"><span class="linenos" data-line="570"></span></a> <span class="kr">end</span> </span><span id="L-571"><a href="#L-571"><span class="linenos" data-line="571"></span></a> <span class="kr">if</span> <span class="n">dot</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span> <span class="kr">then</span> </span><span id="L-572"><a href="#L-572"><span class="linenos" data-line="572"></span></a> <span class="n">prec</span> <span class="o">=</span> <span class="o">-</span><span class="n">integer</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">&#39;0*$&#39;</span><span class="p">):</span><span class="n">len</span><span class="p">()</span> </span><span id="L-573"><a href="#L-573"><span class="linenos" data-line="573"></span></a> <span class="kr">else</span> </span><span id="L-574"><a href="#L-574"><span class="linenos" data-line="574"></span></a> <span class="n">prec</span> <span class="o">=</span> <span class="o">#</span><span class="n">decimals</span> </span><span id="L-575"><a href="#L-575"><span class="linenos" data-line="575"></span></a> <span class="kr">end</span> </span><span id="L-576"><a href="#L-576"><span class="linenos" data-line="576"></span></a> <span class="kr">if</span> <span class="n">exponent</span> <span class="kr">then</span> </span><span id="L-577"><a href="#L-577"><span class="linenos" data-line="577"></span></a> <span class="c1">-- So &#39;1230&#39; and &#39;1.23e3&#39; both give prec = -1, and &#39;0.00123&#39; and &#39;1.23e-3&#39; give 5.</span> </span><span id="L-578"><a href="#L-578"><span class="linenos" data-line="578"></span></a> <span class="n">prec</span> <span class="o">=</span> <span class="n">prec</span> <span class="o">-</span> <span class="n">exponent</span> </span><span id="L-579"><a href="#L-579"><span class="linenos" data-line="579"></span></a> <span class="kr">end</span> </span><span id="L-580"><a href="#L-580"><span class="linenos" data-line="580"></span></a> <span class="c1">-- significant figures</span> </span><span id="L-581"><a href="#L-581"><span class="linenos" data-line="581"></span></a> <span class="kd">local</span> <span class="n">in_bracket</span> <span class="o">=</span> <span class="mi">10</span><span class="o">^-</span><span class="n">prec</span> <span class="c1">-- -1 -&gt; 10, 5 -&gt; 0.00001</span> </span><span id="L-582"><a href="#L-582"><span class="linenos" data-line="582"></span></a> <span class="kd">local</span> <span class="n">out_bracket</span> <span class="o">=</span> <span class="n">in_bracket</span> <span class="o">*</span> <span class="n">out_num</span> <span class="o">/</span> <span class="n">in_num</span> </span><span id="L-583"><a href="#L-583"><span class="linenos" data-line="583"></span></a> <span class="n">out_bracket</span> <span class="o">=</span> <span class="mi">10</span><span class="o">^</span><span class="nb">math.floor</span><span class="p">(</span><span class="n">math</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">out_bracket</span><span class="p">)</span><span class="o">+</span><span class="mf">.5</span><span class="p">)</span> <span class="c1">-- 1230 -&gt; 1000, 0.00123 -&gt; 0.001</span> </span><span id="L-584"><a href="#L-584"><span class="linenos" data-line="584"></span></a> <span class="c1">-- round it (credit to Luc Bloom from http://lua-users.org/wiki/SimpleRound)</span> </span><span id="L-585"><a href="#L-585"><span class="linenos" data-line="585"></span></a> <span class="kr">return</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">out_num</span><span class="o">/</span><span class="n">out_bracket</span> <span class="o">+</span> <span class="p">(</span><span class="n">out_num</span> <span class="o">&gt;=</span><span class="mi">0</span> <span class="ow">and</span> <span class="mi">1</span> <span class="ow">or</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">*</span> <span class="n">out_bracket</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><span id="L-588"><a href="#L-588"><span class="linenos" data-line="588"></span></a><span class="c1">-- format data type quantity</span> </span><span id="L-589"><a href="#L-589"><span class="linenos" data-line="589"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeQuantity</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-590"><a href="#L-590"><span class="linenos" data-line="590"></span></a> <span class="kd">local</span> <span class="n">amount</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">amount</span> </span><span id="L-591"><a href="#L-591"><span class="linenos" data-line="591"></span></a> <span class="n">amount</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">amount</span><span class="p">,</span> <span class="s2">&quot;%+&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> </span><span id="L-592"><a href="#L-592"><span class="linenos" data-line="592"></span></a> <span class="kd">local</span> <span class="n">suffix</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> </span><span id="L-593"><a href="#L-593"><span class="linenos" data-line="593"></span></a> <span class="kd">local</span> <span class="n">conv_amount</span><span class="p">,</span> <span class="n">conv_suffix</span> </span><span id="L-594"><a href="#L-594"><span class="linenos" data-line="594"></span></a> <span class="kr">if</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;unit&quot;</span> <span class="ow">or</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">8</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;duration&quot;</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">convert</span> <span class="kr">then</span> </span><span id="L-595"><a href="#L-595"><span class="linenos" data-line="595"></span></a> <span class="kd">local</span> <span class="n">unit_id</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">unit</span> </span><span id="L-596"><a href="#L-596"><span class="linenos" data-line="596"></span></a> <span class="n">unit_id</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">sub</span><span class="p">(</span><span class="n">unit_id</span><span class="p">,</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">unit_id</span><span class="p">,</span> <span class="s2">&quot;Q&quot;</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> </span><span id="L-597"><a href="#L-597"><span class="linenos" data-line="597"></span></a> <span class="kr">if</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">unit_id</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="s2">&quot;Q&quot;</span> <span class="kr">then</span> </span><span id="L-598"><a href="#L-598"><span class="linenos" data-line="598"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">getUnit</span><span class="p">(</span><span class="n">amount</span><span class="p">,</span> <span class="n">unit_id</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-599"><a href="#L-599"><span class="linenos" data-line="599"></span></a> <span class="kd">local</span> <span class="n">convert_to</span> </span><span id="L-600"><a href="#L-600"><span class="linenos" data-line="600"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">convert</span> <span class="o">==</span> <span class="s2">&quot;default&quot;</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">convert</span> <span class="o">==</span> <span class="s2">&quot;default2&quot;</span> <span class="kr">then</span> </span><span id="L-601"><a href="#L-601"><span class="linenos" data-line="601"></span></a> <span class="kd">local</span> <span class="n">exist</span><span class="p">,</span> <span class="n">units</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">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/Units&quot;</span><span class="p">)</span> </span><span id="L-602"><a href="#L-602"><span class="linenos" data-line="602"></span></a> <span class="kr">if</span> <span class="n">exist</span> <span class="ow">and</span> <span class="n">units</span><span class="p">.</span><span class="n">convert_default</span> <span class="ow">and</span> <span class="nb">next</span><span class="p">(</span><span class="n">units</span><span class="p">.</span><span class="n">convert_default</span><span class="p">)</span> <span class="o">~=</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-603"><a href="#L-603"><span class="linenos" data-line="603"></span></a> <span class="n">convert_to</span> <span class="o">=</span> <span class="n">units</span><span class="p">.</span><span class="n">convert_default</span><span class="p">[</span><span class="n">unit_id</span><span class="p">]</span> </span><span id="L-604"><a href="#L-604"><span class="linenos" data-line="604"></span></a> <span class="kr">end</span> </span><span id="L-605"><a href="#L-605"><span class="linenos" data-line="605"></span></a> <span class="kr">elseif</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">convert</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</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="s2">&quot;Q&quot;</span> <span class="kr">then</span> </span><span id="L-606"><a href="#L-606"><span class="linenos" data-line="606"></span></a> <span class="n">convert_to</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">convert</span> </span><span id="L-607"><a href="#L-607"><span class="linenos" data-line="607"></span></a> <span class="kr">elseif</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">8</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;duration&quot;</span> <span class="kr">then</span> </span><span id="L-608"><a href="#L-608"><span class="linenos" data-line="608"></span></a> <span class="n">convert_to</span> <span class="o">=</span> <span class="s1">&#39;Q11574&#39;</span> <span class="c1">-- seconds</span> </span><span id="L-609"><a href="#L-609"><span class="linenos" data-line="609"></span></a> <span class="kr">end</span> </span><span id="L-610"><a href="#L-610"><span class="linenos" data-line="610"></span></a> <span class="kr">if</span> <span class="n">convert_to</span> <span class="ow">and</span> <span class="n">convert_to</span> <span class="o">~=</span> <span class="n">unit_id</span> <span class="kr">then</span> </span><span id="L-611"><a href="#L-611"><span class="linenos" data-line="611"></span></a> <span class="c1">-- convert units</span> </span><span id="L-612"><a href="#L-612"><span class="linenos" data-line="612"></span></a> <span class="kd">local</span> <span class="n">conv_temp</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">-- formulae for temperatures ºC, ºF, ªK: [from] = {[to] = &#39;formula&#39;}</span> </span><span id="L-613"><a href="#L-613"><span class="linenos" data-line="613"></span></a> <span class="p">[</span><span class="s1">&#39;Q25267&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">&#39;Q42289&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;$1*1.8+32&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;Q11597&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;$1+273.15&#39;</span><span class="p">},</span> </span><span id="L-614"><a href="#L-614"><span class="linenos" data-line="614"></span></a> <span class="p">[</span><span class="s1">&#39;Q42289&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">&#39;Q25267&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;($1-32)/1.8&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;Q11597&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;($1+459.67)*5/9&#39;</span><span class="p">},</span> </span><span id="L-615"><a href="#L-615"><span class="linenos" data-line="615"></span></a> <span class="p">[</span><span class="s1">&#39;Q11597&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">&#39;Q25267&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;$1-273.15&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;Q42289&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;($1-273.15)*1.8000+32.00&#39;</span><span class="p">}</span> </span><span id="L-616"><a href="#L-616"><span class="linenos" data-line="616"></span></a> <span class="p">}</span> </span><span id="L-617"><a href="#L-617"><span class="linenos" data-line="617"></span></a> <span class="kr">if</span> <span class="n">conv_temp</span><span class="p">[</span><span class="n">unit_id</span><span class="p">]</span> <span class="ow">and</span> <span class="n">conv_temp</span><span class="p">[</span><span class="n">unit_id</span><span class="p">][</span><span class="n">convert_to</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-618"><a href="#L-618"><span class="linenos" data-line="618"></span></a> <span class="kd">local</span> <span class="n">amount_f</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">getCurrentFrame</span><span class="p">():</span><span class="n">callParserFunction</span><span class="p">(</span><span class="s1">&#39;#expr&#39;</span><span class="p">,</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">conv_temp</span><span class="p">[</span><span class="n">unit_id</span><span class="p">][</span><span class="n">convert_to</span><span class="p">],</span> <span class="s2">&quot;$1&quot;</span><span class="p">,</span> <span class="n">amount</span><span class="p">))</span> </span><span id="L-619"><a href="#L-619"><span class="linenos" data-line="619"></span></a> <span class="n">conv_amount</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="nb">tonumber</span><span class="p">(</span><span class="n">amount_f</span><span class="p">)</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> </span><span id="L-620"><a href="#L-620"><span class="linenos" data-line="620"></span></a> <span class="kr">else</span> </span><span id="L-621"><a href="#L-621"><span class="linenos" data-line="621"></span></a> <span class="kd">local</span> <span class="n">conversions</span> <span class="o">=</span> <span class="n">getStatements</span><span class="p">(</span><span class="n">unit_id</span><span class="p">,</span> <span class="s1">&#39;P2442&#39;</span><span class="p">)</span> <span class="c1">-- conversion to standard unit</span> </span><span id="L-622"><a href="#L-622"><span class="linenos" data-line="622"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">conversions</span><span class="p">,</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getBestStatements</span><span class="p">(</span><span class="n">unit_id</span><span class="p">,</span> <span class="s1">&#39;P2370&#39;</span><span class="p">)[</span><span class="mi">1</span><span class="p">])</span> <span class="c1">-- conversion to SI unit</span> </span><span id="L-623"><a href="#L-623"><span class="linenos" data-line="623"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">conv</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">conversions</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-624"><a href="#L-624"><span class="linenos" data-line="624"></span></a> <span class="kr">if</span> <span class="n">conv</span><span class="p">.</span><span class="n">mainsnak</span><span class="p">.</span><span class="n">snaktype</span> <span class="o">==</span> <span class="s1">&#39;value&#39;</span> <span class="kr">then</span> <span class="c1">-- no somevalue nor novalue</span> </span><span id="L-625"><a href="#L-625"><span class="linenos" data-line="625"></span></a> <span class="kr">if</span> <span class="n">conv</span><span class="p">.</span><span class="n">mainsnak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">.</span><span class="n">unit</span> <span class="o">==</span> <span class="s2">&quot;http://www.wikidata.org/entity/&quot;</span> <span class="o">..</span> <span class="n">convert_to</span> <span class="kr">then</span> </span><span id="L-626"><a href="#L-626"><span class="linenos" data-line="626"></span></a> <span class="n">conv_amount</span> <span class="o">=</span> <span class="n">roundDefPrecision</span><span class="p">(</span><span class="n">amount</span><span class="p">,</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">conv</span><span class="p">.</span><span class="n">mainsnak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">.</span><span class="n">amount</span><span class="p">))</span> </span><span id="L-627"><a href="#L-627"><span class="linenos" data-line="627"></span></a> <span class="kr">break</span> </span><span id="L-628"><a href="#L-628"><span class="linenos" data-line="628"></span></a> <span class="kr">end</span> </span><span id="L-629"><a href="#L-629"><span class="linenos" data-line="629"></span></a> <span class="kr">end</span> </span><span id="L-630"><a href="#L-630"><span class="linenos" data-line="630"></span></a> <span class="kr">end</span> </span><span id="L-631"><a href="#L-631"><span class="linenos" data-line="631"></span></a> <span class="kr">end</span> </span><span id="L-632"><a href="#L-632"><span class="linenos" data-line="632"></span></a> <span class="kr">if</span> <span class="n">conv_amount</span> <span class="kr">then</span> </span><span id="L-633"><a href="#L-633"><span class="linenos" data-line="633"></span></a> <span class="n">conv_suffix</span> <span class="o">=</span> <span class="n">getUnit</span><span class="p">(</span><span class="n">conv_amount</span><span class="p">,</span> <span class="n">convert_to</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-634"><a href="#L-634"><span class="linenos" data-line="634"></span></a> <span class="kr">end</span> </span><span id="L-635"><a href="#L-635"><span class="linenos" data-line="635"></span></a> <span class="kr">elseif</span> <span class="n">parameters</span><span class="p">.</span><span class="n">convert</span> <span class="o">==</span> <span class="s1">&#39;M&#39;</span> <span class="ow">and</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">10</span><span class="o">^</span><span class="mi">8</span> <span class="kr">then</span> </span><span id="L-636"><a href="#L-636"><span class="linenos" data-line="636"></span></a> <span class="n">conv_amount</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">amount</span><span class="o">/</span><span class="mi">10</span><span class="o">^</span><span class="mi">6</span> <span class="o">+</span> <span class="mf">0.5</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">conv_suffix</span> <span class="o">=</span> <span class="s1">&#39; M&#39;</span> <span class="o">..</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">suffix</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-638"><a href="#L-638"><span class="linenos" data-line="638"></span></a> <span class="kr">end</span> </span><span id="L-639"><a href="#L-639"><span class="linenos" data-line="639"></span></a> <span class="kr">if</span> <span class="n">conv_amount</span> <span class="ow">and</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;raw&#39;</span> <span class="kr">then</span> </span><span id="L-640"><a href="#L-640"><span class="linenos" data-line="640"></span></a> <span class="n">amount</span> <span class="o">=</span> <span class="n">conv_amount</span> </span><span id="L-641"><a href="#L-641"><span class="linenos" data-line="641"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> </span><span id="L-642"><a href="#L-642"><span class="linenos" data-line="642"></span></a> <span class="n">conv_amount</span> <span class="o">=</span> <span class="kc">nil</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">end</span> </span><span id="L-646"><a href="#L-646"><span class="linenos" data-line="646"></span></a> <span class="kd">local</span> <span class="n">lang_obj</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">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> </span><span id="L-647"><a href="#L-647"><span class="linenos" data-line="647"></span></a> <span class="kd">local</span> <span class="n">sortkey</span> <span class="o">=</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">&quot;%019d&quot;</span><span class="p">,</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span> <span class="o">*</span> <span class="mi">1000</span><span class="p">)</span> </span><span id="L-648"><a href="#L-648"><span class="linenos" data-line="648"></span></a> <span class="kr">if</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">8</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;duration&quot;</span> <span class="kr">then</span> </span><span id="L-649"><a href="#L-649"><span class="linenos" data-line="649"></span></a> <span class="kd">local</span> <span class="n">sec</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">conv_amount</span> <span class="ow">or</span> <span class="n">amount</span><span class="p">)</span> </span><span id="L-650"><a href="#L-650"><span class="linenos" data-line="650"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;duration&#39;</span> <span class="kr">then</span> </span><span id="L-651"><a href="#L-651"><span class="linenos" data-line="651"></span></a> <span class="kr">return</span> <span class="n">lang_obj</span><span class="p">:</span><span class="n">formatDuration</span><span class="p">(</span><span class="n">sec</span><span class="p">)</span> </span><span id="L-652"><a href="#L-652"><span class="linenos" data-line="652"></span></a> <span class="kr">elseif</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;durationm:s&#39;</span> <span class="kr">then</span> </span><span id="L-653"><a href="#L-653"><span class="linenos" data-line="653"></span></a> <span class="kd">local</span> <span class="n">mm</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">sec</span> <span class="o">/</span> <span class="mi">60</span><span class="p">)</span> </span><span id="L-654"><a href="#L-654"><span class="linenos" data-line="654"></span></a> <span class="kd">local</span> <span class="n">ss</span> <span class="o">=</span> <span class="n">sec</span> <span class="o">-</span> <span class="p">(</span><span class="n">mm</span> <span class="o">*</span> <span class="mi">60</span><span class="p">)</span> </span><span id="L-655"><a href="#L-655"><span class="linenos" data-line="655"></span></a> <span class="kr">return</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">&quot;%02d:%02d&quot;</span><span class="p">,</span> <span class="n">mm</span><span class="p">,</span> <span class="n">ss</span><span class="p">)</span> </span><span id="L-656"><a href="#L-656"><span class="linenos" data-line="656"></span></a> <span class="kr">else</span> <span class="c1">-- durationhms or durationh:m:s</span> </span><span id="L-657"><a href="#L-657"><span class="linenos" data-line="657"></span></a> <span class="kd">local</span> <span class="n">intervals</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;hours&quot;</span><span class="p">,</span> <span class="s2">&quot;minutes&quot;</span><span class="p">,</span> <span class="s2">&quot;seconds&quot;</span><span class="p">}</span> </span><span id="L-658"><a href="#L-658"><span class="linenos" data-line="658"></span></a> <span class="kd">local</span> <span class="n">sec2table</span> <span class="o">=</span> <span class="n">lang_obj</span><span class="p">:</span><span class="n">getDurationIntervals</span><span class="p">(</span><span class="n">sec</span><span class="p">,</span> <span class="n">intervals</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">sec2table</span><span class="p">[</span><span class="s2">&quot;seconds&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">sec2table</span><span class="p">[</span><span class="s2">&quot;seconds&quot;</span><span class="p">]</span> <span class="ow">or</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="nb">tonumber</span><span class="p">(</span><span class="s2">&quot;.&quot;</span> <span class="o">..</span> <span class="p">(</span><span class="nb">tostring</span><span class="p">(</span><span class="n">sec</span><span class="p">):</span><span class="n">match</span><span class="p">(</span><span class="s2">&quot;%.(%d+)&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">&quot;0&quot;</span><span class="p">))</span> <span class="c1">-- add decimals</span> </span><span id="L-660"><a href="#L-660"><span class="linenos" data-line="660"></span></a> <span class="kd">local</span> <span class="n">duration</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-661"><a href="#L-661"><span class="linenos" data-line="661"></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">intervals</span><span class="p">)</span> <span class="kr">do</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">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;durationh:m:s&#39;</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="kr">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">sec2table</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-664"><a href="#L-664"><span class="linenos" data-line="664"></span></a> <span class="n">duration</span> <span class="o">=</span> <span class="n">duration</span> <span class="o">..</span> <span class="n">sec2table</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="o">..</span> <span class="s2">&quot;:&quot;</span> </span><span id="L-665"><a href="#L-665"><span class="linenos" data-line="665"></span></a> <span class="kr">elseif</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">2</span> <span class="kr">then</span> </span><span id="L-666"><a href="#L-666"><span class="linenos" data-line="666"></span></a> <span class="n">duration</span> <span class="o">=</span> <span class="n">duration</span> <span class="o">..</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">&quot;%02d&quot;</span><span class="p">,</span> <span class="n">sec2table</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="ow">or</span> <span class="mi">0</span><span class="p">)</span> <span class="o">..</span> <span class="s2">&quot;:&quot;</span> </span><span id="L-667"><a href="#L-667"><span class="linenos" data-line="667"></span></a> <span class="kr">elseif</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">3</span> <span class="kr">then</span> </span><span id="L-668"><a href="#L-668"><span class="linenos" data-line="668"></span></a> <span class="kd">local</span> <span class="n">sec_str</span> <span class="o">=</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">lang_obj</span><span class="p">:</span><span class="n">formatNum</span><span class="p">(</span><span class="n">sec2table</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="ow">or</span> <span class="mi">0</span><span class="p">))</span> </span><span id="L-669"><a href="#L-669"><span class="linenos" data-line="669"></span></a> <span class="n">duration</span> <span class="o">=</span> <span class="n">duration</span> <span class="o">..</span> <span class="p">(</span><span class="n">sec2table</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">10</span> <span class="ow">and</span> <span class="s2">&quot;0&quot;</span> <span class="ow">or</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> <span class="o">..</span> <span class="n">sec_str</span> </span><span id="L-670"><a href="#L-670"><span class="linenos" data-line="670"></span></a> <span class="kr">end</span> </span><span id="L-671"><a href="#L-671"><span class="linenos" data-line="671"></span></a> <span class="kr">elseif</span> <span class="n">sec2table</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-672"><a href="#L-672"><span class="linenos" data-line="672"></span></a> <span class="n">duration</span> <span class="o">=</span> <span class="n">duration</span> <span class="o">..</span> <span class="n">lang_obj</span><span class="p">:</span><span class="n">formatNum</span><span class="p">(</span><span class="n">sec2table</span><span class="p">[</span><span class="n">v</span><span class="p">])</span> <span class="o">..</span> <span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">.</span><span class="n">hms</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="o">..</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="mi">3</span> <span class="ow">and</span> <span class="s2">&quot; &quot;</span> <span class="ow">or</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> </span><span id="L-673"><a href="#L-673"><span class="linenos" data-line="673"></span></a> <span class="kr">end</span> </span><span id="L-674"><a href="#L-674"><span class="linenos" data-line="674"></span></a> <span class="kr">end</span> </span><span id="L-675"><a href="#L-675"><span class="linenos" data-line="675"></span></a> <span class="kr">return</span> <span class="n">duration</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">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">case</span> <span class="kr">then</span> </span><span id="L-679"><a href="#L-679"><span class="linenos" data-line="679"></span></a> <span class="n">amount</span> <span class="o">=</span> <span class="n">case</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">case</span><span class="p">,</span> <span class="n">amount</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">feminineGender</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">id</span><span class="p">))</span> </span><span id="L-680"><a href="#L-680"><span class="linenos" data-line="680"></span></a> <span class="kr">elseif</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">~=</span> <span class="s1">&#39;raw&#39;</span> <span class="kr">then</span> </span><span id="L-681"><a href="#L-681"><span class="linenos" data-line="681"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">numformat</span> <span class="kr">then</span> </span><span id="L-682"><a href="#L-682"><span class="linenos" data-line="682"></span></a> <span class="n">amount</span> <span class="o">=</span> <span class="n">lang_obj</span><span class="p">:</span><span class="n">formatNum</span><span class="p">(</span><span class="nb">tonumber</span><span class="p">(</span><span class="nb">string.format</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">numformat</span><span class="p">,</span> <span class="n">amount</span><span class="p">)))</span> </span><span id="L-683"><a href="#L-683"><span class="linenos" data-line="683"></span></a> <span class="kr">else</span> </span><span id="L-684"><a href="#L-684"><span class="linenos" data-line="684"></span></a> <span class="n">amount</span> <span class="o">=</span> <span class="n">lang_obj</span><span class="p">:</span><span class="n">formatNum</span><span class="p">(</span><span class="nb">tonumber</span><span class="p">(</span><span class="n">amount</span><span class="p">))</span> </span><span id="L-685"><a href="#L-685"><span class="linenos" data-line="685"></span></a> <span class="kr">end</span> </span><span id="L-686"><a href="#L-686"><span class="linenos" data-line="686"></span></a> <span class="kr">end</span> </span><span id="L-687"><a href="#L-687"><span class="linenos" data-line="687"></span></a> <span class="kr">if</span> <span class="n">conv_amount</span> <span class="kr">then</span> </span><span id="L-688"><a href="#L-688"><span class="linenos" data-line="688"></span></a> <span class="kd">local</span> <span class="n">conv_sortkey</span> <span class="o">=</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">&quot;%019d&quot;</span><span class="p">,</span> <span class="n">conv_amount</span> <span class="o">*</span> <span class="mi">1000</span><span class="p">)</span> </span><span id="L-689"><a href="#L-689"><span class="linenos" data-line="689"></span></a> <span class="n">conv_amount</span> <span class="o">=</span> <span class="n">lang_obj</span><span class="p">:</span><span class="n">formatNum</span><span class="p">(</span><span class="n">conv_amount</span><span class="p">)</span> </span><span id="L-690"><a href="#L-690"><span class="linenos" data-line="690"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">convert</span> <span class="o">==</span> <span class="s1">&#39;default2&#39;</span> <span class="kr">then</span> </span><span id="L-691"><a href="#L-691"><span class="linenos" data-line="691"></span></a> <span class="kr">return</span> <span class="n">conv_amount</span> <span class="o">..</span> <span class="n">conv_suffix</span> <span class="o">..</span> <span class="s1">&#39; (&#39;</span> <span class="o">..</span> <span class="n">amount</span> <span class="o">..</span> <span class="n">suffix</span> <span class="o">..</span> <span class="s1">&#39;)&#39;</span><span class="p">,</span> <span class="n">conv_sortkey</span> </span><span id="L-692"><a href="#L-692"><span class="linenos" data-line="692"></span></a> <span class="kr">else</span> </span><span id="L-693"><a href="#L-693"><span class="linenos" data-line="693"></span></a> <span class="kr">return</span> <span class="n">conv_amount</span> <span class="o">..</span> <span class="n">conv_suffix</span><span class="p">,</span> <span class="n">conv_sortkey</span> </span><span id="L-694"><a href="#L-694"><span class="linenos" data-line="694"></span></a> <span class="kr">end</span> </span><span id="L-695"><a href="#L-695"><span class="linenos" data-line="695"></span></a> <span class="kr">elseif</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">((</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">),</span> <span class="s1">&#39;$1&#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="kr">then</span> <span class="c1">-- formatting with pattern</span> </span><span id="L-696"><a href="#L-696"><span class="linenos" data-line="696"></span></a> <span class="n">amount</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span><span class="p">,</span> <span class="s1">&#39;$1&#39;</span><span class="p">,</span> <span class="p">{[</span><span class="s1">&#39;$1&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">amount</span><span class="p">})</span> </span><span id="L-697"><a href="#L-697"><span class="linenos" data-line="697"></span></a> <span class="kr">end</span> </span><span id="L-698"><a href="#L-698"><span class="linenos" data-line="698"></span></a> <span class="kr">return</span> <span class="n">amount</span> <span class="o">..</span> <span class="n">suffix</span><span class="p">,</span> <span class="n">sortkey</span> </span><span id="L-699"><a href="#L-699"><span class="linenos" data-line="699"></span></a><span class="kr">end</span> </span><span id="L-700"><a href="#L-700"><span class="linenos" data-line="700"></span></a> </span><span id="L-701"><a href="#L-701"><span class="linenos" data-line="701"></span></a><span class="c1">-- format data type time</span> </span><span id="L-702"><a href="#L-702"><span class="linenos" data-line="702"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeTime</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-703"><a href="#L-703"><span class="linenos" data-line="703"></span></a> <span class="c1">-- Dates and times are stored in ISO 8601 format</span> </span><span id="L-704"><a href="#L-704"><span class="linenos" data-line="704"></span></a> <span class="kd">local</span> <span class="n">timestamp</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">time</span> </span><span id="L-705"><a href="#L-705"><span class="linenos" data-line="705"></span></a> <span class="kd">local</span> <span class="n">post_format</span> </span><span id="L-706"><a href="#L-706"><span class="linenos" data-line="706"></span></a> <span class="kd">local</span> <span class="n">calendar_add</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> </span><span id="L-707"><a href="#L-707"><span class="linenos" data-line="707"></span></a> <span class="kd">local</span> <span class="n">precision</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">precision</span> <span class="ow">or</span> <span class="mi">11</span> </span><span id="L-708"><a href="#L-708"><span class="linenos" data-line="708"></span></a> </span><span id="L-709"><a href="#L-709"><span class="linenos" data-line="709"></span></a> <span class="kr">if</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">timestamp</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="kr">then</span> </span><span id="L-710"><a href="#L-710"><span class="linenos" data-line="710"></span></a> <span class="n">post_format</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">[</span><span class="s2">&quot;bc&quot;</span><span class="p">]</span> </span><span id="L-711"><a href="#L-711"><span class="linenos" data-line="711"></span></a> <span class="kr">elseif</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;00&#39;</span> <span class="kr">then</span> </span><span id="L-712"><a href="#L-712"><span class="linenos" data-line="712"></span></a> <span class="n">post_format</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">[</span><span class="s2">&quot;ad&quot;</span><span class="p">]</span> </span><span id="L-713"><a href="#L-713"><span class="linenos" data-line="713"></span></a> <span class="kr">elseif</span> <span class="n">precision</span> <span class="o">&gt;</span> <span class="mi">8</span> <span class="kr">then</span> </span><span id="L-714"><a href="#L-714"><span class="linenos" data-line="714"></span></a> <span class="c1">-- calendar model</span> </span><span id="L-715"><a href="#L-715"><span class="linenos" data-line="715"></span></a> <span class="kd">local</span> <span class="n">calendar_model</span> <span class="o">=</span> <span class="p">{[</span><span class="s2">&quot;Q12138&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;gregorian&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;Q1985727&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;gregorian&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;Q11184&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;julian&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;Q1985786&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;julian&quot;</span><span class="p">}</span> </span><span id="L-716"><a href="#L-716"><span class="linenos" data-line="716"></span></a> <span class="kd">local</span> <span class="n">calendar_id</span> <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">split</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">calendarmodel</span><span class="p">,</span> <span class="s1">&#39;entity/&#39;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> </span><span id="L-717"><a href="#L-717"><span class="linenos" data-line="717"></span></a> <span class="kr">if</span> <span class="p">(</span><span class="n">timestamp</span> <span class="o">&lt;</span> <span class="s2">&quot;+1582-10-15T00:00:00Z&quot;</span> <span class="ow">and</span> <span class="n">calendar_model</span><span class="p">[</span><span class="n">calendar_id</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;gregorian&quot;</span><span class="p">)</span> </span><span id="L-718"><a href="#L-718"><span class="linenos" data-line="718"></span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">timestamp</span> <span class="o">&gt;</span> <span class="s2">&quot;+1582-10-04T00:00:00Z&quot;</span> <span class="ow">and</span> <span class="n">calendar_model</span><span class="p">[</span><span class="n">calendar_id</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;julian&quot;</span><span class="p">)</span> </span><span id="L-719"><a href="#L-719"><span class="linenos" data-line="719"></span></a> <span class="kr">then</span> </span><span id="L-720"><a href="#L-720"><span class="linenos" data-line="720"></span></a> <span class="n">calendar_add</span> <span class="o">=</span> <span class="s2">&quot; &lt;sup&gt;(&quot;</span> <span class="o">..</span> <span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Wikibase-time-calendar-&#39;</span> <span class="o">..</span> <span class="n">calendar_model</span><span class="p">[</span><span class="n">calendar_id</span><span class="p">]):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span><span class="n">plain</span><span class="p">()</span> <span class="o">..</span> <span class="s2">&quot;)&lt;/sup&gt;&quot;</span> </span><span id="L-721"><a href="#L-721"><span class="linenos" data-line="721"></span></a> <span class="kr">end</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><span id="L-724"><a href="#L-724"><span class="linenos" data-line="724"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">formatTime</span><span class="p">(</span><span class="n">form</span><span class="p">,</span> <span class="n">stamp</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">pattern</span> </span><span id="L-726"><a href="#L-726"><span class="linenos" data-line="726"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">form</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;function&quot;</span> <span class="kr">then</span> </span><span id="L-727"><a href="#L-727"><span class="linenos" data-line="727"></span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">form</span><span class="p">(</span><span class="n">stamp</span><span class="p">)</span> </span><span id="L-728"><a href="#L-728"><span class="linenos" data-line="728"></span></a> <span class="kr">else</span> </span><span id="L-729"><a href="#L-729"><span class="linenos" data-line="729"></span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">form</span> </span><span id="L-730"><a href="#L-730"><span class="linenos" data-line="730"></span></a> <span class="kr">end</span> </span><span id="L-731"><a href="#L-731"><span class="linenos" data-line="731"></span></a> <span class="n">stamp</span> <span class="o">=</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">stamp</span><span class="p">)</span> </span><span id="L-732"><a href="#L-732"><span class="linenos" data-line="732"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="s2">&quot;$1&quot;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-733"><a href="#L-733"><span class="linenos" data-line="733"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="s2">&quot;$1&quot;</span><span class="p">,</span> <span class="n">stamp</span><span class="p">)</span> </span><span id="L-734"><a href="#L-734"><span class="linenos" data-line="734"></span></a> <span class="kr">elseif</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">stamp</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="kr">then</span> <span class="c1">-- formatDate() only supports years from 0</span> </span><span id="L-735"><a href="#L-735"><span class="linenos" data-line="735"></span></a> <span class="n">stamp</span> <span class="o">=</span> <span class="s1">&#39;+&#39;</span> <span class="o">..</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">stamp</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-736"><a href="#L-736"><span class="linenos" data-line="736"></span></a> <span class="kr">elseif</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">stamp</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="kr">then</span> <span class="c1">-- not a valid timestamp, it is a number</span> </span><span id="L-737"><a href="#L-737"><span class="linenos" data-line="737"></span></a> <span class="n">stamp</span> <span class="o">=</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">&quot;%04d&quot;</span><span class="p">,</span> <span class="n">stamp</span><span class="p">)</span> </span><span id="L-738"><a href="#L-738"><span class="linenos" data-line="738"></span></a> <span class="kr">end</span> </span><span id="L-739"><a href="#L-739"><span class="linenos" data-line="739"></span></a> <span class="kd">local</span> <span class="n">ret</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">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span><span class="n">formatDate</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">stamp</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">ret</span> <span class="o">=</span> <span class="nb">string.gsub</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="s2">&quot;^(%[?%[?)0+&quot;</span><span class="p">,</span> <span class="s2">&quot;%1&quot;</span><span class="p">)</span> <span class="c1">-- suppress leading zeros</span> </span><span id="L-741"><a href="#L-741"><span class="linenos" data-line="741"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="nb">string.gsub</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="s2">&quot;( %[?%[?)0+&quot;</span><span class="p">,</span> <span class="s2">&quot;%1&quot;</span><span class="p">)</span> </span><span id="L-742"><a href="#L-742"><span class="linenos" data-line="742"></span></a> <span class="kr">return</span> <span class="n">ret</span> </span><span id="L-743"><a href="#L-743"><span class="linenos" data-line="743"></span></a> <span class="kr">end</span> </span><span id="L-744"><a href="#L-744"><span class="linenos" data-line="744"></span></a> </span><span id="L-745"><a href="#L-745"><span class="linenos" data-line="745"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">postFormat</span><span class="p">(</span><span class="n">t</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">if</span> <span class="n">post_format</span> <span class="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">post_format</span><span class="p">,</span> <span class="s2">&quot;$1&quot;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-747"><a href="#L-747"><span class="linenos" data-line="747"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">post_format</span><span class="p">,</span> <span class="s2">&quot;$1&quot;</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span> </span><span id="L-748"><a href="#L-748"><span class="linenos" data-line="748"></span></a> <span class="kr">end</span> </span><span id="L-749"><a href="#L-749"><span class="linenos" data-line="749"></span></a> <span class="kr">return</span> <span class="n">t</span> </span><span id="L-750"><a href="#L-750"><span class="linenos" data-line="750"></span></a> <span class="kr">end</span> </span><span id="L-751"><a href="#L-751"><span class="linenos" data-line="751"></span></a> </span><span id="L-752"><a href="#L-752"><span class="linenos" data-line="752"></span></a> <span class="kd">local</span> <span class="n">intyear</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="nb">string.match</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span> <span class="s2">&quot;[+-](%d+)&quot;</span><span class="p">))</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">ret</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> </span><span id="L-754"><a href="#L-754"><span class="linenos" data-line="754"></span></a> </span><span id="L-755"><a href="#L-755"><span class="linenos" data-line="755"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o">&lt;=</span> <span class="mi">5</span> <span class="kr">then</span> <span class="c1">-- precision is 10000 years or more</span> </span><span id="L-756"><a href="#L-756"><span class="linenos" data-line="756"></span></a> <span class="kd">local</span> <span class="n">factor</span> <span class="o">=</span> <span class="mi">10</span> <span class="o">^</span> <span class="p">((</span><span class="mi">5</span> <span class="o">-</span> <span class="n">precision</span><span class="p">)</span> <span class="o">+</span> <span class="mi">4</span><span class="p">)</span> </span><span id="L-757"><a href="#L-757"><span class="linenos" data-line="757"></span></a> <span class="kd">local</span> <span class="n">y2</span> <span class="o">=</span> <span class="nb">math.ceil</span><span class="p">(</span><span class="nb">math.abs</span><span class="p">(</span><span class="n">intyear</span><span class="p">)</span> <span class="o">/</span> <span class="n">factor</span><span class="p">)</span> </span><span id="L-758"><a href="#L-758"><span class="linenos" data-line="758"></span></a> <span class="kd">local</span> <span class="n">relative</span> <span class="o">=</span> <span class="n">formatTime</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">[</span><span class="n">precision</span><span class="p">],</span> <span class="n">y2</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">post_format</span> <span class="o">==</span> <span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">[</span><span class="s2">&quot;bc&quot;</span><span class="p">]</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">ret</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">.</span><span class="n">beforenow</span><span class="p">,</span> <span class="s2">&quot;$1&quot;</span><span class="p">,</span> <span class="n">relative</span><span class="p">)</span> </span><span id="L-761"><a href="#L-761"><span class="linenos" data-line="761"></span></a> <span class="kr">else</span> </span><span id="L-762"><a href="#L-762"><span class="linenos" data-line="762"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">.</span><span class="n">afternow</span><span class="p">,</span> <span class="s2">&quot;$1&quot;</span><span class="p">,</span> <span class="n">relative</span><span class="p">)</span> </span><span id="L-763"><a href="#L-763"><span class="linenos" data-line="763"></span></a> <span class="kr">end</span> </span><span id="L-764"><a href="#L-764"><span class="linenos" data-line="764"></span></a> <span class="kd">local</span> <span class="n">ret_number</span> <span class="o">=</span> <span class="nb">string.match</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="s2">&quot;%d+&quot;</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">if</span> <span class="n">ret_number</span> <span class="o">~=</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-766"><a href="#L-766"><span class="linenos" data-line="766"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="n">ret_number</span><span class="p">,</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">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span><span class="n">formatNum</span><span class="p">(</span><span class="nb">tonumber</span><span class="p">(</span><span class="n">ret_number</span><span class="p">)))</span> </span><span id="L-767"><a href="#L-767"><span class="linenos" data-line="767"></span></a> <span class="kr">end</span> </span><span id="L-768"><a href="#L-768"><span class="linenos" data-line="768"></span></a> <span class="kr">elseif</span> <span class="n">precision</span> <span class="o">==</span> <span class="mi">6</span> <span class="ow">or</span> <span class="n">precision</span> <span class="o">==</span> <span class="mi">7</span> <span class="kr">then</span> <span class="c1">-- millennia or centuries</span> </span><span id="L-769"><a href="#L-769"><span class="linenos" data-line="769"></span></a> <span class="kd">local</span> <span class="n">card</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">((</span><span class="n">intyear</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">10</span><span class="o">^</span><span class="p">(</span><span class="mi">9</span> <span class="o">-</span> <span class="n">precision</span><span class="p">))</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-770"><a href="#L-770"><span class="linenos" data-line="770"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">formatTime</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">[</span><span class="n">precision</span><span class="p">],</span> <span class="n">card</span><span class="p">)</span> </span><span id="L-771"><a href="#L-771"><span class="linenos" data-line="771"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">postFormat</span><span class="p">(</span><span class="n">ret</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">elseif</span> <span class="n">precision</span> <span class="o">==</span> <span class="mi">8</span> <span class="kr">then</span> <span class="c1">-- decades</span> </span><span id="L-773"><a href="#L-773"><span class="linenos" data-line="773"></span></a> <span class="kd">local</span> <span class="n">card</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="nb">math.abs</span><span class="p">(</span><span class="n">intyear</span><span class="p">)</span> <span class="o">/</span> <span class="mi">10</span><span class="p">)</span> <span class="o">*</span> <span class="mi">10</span> </span><span id="L-774"><a href="#L-774"><span class="linenos" data-line="774"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">formatTime</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">[</span><span class="mi">8</span><span class="p">],</span> <span class="n">card</span><span class="p">)</span> </span><span id="L-775"><a href="#L-775"><span class="linenos" data-line="775"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">postFormat</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span> </span><span id="L-776"><a href="#L-776"><span class="linenos" data-line="776"></span></a> <span class="kr">elseif</span> <span class="n">intyear</span> <span class="o">&gt;</span> <span class="mi">9999</span> <span class="kr">then</span> <span class="c1">-- not a valid timestamp</span> </span><span id="L-777"><a href="#L-777"><span class="linenos" data-line="777"></span></a> <span class="kr">return</span> </span><span id="L-778"><a href="#L-778"><span class="linenos" data-line="778"></span></a> <span class="kr">elseif</span> <span class="n">precision</span> <span class="o">==</span> <span class="mi">9</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;Y&#39;</span> <span class="kr">then</span> <span class="c1">-- precision is year</span> </span><span id="L-779"><a href="#L-779"><span class="linenos" data-line="779"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">formatTime</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">[</span><span class="mi">9</span><span class="p">],</span> <span class="n">intyear</span><span class="p">)</span> </span><span id="L-780"><a href="#L-780"><span class="linenos" data-line="780"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">postFormat</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span> <span class="o">..</span> <span class="n">calendar_add</span> </span><span id="L-781"><a href="#L-781"><span class="linenos" data-line="781"></span></a> <span class="kr">elseif</span> <span class="n">precision</span> <span class="o">==</span> <span class="mi">10</span> <span class="kr">then</span> <span class="c1">-- month</span> </span><span id="L-782"><a href="#L-782"><span class="linenos" data-line="782"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">formatTime</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">[</span><span class="mi">10</span><span class="p">],</span> <span class="n">timestamp</span> <span class="o">..</span> <span class="s2">&quot; + 1 day&quot;</span><span class="p">)</span> <span class="c1">-- formatDate yyyy-mm-00 returns the previous month</span> </span><span id="L-783"><a href="#L-783"><span class="linenos" data-line="783"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">postFormat</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span> <span class="o">..</span> <span class="n">calendar_add</span> </span><span id="L-784"><a href="#L-784"><span class="linenos" data-line="784"></span></a> <span class="kr">else</span> <span class="c1">-- precision 11, day</span> </span><span id="L-785"><a href="#L-785"><span class="linenos" data-line="785"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">formatTime</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">[</span><span class="mi">11</span><span class="p">],</span> <span class="n">timestamp</span><span class="p">)</span> </span><span id="L-786"><a href="#L-786"><span class="linenos" data-line="786"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">postFormat</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span> <span class="o">..</span> <span class="n">calendar_add</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 class="kr">return</span> <span class="n">ret</span><span class="p">,</span> <span class="n">timestamp</span> </span><span id="L-789"><a href="#L-789"><span class="linenos" data-line="789"></span></a><span class="kr">end</span> </span><span id="L-790"><a href="#L-790"><span class="linenos" data-line="790"></span></a> </span><span id="L-791"><a href="#L-791"><span class="linenos" data-line="791"></span></a><span class="c1">-- format data value wikibase-entityid with data types wikibase-item or wikibase-property</span> </span><span id="L-792"><a href="#L-792"><span class="linenos" data-line="792"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeEntity</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-793"><a href="#L-793"><span class="linenos" data-line="793"></span></a> <span class="kd">local</span> <span class="n">entity_id</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span> </span><span id="L-794"><a href="#L-794"><span class="linenos" data-line="794"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;raw&#39;</span> <span class="kr">then</span> </span><span id="L-795"><a href="#L-795"><span class="linenos" data-line="795"></span></a> <span class="kr">return</span> <span class="n">entity_id</span><span class="p">,</span> <span class="n">entity_id</span> </span><span id="L-796"><a href="#L-796"><span class="linenos" data-line="796"></span></a> <span class="kr">end</span> </span><span id="L-797"><a href="#L-797"><span class="linenos" data-line="797"></span></a> <span class="kd">local</span> <span class="n">entity_page</span> <span class="o">=</span> <span class="s1">&#39;Special:EntityPage/&#39;</span> <span class="o">..</span> <span class="n">entity_id</span> </span><span id="L-798"><a href="#L-798"><span class="linenos" data-line="798"></span></a> <span class="kd">local</span> <span class="n">label</span><span class="p">,</span> <span class="n">lang</span> <span class="o">=</span> <span class="n">getLabelByLangs</span><span class="p">(</span><span class="n">entity_id</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">)</span> </span><span id="L-799"><a href="#L-799"><span class="linenos" data-line="799"></span></a> <span class="kd">local</span> <span class="n">sitelink</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getSitelink</span><span class="p">(</span><span class="n">entity_id</span><span class="p">)</span> </span><span id="L-800"><a href="#L-800"><span class="linenos" data-line="800"></span></a> <span class="kd">local</span> <span class="n">parameter</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> </span><span id="L-801"><a href="#L-801"><span class="linenos" data-line="801"></span></a> <span class="kd">local</span> <span class="n">labelcase</span> <span class="o">=</span> <span class="n">label</span> <span class="ow">or</span> <span class="n">sitelink</span> </span><span id="L-802"><a href="#L-802"><span class="linenos" data-line="802"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">gender</span> <span class="o">==</span> <span class="s1">&#39;feminineform&#39;</span> <span class="kr">then</span> </span><span id="L-803"><a href="#L-803"><span class="linenos" data-line="803"></span></a> <span class="n">labelcase</span> <span class="o">=</span> <span class="n">feminineForm</span><span class="p">(</span><span class="n">entity_id</span><span class="p">,</span> <span class="n">lang</span><span class="p">)</span> <span class="ow">or</span> <span class="n">labelcase</span> </span><span id="L-804"><a href="#L-804"><span class="linenos" data-line="804"></span></a> <span class="kr">end</span> </span><span id="L-805"><a href="#L-805"><span class="linenos" data-line="805"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">case</span> <span class="o">~=</span> <span class="s1">&#39;gender&#39;</span> <span class="kr">then</span> </span><span id="L-806"><a href="#L-806"><span class="linenos" data-line="806"></span></a> <span class="n">labelcase</span> <span class="o">=</span> <span class="n">case</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">case</span><span class="p">,</span> <span class="n">labelcase</span><span class="p">,</span> <span class="n">lang</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">entity_id</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">id</span><span class="p">)</span> </span><span id="L-807"><a href="#L-807"><span class="linenos" data-line="807"></span></a> <span class="kr">end</span> </span><span id="L-808"><a href="#L-808"><span class="linenos" data-line="808"></span></a> <span class="kr">if</span> <span class="n">labelcase</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">and</span> <span class="n">i18n</span><span class="p">.</span><span class="n">qidlabels</span> <span class="o">==</span> <span class="kc">false</span> <span class="kr">then</span> </span><span id="L-809"><a href="#L-809"><span class="linenos" data-line="809"></span></a> <span class="kr">return</span> </span><span id="L-810"><a href="#L-810"><span class="linenos" data-line="810"></span></a> <span class="kr">end</span> </span><span id="L-811"><a href="#L-811"><span class="linenos" data-line="811"></span></a> <span class="kd">local</span> <span class="n">ret1</span><span class="p">,</span> <span class="n">ret2</span> </span><span id="L-812"><a href="#L-812"><span class="linenos" data-line="812"></span></a> <span class="kr">if</span> <span class="n">parameter</span> <span class="o">==</span> <span class="s1">&#39;label&#39;</span> <span class="kr">then</span> </span><span id="L-813"><a href="#L-813"><span class="linenos" data-line="813"></span></a> <span class="n">ret1</span> <span class="o">=</span> <span class="n">labelcase</span> <span class="ow">or</span> <span class="n">entity_id</span> </span><span id="L-814"><a href="#L-814"><span class="linenos" data-line="814"></span></a> <span class="n">ret2</span> <span class="o">=</span> <span class="n">labelcase</span> <span class="ow">or</span> <span class="n">entity_id</span> </span><span id="L-815"><a href="#L-815"><span class="linenos" data-line="815"></span></a> <span class="kr">elseif</span> <span class="n">parameter</span> <span class="o">==</span> <span class="s1">&#39;sitelink&#39;</span> <span class="kr">then</span> </span><span id="L-816"><a href="#L-816"><span class="linenos" data-line="816"></span></a> <span class="n">ret1</span> <span class="o">=</span> <span class="p">(</span><span class="n">sitelink</span> <span class="ow">or</span> <span class="s1">&#39;d:&#39;</span> <span class="o">..</span> <span class="n">entity_page</span><span class="p">)</span> </span><span id="L-817"><a href="#L-817"><span class="linenos" data-line="817"></span></a> <span class="n">ret2</span> <span class="o">=</span> <span class="n">sitelink</span> <span class="ow">or</span> <span class="n">entity_id</span> </span><span id="L-818"><a href="#L-818"><span class="linenos" data-line="818"></span></a> <span class="kr">elseif</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">((</span><span class="n">parameter</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">),</span> <span class="s1">&#39;$1&#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="kr">then</span> <span class="c1">-- formatting = a pattern</span> </span><span id="L-819"><a href="#L-819"><span class="linenos" data-line="819"></span></a> <span class="n">ret1</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">parameter</span><span class="p">,</span> <span class="s1">&#39;$1&#39;</span><span class="p">,</span> <span class="n">labelcase</span> <span class="ow">or</span> <span class="n">entity_id</span><span class="p">)</span> </span><span id="L-820"><a href="#L-820"><span class="linenos" data-line="820"></span></a> <span class="n">ret1</span> <span class="o">=</span> <span class="n">expandBraces</span><span class="p">(</span><span class="n">ret1</span><span class="p">,</span> <span class="n">parameter</span><span class="p">)</span> </span><span id="L-821"><a href="#L-821"><span class="linenos" data-line="821"></span></a> <span class="n">ret2</span> <span class="o">=</span> <span class="n">labelcase</span> <span class="ow">or</span> <span class="n">entity_id</span> </span><span id="L-822"><a href="#L-822"><span class="linenos" data-line="822"></span></a> <span class="kr">else</span> </span><span id="L-823"><a href="#L-823"><span class="linenos" data-line="823"></span></a> <span class="kr">if</span> <span class="n">parameter</span> <span class="o">==</span> <span class="s2">&quot;ucfirst&quot;</span> <span class="ow">or</span> <span class="n">parameter</span> <span class="o">==</span> <span class="s2">&quot;ucinternallink&quot;</span> <span class="kr">then</span> </span><span id="L-824"><a href="#L-824"><span class="linenos" data-line="824"></span></a> <span class="kr">if</span> <span class="n">labelcase</span> <span class="ow">and</span> <span class="n">lang</span> <span class="kr">then</span> </span><span id="L-825"><a href="#L-825"><span class="linenos" data-line="825"></span></a> <span class="n">labelcase</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 class="n">ucfirst</span><span class="p">(</span><span class="n">labelcase</span><span class="p">)</span> </span><span id="L-826"><a href="#L-826"><span class="linenos" data-line="826"></span></a> <span class="kr">end</span> </span><span id="L-827"><a href="#L-827"><span class="linenos" data-line="827"></span></a> <span class="c1">-- only first of a list, reset formatting for next ones</span> </span><span id="L-828"><a href="#L-828"><span class="linenos" data-line="828"></span></a> <span class="kr">if</span> <span class="n">parameter</span> <span class="o">==</span> <span class="s2">&quot;ucinterlanllink&quot;</span> <span class="kr">then</span> </span><span id="L-829"><a href="#L-829"><span class="linenos" data-line="829"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="s1">&#39;internallink&#39;</span> </span><span id="L-830"><a href="#L-830"><span class="linenos" data-line="830"></span></a> <span class="kr">else</span> </span><span id="L-831"><a href="#L-831"><span class="linenos" data-line="831"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="kc">nil</span> <span class="c1">-- default format</span> </span><span id="L-832"><a href="#L-832"><span class="linenos" data-line="832"></span></a> <span class="kr">end</span> </span><span id="L-833"><a href="#L-833"><span class="linenos" data-line="833"></span></a> <span class="kr">end</span> </span><span id="L-834"><a href="#L-834"><span class="linenos" data-line="834"></span></a> </span><span id="L-835"><a href="#L-835"><span class="linenos" data-line="835"></span></a> <span class="kr">if</span> <span class="n">sitelink</span> <span class="kr">then</span> </span><span id="L-836"><a href="#L-836"><span class="linenos" data-line="836"></span></a> <span class="n">ret1</span> <span class="o">=</span> <span class="s1">&#39;[[&#39;</span> <span class="o">..</span> <span class="n">sitelink</span> <span class="o">..</span> <span class="s1">&#39;|&#39;</span> <span class="o">..</span> <span class="n">labelcase</span> <span class="o">..</span> <span class="s1">&#39;]]&#39;</span> </span><span id="L-837"><a href="#L-837"><span class="linenos" data-line="837"></span></a> <span class="n">ret2</span> <span class="o">=</span> <span class="n">labelcase</span> </span><span id="L-838"><a href="#L-838"><span class="linenos" data-line="838"></span></a> <span class="kr">elseif</span> <span class="n">label</span> <span class="ow">and</span> <span class="nb">string.match</span><span class="p">(</span><span class="n">parameter</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="s1">&#39;internallink$&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getEntityIdForTitle</span><span class="p">(</span><span class="n">label</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-839"><a href="#L-839"><span class="linenos" data-line="839"></span></a> <span class="n">ret1</span> <span class="o">=</span> <span class="s1">&#39;[[&#39;</span> <span class="o">..</span> <span class="n">label</span> <span class="o">..</span> <span class="s1">&#39;|&#39;</span> <span class="o">..</span> <span class="n">labelcase</span> <span class="o">..</span> <span class="s1">&#39;]]&#39;</span> </span><span id="L-840"><a href="#L-840"><span class="linenos" data-line="840"></span></a> <span class="n">ret2</span> <span class="o">=</span> <span class="n">labelcase</span> </span><span id="L-841"><a href="#L-841"><span class="linenos" data-line="841"></span></a> <span class="kr">else</span> </span><span id="L-842"><a href="#L-842"><span class="linenos" data-line="842"></span></a> <span class="n">ret1</span> <span class="o">=</span> <span class="s1">&#39;[[d:&#39;</span> <span class="o">..</span> <span class="n">entity_page</span> <span class="o">..</span> <span class="s1">&#39;|&lt;span style=&quot;color:#5f9cbb;&quot;&gt;&#39;</span> <span class="o">..</span> <span class="p">(</span><span class="n">labelcase</span> <span class="ow">or</span> <span class="n">entity_id</span><span class="p">)</span> <span class="o">..</span> <span class="s1">&#39;&lt;/span&gt;]]&#39;</span> </span><span id="L-843"><a href="#L-843"><span class="linenos" data-line="843"></span></a> <span class="n">ret2</span> <span class="o">=</span> <span class="n">labelcase</span> <span class="ow">or</span> <span class="n">entity_id</span> </span><span id="L-844"><a href="#L-844"><span class="linenos" data-line="844"></span></a> <span class="kr">end</span> </span><span id="L-845"><a href="#L-845"><span class="linenos" data-line="845"></span></a> <span class="kr">end</span> </span><span id="L-846"><a href="#L-846"><span class="linenos" data-line="846"></span></a> </span><span id="L-847"><a href="#L-847"><span class="linenos" data-line="847"></span></a> <span class="kr">return</span> <span class="n">ret1</span> <span class="o">..</span> <span class="n">addLabelIcon</span><span class="p">(</span><span class="n">entity_id</span><span class="p">,</span> <span class="n">lang</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">parameters</span><span class="p">.</span><span class="n">labelicon</span><span class="p">),</span> <span class="n">ret2</span> </span><span id="L-848"><a href="#L-848"><span class="linenos" data-line="848"></span></a><span class="kr">end</span> </span><span id="L-849"><a href="#L-849"><span class="linenos" data-line="849"></span></a> </span><span id="L-850"><a href="#L-850"><span class="linenos" data-line="850"></span></a><span class="c1">-- format data type wikibase-lexeme</span> </span><span id="L-851"><a href="#L-851"><span class="linenos" data-line="851"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeLexeme</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-852"><a href="#L-852"><span class="linenos" data-line="852"></span></a> <span class="kd">local</span> <span class="n">entity_id</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span> </span><span id="L-853"><a href="#L-853"><span class="linenos" data-line="853"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;raw&#39;</span> <span class="kr">then</span> </span><span id="L-854"><a href="#L-854"><span class="linenos" data-line="854"></span></a> <span class="kr">return</span> <span class="n">entity_id</span><span class="p">,</span> <span class="n">entity_id</span> </span><span id="L-855"><a href="#L-855"><span class="linenos" data-line="855"></span></a> <span class="kr">end</span> </span><span id="L-856"><a href="#L-856"><span class="linenos" data-line="856"></span></a> <span class="kd">local</span> <span class="n">lemmas</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getEntity</span><span class="p">(</span><span class="n">entity_id</span><span class="p">):</span><span class="n">getLemmas</span><span class="p">()</span> </span><span id="L-857"><a href="#L-857"><span class="linenos" data-line="857"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">==</span> <span class="s1">&#39;lang&#39;</span> <span class="ow">and</span> <span class="n">lemmas</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">~=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-858"><a href="#L-858"><span class="linenos" data-line="858"></span></a> <span class="kr">return</span> </span><span id="L-859"><a href="#L-859"><span class="linenos" data-line="859"></span></a> <span class="kr">end</span> </span><span id="L-860"><a href="#L-860"><span class="linenos" data-line="860"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="s1">&#39;[[d:Special:EntityPage/&#39;</span> <span class="o">..</span> <span class="n">entity_id</span> <span class="o">..</span> <span class="s1">&#39;|&lt;span style=&quot;color:#5f9cbb;&quot;&gt;&#39;</span> <span class="o">..</span> <span class="n">lemmas</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;&lt;/span&gt;]]&#39;</span> </span><span id="L-861"><a href="#L-861"><span class="linenos" data-line="861"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">~=</span> <span class="s1">&#39;lang&#39;</span> <span class="ow">or</span> <span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">==</span> <span class="s1">&#39;lang&#39;</span> <span class="ow">and</span> <span class="n">lemmas</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">~=</span> <span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-862"><a href="#L-862"><span class="linenos" data-line="862"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">ret</span> <span class="o">..</span> <span class="s2">&quot; &lt;sup&gt;(&quot;</span> <span class="o">..</span> <span class="n">lemmas</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">..</span> <span class="s2">&quot;)&lt;/sup&gt;&quot;</span> </span><span id="L-863"><a href="#L-863"><span class="linenos" data-line="863"></span></a> <span class="kr">end</span> </span><span id="L-864"><a href="#L-864"><span class="linenos" data-line="864"></span></a> <span class="kr">return</span> <span class="n">ret</span><span class="p">,</span> <span class="n">entity_id</span> </span><span id="L-865"><a href="#L-865"><span class="linenos" data-line="865"></span></a><span class="kr">end</span> </span><span id="L-866"><a href="#L-866"><span class="linenos" data-line="866"></span></a> </span><span id="L-867"><a href="#L-867"><span class="linenos" data-line="867"></span></a><span class="c1">-- format data type monolingualtext</span> </span><span id="L-868"><a href="#L-868"><span class="linenos" data-line="868"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printDatatypeMonolingual</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-869"><a href="#L-869"><span class="linenos" data-line="869"></span></a> <span class="c1">-- data fields: language [string], text [string]</span> </span><span id="L-870"><a href="#L-870"><span class="linenos" data-line="870"></span></a> </span><span id="L-871"><a href="#L-871"><span class="linenos" data-line="871"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">==</span> <span class="s2">&quot;lang&quot;</span> <span class="ow">and</span> <span class="n">data</span><span class="p">[</span><span class="s2">&quot;language&quot;</span><span class="p">]</span> <span class="o">~=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-872"><a href="#L-872"><span class="linenos" data-line="872"></span></a> <span class="kr">return</span> </span><span id="L-873"><a href="#L-873"><span class="linenos" data-line="873"></span></a> <span class="kr">elseif</span> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">==</span> <span class="s2">&quot;notlang&quot;</span> <span class="ow">and</span> <span class="n">data</span><span class="p">[</span><span class="s2">&quot;language&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-874"><a href="#L-874"><span class="linenos" data-line="874"></span></a> <span class="kr">return</span> </span><span id="L-875"><a href="#L-875"><span class="linenos" data-line="875"></span></a> <span class="kr">elseif</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s2">&quot;language&quot;</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s2">&quot;text&quot;</span> <span class="kr">then</span> </span><span id="L-876"><a href="#L-876"><span class="linenos" data-line="876"></span></a> <span class="kr">return</span> <span class="n">data</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span><span class="p">]</span> </span><span id="L-877"><a href="#L-877"><span class="linenos" data-line="877"></span></a> <span class="kr">end</span> </span><span id="L-878"><a href="#L-878"><span class="linenos" data-line="878"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s2">&quot;text&quot;</span><span class="p">]</span> </span><span id="L-879"><a href="#L-879"><span class="linenos" data-line="879"></span></a> <span class="kr">if</span> <span class="n">data</span><span class="p">[</span><span class="s2">&quot;language&quot;</span><span class="p">]</span> <span class="o">~=</span> <span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span> <span class="kr">then</span> </span><span id="L-880"><a href="#L-880"><span class="linenos" data-line="880"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="s1">&#39;&lt;span lang=&quot;$1&quot;&gt;$2&lt;/span&gt;&#39;</span><span class="p">,</span> <span class="s1">&#39;$[12]&#39;</span><span class="p">,</span> <span class="p">{[</span><span class="s2">&quot;$1&quot;</span><span class="p">]</span><span class="o">=</span><span class="n">data</span><span class="p">[</span><span class="s2">&quot;language&quot;</span><span class="p">],</span> <span class="p">[</span><span class="s2">&quot;$2&quot;</span><span class="p">]</span><span class="o">=</span><span class="n">data</span><span class="p">[</span><span class="s2">&quot;text&quot;</span><span class="p">]})</span> </span><span id="L-881"><a href="#L-881"><span class="linenos" data-line="881"></span></a> <span class="kr">end</span> </span><span id="L-882"><a href="#L-882"><span class="linenos" data-line="882"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">((</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</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="kr">then</span> </span><span id="L-883"><a href="#L-883"><span class="linenos" data-line="883"></span></a> <span class="c1">-- output format defined with $text, $language</span> </span><span id="L-884"><a href="#L-884"><span class="linenos" data-line="884"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span><span class="p">,</span> <span class="s1">&#39;$text&#39;</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> </span><span id="L-885"><a href="#L-885"><span class="linenos" data-line="885"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="s1">&#39;$language&#39;</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="s2">&quot;language&quot;</span><span class="p">])</span> </span><span id="L-886"><a href="#L-886"><span class="linenos" data-line="886"></span></a> <span class="kr">end</span> </span><span id="L-887"><a href="#L-887"><span class="linenos" data-line="887"></span></a> <span class="kr">return</span> <span class="n">result</span> </span><span id="L-888"><a href="#L-888"><span class="linenos" data-line="888"></span></a><span class="kr">end</span> </span><span id="L-889"><a href="#L-889"><span class="linenos" data-line="889"></span></a> </span><span id="L-890"><a href="#L-890"><span class="linenos" data-line="890"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getSnakValue</span><span class="p">(</span><span class="n">snak</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-891"><a href="#L-891"><span class="linenos" data-line="891"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">editbridge</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-892"><a href="#L-892"><span class="linenos" data-line="892"></span></a> <span class="kr">if</span> <span class="n">snak</span><span class="p">.</span><span class="n">snaktype</span> <span class="o">==</span> <span class="s1">&#39;value&#39;</span> <span class="kr">then</span> <span class="c1">-- see Special:ListDatatypes</span> </span><span id="L-893"><a href="#L-893"><span class="linenos" data-line="893"></span></a> <span class="c1">-- data value string</span> </span><span id="L-894"><a href="#L-894"><span class="linenos" data-line="894"></span></a> <span class="kr">if</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;string&quot;</span> <span class="kr">then</span> </span><span id="L-895"><a href="#L-895"><span class="linenos" data-line="895"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">editbridge</span> <span class="o">=</span> <span class="kc">true</span> <span class="c1">-- Wikidata Bridge currently only for string values</span> </span><span id="L-896"><a href="#L-896"><span class="linenos" data-line="896"></span></a> <span class="kr">return</span> <span class="n">printDatatypeString</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-897"><a href="#L-897"><span class="linenos" data-line="897"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;commonsMedia&quot;</span> <span class="ow">or</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;geo-shape&quot;</span> <span class="kr">then</span> </span><span id="L-898"><a href="#L-898"><span class="linenos" data-line="898"></span></a> <span class="kr">return</span> <span class="n">printDatatypeMedia</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-899"><a href="#L-899"><span class="linenos" data-line="899"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;tabular-data&quot;</span> <span class="kr">then</span> </span><span id="L-900"><a href="#L-900"><span class="linenos" data-line="900"></span></a> <span class="kr">return</span> <span class="n">printDatatypeTabular</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-901"><a href="#L-901"><span class="linenos" data-line="901"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;url&quot;</span> <span class="kr">then</span> </span><span id="L-902"><a href="#L-902"><span class="linenos" data-line="902"></span></a> <span class="kr">return</span> <span class="n">printDatatypeUrl</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-903"><a href="#L-903"><span class="linenos" data-line="903"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;external-id&quot;</span> <span class="kr">then</span> </span><span id="L-904"><a href="#L-904"><span class="linenos" data-line="904"></span></a> <span class="kr">return</span> <span class="n">printDatatypeExternal</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-905"><a href="#L-905"><span class="linenos" data-line="905"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s1">&#39;math&#39;</span> <span class="kr">then</span> </span><span id="L-906"><a href="#L-906"><span class="linenos" data-line="906"></span></a> <span class="kr">return</span> <span class="n">printDatatypeMath</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">)</span> </span><span id="L-907"><a href="#L-907"><span class="linenos" data-line="907"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s1">&#39;musical-notation&#39;</span> <span class="kr">then</span> </span><span id="L-908"><a href="#L-908"><span class="linenos" data-line="908"></span></a> <span class="kr">return</span> <span class="n">printDatatypeMusical</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span><span class="p">)</span> </span><span id="L-909"><a href="#L-909"><span class="linenos" data-line="909"></span></a> <span class="c1">-- data types other than string value</span> </span><span id="L-910"><a href="#L-910"><span class="linenos" data-line="910"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s1">&#39;wikibase-item&#39;</span> <span class="ow">or</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s1">&#39;wikibase-property&#39;</span> <span class="kr">then</span> </span><span id="L-911"><a href="#L-911"><span class="linenos" data-line="911"></span></a> <span class="kr">if</span> <span class="n">i18n</span><span class="p">.</span><span class="n">suppress</span><span class="p">[</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">.</span><span class="n">id</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-912"><a href="#L-912"><span class="linenos" data-line="912"></span></a> <span class="kr">return</span> </span><span id="L-913"><a href="#L-913"><span class="linenos" data-line="913"></span></a> <span class="kr">end</span> </span><span id="L-914"><a href="#L-914"><span class="linenos" data-line="914"></span></a> <span class="kr">return</span> <span class="n">printDatatypeEntity</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-915"><a href="#L-915"><span class="linenos" data-line="915"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s1">&#39;wikibase-lexeme&#39;</span> <span class="kr">then</span> </span><span id="L-916"><a href="#L-916"><span class="linenos" data-line="916"></span></a> <span class="kr">return</span> <span class="n">printDatatypeLexeme</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-917"><a href="#L-917"><span class="linenos" data-line="917"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s1">&#39;monolingualtext&#39;</span> <span class="kr">then</span> </span><span id="L-918"><a href="#L-918"><span class="linenos" data-line="918"></span></a> <span class="kr">return</span> <span class="n">printDatatypeMonolingual</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-919"><a href="#L-919"><span class="linenos" data-line="919"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;globe-coordinate&quot;</span> <span class="kr">then</span> </span><span id="L-920"><a href="#L-920"><span class="linenos" data-line="920"></span></a> <span class="kr">return</span> <span class="n">printDatatypeCoordinate</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span><span class="p">)</span> </span><span id="L-921"><a href="#L-921"><span class="linenos" data-line="921"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;quantity&quot;</span> <span class="kr">then</span> </span><span id="L-922"><a href="#L-922"><span class="linenos" data-line="922"></span></a> <span class="kr">return</span> <span class="n">printDatatypeQuantity</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-923"><a href="#L-923"><span class="linenos" data-line="923"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;time&quot;</span> <span class="kr">then</span> </span><span id="L-924"><a href="#L-924"><span class="linenos" data-line="924"></span></a> <span class="kr">return</span> <span class="n">printDatatypeTime</span><span class="p">(</span><span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-925"><a href="#L-925"><span class="linenos" data-line="925"></span></a> <span class="kr">end</span> </span><span id="L-926"><a href="#L-926"><span class="linenos" data-line="926"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">snaktype</span> <span class="o">==</span> <span class="s1">&#39;novalue&#39;</span> <span class="kr">then</span> </span><span id="L-927"><a href="#L-927"><span class="linenos" data-line="927"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;raw&#39;</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">shownovalue</span> <span class="o">==</span> <span class="kc">false</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-928"><a href="#L-928"><span class="linenos" data-line="928"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Wikibase-snakview-snaktypeselector-novalue&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span><span class="n">plain</span><span class="p">()</span> </span><span id="L-929"><a href="#L-929"><span class="linenos" data-line="929"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">snaktype</span> <span class="o">==</span> <span class="s1">&#39;somevalue&#39;</span> <span class="kr">then</span> </span><span id="L-930"><a href="#L-930"><span class="linenos" data-line="930"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;raw&#39;</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">showsomevalue</span> <span class="o">==</span> <span class="kc">false</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-931"><a href="#L-931"><span class="linenos" data-line="931"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Wikibase-snakview-snaktypeselector-somevalue&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span><span class="n">plain</span><span class="p">()</span> </span><span id="L-932"><a href="#L-932"><span class="linenos" data-line="932"></span></a> <span class="kr">end</span> </span><span id="L-933"><a href="#L-933"><span class="linenos" data-line="933"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">renderSnak</span><span class="p">(</span><span class="n">snak</span><span class="p">)</span> </span><span id="L-934"><a href="#L-934"><span class="linenos" data-line="934"></span></a><span class="kr">end</span> </span><span id="L-935"><a href="#L-935"><span class="linenos" data-line="935"></span></a> </span><span id="L-936"><a href="#L-936"><span class="linenos" data-line="936"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">printError</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> </span><span id="L-937"><a href="#L-937"><span class="linenos" data-line="937"></span></a> <span class="kr">return</span> <span class="s1">&#39;&lt;span class=&quot;error&quot;&gt;&#39;</span> <span class="o">..</span> <span class="n">i18n</span><span class="p">.</span><span class="n">errors</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">..</span> <span class="s1">&#39;&lt;/span&gt;&#39;</span> </span><span id="L-938"><a href="#L-938"><span class="linenos" data-line="938"></span></a><span class="kr">end</span> </span><span id="L-939"><a href="#L-939"><span class="linenos" data-line="939"></span></a> </span><span id="L-940"><a href="#L-940"><span class="linenos" data-line="940"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getQualifierSnak</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">qualifierId</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-941"><a href="#L-941"><span class="linenos" data-line="941"></span></a> <span class="c1">-- a &quot;snak&quot; is Wikidata terminology for a typed key/value pair</span> </span><span id="L-942"><a href="#L-942"><span class="linenos" data-line="942"></span></a> <span class="c1">-- a claim consists of a main snak holding the main information of this claim,</span> </span><span id="L-943"><a href="#L-943"><span class="linenos" data-line="943"></span></a> <span class="c1">-- as well as a list of attribute snaks and a list of references snaks</span> </span><span id="L-944"><a href="#L-944"><span class="linenos" data-line="944"></span></a> <span class="kr">if</span> <span class="n">qualifierId</span> <span class="kr">then</span> </span><span id="L-945"><a href="#L-945"><span class="linenos" data-line="945"></span></a> <span class="c1">-- search the attribute snak with the given qualifier as key</span> </span><span id="L-946"><a href="#L-946"><span class="linenos" data-line="946"></span></a> <span class="kr">if</span> <span class="n">claim</span><span class="p">.</span><span class="n">qualifiers</span> <span class="kr">then</span> </span><span id="L-947"><a href="#L-947"><span class="linenos" data-line="947"></span></a> <span class="kd">local</span> <span class="n">qualifier</span> <span class="o">=</span> <span class="n">claim</span><span class="p">.</span><span class="n">qualifiers</span><span class="p">[</span><span class="n">qualifierId</span><span class="p">]</span> </span><span id="L-948"><a href="#L-948"><span class="linenos" data-line="948"></span></a> <span class="kr">if</span> <span class="n">qualifier</span> <span class="kr">then</span> </span><span id="L-949"><a href="#L-949"><span class="linenos" data-line="949"></span></a> <span class="kr">if</span> <span class="n">qualifier</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;monolingualtext&quot;</span> <span class="kr">then</span> </span><span id="L-950"><a href="#L-950"><span class="linenos" data-line="950"></span></a> <span class="c1">-- iterate over monolingualtext qualifiers to get local language</span> </span><span id="L-951"><a href="#L-951"><span class="linenos" data-line="951"></span></a> <span class="kr">for</span> <span class="n">idx</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">qualifier</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-952"><a href="#L-952"><span class="linenos" data-line="952"></span></a> <span class="kr">if</span> <span class="n">getSnak</span><span class="p">(</span><span class="n">qualifier</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> <span class="p">{</span><span class="s2">&quot;datavalue&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">,</span> <span class="s2">&quot;language&quot;</span><span class="p">})</span> <span class="o">==</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-953"><a href="#L-953"><span class="linenos" data-line="953"></span></a> <span class="kr">return</span> <span class="n">qualifier</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span> </span><span id="L-954"><a href="#L-954"><span class="linenos" data-line="954"></span></a> <span class="kr">end</span> </span><span id="L-955"><a href="#L-955"><span class="linenos" data-line="955"></span></a> <span class="kr">end</span> </span><span id="L-956"><a href="#L-956"><span class="linenos" data-line="956"></span></a> <span class="kr">elseif</span> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="kr">then</span> </span><span id="L-957"><a href="#L-957"><span class="linenos" data-line="957"></span></a> <span class="kr">return</span> <span class="n">qualifier</span> </span><span id="L-958"><a href="#L-958"><span class="linenos" data-line="958"></span></a> <span class="kr">else</span> </span><span id="L-959"><a href="#L-959"><span class="linenos" data-line="959"></span></a> <span class="kr">return</span> <span class="n">qualifier</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-960"><a href="#L-960"><span class="linenos" data-line="960"></span></a> <span class="kr">end</span> </span><span id="L-961"><a href="#L-961"><span class="linenos" data-line="961"></span></a> <span class="kr">end</span> </span><span id="L-962"><a href="#L-962"><span class="linenos" data-line="962"></span></a> <span class="kr">end</span> </span><span id="L-963"><a href="#L-963"><span class="linenos" data-line="963"></span></a> <span class="kr">return</span> <span class="kc">nil</span><span class="p">,</span> <span class="n">printError</span><span class="p">(</span><span class="s2">&quot;qualifier-not-found&quot;</span><span class="p">)</span> </span><span id="L-964"><a href="#L-964"><span class="linenos" data-line="964"></span></a> <span class="kr">else</span> </span><span id="L-965"><a href="#L-965"><span class="linenos" data-line="965"></span></a> <span class="c1">-- otherwise return the main snak</span> </span><span id="L-966"><a href="#L-966"><span class="linenos" data-line="966"></span></a> <span class="kr">return</span> <span class="n">claim</span><span class="p">.</span><span class="n">mainsnak</span> </span><span id="L-967"><a href="#L-967"><span class="linenos" data-line="967"></span></a> <span class="kr">end</span> </span><span id="L-968"><a href="#L-968"><span class="linenos" data-line="968"></span></a><span class="kr">end</span> </span><span id="L-969"><a href="#L-969"><span class="linenos" data-line="969"></span></a> </span><span id="L-970"><a href="#L-970"><span class="linenos" data-line="970"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getValueOfClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">qualifierId</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-971"><a href="#L-971"><span class="linenos" data-line="971"></span></a> <span class="kd">local</span> <span class="n">snak</span><span class="p">,</span> <span class="nb">error</span> <span class="o">=</span> <span class="n">getQualifierSnak</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">qualifierId</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-972"><a href="#L-972"><span class="linenos" data-line="972"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">snak</span> <span class="kr">then</span> </span><span id="L-973"><a href="#L-973"><span class="linenos" data-line="973"></span></a> <span class="kr">return</span> <span class="kc">nil</span><span class="p">,</span> <span class="kc">nil</span><span class="p">,</span> <span class="nb">error</span> </span><span id="L-974"><a href="#L-974"><span class="linenos" data-line="974"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="kr">then</span> <span class="c1">-- a multi qualifier</span> </span><span id="L-975"><a href="#L-975"><span class="linenos" data-line="975"></span></a> <span class="kd">local</span> <span class="n">result</span><span class="p">,</span> <span class="n">sortkey</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">{}</span> </span><span id="L-976"><a href="#L-976"><span class="linenos" data-line="976"></span></a> <span class="kd">local</span> <span class="n">maxvals</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">listmax</span><span class="p">)</span> </span><span id="L-977"><a href="#L-977"><span class="linenos" data-line="977"></span></a> <span class="kr">for</span> <span class="n">idx</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">snak</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-978"><a href="#L-978"><span class="linenos" data-line="978"></span></a> <span class="n">result</span><span class="p">[</span><span class="o">#</span><span class="n">result</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="n">sortkey</span><span class="p">[</span><span class="o">#</span><span class="n">sortkey</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">getSnakValue</span><span class="p">(</span><span class="n">snak</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-979"><a href="#L-979"><span class="linenos" data-line="979"></span></a> <span class="kr">if</span> <span class="n">maxvals</span> <span class="ow">and</span> <span class="n">maxvals</span> <span class="o">==</span> <span class="o">#</span><span class="n">result</span> <span class="kr">then</span> <span class="kr">break</span> <span class="kr">end</span> </span><span id="L-980"><a href="#L-980"><span class="linenos" data-line="980"></span></a> <span class="kr">end</span> </span><span id="L-981"><a href="#L-981"><span class="linenos" data-line="981"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">listToText</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">qseparator</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">qconjunction</span><span class="p">),</span> <span class="n">sortkey</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-982"><a href="#L-982"><span class="linenos" data-line="982"></span></a> <span class="kr">else</span> <span class="c1">-- a property or a qualifier</span> </span><span id="L-983"><a href="#L-983"><span class="linenos" data-line="983"></span></a> <span class="kr">return</span> <span class="n">getSnakValue</span><span class="p">(</span><span class="n">snak</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-984"><a href="#L-984"><span class="linenos" data-line="984"></span></a> <span class="kr">end</span> </span><span id="L-985"><a href="#L-985"><span class="linenos" data-line="985"></span></a><span class="kr">end</span> </span><span id="L-986"><a href="#L-986"><span class="linenos" data-line="986"></span></a> </span><span id="L-987"><a href="#L-987"><span class="linenos" data-line="987"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getValueOfParentClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">qualifierId</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-988"><a href="#L-988"><span class="linenos" data-line="988"></span></a> <span class="kd">local</span> <span class="n">qids</span> <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">split</span><span class="p">(</span><span class="n">qualifierId</span><span class="p">,</span> <span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-989"><a href="#L-989"><span class="linenos" data-line="989"></span></a> <span class="kd">local</span> <span class="n">value</span><span class="p">,</span> <span class="n">sortkey</span><span class="p">,</span> <span class="n">valueraw</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">{},</span> <span class="p">{}</span> </span><span id="L-990"><a href="#L-990"><span class="linenos" data-line="990"></span></a> <span class="kd">local</span> <span class="n">parent_raw</span><span class="p">,</span> <span class="n">value_text</span> </span><span id="L-991"><a href="#L-991"><span class="linenos" data-line="991"></span></a> <span class="kr">if</span> <span class="n">qids</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">parameters</span><span class="p">.</span><span class="n">property</span> <span class="kr">then</span> </span><span id="L-992"><a href="#L-992"><span class="linenos" data-line="992"></span></a> <span class="n">parent_raw</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="kc">nil</span><span class="p">,</span> <span class="p">{[</span><span class="s2">&quot;formatting&quot;</span><span class="p">]</span><span class="o">=</span><span class="s2">&quot;raw&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;lang&quot;</span><span class="p">]</span><span class="o">=</span><span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">})</span> </span><span id="L-993"><a href="#L-993"><span class="linenos" data-line="993"></span></a> <span class="kr">else</span> </span><span id="L-994"><a href="#L-994"><span class="linenos" data-line="994"></span></a> <span class="n">parent_raw</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">qids</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">{[</span><span class="s2">&quot;formatting&quot;</span><span class="p">]</span><span class="o">=</span><span class="s2">&quot;raw&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;lang&quot;</span><span class="p">]</span><span class="o">=</span><span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;list&quot;</span><span class="p">]</span><span class="o">=</span><span class="kc">true</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;qseparator&quot;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;qconjunction&quot;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;/&#39;</span><span class="p">})</span> </span><span id="L-995"><a href="#L-995"><span class="linenos" data-line="995"></span></a> <span class="kr">end</span> </span><span id="L-996"><a href="#L-996"><span class="linenos" data-line="996"></span></a> <span class="kr">if</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">parent_raw</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</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="s2">&quot;Q&quot;</span> <span class="kr">then</span> <span class="c1">-- protection for &#39;no value&#39;</span> </span><span id="L-997"><a href="#L-997"><span class="linenos" data-line="997"></span></a> <span class="kd">local</span> <span class="n">parent_qids</span> <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">split</span><span class="p">(</span><span class="n">parent_raw</span><span class="p">,</span> <span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-998"><a href="#L-998"><span class="linenos" data-line="998"></span></a> <span class="kr">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">p_qid</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">parent_qids</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-999"><a href="#L-999"><span class="linenos" data-line="999"></span></a> <span class="kd">local</span> <span class="n">parent_claims</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getBestStatements</span><span class="p">(</span><span class="n">p_qid</span><span class="p">,</span> <span class="n">qids</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> </span><span id="L-1000"><a href="#L-1000"><span class="linenos" data-line="1000"></span></a> <span class="kr">if</span> <span class="n">parent_claims</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1001"><a href="#L-1001"><span class="linenos" data-line="1001"></span></a> <span class="n">value</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> <span class="n">sortkey</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> <span class="n">_</span> <span class="o">=</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">parent_claims</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="kc">nil</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-1002"><a href="#L-1002"><span class="linenos" data-line="1002"></span></a> <span class="c1">-- raw parent value needed for while/black lists, lang for avoiding an error on types other than entity</span> </span><span id="L-1003"><a href="#L-1003"><span class="linenos" data-line="1003"></span></a> <span class="n">valueraw</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">parent_claims</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="kc">nil</span><span class="p">,</span> <span class="p">{[</span><span class="s2">&quot;formatting&quot;</span><span class="p">]</span><span class="o">=</span><span class="s2">&quot;raw&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;lang&quot;</span><span class="p">]</span><span class="o">=</span><span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">})</span> </span><span id="L-1004"><a href="#L-1004"><span class="linenos" data-line="1004"></span></a> <span class="kr">end</span> </span><span id="L-1005"><a href="#L-1005"><span class="linenos" data-line="1005"></span></a> <span class="kr">end</span> </span><span id="L-1006"><a href="#L-1006"><span class="linenos" data-line="1006"></span></a> <span class="kr">end</span> </span><span id="L-1007"><a href="#L-1007"><span class="linenos" data-line="1007"></span></a> <span class="kr">if</span> <span class="n">value</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1008"><a href="#L-1008"><span class="linenos" data-line="1008"></span></a> <span class="n">value_text</span> <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">listToText</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">qseparator</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">qconjunction</span><span class="p">)</span> </span><span id="L-1009"><a href="#L-1009"><span class="linenos" data-line="1009"></span></a> <span class="kr">end</span> </span><span id="L-1010"><a href="#L-1010"><span class="linenos" data-line="1010"></span></a> <span class="kr">return</span> <span class="n">value_text</span><span class="p">,</span> <span class="n">sortkey</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">valueraw</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-1011"><a href="#L-1011"><span class="linenos" data-line="1011"></span></a><span class="kr">end</span> </span><span id="L-1012"><a href="#L-1012"><span class="linenos" data-line="1012"></span></a> </span><span id="L-1013"><a href="#L-1013"><span class="linenos" data-line="1013"></span></a><span class="c1">-- see d:Help:Sources</span> </span><span id="L-1014"><a href="#L-1014"><span class="linenos" data-line="1014"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getReferences</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-1015"><a href="#L-1015"><span class="linenos" data-line="1015"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">references</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">onlysourced</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1016"><a href="#L-1016"><span class="linenos" data-line="1016"></span></a> <span class="kr">return</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="kc">false</span> </span><span id="L-1017"><a href="#L-1017"><span class="linenos" data-line="1017"></span></a> <span class="kr">end</span> </span><span id="L-1018"><a href="#L-1018"><span class="linenos" data-line="1018"></span></a> <span class="kd">local</span> <span class="n">lang</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span> </span><span id="L-1019"><a href="#L-1019"><span class="linenos" data-line="1019"></span></a> <span class="kd">local</span> <span class="n">maxrefs</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">references</span><span class="p">)</span> <span class="ow">or</span> <span class="mi">1</span> </span><span id="L-1020"><a href="#L-1020"><span class="linenos" data-line="1020"></span></a> <span class="kd">local</span> <span class="n">notproperref</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-1021"><a href="#L-1021"><span class="linenos" data-line="1021"></span></a> <span class="p">[</span><span class="s2">&quot;P143&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> <span class="c1">-- imported from</span> </span><span id="L-1022"><a href="#L-1022"><span class="linenos" data-line="1022"></span></a> <span class="p">[</span><span class="s2">&quot;P3452&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> <span class="c1">-- inferred from</span> </span><span id="L-1023"><a href="#L-1023"><span class="linenos" data-line="1023"></span></a> <span class="p">[</span><span class="s2">&quot;P887&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> <span class="c1">-- based on heuristic</span> </span><span id="L-1024"><a href="#L-1024"><span class="linenos" data-line="1024"></span></a> <span class="p">[</span><span class="s2">&quot;P4656&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> <span class="c1">-- Wikimedia import URL</span> </span><span id="L-1025"><a href="#L-1025"><span class="linenos" data-line="1025"></span></a> <span class="p">}</span> </span><span id="L-1026"><a href="#L-1026"><span class="linenos" data-line="1026"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1027"><a href="#L-1027"><span class="linenos" data-line="1027"></span></a> <span class="c1">-- traverse through all references</span> </span><span id="L-1028"><a href="#L-1028"><span class="linenos" data-line="1028"></span></a> <span class="kr">for</span> <span class="n">ref</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">claim</span><span class="p">.</span><span class="n">references</span> <span class="ow">or</span> <span class="p">{})</span> <span class="kr">do</span> </span><span id="L-1029"><a href="#L-1029"><span class="linenos" data-line="1029"></span></a> <span class="kd">local</span> <span class="n">refparts</span> </span><span id="L-1030"><a href="#L-1030"><span class="linenos" data-line="1030"></span></a> <span class="kd">local</span> <span class="n">refs</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1031"><a href="#L-1031"><span class="linenos" data-line="1031"></span></a> <span class="kd">local</span> <span class="n">validref</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1032"><a href="#L-1032"><span class="linenos" data-line="1032"></span></a> <span class="kd">local</span> <span class="n">ref_id</span> </span><span id="L-1033"><a href="#L-1033"><span class="linenos" data-line="1033"></span></a> <span class="c1">-- traverse through all parts of the current reference</span> </span><span id="L-1034"><a href="#L-1034"><span class="linenos" data-line="1034"></span></a> <span class="kr">for</span> <span class="n">snakkey</span><span class="p">,</span> <span class="n">snakval</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">claim</span><span class="p">.</span><span class="n">references</span><span class="p">[</span><span class="n">ref</span><span class="p">].</span><span class="n">snaks</span> <span class="ow">or</span> <span class="p">{})</span> <span class="kr">do</span> </span><span id="L-1035"><a href="#L-1035"><span class="linenos" data-line="1035"></span></a> <span class="kr">for</span> <span class="n">partkey</span><span class="p">,</span> <span class="n">_</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">claim</span><span class="p">.</span><span class="n">references</span><span class="p">[</span><span class="n">ref</span><span class="p">].</span><span class="n">snaks</span><span class="p">[</span><span class="n">snakkey</span><span class="p">]</span> <span class="ow">or</span> <span class="p">{})</span> <span class="kr">do</span> </span><span id="L-1036"><a href="#L-1036"><span class="linenos" data-line="1036"></span></a> <span class="kr">if</span> <span class="n">notproperref</span><span class="p">[</span><span class="n">snakkey</span><span class="p">]</span> <span class="kr">then</span> <span class="c1">-- not a proper reference</span> </span><span id="L-1037"><a href="#L-1037"><span class="linenos" data-line="1037"></span></a> <span class="n">validref</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1038"><a href="#L-1038"><span class="linenos" data-line="1038"></span></a> <span class="kr">break</span> </span><span id="L-1039"><a href="#L-1039"><span class="linenos" data-line="1039"></span></a> <span class="kr">end</span> </span><span id="L-1040"><a href="#L-1040"><span class="linenos" data-line="1040"></span></a> <span class="kr">end</span> </span><span id="L-1041"><a href="#L-1041"><span class="linenos" data-line="1041"></span></a> <span class="kr">if</span> <span class="n">validref</span> <span class="kr">then</span> </span><span id="L-1042"><a href="#L-1042"><span class="linenos" data-line="1042"></span></a> <span class="kr">for</span> <span class="n">snakidx</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="o">#</span><span class="n">snakval</span> <span class="kr">do</span> </span><span id="L-1043"><a href="#L-1043"><span class="linenos" data-line="1043"></span></a> <span class="kr">if</span> <span class="n">snakidx</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="kr">then</span> <span class="n">refparts</span> <span class="o">=</span> <span class="n">refparts</span> <span class="o">..</span> <span class="s2">&quot;, &quot;</span> <span class="kr">end</span> </span><span id="L-1044"><a href="#L-1044"><span class="linenos" data-line="1044"></span></a> <span class="kr">if</span> <span class="n">snakval</span><span class="p">[</span><span class="n">snakidx</span><span class="p">].</span><span class="n">datatype</span> <span class="o">==</span> <span class="s1">&#39;external-id&#39;</span> <span class="kr">then</span> </span><span id="L-1045"><a href="#L-1045"><span class="linenos" data-line="1045"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="n">refparts</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> <span class="o">..</span> <span class="p">(</span><span class="n">getSnakValue</span><span class="p">(</span><span class="n">snakval</span><span class="p">[</span><span class="n">snakidx</span><span class="p">],</span> <span class="p">{</span><span class="n">formatting</span><span class="o">=</span><span class="s1">&#39;externalid&#39;</span><span class="p">,</span> <span class="n">property</span><span class="o">=</span><span class="n">snakval</span><span class="p">[</span><span class="n">snakidx</span><span class="p">].</span><span class="n">property</span><span class="p">,</span> <span class="n">lang</span><span class="o">=</span><span class="n">lang</span><span class="p">})</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> </span><span id="L-1046"><a href="#L-1046"><span class="linenos" data-line="1046"></span></a> <span class="kr">else</span> </span><span id="L-1047"><a href="#L-1047"><span class="linenos" data-line="1047"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="n">refparts</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> <span class="o">..</span> <span class="p">(</span><span class="n">getSnakValue</span><span class="p">(</span><span class="n">snakval</span><span class="p">[</span><span class="n">snakidx</span><span class="p">],</span> <span class="p">{</span><span class="n">lang</span><span class="o">=</span><span class="n">lang</span><span class="p">})</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> </span><span id="L-1048"><a href="#L-1048"><span class="linenos" data-line="1048"></span></a> <span class="kr">end</span> </span><span id="L-1049"><a href="#L-1049"><span class="linenos" data-line="1049"></span></a> <span class="kr">end</span> </span><span id="L-1050"><a href="#L-1050"><span class="linenos" data-line="1050"></span></a> <span class="n">refs</span><span class="p">[</span><span class="n">snakkey</span><span class="p">]</span> <span class="o">=</span> <span class="n">refparts</span> </span><span id="L-1051"><a href="#L-1051"><span class="linenos" data-line="1051"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1052"><a href="#L-1052"><span class="linenos" data-line="1052"></span></a> <span class="kr">if</span> <span class="n">snakkey</span> <span class="o">==</span> <span class="s2">&quot;P248&quot;</span> <span class="kr">then</span> <span class="c1">-- stated in</span> </span><span id="L-1053"><a href="#L-1053"><span class="linenos" data-line="1053"></span></a> <span class="n">ref_id</span> <span class="o">=</span> <span class="n">getSnak</span><span class="p">(</span><span class="n">snakval</span><span class="p">,</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;datavalue&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">,</span> <span class="s2">&quot;id&quot;</span><span class="p">})</span> </span><span id="L-1054"><a href="#L-1054"><span class="linenos" data-line="1054"></span></a> <span class="kr">end</span> </span><span id="L-1055"><a href="#L-1055"><span class="linenos" data-line="1055"></span></a> <span class="kr">end</span> </span><span id="L-1056"><a href="#L-1056"><span class="linenos" data-line="1056"></span></a> <span class="kr">end</span> </span><span id="L-1057"><a href="#L-1057"><span class="linenos" data-line="1057"></span></a> </span><span id="L-1058"><a href="#L-1058"><span class="linenos" data-line="1058"></span></a> <span class="c1">-- fill missing values with parent item</span> </span><span id="L-1059"><a href="#L-1059"><span class="linenos" data-line="1059"></span></a> <span class="kr">if</span> <span class="n">ref_id</span> <span class="kr">then</span> </span><span id="L-1060"><a href="#L-1060"><span class="linenos" data-line="1060"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">refParent</span><span class="p">(</span><span class="n">qid</span><span class="p">,</span> <span class="n">pid</span><span class="p">,</span> <span class="n">formatting</span><span class="p">)</span> </span><span id="L-1061"><a href="#L-1061"><span class="linenos" data-line="1061"></span></a> <span class="kd">local</span> <span class="n">snak</span> <span class="o">=</span> <span class="n">getSnak</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getBestStatements</span><span class="p">(</span><span class="n">qid</span><span class="p">,</span> <span class="n">pid</span><span class="p">),</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;mainsnak&quot;</span><span class="p">})</span> </span><span id="L-1062"><a href="#L-1062"><span class="linenos" data-line="1062"></span></a> <span class="kr">return</span> <span class="n">snak</span> <span class="ow">and</span> <span class="n">getSnakValue</span><span class="p">(</span><span class="n">snak</span><span class="p">,</span> <span class="p">{</span><span class="n">formatting</span><span class="o">=</span><span class="n">formatting</span><span class="p">,</span> <span class="n">lang</span><span class="o">=</span><span class="n">lang</span><span class="p">})</span> </span><span id="L-1063"><a href="#L-1063"><span class="linenos" data-line="1063"></span></a> <span class="kr">end</span> </span><span id="L-1064"><a href="#L-1064"><span class="linenos" data-line="1064"></span></a> </span><span id="L-1065"><a href="#L-1065"><span class="linenos" data-line="1065"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P50&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P50&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refParent</span><span class="p">(</span><span class="n">ref_id</span><span class="p">,</span> <span class="s1">&#39;P50&#39;</span><span class="p">,</span> <span class="s1">&#39;label&#39;</span><span class="p">)</span> <span class="c1">-- author</span> </span><span id="L-1066"><a href="#L-1066"><span class="linenos" data-line="1066"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P407&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P407&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refParent</span><span class="p">(</span><span class="n">ref_id</span><span class="p">,</span> <span class="s1">&#39;P407&#39;</span><span class="p">,</span> <span class="s1">&#39;label&#39;</span><span class="p">)</span> <span class="c1">-- language of work</span> </span><span id="L-1067"><a href="#L-1067"><span class="linenos" data-line="1067"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P123&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P123&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refParent</span><span class="p">(</span><span class="n">ref_id</span><span class="p">,</span> <span class="s1">&#39;P123&#39;</span><span class="p">,</span> <span class="s1">&#39;label&#39;</span><span class="p">)</span> <span class="c1">-- publisher</span> </span><span id="L-1068"><a href="#L-1068"><span class="linenos" data-line="1068"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P577&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P577&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refParent</span><span class="p">(</span><span class="n">ref_id</span><span class="p">,</span> <span class="s1">&#39;P577&#39;</span><span class="p">)</span> <span class="c1">-- date</span> </span><span id="L-1069"><a href="#L-1069"><span class="linenos" data-line="1069"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P1433&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P1433&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refParent</span><span class="p">(</span><span class="n">ref_id</span><span class="p">,</span> <span class="s1">&#39;P1433&#39;</span><span class="p">,</span> <span class="s1">&#39;label&#39;</span><span class="p">)</span> <span class="c1">-- published in</span> </span><span id="L-1070"><a href="#L-1070"><span class="linenos" data-line="1070"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P304&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P304&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refParent</span><span class="p">(</span><span class="n">ref_id</span><span class="p">,</span> <span class="s1">&#39;P304&#39;</span><span class="p">)</span> <span class="c1">-- page(s)</span> </span><span id="L-1071"><a href="#L-1071"><span class="linenos" data-line="1071"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P433&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P433&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refParent</span><span class="p">(</span><span class="n">ref_id</span><span class="p">,</span> <span class="s1">&#39;P433&#39;</span><span class="p">)</span> <span class="c1">-- issue</span> </span><span id="L-1072"><a href="#L-1072"><span class="linenos" data-line="1072"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P236&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P236&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refParent</span><span class="p">(</span><span class="n">ref_id</span><span class="p">,</span> <span class="s1">&#39;P236&#39;</span><span class="p">)</span> <span class="c1">-- ISSN</span> </span><span id="L-1073"><a href="#L-1073"><span class="linenos" data-line="1073"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P356&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P356&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refParent</span><span class="p">(</span><span class="n">ref_id</span><span class="p">,</span> <span class="s1">&#39;P356&#39;</span><span class="p">)</span> <span class="c1">-- DOI</span> </span><span id="L-1074"><a href="#L-1074"><span class="linenos" data-line="1074"></span></a> <span class="kr">end</span> </span><span id="L-1075"><a href="#L-1075"><span class="linenos" data-line="1075"></span></a> </span><span id="L-1076"><a href="#L-1076"><span class="linenos" data-line="1076"></span></a> <span class="c1">-- get title of local templates for citing references</span> </span><span id="L-1077"><a href="#L-1077"><span class="linenos" data-line="1077"></span></a> <span class="kd">local</span> <span class="n">template_web</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getSitelink</span><span class="p">(</span><span class="s1">&#39;Q5637226&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">&quot;&quot;</span> </span><span id="L-1078"><a href="#L-1078"><span class="linenos" data-line="1078"></span></a> <span class="n">template_web</span> <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">split</span><span class="p">(</span><span class="n">template_web</span><span class="p">,</span> <span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> <span class="c1">-- split off namespace from front</span> </span><span id="L-1079"><a href="#L-1079"><span class="linenos" data-line="1079"></span></a> <span class="kd">local</span> <span class="n">template_journal</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getSitelink</span><span class="p">(</span><span class="s1">&#39;Q5624899&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">&quot;&quot;</span> </span><span id="L-1080"><a href="#L-1080"><span class="linenos" data-line="1080"></span></a> <span class="n">template_journal</span> <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">split</span><span class="p">(</span><span class="n">template_journal</span><span class="p">,</span> <span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> </span><span id="L-1081"><a href="#L-1081"><span class="linenos" data-line="1081"></span></a> </span><span id="L-1082"><a href="#L-1082"><span class="linenos" data-line="1082"></span></a> <span class="kd">local</span> <span class="n">citeParams</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1083"><a href="#L-1083"><span class="linenos" data-line="1083"></span></a> <span class="kr">if</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P854&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="p">(</span><span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P1476&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P248&#39;</span><span class="p">])</span> <span class="ow">and</span> <span class="n">template_web</span> <span class="kr">then</span> </span><span id="L-1084"><a href="#L-1084"><span class="linenos" data-line="1084"></span></a> <span class="c1">-- if both &quot;reference URL&quot; and &quot;title&quot; (or &quot;stated in&quot;) are present, then use cite web template</span> </span><span id="L-1085"><a href="#L-1085"><span class="linenos" data-line="1085"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;url&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P854&#39;</span><span class="p">]</span> </span><span id="L-1086"><a href="#L-1086"><span class="linenos" data-line="1086"></span></a> <span class="kr">if</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P248&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P1476&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-1087"><a href="#L-1087"><span class="linenos" data-line="1087"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;title&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P248&#39;</span><span class="p">]:</span><span class="n">match</span><span class="p">(</span><span class="s2">&quot;^%[%[.-|(.-)%]%]&quot;</span><span class="p">)</span> </span><span id="L-1088"><a href="#L-1088"><span class="linenos" data-line="1088"></span></a> <span class="kr">else</span> </span><span id="L-1089"><a href="#L-1089"><span class="linenos" data-line="1089"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;title&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P1476&#39;</span><span class="p">]</span> </span><span id="L-1090"><a href="#L-1090"><span class="linenos" data-line="1090"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;website&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P248&#39;</span><span class="p">]</span> </span><span id="L-1091"><a href="#L-1091"><span class="linenos" data-line="1091"></span></a> <span class="kr">end</span> </span><span id="L-1092"><a href="#L-1092"><span class="linenos" data-line="1092"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;author&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P50&#39;</span><span class="p">]</span> </span><span id="L-1093"><a href="#L-1093"><span class="linenos" data-line="1093"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;language&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P407&#39;</span><span class="p">]</span> </span><span id="L-1094"><a href="#L-1094"><span class="linenos" data-line="1094"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;publisher&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P123&#39;</span><span class="p">]</span> </span><span id="L-1095"><a href="#L-1095"><span class="linenos" data-line="1095"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;date&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P577&#39;</span><span class="p">]</span> </span><span id="L-1096"><a href="#L-1096"><span class="linenos" data-line="1096"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;pages&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P304&#39;</span><span class="p">]</span> </span><span id="L-1097"><a href="#L-1097"><span class="linenos" data-line="1097"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;access-date&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P813&#39;</span><span class="p">]</span> </span><span id="L-1098"><a href="#L-1098"><span class="linenos" data-line="1098"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;archive-url&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P1065&#39;</span><span class="p">]</span> </span><span id="L-1099"><a href="#L-1099"><span class="linenos" data-line="1099"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;archive-date&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P2960&#39;</span><span class="p">]</span> </span><span id="L-1100"><a href="#L-1100"><span class="linenos" data-line="1100"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;quote&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P1683&#39;</span><span class="p">]</span> </span><span id="L-1101"><a href="#L-1101"><span class="linenos" data-line="1101"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">getCurrentFrame</span><span class="p">():</span><span class="n">expandTemplate</span><span class="p">{</span><span class="n">title</span><span class="o">=</span><span class="n">template_web</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="n">citeParams</span><span class="p">}</span> </span><span id="L-1102"><a href="#L-1102"><span class="linenos" data-line="1102"></span></a> <span class="kr">elseif</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P1433&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="p">(</span><span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P1476&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P248&#39;</span><span class="p">])</span> <span class="ow">and</span> <span class="n">template_journal</span> <span class="kr">then</span> </span><span id="L-1103"><a href="#L-1103"><span class="linenos" data-line="1103"></span></a> <span class="c1">-- if both &quot;published in&quot; and &quot;title&quot; (or &quot;stated in&quot;) are present, then use cite journal template</span> </span><span id="L-1104"><a href="#L-1104"><span class="linenos" data-line="1104"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;work&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P1433&#39;</span><span class="p">]</span> </span><span id="L-1105"><a href="#L-1105"><span class="linenos" data-line="1105"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;title&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P1476&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P248&#39;</span><span class="p">]</span> </span><span id="L-1106"><a href="#L-1106"><span class="linenos" data-line="1106"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;author&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P50&#39;</span><span class="p">]</span> </span><span id="L-1107"><a href="#L-1107"><span class="linenos" data-line="1107"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;date&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P577&#39;</span><span class="p">]</span> </span><span id="L-1108"><a href="#L-1108"><span class="linenos" data-line="1108"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;issue&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P433&#39;</span><span class="p">]</span> </span><span id="L-1109"><a href="#L-1109"><span class="linenos" data-line="1109"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;pages&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P304&#39;</span><span class="p">]</span> </span><span id="L-1110"><a href="#L-1110"><span class="linenos" data-line="1110"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;language&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P407&#39;</span><span class="p">]</span> </span><span id="L-1111"><a href="#L-1111"><span class="linenos" data-line="1111"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;issn&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P236&#39;</span><span class="p">]</span> </span><span id="L-1112"><a href="#L-1112"><span class="linenos" data-line="1112"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">&#39;cite&#39;</span><span class="p">][</span><span class="s1">&#39;doi&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">&#39;P356&#39;</span><span class="p">]</span> </span><span id="L-1113"><a href="#L-1113"><span class="linenos" data-line="1113"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">getCurrentFrame</span><span class="p">():</span><span class="n">expandTemplate</span><span class="p">{</span><span class="n">title</span><span class="o">=</span><span class="n">template_journal</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="n">citeParams</span><span class="p">}</span> </span><span id="L-1114"><a href="#L-1114"><span class="linenos" data-line="1114"></span></a> <span class="kr">elseif</span> <span class="n">validref</span> <span class="kr">then</span> </span><span id="L-1115"><a href="#L-1115"><span class="linenos" data-line="1115"></span></a> <span class="c1">-- raw ouput</span> </span><span id="L-1116"><a href="#L-1116"><span class="linenos" data-line="1116"></span></a> <span class="kd">local</span> <span class="n">snaksorder</span> <span class="o">=</span> <span class="n">claim</span><span class="p">.</span><span class="n">references</span><span class="p">[</span><span class="n">ref</span><span class="p">][</span><span class="s2">&quot;snaks-order&quot;</span><span class="p">]</span> </span><span id="L-1117"><a href="#L-1117"><span class="linenos" data-line="1117"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">indexed</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> </span><span id="L-1118"><a href="#L-1118"><span class="linenos" data-line="1118"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">b</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">snaksorder</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1119"><a href="#L-1119"><span class="linenos" data-line="1119"></span></a> <span class="kr">if</span> <span class="n">b</span> <span class="o">==</span> <span class="n">a</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kc">true</span> <span class="kr">end</span> </span><span id="L-1120"><a href="#L-1120"><span class="linenos" data-line="1120"></span></a> <span class="kr">end</span> </span><span id="L-1121"><a href="#L-1121"><span class="linenos" data-line="1121"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-1122"><a href="#L-1122"><span class="linenos" data-line="1122"></span></a> <span class="kr">end</span> </span><span id="L-1123"><a href="#L-1123"><span class="linenos" data-line="1123"></span></a> <span class="kr">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">_</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">refs</span> <span class="ow">or</span> <span class="p">{})</span> <span class="kr">do</span> </span><span id="L-1124"><a href="#L-1124"><span class="linenos" data-line="1124"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">indexed</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1125"><a href="#L-1125"><span class="linenos" data-line="1125"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">snaksorder</span><span class="p">,</span> <span class="n">k</span><span class="p">)</span> </span><span id="L-1126"><a href="#L-1126"><span class="linenos" data-line="1126"></span></a> <span class="kr">end</span> </span><span id="L-1127"><a href="#L-1127"><span class="linenos" data-line="1127"></span></a> <span class="kr">end</span> </span><span id="L-1128"><a href="#L-1128"><span class="linenos" data-line="1128"></span></a> <span class="kd">local</span> <span class="n">italics</span> <span class="o">=</span> <span class="s2">&quot;&#39;&#39;&quot;</span> </span><span id="L-1129"><a href="#L-1129"><span class="linenos" data-line="1129"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">k</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">snaksorder</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1130"><a href="#L-1130"><span class="linenos" data-line="1130"></span></a> <span class="kr">if</span> <span class="n">refs</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1131"><a href="#L-1131"><span class="linenos" data-line="1131"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="n">refparts</span> <span class="ow">and</span> <span class="n">refparts</span> <span class="o">..</span> <span class="s2">&quot; &quot;</span> <span class="ow">or</span> <span class="s2">&quot;&quot;</span> </span><span id="L-1132"><a href="#L-1132"><span class="linenos" data-line="1132"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="n">refparts</span> <span class="o">..</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">getLabelByLangs</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">lang</span><span class="p">),</span> <span class="s2">&quot;^%l&quot;</span><span class="p">,</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">upper</span><span class="p">)</span> <span class="o">..</span> <span class="s2">&quot;: &quot;</span> </span><span id="L-1133"><a href="#L-1133"><span class="linenos" data-line="1133"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="n">refparts</span> <span class="o">..</span> <span class="n">italics</span> <span class="o">..</span> <span class="n">refs</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">..</span> <span class="n">italics</span> <span class="o">..</span> <span class="s2">&quot;.&quot;</span> </span><span id="L-1134"><a href="#L-1134"><span class="linenos" data-line="1134"></span></a> <span class="n">italics</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> </span><span id="L-1135"><a href="#L-1135"><span class="linenos" data-line="1135"></span></a> <span class="kr">end</span> </span><span id="L-1136"><a href="#L-1136"><span class="linenos" data-line="1136"></span></a> <span class="kr">end</span> </span><span id="L-1137"><a href="#L-1137"><span class="linenos" data-line="1137"></span></a> <span class="kr">end</span> </span><span id="L-1138"><a href="#L-1138"><span class="linenos" data-line="1138"></span></a> </span><span id="L-1139"><a href="#L-1139"><span class="linenos" data-line="1139"></span></a> <span class="kr">if</span> <span class="n">refparts</span> <span class="kr">then</span> </span><span id="L-1140"><a href="#L-1140"><span class="linenos" data-line="1140"></span></a> <span class="kd">local</span> <span class="n">ref_name</span> <span class="o">=</span> <span class="n">claim</span><span class="p">.</span><span class="n">references</span><span class="p">[</span><span class="n">ref</span><span class="p">].</span><span class="n">hash</span> </span><span id="L-1141"><a href="#L-1141"><span class="linenos" data-line="1141"></span></a> <span class="n">result</span><span class="p">[</span><span class="o">#</span><span class="n">result</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">getCurrentFrame</span><span class="p">():</span><span class="n">extensionTag</span><span class="p">(</span><span class="s2">&quot;ref&quot;</span><span class="p">,</span> <span class="n">refparts</span><span class="p">,</span> <span class="p">{</span><span class="n">name</span><span class="o">=</span><span class="n">ref_name</span><span class="p">})</span> </span><span id="L-1142"><a href="#L-1142"><span class="linenos" data-line="1142"></span></a> <span class="kr">if</span> <span class="n">maxrefs</span> <span class="ow">and</span> <span class="n">maxrefs</span> <span class="o">==</span> <span class="o">#</span><span class="n">result</span> <span class="kr">then</span> <span class="kr">break</span> <span class="kr">end</span> </span><span id="L-1143"><a href="#L-1143"><span class="linenos" data-line="1143"></span></a> <span class="kr">end</span> </span><span id="L-1144"><a href="#L-1144"><span class="linenos" data-line="1144"></span></a> <span class="kr">end</span> </span><span id="L-1145"><a href="#L-1145"><span class="linenos" data-line="1145"></span></a> </span><span id="L-1146"><a href="#L-1146"><span class="linenos" data-line="1146"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">result</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1147"><a href="#L-1147"><span class="linenos" data-line="1147"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">references</span> <span class="kr">then</span> </span><span id="L-1148"><a href="#L-1148"><span class="linenos" data-line="1148"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">categoryref</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1149"><a href="#L-1149"><span class="linenos" data-line="1149"></span></a> <span class="n">result</span><span class="p">[</span><span class="o">#</span><span class="n">result</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;[[&quot;</span> <span class="o">..</span><span class="n">i18n</span><span class="p">.</span><span class="n">categoryref</span> <span class="o">..</span> <span class="s2">&quot;]]&quot;</span> </span><span id="L-1150"><a href="#L-1150"><span class="linenos" data-line="1150"></span></a> <span class="kr">end</span> </span><span id="L-1151"><a href="#L-1151"><span class="linenos" data-line="1151"></span></a> <span class="kr">return</span> <span class="nb">table.concat</span><span class="p">(</span><span class="n">result</span><span class="p">),</span> <span class="kc">true</span> </span><span id="L-1152"><a href="#L-1152"><span class="linenos" data-line="1152"></span></a> <span class="kr">else</span> </span><span id="L-1153"><a href="#L-1153"><span class="linenos" data-line="1153"></span></a> <span class="kr">return</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="kc">true</span> </span><span id="L-1154"><a href="#L-1154"><span class="linenos" data-line="1154"></span></a> <span class="kr">end</span> </span><span id="L-1155"><a href="#L-1155"><span class="linenos" data-line="1155"></span></a> <span class="kr">end</span> </span><span id="L-1156"><a href="#L-1156"><span class="linenos" data-line="1156"></span></a> <span class="kr">return</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="kc">false</span> </span><span id="L-1157"><a href="#L-1157"><span class="linenos" data-line="1157"></span></a><span class="kr">end</span> </span><span id="L-1158"><a href="#L-1158"><span class="linenos" data-line="1158"></span></a> </span><span id="L-1159"><a href="#L-1159"><span class="linenos" data-line="1159"></span></a><span class="c1">-- Set whitelist or blacklist values</span> </span><span id="L-1160"><a href="#L-1160"><span class="linenos" data-line="1160"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">setWhiteOrBlackList</span><span class="p">(</span><span class="n">num_qual</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> </span><span id="L-1161"><a href="#L-1161"><span class="linenos" data-line="1161"></span></a> <span class="kd">local</span> <span class="n">lists</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">&#39;whitelist&#39;</span><span class="p">]</span><span class="o">=</span><span class="p">{},</span> <span class="p">[</span><span class="s1">&#39;blacklist&#39;</span><span class="p">]</span><span class="o">=</span><span class="p">{},</span> <span class="p">[</span><span class="s1">&#39;ignorevalue&#39;</span><span class="p">]</span><span class="o">=</span><span class="p">{},</span> <span class="p">[</span><span class="s1">&#39;selectvalue&#39;</span><span class="p">]</span><span class="o">=</span><span class="p">{}}</span> </span><span id="L-1162"><a href="#L-1162"><span class="linenos" data-line="1162"></span></a> <span class="kr">for</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">num_qual</span> <span class="kr">do</span> </span><span id="L-1163"><a href="#L-1163"><span class="linenos" data-line="1163"></span></a> <span class="kr">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">_</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">lists</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1164"><a href="#L-1164"><span class="linenos" data-line="1164"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="n">k</span> <span class="o">..</span> <span class="n">i</span><span class="p">])</span> <span class="kr">then</span> </span><span id="L-1165"><a href="#L-1165"><span class="linenos" data-line="1165"></span></a> <span class="n">lists</span><span class="p">[</span><span class="n">k</span><span class="p">][</span><span class="nb">tostring</span><span class="p">(</span><span class="n">i</span><span class="p">)]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1166"><a href="#L-1166"><span class="linenos" data-line="1166"></span></a> <span class="kd">local</span> <span class="n">pattern</span> <span class="o">=</span> <span class="s1">&#39;Q%d+&#39;</span> </span><span id="L-1167"><a href="#L-1167"><span class="linenos" data-line="1167"></span></a> <span class="kr">if</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="n">k</span> <span class="o">..</span> <span class="n">i</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;Q&#39;</span> <span class="kr">then</span> </span><span id="L-1168"><a href="#L-1168"><span class="linenos" data-line="1168"></span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="s1">&#39;[^%p%s]+&#39;</span> </span><span id="L-1169"><a href="#L-1169"><span class="linenos" data-line="1169"></span></a> <span class="kr">end</span> </span><span id="L-1170"><a href="#L-1170"><span class="linenos" data-line="1170"></span></a> <span class="kr">for</span> <span class="n">q</span> <span class="kr">in</span> <span class="nb">string.gmatch</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="n">k</span> <span class="o">..</span> <span class="n">i</span><span class="p">],</span> <span class="n">pattern</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1171"><a href="#L-1171"><span class="linenos" data-line="1171"></span></a> <span class="n">lists</span><span class="p">[</span><span class="n">k</span><span class="p">][</span><span class="nb">tostring</span><span class="p">(</span><span class="n">i</span><span class="p">)][</span><span class="n">q</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1172"><a href="#L-1172"><span class="linenos" data-line="1172"></span></a> <span class="kr">end</span> </span><span id="L-1173"><a href="#L-1173"><span class="linenos" data-line="1173"></span></a> <span class="kr">end</span> </span><span id="L-1174"><a href="#L-1174"><span class="linenos" data-line="1174"></span></a> <span class="kr">end</span> </span><span id="L-1175"><a href="#L-1175"><span class="linenos" data-line="1175"></span></a> <span class="kr">end</span> </span><span id="L-1176"><a href="#L-1176"><span class="linenos" data-line="1176"></span></a> <span class="kr">return</span> <span class="n">lists</span><span class="p">[</span><span class="s1">&#39;whitelist&#39;</span><span class="p">],</span> <span class="n">lists</span><span class="p">[</span><span class="s1">&#39;blacklist&#39;</span><span class="p">],</span> <span class="n">lists</span><span class="p">[</span><span class="s1">&#39;ignorevalue&#39;</span><span class="p">],</span> <span class="n">lists</span><span class="p">[</span><span class="s1">&#39;selectvalue&#39;</span><span class="p">]</span> </span><span id="L-1177"><a href="#L-1177"><span class="linenos" data-line="1177"></span></a><span class="kr">end</span> </span><span id="L-1178"><a href="#L-1178"><span class="linenos" data-line="1178"></span></a> </span><span id="L-1179"><a href="#L-1179"><span class="linenos" data-line="1179"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">tableParameters</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">parameters</span><span class="p">,</span> <span class="n">column</span><span class="p">)</span> </span><span id="L-1180"><a href="#L-1180"><span class="linenos" data-line="1180"></span></a> <span class="kd">local</span> <span class="n">column_params</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">clone</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span> </span><span id="L-1181"><a href="#L-1181"><span class="linenos" data-line="1181"></span></a> <span class="n">column_params</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;colformat&quot;</span><span class="o">..</span><span class="n">column</span><span class="p">];</span> <span class="kr">if</span> <span class="n">column_params</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s2">&quot;&quot;</span> <span class="kr">then</span> <span class="n">column_params</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="kc">nil</span> <span class="kr">end</span> </span><span id="L-1182"><a href="#L-1182"><span class="linenos" data-line="1182"></span></a> <span class="n">column_params</span><span class="p">.</span><span class="n">convert</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;convert&quot;</span> <span class="o">..</span> <span class="n">column</span><span class="p">]</span> </span><span id="L-1183"><a href="#L-1183"><span class="linenos" data-line="1183"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;case&quot;</span> <span class="o">..</span> <span class="n">column</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1184"><a href="#L-1184"><span class="linenos" data-line="1184"></span></a> <span class="n">column_params</span><span class="p">.</span><span class="n">case</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;case&quot;</span> <span class="o">..</span> <span class="n">column</span><span class="p">]</span> </span><span id="L-1185"><a href="#L-1185"><span class="linenos" data-line="1185"></span></a> <span class="kr">end</span> </span><span id="L-1186"><a href="#L-1186"><span class="linenos" data-line="1186"></span></a> <span class="kr">return</span> <span class="n">column_params</span> </span><span id="L-1187"><a href="#L-1187"><span class="linenos" data-line="1187"></span></a><span class="kr">end</span> </span><span id="L-1188"><a href="#L-1188"><span class="linenos" data-line="1188"></span></a> </span><span id="L-1189"><a href="#L-1189"><span class="linenos" data-line="1189"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getEntityId</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">pargs</span><span class="p">,</span> <span class="n">unnamed</span><span class="p">)</span> </span><span id="L-1190"><a href="#L-1190"><span class="linenos" data-line="1190"></span></a> <span class="n">pargs</span> <span class="o">=</span> <span class="n">pargs</span> <span class="ow">or</span> <span class="p">{}</span> </span><span id="L-1191"><a href="#L-1191"><span class="linenos" data-line="1191"></span></a> <span class="kd">local</span> <span class="n">id</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">item</span> <span class="ow">or</span> <span class="n">args</span><span class="p">.</span><span class="n">from</span> <span class="ow">or</span> <span class="p">(</span><span class="n">unnamed</span> <span class="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">trim</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">nil</span><span class="p">)</span> </span><span id="L-1192"><a href="#L-1192"><span class="linenos" data-line="1192"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">isSet</span><span class="p">(</span><span class="n">id</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1193"><a href="#L-1193"><span class="linenos" data-line="1193"></span></a> <span class="n">id</span> <span class="o">=</span> <span class="n">pargs</span><span class="p">.</span><span class="n">item</span> <span class="ow">or</span> <span class="n">pargs</span><span class="p">.</span><span class="n">from</span> <span class="ow">or</span> <span class="p">(</span><span class="n">unnamed</span> <span class="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">trim</span><span class="p">(</span><span class="n">pargs</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">nil</span><span class="p">)</span> </span><span id="L-1194"><a href="#L-1194"><span class="linenos" data-line="1194"></span></a> <span class="kr">end</span> </span><span id="L-1195"><a href="#L-1195"><span class="linenos" data-line="1195"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">id</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1196"><a href="#L-1196"><span class="linenos" data-line="1196"></span></a> <span class="kr">if</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="s2">&quot;:&quot;</span><span class="p">)</span> <span class="kr">then</span> <span class="c1">-- remove prefix as Property:Pid</span> </span><span id="L-1197"><a href="#L-1197"><span class="linenos" data-line="1197"></span></a> <span class="n">id</span> <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">split</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> </span><span id="L-1198"><a href="#L-1198"><span class="linenos" data-line="1198"></span></a> <span class="kr">end</span> </span><span id="L-1199"><a href="#L-1199"><span class="linenos" data-line="1199"></span></a> <span class="kr">else</span> </span><span id="L-1200"><a href="#L-1200"><span class="linenos" data-line="1200"></span></a> <span class="n">id</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getEntityIdForCurrentPage</span><span class="p">()</span> </span><span id="L-1201"><a href="#L-1201"><span class="linenos" data-line="1201"></span></a> <span class="kr">end</span> </span><span id="L-1202"><a href="#L-1202"><span class="linenos" data-line="1202"></span></a> <span class="kr">return</span> <span class="n">id</span> </span><span id="L-1203"><a href="#L-1203"><span class="linenos" data-line="1203"></span></a><span class="kr">end</span> </span><span id="L-1204"><a href="#L-1204"><span class="linenos" data-line="1204"></span></a> </span><span id="L-1205"><a href="#L-1205"><span class="linenos" data-line="1205"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getArg</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">default</span><span class="p">,</span> <span class="n">aliases</span><span class="p">)</span> </span><span id="L-1206"><a href="#L-1206"><span class="linenos" data-line="1206"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;boolean&#39;</span> <span class="kr">then</span> <span class="kr">return</span> <span class="n">value</span> </span><span id="L-1207"><a href="#L-1207"><span class="linenos" data-line="1207"></span></a> <span class="kr">elseif</span> <span class="n">value</span> <span class="o">==</span> <span class="s2">&quot;false&quot;</span> <span class="ow">or</span> <span class="n">value</span> <span class="o">==</span> <span class="s2">&quot;no&quot;</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-1208"><a href="#L-1208"><span class="linenos" data-line="1208"></span></a> <span class="kr">elseif</span> <span class="n">value</span> <span class="o">==</span> <span class="s2">&quot;true&quot;</span> <span class="ow">or</span> <span class="n">value</span> <span class="o">==</span> <span class="s2">&quot;yes&quot;</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1209"><a href="#L-1209"><span class="linenos" data-line="1209"></span></a> <span class="kr">elseif</span> <span class="n">value</span> <span class="ow">and</span> <span class="n">aliases</span> <span class="ow">and</span> <span class="n">aliases</span><span class="p">[</span><span class="n">value</span><span class="p">]</span> <span class="kr">then</span> <span class="kr">return</span> <span class="n">aliases</span><span class="p">[</span><span class="n">value</span><span class="p">]</span> </span><span id="L-1210"><a href="#L-1210"><span class="linenos" data-line="1210"></span></a> <span class="kr">elseif</span> <span class="n">isSet</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="kr">then</span> <span class="kr">return</span> <span class="n">value</span> </span><span id="L-1211"><a href="#L-1211"><span class="linenos" data-line="1211"></span></a> <span class="kr">elseif</span> <span class="n">default</span> <span class="kr">then</span> <span class="kr">return</span> <span class="n">default</span> </span><span id="L-1212"><a href="#L-1212"><span class="linenos" data-line="1212"></span></a> <span class="kr">else</span> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-1213"><a href="#L-1213"><span class="linenos" data-line="1213"></span></a> <span class="kr">end</span> </span><span id="L-1214"><a href="#L-1214"><span class="linenos" data-line="1214"></span></a><span class="kr">end</span> </span><span id="L-1215"><a href="#L-1215"><span class="linenos" data-line="1215"></span></a> </span><span id="L-1216"><a href="#L-1216"><span class="linenos" data-line="1216"></span></a><span class="c1">-- Main function claim ---------------------------------------------</span> </span><span id="L-1217"><a href="#L-1217"><span class="linenos" data-line="1217"></span></a><span class="c1">-- on debug console use: =p.claim{item=&quot;Q...&quot;, property=&quot;P...&quot;, ...}</span> </span><span id="L-1218"><a href="#L-1218"><span class="linenos" data-line="1218"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">claim</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-1219"><a href="#L-1219"><span class="linenos" data-line="1219"></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 class="ow">or</span> <span class="n">frame</span> <span class="c1">-- via invoke or require</span> </span><span id="L-1220"><a href="#L-1220"><span class="linenos" data-line="1220"></span></a> <span class="kd">local</span> <span class="n">pargs</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> <span class="ow">and</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 class="ow">or</span> <span class="p">{}</span> </span><span id="L-1221"><a href="#L-1221"><span class="linenos" data-line="1221"></span></a> <span class="kd">local</span> <span class="n">is_sandbox</span> <span class="o">=</span> <span class="n">isSet</span><span class="p">(</span><span class="n">pargs</span><span class="p">.</span><span class="n">sandbox</span><span class="p">)</span> </span><span id="L-1222"><a href="#L-1222"><span class="linenos" data-line="1222"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">required</span> <span class="ow">and</span> <span class="n">is_sandbox</span> <span class="kr">then</span> </span><span id="L-1223"><a href="#L-1223"><span class="linenos" data-line="1223"></span></a> <span class="kr">return</span> <span class="nb">require</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/&quot;</span> <span class="o">..</span> <span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Sandboxlink-subpage-name&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span><span class="p">):</span><span class="n">plain</span><span class="p">()).</span><span class="n">claim</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-1224"><a href="#L-1224"><span class="linenos" data-line="1224"></span></a> <span class="kr">end</span> </span><span id="L-1225"><a href="#L-1225"><span class="linenos" data-line="1225"></span></a> <span class="c1">--If a value is already set, use it</span> </span><span id="L-1226"><a href="#L-1226"><span class="linenos" data-line="1226"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">value</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1227"><a href="#L-1227"><span class="linenos" data-line="1227"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">.</span><span class="n">value</span> <span class="o">==</span> <span class="s1">&#39;NONE&#39;</span> <span class="kr">then</span> </span><span id="L-1228"><a href="#L-1228"><span class="linenos" data-line="1228"></span></a> <span class="kr">return</span> </span><span id="L-1229"><a href="#L-1229"><span class="linenos" data-line="1229"></span></a> <span class="kr">else</span> </span><span id="L-1230"><a href="#L-1230"><span class="linenos" data-line="1230"></span></a> <span class="kr">return</span> <span class="n">args</span><span class="p">.</span><span class="n">value</span> </span><span id="L-1231"><a href="#L-1231"><span class="linenos" data-line="1231"></span></a> <span class="kr">end</span> </span><span id="L-1232"><a href="#L-1232"><span class="linenos" data-line="1232"></span></a> <span class="kr">end</span> </span><span id="L-1233"><a href="#L-1233"><span class="linenos" data-line="1233"></span></a> </span><span id="L-1234"><a href="#L-1234"><span class="linenos" data-line="1234"></span></a> <span class="c1">-- arguments</span> </span><span id="L-1235"><a href="#L-1235"><span class="linenos" data-line="1235"></span></a> <span class="kd">local</span> <span class="n">parameters</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1236"><a href="#L-1236"><span class="linenos" data-line="1236"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">getEntityId</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">pargs</span><span class="p">)</span> </span><span id="L-1237"><a href="#L-1237"><span class="linenos" data-line="1237"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">id</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-1238"><a href="#L-1238"><span class="linenos" data-line="1238"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">property</span> <span class="o">=</span> <span class="nb">string.upper</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">property</span> <span class="ow">or</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> </span><span id="L-1239"><a href="#L-1239"><span class="linenos" data-line="1239"></span></a> <span class="kd">local</span> <span class="n">qualifierId</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1240"><a href="#L-1240"><span class="linenos" data-line="1240"></span></a> <span class="n">qualifierId</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="nb">string.upper</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">qualifier</span> <span class="ow">or</span> <span class="n">args</span><span class="p">.</span><span class="n">qualifier1</span> <span class="ow">or</span> <span class="s2">&quot;&quot;</span><span class="p">))</span> </span><span id="L-1241"><a href="#L-1241"><span class="linenos" data-line="1241"></span></a> <span class="kd">local</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">2</span> </span><span id="L-1242"><a href="#L-1242"><span class="linenos" data-line="1242"></span></a> <span class="kr">while</span> <span class="n">isSet</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;qualifier&quot;</span> <span class="o">..</span> <span class="n">i</span><span class="p">])</span> <span class="kr">do</span> </span><span id="L-1243"><a href="#L-1243"><span class="linenos" data-line="1243"></span></a> <span class="n">qualifierId</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="nb">string.upper</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;qualifier&quot;</span> <span class="o">..</span> <span class="n">i</span><span class="p">])</span> </span><span id="L-1244"><a href="#L-1244"><span class="linenos" data-line="1244"></span></a> <span class="n">i</span> <span class="o">=</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-1245"><a href="#L-1245"><span class="linenos" data-line="1245"></span></a> <span class="kr">end</span> </span><span id="L-1246"><a href="#L-1246"><span class="linenos" data-line="1246"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">formatting</span><span class="p">)</span> </span><span id="L-1247"><a href="#L-1247"><span class="linenos" data-line="1247"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">convert</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">convert</span><span class="p">)</span> </span><span id="L-1248"><a href="#L-1248"><span class="linenos" data-line="1248"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">numformat</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">numformat</span><span class="p">)</span> </span><span id="L-1249"><a href="#L-1249"><span class="linenos" data-line="1249"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">case</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">case</span> </span><span id="L-1250"><a href="#L-1250"><span class="linenos" data-line="1250"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">list</span><span class="p">,</span> <span class="kc">true</span><span class="p">,</span> <span class="p">{</span><span class="n">firstrank</span><span class="o">=</span><span class="s1">&#39;bestrank&#39;</span><span class="p">})</span> </span><span id="L-1251"><a href="#L-1251"><span class="linenos" data-line="1251"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">listmax</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">listmax</span> </span><span id="L-1252"><a href="#L-1252"><span class="linenos" data-line="1252"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">listrank</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">listrank</span><span class="p">)</span> </span><span id="L-1253"><a href="#L-1253"><span class="linenos" data-line="1253"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">list</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;number&quot;</span> <span class="kr">then</span> <span class="c1">-- backwards compatibility</span> </span><span id="L-1254"><a href="#L-1254"><span class="linenos" data-line="1254"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">listmax</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">listmax</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> </span><span id="L-1255"><a href="#L-1255"><span class="linenos" data-line="1255"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1256"><a href="#L-1256"><span class="linenos" data-line="1256"></span></a> <span class="kr">elseif</span> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">==</span> <span class="s2">&quot;bestrank&quot;</span> <span class="kr">then</span> </span><span id="L-1257"><a href="#L-1257"><span class="linenos" data-line="1257"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">listrank</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">listrank</span> <span class="ow">or</span> <span class="s2">&quot;bestrank&quot;</span> </span><span id="L-1258"><a href="#L-1258"><span class="linenos" data-line="1258"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1259"><a href="#L-1259"><span class="linenos" data-line="1259"></span></a> <span class="kr">end</span> </span><span id="L-1260"><a href="#L-1260"><span class="linenos" data-line="1260"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">shownovalue</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">shownovalue</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-1261"><a href="#L-1261"><span class="linenos" data-line="1261"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">showsomevalue</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">showsomevalue</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-1262"><a href="#L-1262"><span class="linenos" data-line="1262"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">separator</span><span class="p">)</span> </span><span id="L-1263"><a href="#L-1263"><span class="linenos" data-line="1263"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">conjunction</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span><span class="p">)</span> </span><span id="L-1264"><a href="#L-1264"><span class="linenos" data-line="1264"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">qseparator</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">qseparator</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span><span class="p">)</span> </span><span id="L-1265"><a href="#L-1265"><span class="linenos" data-line="1265"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">qconjunction</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">qconjunction</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span><span class="p">)</span> </span><span id="L-1266"><a href="#L-1266"><span class="linenos" data-line="1266"></span></a> <span class="kd">local</span> <span class="n">sorting_col</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">tablesort</span> </span><span id="L-1267"><a href="#L-1267"><span class="linenos" data-line="1267"></span></a> <span class="kd">local</span> <span class="n">sorting_up</span> <span class="o">=</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">sorting</span> <span class="ow">or</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> <span class="o">~=</span> <span class="s2">&quot;-1&quot;</span> </span><span id="L-1268"><a href="#L-1268"><span class="linenos" data-line="1268"></span></a> <span class="kd">local</span> <span class="n">rowformat</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">rowformat</span> </span><span id="L-1269"><a href="#L-1269"><span class="linenos" data-line="1269"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">references</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">references</span><span class="p">,</span> <span class="kc">false</span><span class="p">)</span> </span><span id="L-1270"><a href="#L-1270"><span class="linenos" data-line="1270"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">onlysourced</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">onlysourced</span><span class="p">,</span> <span class="kc">false</span><span class="p">)</span> </span><span id="L-1271"><a href="#L-1271"><span class="linenos" data-line="1271"></span></a> <span class="kd">local</span> <span class="n">showerrors</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">showerrors</span> </span><span id="L-1272"><a href="#L-1272"><span class="linenos" data-line="1272"></span></a> <span class="kd">local</span> <span class="n">default</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">default</span> </span><span id="L-1273"><a href="#L-1273"><span class="linenos" data-line="1273"></span></a> <span class="kr">if</span> <span class="n">default</span> <span class="kr">then</span> <span class="n">showerrors</span> <span class="o">=</span> <span class="kc">nil</span> <span class="kr">end</span> </span><span id="L-1274"><a href="#L-1274"><span class="linenos" data-line="1274"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span> <span class="o">=</span> <span class="n">findLang</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">lang</span><span class="p">)</span> </span><span id="L-1275"><a href="#L-1275"><span class="linenos" data-line="1275"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s2">&quot;raw&quot;</span> <span class="kr">then</span> </span><span id="L-1276"><a href="#L-1276"><span class="linenos" data-line="1276"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">editicon</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">labelicon</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="kc">false</span> </span><span id="L-1277"><a href="#L-1277"><span class="linenos" data-line="1277"></span></a> <span class="kr">else</span> </span><span id="L-1278"><a href="#L-1278"><span class="linenos" data-line="1278"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">editicon</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">labelicon</span> <span class="o">=</span> <span class="n">setIcons</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">editicon</span><span class="p">,</span> <span class="n">pargs</span><span class="p">.</span><span class="n">editicon</span><span class="p">)</span> <span class="c1">-- needs loadI18n by findLand</span> </span><span id="L-1279"><a href="#L-1279"><span class="linenos" data-line="1279"></span></a> <span class="kr">end</span> </span><span id="L-1280"><a href="#L-1280"><span class="linenos" data-line="1280"></span></a> </span><span id="L-1281"><a href="#L-1281"><span class="linenos" data-line="1281"></span></a> <span class="c1">-- fetch property</span> </span><span id="L-1282"><a href="#L-1282"><span class="linenos" data-line="1282"></span></a> <span class="kd">local</span> <span class="n">claims</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1283"><a href="#L-1283"><span class="linenos" data-line="1283"></span></a> <span class="kd">local</span> <span class="n">bestrank</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">listrank</span> <span class="o">==</span> <span class="s1">&#39;bestrank&#39;</span> <span class="ow">and</span> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">~=</span> <span class="s1">&#39;lang&#39;</span> </span><span id="L-1284"><a href="#L-1284"><span class="linenos" data-line="1284"></span></a> <span class="kr">for</span> <span class="n">p</span> <span class="kr">in</span> <span class="nb">string.gmatch</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">property</span><span class="p">,</span> <span class="s1">&#39;P%d+&#39;</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1285"><a href="#L-1285"><span class="linenos" data-line="1285"></span></a> <span class="n">claims</span> <span class="o">=</span> <span class="n">getStatements</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">id</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">bestrank</span><span class="p">)</span> </span><span id="L-1286"><a href="#L-1286"><span class="linenos" data-line="1286"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">claims</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1287"><a href="#L-1287"><span class="linenos" data-line="1287"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">property</span> <span class="o">=</span> <span class="n">p</span> </span><span id="L-1288"><a href="#L-1288"><span class="linenos" data-line="1288"></span></a> <span class="kr">break</span> </span><span id="L-1289"><a href="#L-1289"><span class="linenos" data-line="1289"></span></a> <span class="kr">end</span> </span><span id="L-1290"><a href="#L-1290"><span class="linenos" data-line="1290"></span></a> <span class="kr">end</span> </span><span id="L-1291"><a href="#L-1291"><span class="linenos" data-line="1291"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">claims</span> <span class="o">==</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1292"><a href="#L-1292"><span class="linenos" data-line="1292"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="n">showerrors</span> <span class="ow">and</span> <span class="n">printError</span><span class="p">(</span><span class="s2">&quot;property-not-found&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">default</span> </span><span id="L-1293"><a href="#L-1293"><span class="linenos" data-line="1293"></span></a> <span class="kr">return</span> <span class="n">ret</span><span class="p">,</span> <span class="n">args</span><span class="p">.</span><span class="n">query</span> <span class="o">==</span> <span class="s1">&#39;num&#39;</span> <span class="ow">and</span> <span class="mi">0</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-1294"><a href="#L-1294"><span class="linenos" data-line="1294"></span></a> <span class="kr">end</span> </span><span id="L-1295"><a href="#L-1295"><span class="linenos" data-line="1295"></span></a> </span><span id="L-1296"><a href="#L-1296"><span class="linenos" data-line="1296"></span></a> <span class="c1">-- defaults for table</span> </span><span id="L-1297"><a href="#L-1297"><span class="linenos" data-line="1297"></span></a> <span class="kd">local</span> <span class="n">preformat</span><span class="p">,</span> <span class="n">postformat</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span> </span><span id="L-1298"><a href="#L-1298"><span class="linenos" data-line="1298"></span></a> <span class="kd">local</span> <span class="n">whitelisted</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1299"><a href="#L-1299"><span class="linenos" data-line="1299"></span></a> <span class="kd">local</span> <span class="n">whitelist</span><span class="p">,</span> <span class="n">blacklist</span><span class="p">,</span> <span class="n">ignorevalue</span><span class="p">,</span> <span class="n">selectvalue</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">{},</span> <span class="p">{},</span> <span class="p">{}</span> </span><span id="L-1300"><a href="#L-1300"><span class="linenos" data-line="1300"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s2">&quot;table&quot;</span> <span class="kr">then</span> </span><span id="L-1301"><a href="#L-1301"><span class="linenos" data-line="1301"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span> <span class="ow">or</span> <span class="s2">&quot;&lt;br /&gt;&quot;</span> </span><span id="L-1302"><a href="#L-1302"><span class="linenos" data-line="1302"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span> <span class="ow">or</span> <span class="s2">&quot;&lt;br /&gt;&quot;</span> </span><span id="L-1303"><a href="#L-1303"><span class="linenos" data-line="1303"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">qseparator</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">qseparator</span><span class="p">,</span> <span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Comma-separator&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span><span class="n">plain</span><span class="p">())</span> </span><span id="L-1304"><a href="#L-1304"><span class="linenos" data-line="1304"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">qconjunction</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">qconjunction</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">qseparator</span><span class="p">)</span> </span><span id="L-1305"><a href="#L-1305"><span class="linenos" data-line="1305"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">rowformat</span> <span class="kr">then</span> </span><span id="L-1306"><a href="#L-1306"><span class="linenos" data-line="1306"></span></a> <span class="n">rowformat</span> <span class="o">=</span> <span class="s2">&quot;$0 ($1&quot;</span> </span><span id="L-1307"><a href="#L-1307"><span class="linenos" data-line="1307"></span></a> <span class="n">i</span> <span class="o">=</span> <span class="mi">2</span> </span><span id="L-1308"><a href="#L-1308"><span class="linenos" data-line="1308"></span></a> <span class="kr">while</span> <span class="n">qualifierId</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="kr">do</span> </span><span id="L-1309"><a href="#L-1309"><span class="linenos" data-line="1309"></span></a> <span class="n">rowformat</span> <span class="o">=</span> <span class="n">rowformat</span> <span class="o">..</span> <span class="s2">&quot;, $&quot;</span> <span class="o">..</span> <span class="n">i</span> </span><span id="L-1310"><a href="#L-1310"><span class="linenos" data-line="1310"></span></a> <span class="n">i</span> <span class="o">=</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-1311"><a href="#L-1311"><span class="linenos" data-line="1311"></span></a> <span class="kr">end</span> </span><span id="L-1312"><a href="#L-1312"><span class="linenos" data-line="1312"></span></a> <span class="n">rowformat</span> <span class="o">=</span> <span class="n">rowformat</span> <span class="o">..</span> <span class="s2">&quot;)&quot;</span> </span><span id="L-1313"><a href="#L-1313"><span class="linenos" data-line="1313"></span></a> <span class="kr">elseif</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">rowformat</span><span class="p">,</span> <span class="s2">&quot;^[*#]&quot;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1314"><a href="#L-1314"><span class="linenos" data-line="1314"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span> <span class="o">=</span> <span class="s2">&quot;&lt;/li&gt;&lt;li&gt;&quot;</span> </span><span id="L-1315"><a href="#L-1315"><span class="linenos" data-line="1315"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span> <span class="o">=</span> <span class="s2">&quot;&lt;/li&gt;&lt;li&gt;&quot;</span> </span><span id="L-1316"><a href="#L-1316"><span class="linenos" data-line="1316"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">match</span><span class="p">(</span><span class="n">rowformat</span><span class="p">,</span> <span class="s2">&quot;^[*#]&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;*&quot;</span> <span class="kr">then</span> </span><span id="L-1317"><a href="#L-1317"><span class="linenos" data-line="1317"></span></a> <span class="n">preformat</span> <span class="o">=</span> <span class="s2">&quot;&lt;ul&gt;&lt;li&gt;&quot;</span> </span><span id="L-1318"><a href="#L-1318"><span class="linenos" data-line="1318"></span></a> <span class="n">postformat</span> <span class="o">=</span> <span class="s2">&quot;&lt;/li&gt;&lt;/ul&gt;&quot;</span> </span><span id="L-1319"><a href="#L-1319"><span class="linenos" data-line="1319"></span></a> <span class="kr">else</span> </span><span id="L-1320"><a href="#L-1320"><span class="linenos" data-line="1320"></span></a> <span class="n">preformat</span> <span class="o">=</span> <span class="s2">&quot;&lt;ol&gt;&lt;li&gt;&quot;</span> </span><span id="L-1321"><a href="#L-1321"><span class="linenos" data-line="1321"></span></a> <span class="n">postformat</span> <span class="o">=</span> <span class="s2">&quot;&lt;/li&gt;&lt;/ol&gt;&quot;</span> </span><span id="L-1322"><a href="#L-1322"><span class="linenos" data-line="1322"></span></a> <span class="kr">end</span> </span><span id="L-1323"><a href="#L-1323"><span class="linenos" data-line="1323"></span></a> <span class="n">rowformat</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">rowformat</span><span class="p">,</span> <span class="s2">&quot;^[*#] ?&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> </span><span id="L-1324"><a href="#L-1324"><span class="linenos" data-line="1324"></span></a> <span class="kr">end</span> </span><span id="L-1325"><a href="#L-1325"><span class="linenos" data-line="1325"></span></a> </span><span id="L-1326"><a href="#L-1326"><span class="linenos" data-line="1326"></span></a> <span class="c1">-- set whitelist and blacklist values</span> </span><span id="L-1327"><a href="#L-1327"><span class="linenos" data-line="1327"></span></a> <span class="n">whitelist</span><span class="p">,</span> <span class="n">blacklist</span><span class="p">,</span> <span class="n">ignorevalue</span><span class="p">,</span> <span class="n">selectvalue</span> <span class="o">=</span> <span class="n">setWhiteOrBlackList</span><span class="p">(</span><span class="o">#</span><span class="n">qualifierId</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> </span><span id="L-1328"><a href="#L-1328"><span class="linenos" data-line="1328"></span></a> <span class="kd">local</span> <span class="nb">next</span> <span class="o">=</span> <span class="nb">next</span> </span><span id="L-1329"><a href="#L-1329"><span class="linenos" data-line="1329"></span></a> <span class="kr">if</span> <span class="nb">next</span><span class="p">(</span><span class="n">whitelist</span><span class="p">)</span> <span class="o">~=</span> <span class="kc">nil</span> <span class="kr">then</span> <span class="n">whitelisted</span> <span class="o">=</span> <span class="kc">true</span> <span class="kr">end</span> </span><span id="L-1330"><a href="#L-1330"><span class="linenos" data-line="1330"></span></a> <span class="kr">end</span> </span><span id="L-1331"><a href="#L-1331"><span class="linenos" data-line="1331"></span></a> </span><span id="L-1332"><a href="#L-1332"><span class="linenos" data-line="1332"></span></a> <span class="c1">-- set feminine case if gender is requested</span> </span><span id="L-1333"><a href="#L-1333"><span class="linenos" data-line="1333"></span></a> <span class="kd">local</span> <span class="n">itemgender</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">itemgender</span> </span><span id="L-1334"><a href="#L-1334"><span class="linenos" data-line="1334"></span></a> <span class="kd">local</span> <span class="n">idgender</span> </span><span id="L-1335"><a href="#L-1335"><span class="linenos" data-line="1335"></span></a> <span class="kr">if</span> <span class="n">itemgender</span> <span class="kr">then</span> </span><span id="L-1336"><a href="#L-1336"><span class="linenos" data-line="1336"></span></a> <span class="kr">if</span> <span class="nb">string.match</span><span class="p">(</span><span class="n">itemgender</span><span class="p">,</span> <span class="s2">&quot;^P%d+$&quot;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1337"><a href="#L-1337"><span class="linenos" data-line="1337"></span></a> <span class="kd">local</span> <span class="n">snak_id</span> <span class="o">=</span> <span class="n">getSnak</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getBestStatements</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">id</span><span class="p">,</span> <span class="n">itemgender</span><span class="p">),</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;mainsnak&quot;</span><span class="p">,</span> <span class="s2">&quot;datavalue&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">,</span> <span class="s2">&quot;id&quot;</span><span class="p">})</span> </span><span id="L-1338"><a href="#L-1338"><span class="linenos" data-line="1338"></span></a> <span class="kr">if</span> <span class="n">snak_id</span> <span class="kr">then</span> </span><span id="L-1339"><a href="#L-1339"><span class="linenos" data-line="1339"></span></a> <span class="n">idgender</span> <span class="o">=</span> <span class="n">snak_id</span> </span><span id="L-1340"><a href="#L-1340"><span class="linenos" data-line="1340"></span></a> <span class="kr">end</span> </span><span id="L-1341"><a href="#L-1341"><span class="linenos" data-line="1341"></span></a> <span class="kr">elseif</span> <span class="nb">string.match</span><span class="p">(</span><span class="n">itemgender</span><span class="p">,</span> <span class="s2">&quot;^Q%d+$&quot;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1342"><a href="#L-1342"><span class="linenos" data-line="1342"></span></a> <span class="n">idgender</span> <span class="o">=</span> <span class="n">itemgender</span> </span><span id="L-1343"><a href="#L-1343"><span class="linenos" data-line="1343"></span></a> <span class="kr">end</span> </span><span id="L-1344"><a href="#L-1344"><span class="linenos" data-line="1344"></span></a> <span class="kr">end</span> </span><span id="L-1345"><a href="#L-1345"><span class="linenos" data-line="1345"></span></a> <span class="kd">local</span> <span class="n">gender_requested</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1346"><a href="#L-1346"><span class="linenos" data-line="1346"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">case</span> <span class="o">==</span> <span class="s2">&quot;gender&quot;</span> <span class="ow">or</span> <span class="n">idgender</span> <span class="kr">then</span> </span><span id="L-1347"><a href="#L-1347"><span class="linenos" data-line="1347"></span></a> <span class="n">gender_requested</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1348"><a href="#L-1348"><span class="linenos" data-line="1348"></span></a> <span class="kr">elseif</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s2">&quot;table&quot;</span> <span class="kr">then</span> </span><span id="L-1349"><a href="#L-1349"><span class="linenos" data-line="1349"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="o">#</span><span class="n">qualifierId</span> <span class="kr">do</span> </span><span id="L-1350"><a href="#L-1350"><span class="linenos" data-line="1350"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;case&quot;</span> <span class="o">..</span> <span class="n">i</span><span class="p">]</span> <span class="ow">and</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;case&quot;</span> <span class="o">..</span> <span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;gender&quot;</span> <span class="kr">then</span> </span><span id="L-1351"><a href="#L-1351"><span class="linenos" data-line="1351"></span></a> <span class="n">gender_requested</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1352"><a href="#L-1352"><span class="linenos" data-line="1352"></span></a> <span class="kr">break</span> </span><span id="L-1353"><a href="#L-1353"><span class="linenos" data-line="1353"></span></a> <span class="kr">end</span> </span><span id="L-1354"><a href="#L-1354"><span class="linenos" data-line="1354"></span></a> <span class="kr">end</span> </span><span id="L-1355"><a href="#L-1355"><span class="linenos" data-line="1355"></span></a> <span class="kr">end</span> </span><span id="L-1356"><a href="#L-1356"><span class="linenos" data-line="1356"></span></a> <span class="kr">if</span> <span class="n">gender_requested</span> <span class="kr">then</span> </span><span id="L-1357"><a href="#L-1357"><span class="linenos" data-line="1357"></span></a> <span class="kr">if</span> <span class="n">feminineGender</span><span class="p">(</span><span class="n">idgender</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">id</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1358"><a href="#L-1358"><span class="linenos" data-line="1358"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">gender</span> <span class="o">=</span> <span class="s2">&quot;feminineform&quot;</span> </span><span id="L-1359"><a href="#L-1359"><span class="linenos" data-line="1359"></span></a> <span class="kr">end</span> </span><span id="L-1360"><a href="#L-1360"><span class="linenos" data-line="1360"></span></a> <span class="kr">end</span> </span><span id="L-1361"><a href="#L-1361"><span class="linenos" data-line="1361"></span></a> </span><span id="L-1362"><a href="#L-1362"><span class="linenos" data-line="1362"></span></a> <span class="c1">-- get initial sort indices</span> </span><span id="L-1363"><a href="#L-1363"><span class="linenos" data-line="1363"></span></a> <span class="kd">local</span> <span class="n">sortindices</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1364"><a href="#L-1364"><span class="linenos" data-line="1364"></span></a> <span class="kr">for</span> <span class="n">idx</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">claims</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1365"><a href="#L-1365"><span class="linenos" data-line="1365"></span></a> <span class="n">sortindices</span><span class="p">[</span><span class="o">#</span><span class="n">sortindices</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">idx</span> </span><span id="L-1366"><a href="#L-1366"><span class="linenos" data-line="1366"></span></a> <span class="kr">end</span> </span><span id="L-1367"><a href="#L-1367"><span class="linenos" data-line="1367"></span></a> <span class="c1">-- sort by claim rank</span> </span><span id="L-1368"><a href="#L-1368"><span class="linenos" data-line="1368"></span></a> <span class="kd">local</span> <span class="n">comparator</span> <span class="o">=</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><span id="L-1369"><a href="#L-1369"><span class="linenos" data-line="1369"></span></a> <span class="kd">local</span> <span class="n">rankmap</span> <span class="o">=</span> <span class="p">{</span> <span class="n">deprecated</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="n">normal</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">preferred</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">}</span> </span><span id="L-1370"><a href="#L-1370"><span class="linenos" data-line="1370"></span></a> <span class="kd">local</span> <span class="n">ranka</span> <span class="o">=</span> <span class="n">rankmap</span><span class="p">[</span><span class="n">claims</span><span class="p">[</span><span class="n">a</span><span class="p">].</span><span class="n">rank</span> <span class="ow">or</span> <span class="s2">&quot;normal&quot;</span><span class="p">]</span> <span class="o">..</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">&quot;%08d&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">)</span> </span><span id="L-1371"><a href="#L-1371"><span class="linenos" data-line="1371"></span></a> <span class="kd">local</span> <span class="n">rankb</span> <span class="o">=</span> <span class="n">rankmap</span><span class="p">[</span><span class="n">claims</span><span class="p">[</span><span class="n">b</span><span class="p">].</span><span class="n">rank</span> <span class="ow">or</span> <span class="s2">&quot;normal&quot;</span><span class="p">]</span> <span class="o">..</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">&quot;%08d&quot;</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span> </span><span id="L-1372"><a href="#L-1372"><span class="linenos" data-line="1372"></span></a> <span class="kr">return</span> <span class="n">ranka</span> <span class="o">&lt;</span> <span class="n">rankb</span> </span><span id="L-1373"><a href="#L-1373"><span class="linenos" data-line="1373"></span></a> <span class="kr">end</span> </span><span id="L-1374"><a href="#L-1374"><span class="linenos" data-line="1374"></span></a> <span class="nb">table.sort</span><span class="p">(</span><span class="n">sortindices</span><span class="p">,</span> <span class="n">comparator</span><span class="p">)</span> </span><span id="L-1375"><a href="#L-1375"><span class="linenos" data-line="1375"></span></a> </span><span id="L-1376"><a href="#L-1376"><span class="linenos" data-line="1376"></span></a> <span class="kd">local</span> <span class="n">result</span><span class="p">,</span> <span class="n">result2</span><span class="p">,</span> <span class="n">result_query</span> </span><span id="L-1377"><a href="#L-1377"><span class="linenos" data-line="1377"></span></a> <span class="kd">local</span> <span class="nb">error</span> </span><span id="L-1378"><a href="#L-1378"><span class="linenos" data-line="1378"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s2">&quot;table&quot;</span> <span class="kr">then</span> </span><span id="L-1379"><a href="#L-1379"><span class="linenos" data-line="1379"></span></a> <span class="c1">-- convert LF to line feed, &lt;br /&gt; may not work on some cases</span> </span><span id="L-1380"><a href="#L-1380"><span class="linenos" data-line="1380"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span> <span class="o">==</span> <span class="s2">&quot;LF&quot;</span> <span class="ow">and</span> <span class="s2">&quot;</span><span class="se">\010</span><span class="s2">&quot;</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span> </span><span id="L-1381"><a href="#L-1381"><span class="linenos" data-line="1381"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span> <span class="o">==</span> <span class="s2">&quot;LF&quot;</span> <span class="ow">and</span> <span class="s2">&quot;</span><span class="se">\010</span><span class="s2">&quot;</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span> </span><span id="L-1382"><a href="#L-1382"><span class="linenos" data-line="1382"></span></a> <span class="c1">-- i18n separators</span> </span><span id="L-1383"><a href="#L-1383"><span class="linenos" data-line="1383"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span> <span class="ow">or</span> <span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Comma-separator&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span><span class="n">plain</span><span class="p">()</span> </span><span id="L-1384"><a href="#L-1384"><span class="linenos" data-line="1384"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span> <span class="ow">or</span> <span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;And&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span><span class="n">plain</span><span class="p">()</span> <span class="o">..</span> <span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Word-separator&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">lang</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span><span class="n">plain</span><span class="p">())</span> </span><span id="L-1385"><a href="#L-1385"><span class="linenos" data-line="1385"></span></a> <span class="c1">-- iterate over all elements and return their value (if existing)</span> </span><span id="L-1386"><a href="#L-1386"><span class="linenos" data-line="1386"></span></a> <span class="kd">local</span> <span class="n">value</span><span class="p">,</span> <span class="n">valueq</span> </span><span id="L-1387"><a href="#L-1387"><span class="linenos" data-line="1387"></span></a> <span class="kd">local</span> <span class="n">sortkey</span><span class="p">,</span> <span class="n">sortkeyq</span> </span><span id="L-1388"><a href="#L-1388"><span class="linenos" data-line="1388"></span></a> <span class="kd">local</span> <span class="n">values</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1389"><a href="#L-1389"><span class="linenos" data-line="1389"></span></a> <span class="kd">local</span> <span class="n">sortkeys</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1390"><a href="#L-1390"><span class="linenos" data-line="1390"></span></a> <span class="kd">local</span> <span class="n">refs</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1391"><a href="#L-1391"><span class="linenos" data-line="1391"></span></a> <span class="kd">local</span> <span class="n">rowlist</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1">-- rows to list with whitelist or blacklist</span> </span><span id="L-1392"><a href="#L-1392"><span class="linenos" data-line="1392"></span></a> <span class="kr">for</span> <span class="n">idx</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">claims</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1393"><a href="#L-1393"><span class="linenos" data-line="1393"></span></a> <span class="kd">local</span> <span class="n">claim</span> <span class="o">=</span> <span class="n">claims</span><span class="p">[</span><span class="n">sortindices</span><span class="p">[</span><span class="n">idx</span><span class="p">]]</span> </span><span id="L-1394"><a href="#L-1394"><span class="linenos" data-line="1394"></span></a> <span class="kd">local</span> <span class="n">reference</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1395"><a href="#L-1395"><span class="linenos" data-line="1395"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">whitelisted</span> <span class="kr">then</span> <span class="n">rowlist</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> <span class="kr">end</span> </span><span id="L-1396"><a href="#L-1396"><span class="linenos" data-line="1396"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s2">&quot;table&quot;</span> <span class="kr">then</span> </span><span id="L-1397"><a href="#L-1397"><span class="linenos" data-line="1397"></span></a> <span class="kd">local</span> <span class="n">params</span> <span class="o">=</span> <span class="n">tableParameters</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">parameters</span><span class="p">,</span> <span class="s2">&quot;0&quot;</span><span class="p">)</span> </span><span id="L-1398"><a href="#L-1398"><span class="linenos" data-line="1398"></span></a> <span class="n">value</span><span class="p">,</span> <span class="n">sortkey</span><span class="p">,</span> <span class="nb">error</span> <span class="o">=</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="kc">nil</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span> </span><span id="L-1399"><a href="#L-1399"><span class="linenos" data-line="1399"></span></a> <span class="kr">if</span> <span class="n">value</span> <span class="kr">then</span> </span><span id="L-1400"><a href="#L-1400"><span class="linenos" data-line="1400"></span></a> <span class="n">values</span><span class="p">[</span><span class="o">#</span><span class="n">values</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1401"><a href="#L-1401"><span class="linenos" data-line="1401"></span></a> <span class="n">sortkeys</span><span class="p">[</span><span class="o">#</span><span class="n">sortkeys</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1402"><a href="#L-1402"><span class="linenos" data-line="1402"></span></a> <span class="n">refs</span><span class="p">[</span><span class="o">#</span><span class="n">refs</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1403"><a href="#L-1403"><span class="linenos" data-line="1403"></span></a> <span class="kr">if</span> <span class="n">whitelist</span><span class="p">[</span><span class="s2">&quot;0&quot;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">blacklist</span><span class="p">[</span><span class="s2">&quot;0&quot;</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1404"><a href="#L-1404"><span class="linenos" data-line="1404"></span></a> <span class="kd">local</span> <span class="n">valueraw</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="kc">nil</span><span class="p">,</span> <span class="p">{[</span><span class="s2">&quot;formatting&quot;</span><span class="p">]</span><span class="o">=</span><span class="s2">&quot;raw&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;lang&quot;</span><span class="p">]</span><span class="o">=</span><span class="n">params</span><span class="p">.</span><span class="n">lang</span><span class="p">})</span> </span><span id="L-1405"><a href="#L-1405"><span class="linenos" data-line="1405"></span></a> <span class="kr">if</span> <span class="n">whitelist</span><span class="p">[</span><span class="s2">&quot;0&quot;</span><span class="p">]</span> <span class="ow">and</span> <span class="n">whitelist</span><span class="p">[</span><span class="s2">&quot;0&quot;</span><span class="p">][</span><span class="n">valueraw</span> <span class="ow">or</span> <span class="s2">&quot;&quot;</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1406"><a href="#L-1406"><span class="linenos" data-line="1406"></span></a> <span class="n">rowlist</span><span class="p">[</span><span class="o">#</span><span class="n">values</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1407"><a href="#L-1407"><span class="linenos" data-line="1407"></span></a> <span class="kr">elseif</span> <span class="n">blacklist</span><span class="p">[</span><span class="s2">&quot;0&quot;</span><span class="p">]</span> <span class="ow">and</span> <span class="n">blacklist</span><span class="p">[</span><span class="s2">&quot;0&quot;</span><span class="p">][</span><span class="n">valueraw</span> <span class="ow">or</span> <span class="s2">&quot;&quot;</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1408"><a href="#L-1408"><span class="linenos" data-line="1408"></span></a> <span class="n">rowlist</span><span class="p">[</span><span class="o">#</span><span class="n">values</span><span class="p">]</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1409"><a href="#L-1409"><span class="linenos" data-line="1409"></span></a> <span class="kr">end</span> </span><span id="L-1410"><a href="#L-1410"><span class="linenos" data-line="1410"></span></a> <span class="kr">end</span> </span><span id="L-1411"><a href="#L-1411"><span class="linenos" data-line="1411"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">qual</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">qualifierId</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1412"><a href="#L-1412"><span class="linenos" data-line="1412"></span></a> <span class="kd">local</span> <span class="n">j</span> <span class="o">=</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> </span><span id="L-1413"><a href="#L-1413"><span class="linenos" data-line="1413"></span></a> <span class="n">params</span> <span class="o">=</span> <span class="n">tableParameters</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">parameters</span><span class="p">,</span> <span class="n">j</span><span class="p">)</span> </span><span id="L-1414"><a href="#L-1414"><span class="linenos" data-line="1414"></span></a> <span class="kd">local</span> <span class="n">valueq</span><span class="p">,</span> <span class="n">sortkeyq</span><span class="p">,</span> <span class="n">valueraw</span> </span><span id="L-1415"><a href="#L-1415"><span class="linenos" data-line="1415"></span></a> <span class="kr">if</span> <span class="n">qual</span> <span class="o">==</span> <span class="n">parameters</span><span class="p">.</span><span class="n">property</span> <span class="kr">then</span> <span class="c1">-- hack for getting the property with another formatting, i.e. colformat1=raw</span> </span><span id="L-1416"><a href="#L-1416"><span class="linenos" data-line="1416"></span></a> <span class="n">valueq</span><span class="p">,</span> <span class="n">sortkeyq</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="kc">nil</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span> </span><span id="L-1417"><a href="#L-1417"><span class="linenos" data-line="1417"></span></a> <span class="kr">else</span> </span><span id="L-1418"><a href="#L-1418"><span class="linenos" data-line="1418"></span></a> <span class="kr">for</span> <span class="n">q</span> <span class="kr">in</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">gsplit</span><span class="p">(</span><span class="n">qual</span><span class="p">,</span> <span class="s1">&#39;%s*OR%s*&#39;</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1419"><a href="#L-1419"><span class="linenos" data-line="1419"></span></a> <span class="kr">if</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">q</span><span class="p">,</span> <span class="s2">&quot;.+/.+&quot;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1420"><a href="#L-1420"><span class="linenos" data-line="1420"></span></a> <span class="n">valueq</span><span class="p">,</span> <span class="n">sortkeyq</span><span class="p">,</span> <span class="n">valueraw</span> <span class="o">=</span> <span class="n">getValueOfParentClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span> </span><span id="L-1421"><a href="#L-1421"><span class="linenos" data-line="1421"></span></a> <span class="kr">elseif</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">q</span><span class="p">,</span> <span class="s2">&quot;^/.+&quot;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1422"><a href="#L-1422"><span class="linenos" data-line="1422"></span></a> <span class="kd">local</span> <span class="n">claim2</span> <span class="o">=</span> <span class="n">getStatements</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">id</span><span class="p">,</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">q</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="n">bestrank</span><span class="p">)</span> </span><span id="L-1423"><a href="#L-1423"><span class="linenos" data-line="1423"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">claim2</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1424"><a href="#L-1424"><span class="linenos" data-line="1424"></span></a> <span class="c1">-- only first value of a property as alternative to a qualifier</span> </span><span id="L-1425"><a href="#L-1425"><span class="linenos" data-line="1425"></span></a> <span class="c1">-- multiple values may not be related to a given raw of the table</span> </span><span id="L-1426"><a href="#L-1426"><span class="linenos" data-line="1426"></span></a> <span class="n">valueq</span><span class="p">,</span> <span class="n">sortkeyq</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">claim2</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="kc">nil</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span> </span><span id="L-1427"><a href="#L-1427"><span class="linenos" data-line="1427"></span></a> <span class="kr">end</span> </span><span id="L-1428"><a href="#L-1428"><span class="linenos" data-line="1428"></span></a> <span class="kr">else</span> </span><span id="L-1429"><a href="#L-1429"><span class="linenos" data-line="1429"></span></a> <span class="n">valueq</span><span class="p">,</span> <span class="n">sortkeyq</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span> </span><span id="L-1430"><a href="#L-1430"><span class="linenos" data-line="1430"></span></a> <span class="kr">end</span> </span><span id="L-1431"><a href="#L-1431"><span class="linenos" data-line="1431"></span></a> <span class="kr">if</span> <span class="n">valueq</span> <span class="kr">then</span> </span><span id="L-1432"><a href="#L-1432"><span class="linenos" data-line="1432"></span></a> <span class="n">qual</span> <span class="o">=</span> <span class="n">q</span> </span><span id="L-1433"><a href="#L-1433"><span class="linenos" data-line="1433"></span></a> <span class="kr">break</span> </span><span id="L-1434"><a href="#L-1434"><span class="linenos" data-line="1434"></span></a> <span class="kr">end</span> </span><span id="L-1435"><a href="#L-1435"><span class="linenos" data-line="1435"></span></a> <span class="kr">end</span> </span><span id="L-1436"><a href="#L-1436"><span class="linenos" data-line="1436"></span></a> <span class="kr">end</span> </span><span id="L-1437"><a href="#L-1437"><span class="linenos" data-line="1437"></span></a> <span class="n">values</span><span class="p">[</span><span class="o">#</span><span class="n">values</span><span class="p">][</span><span class="s2">&quot;col&quot;</span> <span class="o">..</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">valueq</span> </span><span id="L-1438"><a href="#L-1438"><span class="linenos" data-line="1438"></span></a> <span class="n">sortkeys</span><span class="p">[</span><span class="o">#</span><span class="n">sortkeys</span><span class="p">][</span><span class="s2">&quot;col&quot;</span> <span class="o">..</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">sortkeyq</span> <span class="ow">or</span> <span class="n">valueq</span> </span><span id="L-1439"><a href="#L-1439"><span class="linenos" data-line="1439"></span></a> <span class="kr">if</span> <span class="n">whitelist</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="ow">or</span> <span class="n">blacklist</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="ow">or</span> <span class="n">ignorevalue</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="ow">or</span> <span class="n">selectvalue</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1440"><a href="#L-1440"><span class="linenos" data-line="1440"></span></a> <span class="n">valueq</span> <span class="o">=</span> <span class="n">valueraw</span> <span class="ow">or</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">qual</span><span class="p">,</span> <span class="p">{[</span><span class="s2">&quot;formatting&quot;</span><span class="p">]</span><span class="o">=</span><span class="s2">&quot;raw&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;lang&quot;</span><span class="p">]</span><span class="o">=</span><span class="n">params</span><span class="p">.</span><span class="n">lang</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;list&quot;</span><span class="p">]</span><span class="o">=</span><span class="n">params</span><span class="p">.</span><span class="n">list</span><span class="p">})</span> </span><span id="L-1441"><a href="#L-1441"><span class="linenos" data-line="1441"></span></a> <span class="kr">if</span> <span class="n">valueq</span> <span class="kr">then</span> </span><span id="L-1442"><a href="#L-1442"><span class="linenos" data-line="1442"></span></a> <span class="kr">if</span> <span class="n">whitelist</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1443"><a href="#L-1443"><span class="linenos" data-line="1443"></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">whitelist</span><span class="p">[</span><span class="n">j</span><span class="p">])</span> <span class="kr">do</span> </span><span id="L-1444"><a href="#L-1444"><span class="linenos" data-line="1444"></span></a> <span class="kr">if</span> <span class="n">v</span> <span class="ow">and</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">valueq</span><span class="p">,</span> <span class="n">k</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="kr">then</span> </span><span id="L-1445"><a href="#L-1445"><span class="linenos" data-line="1445"></span></a> <span class="n">rowlist</span><span class="p">[</span><span class="o">#</span><span class="n">values</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1446"><a href="#L-1446"><span class="linenos" data-line="1446"></span></a> <span class="kr">end</span> </span><span id="L-1447"><a href="#L-1447"><span class="linenos" data-line="1447"></span></a> <span class="kr">end</span> </span><span id="L-1448"><a href="#L-1448"><span class="linenos" data-line="1448"></span></a> <span class="kr">elseif</span> <span class="n">blacklist</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1449"><a href="#L-1449"><span class="linenos" data-line="1449"></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">blacklist</span><span class="p">[</span><span class="n">j</span><span class="p">])</span> <span class="kr">do</span> </span><span id="L-1450"><a href="#L-1450"><span class="linenos" data-line="1450"></span></a> <span class="kr">if</span> <span class="n">v</span> <span class="ow">and</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">valueq</span><span class="p">,</span> <span class="n">k</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="kr">then</span> </span><span id="L-1451"><a href="#L-1451"><span class="linenos" data-line="1451"></span></a> <span class="n">rowlist</span><span class="p">[</span><span class="o">#</span><span class="n">values</span><span class="p">]</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1452"><a href="#L-1452"><span class="linenos" data-line="1452"></span></a> <span class="kr">end</span> </span><span id="L-1453"><a href="#L-1453"><span class="linenos" data-line="1453"></span></a> <span class="kr">end</span> </span><span id="L-1454"><a href="#L-1454"><span class="linenos" data-line="1454"></span></a> <span class="kr">elseif</span> <span class="n">ignorevalue</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1455"><a href="#L-1455"><span class="linenos" data-line="1455"></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">ignorevalue</span><span class="p">[</span><span class="n">j</span><span class="p">])</span> <span class="kr">do</span> </span><span id="L-1456"><a href="#L-1456"><span class="linenos" data-line="1456"></span></a> <span class="kr">if</span> <span class="n">v</span> <span class="ow">and</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">valueq</span><span class="p">,</span> <span class="n">k</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="kr">then</span> </span><span id="L-1457"><a href="#L-1457"><span class="linenos" data-line="1457"></span></a> <span class="n">values</span><span class="p">[</span><span class="o">#</span><span class="n">values</span><span class="p">][</span><span class="s2">&quot;col&quot;</span> <span class="o">..</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1458"><a href="#L-1458"><span class="linenos" data-line="1458"></span></a> <span class="kr">end</span> </span><span id="L-1459"><a href="#L-1459"><span class="linenos" data-line="1459"></span></a> <span class="kr">end</span> </span><span id="L-1460"><a href="#L-1460"><span class="linenos" data-line="1460"></span></a> <span class="kr">elseif</span> <span class="n">selectvalue</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1461"><a href="#L-1461"><span class="linenos" data-line="1461"></span></a> <span class="kd">local</span> <span class="n">selected</span> </span><span id="L-1462"><a href="#L-1462"><span class="linenos" data-line="1462"></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">selectvalue</span><span class="p">[</span><span class="n">j</span><span class="p">])</span> <span class="kr">do</span> </span><span id="L-1463"><a href="#L-1463"><span class="linenos" data-line="1463"></span></a> <span class="kr">if</span> <span class="n">v</span> <span class="ow">and</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">valueq</span><span class="p">,</span> <span class="n">k</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="kr">then</span> </span><span id="L-1464"><a href="#L-1464"><span class="linenos" data-line="1464"></span></a> <span class="n">selected</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1465"><a href="#L-1465"><span class="linenos" data-line="1465"></span></a> <span class="kr">end</span> </span><span id="L-1466"><a href="#L-1466"><span class="linenos" data-line="1466"></span></a> <span class="kr">end</span> </span><span id="L-1467"><a href="#L-1467"><span class="linenos" data-line="1467"></span></a> <span class="kr">if</span> <span class="n">selected</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-1468"><a href="#L-1468"><span class="linenos" data-line="1468"></span></a> <span class="n">values</span><span class="p">[</span><span class="o">#</span><span class="n">values</span><span class="p">][</span><span class="s2">&quot;col&quot;</span> <span class="o">..</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1469"><a href="#L-1469"><span class="linenos" data-line="1469"></span></a> <span class="kr">end</span> </span><span id="L-1470"><a href="#L-1470"><span class="linenos" data-line="1470"></span></a> <span class="kr">end</span> </span><span id="L-1471"><a href="#L-1471"><span class="linenos" data-line="1471"></span></a> <span class="kr">end</span> </span><span id="L-1472"><a href="#L-1472"><span class="linenos" data-line="1472"></span></a> <span class="kr">end</span> </span><span id="L-1473"><a href="#L-1473"><span class="linenos" data-line="1473"></span></a> <span class="kr">end</span> </span><span id="L-1474"><a href="#L-1474"><span class="linenos" data-line="1474"></span></a> <span class="kr">end</span> </span><span id="L-1475"><a href="#L-1475"><span class="linenos" data-line="1475"></span></a> <span class="kr">else</span> </span><span id="L-1476"><a href="#L-1476"><span class="linenos" data-line="1476"></span></a> <span class="n">value</span><span class="p">,</span> <span class="n">sortkey</span><span class="p">,</span> <span class="nb">error</span> <span class="o">=</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">qualifierId</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-1477"><a href="#L-1477"><span class="linenos" data-line="1477"></span></a> <span class="n">values</span><span class="p">[</span><span class="o">#</span><span class="n">values</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1478"><a href="#L-1478"><span class="linenos" data-line="1478"></span></a> <span class="n">sortkeys</span><span class="p">[</span><span class="o">#</span><span class="n">sortkeys</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1479"><a href="#L-1479"><span class="linenos" data-line="1479"></span></a> <span class="n">refs</span><span class="p">[</span><span class="o">#</span><span class="n">refs</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1480"><a href="#L-1480"><span class="linenos" data-line="1480"></span></a> <span class="kr">end</span> </span><span id="L-1481"><a href="#L-1481"><span class="linenos" data-line="1481"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">value</span> <span class="ow">and</span> <span class="n">showerrors</span> <span class="kr">then</span> <span class="n">value</span> <span class="o">=</span> <span class="nb">error</span> <span class="kr">end</span> </span><span id="L-1482"><a href="#L-1482"><span class="linenos" data-line="1482"></span></a> <span class="kr">if</span> <span class="n">value</span> <span class="kr">then</span> </span><span id="L-1483"><a href="#L-1483"><span class="linenos" data-line="1483"></span></a> <span class="kr">if</span> <span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">references</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">onlysourced</span><span class="p">)</span> <span class="ow">and</span> <span class="n">claim</span><span class="p">.</span><span class="n">references</span> <span class="kr">then</span> </span><span id="L-1484"><a href="#L-1484"><span class="linenos" data-line="1484"></span></a> <span class="n">reference</span> <span class="o">=</span> <span class="n">claim</span><span class="p">.</span><span class="n">references</span> </span><span id="L-1485"><a href="#L-1485"><span class="linenos" data-line="1485"></span></a> <span class="kr">end</span> </span><span id="L-1486"><a href="#L-1486"><span class="linenos" data-line="1486"></span></a> <span class="n">refs</span><span class="p">[</span><span class="o">#</span><span class="n">refs</span><span class="p">][</span><span class="s2">&quot;col0&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">reference</span> </span><span id="L-1487"><a href="#L-1487"><span class="linenos" data-line="1487"></span></a> <span class="n">values</span><span class="p">[</span><span class="o">#</span><span class="n">values</span><span class="p">][</span><span class="s2">&quot;col0&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> </span><span id="L-1488"><a href="#L-1488"><span class="linenos" data-line="1488"></span></a> <span class="n">sortkeys</span><span class="p">[</span><span class="o">#</span><span class="n">sortkeys</span><span class="p">][</span><span class="s2">&quot;col0&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sortkey</span> <span class="ow">or</span> <span class="n">value</span> </span><span id="L-1489"><a href="#L-1489"><span class="linenos" data-line="1489"></span></a> <span class="kr">end</span> </span><span id="L-1490"><a href="#L-1490"><span class="linenos" data-line="1490"></span></a> <span class="kr">end</span> </span><span id="L-1491"><a href="#L-1491"><span class="linenos" data-line="1491"></span></a> <span class="c1">-- sort and format results</span> </span><span id="L-1492"><a href="#L-1492"><span class="linenos" data-line="1492"></span></a> <span class="n">sortindices</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1493"><a href="#L-1493"><span class="linenos" data-line="1493"></span></a> <span class="kr">for</span> <span class="n">idx</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">values</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1494"><a href="#L-1494"><span class="linenos" data-line="1494"></span></a> <span class="n">sortindices</span><span class="p">[</span><span class="o">#</span><span class="n">sortindices</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">idx</span> </span><span id="L-1495"><a href="#L-1495"><span class="linenos" data-line="1495"></span></a> <span class="kr">end</span> </span><span id="L-1496"><a href="#L-1496"><span class="linenos" data-line="1496"></span></a> <span class="kr">if</span> <span class="n">sorting_col</span> <span class="kr">then</span> </span><span id="L-1497"><a href="#L-1497"><span class="linenos" data-line="1497"></span></a> <span class="kd">local</span> <span class="n">sorting_table</span> <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">split</span><span class="p">(</span><span class="n">sorting_col</span><span class="p">,</span> <span class="s1">&#39;%D+&#39;</span><span class="p">)</span> </span><span id="L-1498"><a href="#L-1498"><span class="linenos" data-line="1498"></span></a> <span class="kd">local</span> <span class="n">comparator</span> <span class="o">=</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><span id="L-1499"><a href="#L-1499"><span class="linenos" data-line="1499"></span></a> <span class="kd">local</span> <span class="n">valuea</span><span class="p">,</span> <span class="n">valueb</span> </span><span id="L-1500"><a href="#L-1500"><span class="linenos" data-line="1500"></span></a> <span class="kd">local</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-1501"><a href="#L-1501"><span class="linenos" data-line="1501"></span></a> <span class="kr">while</span> <span class="n">valuea</span> <span class="o">==</span> <span class="n">valueb</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">&lt;=</span> <span class="o">#</span><span class="n">sorting_table</span> <span class="kr">do</span> </span><span id="L-1502"><a href="#L-1502"><span class="linenos" data-line="1502"></span></a> <span class="n">valuea</span> <span class="o">=</span> <span class="n">sortkeys</span><span class="p">[</span><span class="n">a</span><span class="p">][</span><span class="s2">&quot;col&quot;</span> <span class="o">..</span> <span class="n">sorting_table</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-1503"><a href="#L-1503"><span class="linenos" data-line="1503"></span></a> <span class="n">valueb</span> <span class="o">=</span> <span class="n">sortkeys</span><span class="p">[</span><span class="n">b</span><span class="p">][</span><span class="s2">&quot;col&quot;</span> <span class="o">..</span> <span class="n">sorting_table</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-1504"><a href="#L-1504"><span class="linenos" data-line="1504"></span></a> <span class="n">i</span> <span class="o">=</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-1505"><a href="#L-1505"><span class="linenos" data-line="1505"></span></a> <span class="kr">end</span> </span><span id="L-1506"><a href="#L-1506"><span class="linenos" data-line="1506"></span></a> </span><span id="L-1507"><a href="#L-1507"><span class="linenos" data-line="1507"></span></a> <span class="kr">if</span> <span class="n">sorting_up</span> <span class="kr">then</span> </span><span id="L-1508"><a href="#L-1508"><span class="linenos" data-line="1508"></span></a> <span class="kr">return</span> <span class="n">valueb</span> <span class="o">&gt;</span> <span class="n">valuea</span> </span><span id="L-1509"><a href="#L-1509"><span class="linenos" data-line="1509"></span></a> <span class="kr">end</span> </span><span id="L-1510"><a href="#L-1510"><span class="linenos" data-line="1510"></span></a> <span class="kr">return</span> <span class="n">valueb</span> <span class="o">&lt;</span> <span class="n">valuea</span> </span><span id="L-1511"><a href="#L-1511"><span class="linenos" data-line="1511"></span></a> <span class="kr">end</span> </span><span id="L-1512"><a href="#L-1512"><span class="linenos" data-line="1512"></span></a> <span class="nb">table.sort</span><span class="p">(</span><span class="n">sortindices</span><span class="p">,</span> <span class="n">comparator</span><span class="p">)</span> </span><span id="L-1513"><a href="#L-1513"><span class="linenos" data-line="1513"></span></a> <span class="kr">end</span> </span><span id="L-1514"><a href="#L-1514"><span class="linenos" data-line="1514"></span></a> <span class="kd">local</span> <span class="n">maxvals</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">listmax</span><span class="p">)</span> </span><span id="L-1515"><a href="#L-1515"><span class="linenos" data-line="1515"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1516"><a href="#L-1516"><span class="linenos" data-line="1516"></span></a> <span class="kr">for</span> <span class="n">idx</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">values</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1517"><a href="#L-1517"><span class="linenos" data-line="1517"></span></a> <span class="kd">local</span> <span class="n">valuerow</span> <span class="o">=</span> <span class="n">values</span><span class="p">[</span><span class="n">sortindices</span><span class="p">[</span><span class="n">idx</span><span class="p">]]</span> </span><span id="L-1518"><a href="#L-1518"><span class="linenos" data-line="1518"></span></a> <span class="kd">local</span> <span class="n">reference</span><span class="p">,</span> <span class="n">valid_ref</span> <span class="o">=</span> <span class="n">getReferences</span><span class="p">({[</span><span class="s2">&quot;references&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="n">sortindices</span><span class="p">[</span><span class="n">idx</span><span class="p">]][</span><span class="s2">&quot;col0&quot;</span><span class="p">]},</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-1519"><a href="#L-1519"><span class="linenos" data-line="1519"></span></a> </span><span id="L-1520"><a href="#L-1520"><span class="linenos" data-line="1520"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">valuerow</span><span class="p">[</span><span class="s2">&quot;col0&quot;</span><span class="p">]</span> </span><span id="L-1521"><a href="#L-1521"><span class="linenos" data-line="1521"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s2">&quot;table&quot;</span> <span class="kr">then</span> </span><span id="L-1522"><a href="#L-1522"><span class="linenos" data-line="1522"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">rowlist</span><span class="p">[</span><span class="n">sortindices</span><span class="p">[</span><span class="n">idx</span><span class="p">]]</span> <span class="kr">then</span> </span><span id="L-1523"><a href="#L-1523"><span class="linenos" data-line="1523"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1524"><a href="#L-1524"><span class="linenos" data-line="1524"></span></a> <span class="kr">else</span> </span><span id="L-1525"><a href="#L-1525"><span class="linenos" data-line="1525"></span></a> <span class="kd">local</span> <span class="n">rowformatting</span> <span class="o">=</span> <span class="n">rowformat</span> <span class="o">..</span> <span class="s2">&quot;$&quot;</span> <span class="c1">-- fake end character added for easy gsub</span> </span><span id="L-1526"><a href="#L-1526"><span class="linenos" data-line="1526"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">rowformatting</span><span class="p">,</span> <span class="s2">&quot;$0&quot;</span><span class="p">,</span> <span class="p">{[</span><span class="s2">&quot;$0&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span><span class="p">})</span> </span><span id="L-1527"><a href="#L-1527"><span class="linenos" data-line="1527"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">&quot;$R0&quot;</span><span class="p">,</span> <span class="n">reference</span><span class="p">)</span> <span class="c1">-- add reference</span> </span><span id="L-1528"><a href="#L-1528"><span class="linenos" data-line="1528"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">_</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">qualifierId</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1529"><a href="#L-1529"><span class="linenos" data-line="1529"></span></a> <span class="kd">local</span> <span class="n">valueq</span> <span class="o">=</span> <span class="n">valuerow</span><span class="p">[</span><span class="s2">&quot;col&quot;</span> <span class="o">..</span> <span class="n">i</span><span class="p">]</span> </span><span id="L-1530"><a href="#L-1530"><span class="linenos" data-line="1530"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;rowsubformat&quot;</span> <span class="o">..</span> <span class="n">i</span><span class="p">]</span> <span class="ow">and</span> <span class="n">isSet</span><span class="p">(</span><span class="n">valueq</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1531"><a href="#L-1531"><span class="linenos" data-line="1531"></span></a> <span class="c1">-- add fake end character $</span> </span><span id="L-1532"><a href="#L-1532"><span class="linenos" data-line="1532"></span></a> <span class="c1">-- gsub $i not followed by a number so $1 doesn&#39;t match $10, $11...</span> </span><span id="L-1533"><a href="#L-1533"><span class="linenos" data-line="1533"></span></a> <span class="c1">-- remove fake end character</span> </span><span id="L-1534"><a href="#L-1534"><span class="linenos" data-line="1534"></span></a> <span class="n">valueq</span> <span class="o">=</span> <span class="n">captureEscapes</span><span class="p">(</span><span class="n">valueq</span><span class="p">)</span> </span><span id="L-1535"><a href="#L-1535"><span class="linenos" data-line="1535"></span></a> <span class="n">valueq</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;rowsubformat&quot;</span> <span class="o">..</span> <span class="n">i</span><span class="p">]</span> <span class="o">..</span> <span class="s2">&quot;$&quot;</span><span class="p">,</span> <span class="s2">&quot;$&quot;</span> <span class="o">..</span> <span class="n">i</span> <span class="o">..</span> <span class="s2">&quot;(%D)&quot;</span><span class="p">,</span> <span class="n">valueq</span> <span class="o">..</span> <span class="s2">&quot;%1&quot;</span><span class="p">)</span> </span><span id="L-1536"><a href="#L-1536"><span class="linenos" data-line="1536"></span></a> <span class="n">valueq</span> <span class="o">=</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">valueq</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">)</span> </span><span id="L-1537"><a href="#L-1537"><span class="linenos" data-line="1537"></span></a> <span class="n">rowformatting</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">rowformatting</span><span class="p">,</span> <span class="s2">&quot;$&quot;</span> <span class="o">..</span> <span class="n">i</span> <span class="o">..</span> <span class="s2">&quot;(%D)&quot;</span><span class="p">,</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;rowsubformat&quot;</span> <span class="o">..</span> <span class="n">i</span><span class="p">]</span> <span class="o">..</span> <span class="s2">&quot;%1&quot;</span><span class="p">)</span> </span><span id="L-1538"><a href="#L-1538"><span class="linenos" data-line="1538"></span></a> <span class="kr">end</span> </span><span id="L-1539"><a href="#L-1539"><span class="linenos" data-line="1539"></span></a> <span class="n">valueq</span> <span class="o">=</span> <span class="n">valueq</span> <span class="ow">and</span> <span class="n">captureEscapes</span><span class="p">(</span><span class="n">valueq</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-1540"><a href="#L-1540"><span class="linenos" data-line="1540"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">&quot;$&quot;</span> <span class="o">..</span> <span class="n">i</span> <span class="o">..</span> <span class="s2">&quot;(%D)&quot;</span><span class="p">,</span> <span class="n">valueq</span> <span class="o">..</span> <span class="s2">&quot;%1&quot;</span><span class="p">)</span> </span><span id="L-1541"><a href="#L-1541"><span class="linenos" data-line="1541"></span></a> <span class="kr">end</span> </span><span id="L-1542"><a href="#L-1542"><span class="linenos" data-line="1542"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">)</span> <span class="c1">-- remove fake end character</span> </span><span id="L-1543"><a href="#L-1543"><span class="linenos" data-line="1543"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">expandBraces</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">rowformatting</span><span class="p">)</span> </span><span id="L-1544"><a href="#L-1544"><span class="linenos" data-line="1544"></span></a> <span class="kr">end</span> </span><span id="L-1545"><a href="#L-1545"><span class="linenos" data-line="1545"></span></a> <span class="kr">elseif</span> <span class="n">value</span> <span class="kr">then</span> </span><span id="L-1546"><a href="#L-1546"><span class="linenos" data-line="1546"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">expandBraces</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span><span class="p">)</span> </span><span id="L-1547"><a href="#L-1547"><span class="linenos" data-line="1547"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span> <span class="o">..</span> <span class="n">reference</span> </span><span id="L-1548"><a href="#L-1548"><span class="linenos" data-line="1548"></span></a> <span class="kr">end</span> </span><span id="L-1549"><a href="#L-1549"><span class="linenos" data-line="1549"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">parameters</span><span class="p">.</span><span class="n">onlysourced</span> <span class="ow">or</span> <span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">onlysourced</span> <span class="ow">and</span> <span class="n">valid_ref</span><span class="p">))</span> <span class="kr">then</span> </span><span id="L-1550"><a href="#L-1550"><span class="linenos" data-line="1550"></span></a> <span class="n">result</span><span class="p">[</span><span class="o">#</span><span class="n">result</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> </span><span id="L-1551"><a href="#L-1551"><span class="linenos" data-line="1551"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="ow">or</span> <span class="p">(</span><span class="n">maxvals</span> <span class="ow">and</span> <span class="n">maxvals</span> <span class="o">==</span> <span class="o">#</span><span class="n">result</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1552"><a href="#L-1552"><span class="linenos" data-line="1552"></span></a> <span class="kr">break</span> </span><span id="L-1553"><a href="#L-1553"><span class="linenos" data-line="1553"></span></a> <span class="kr">end</span> </span><span id="L-1554"><a href="#L-1554"><span class="linenos" data-line="1554"></span></a> <span class="kr">end</span> </span><span id="L-1555"><a href="#L-1555"><span class="linenos" data-line="1555"></span></a> <span class="kr">end</span> </span><span id="L-1556"><a href="#L-1556"><span class="linenos" data-line="1556"></span></a> </span><span id="L-1557"><a href="#L-1557"><span class="linenos" data-line="1557"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">.</span><span class="n">query</span> <span class="o">==</span> <span class="s1">&#39;num&#39;</span> <span class="kr">then</span> </span><span id="L-1558"><a href="#L-1558"><span class="linenos" data-line="1558"></span></a> <span class="n">result_query</span> <span class="o">=</span> <span class="o">#</span><span class="n">result</span> </span><span id="L-1559"><a href="#L-1559"><span class="linenos" data-line="1559"></span></a> <span class="kr">end</span> </span><span id="L-1560"><a href="#L-1560"><span class="linenos" data-line="1560"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">result</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1561"><a href="#L-1561"><span class="linenos" data-line="1561"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;table&#39;</span> <span class="kr">then</span> </span><span id="L-1562"><a href="#L-1562"><span class="linenos" data-line="1562"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">addEditIconTable</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> <span class="c1">-- in a table, add edit icon on last element</span> </span><span id="L-1563"><a href="#L-1563"><span class="linenos" data-line="1563"></span></a> <span class="kr">end</span> </span><span id="L-1564"><a href="#L-1564"><span class="linenos" data-line="1564"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">preformat</span> <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">listToText</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span><span class="p">)</span> <span class="o">..</span> <span class="n">postformat</span> </span><span id="L-1565"><a href="#L-1565"><span class="linenos" data-line="1565"></span></a> <span class="kr">else</span> </span><span id="L-1566"><a href="#L-1566"><span class="linenos" data-line="1566"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-1567"><a href="#L-1567"><span class="linenos" data-line="1567"></span></a> <span class="kr">end</span> </span><span id="L-1568"><a href="#L-1568"><span class="linenos" data-line="1568"></span></a> <span class="kr">else</span> </span><span id="L-1569"><a href="#L-1569"><span class="linenos" data-line="1569"></span></a> <span class="c1">-- return first element</span> </span><span id="L-1570"><a href="#L-1570"><span class="linenos" data-line="1570"></span></a> <span class="kd">local</span> <span class="n">claim</span> <span class="o">=</span> <span class="n">claims</span><span class="p">[</span><span class="n">sortindices</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span> </span><span id="L-1571"><a href="#L-1571"><span class="linenos" data-line="1571"></span></a> <span class="n">result</span><span class="p">,</span> <span class="n">result2</span><span class="p">,</span> <span class="nb">error</span> <span class="o">=</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">qualifierId</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-1572"><a href="#L-1572"><span class="linenos" data-line="1572"></span></a> <span class="kr">if</span> <span class="n">result</span> <span class="kr">then</span> </span><span id="L-1573"><a href="#L-1573"><span class="linenos" data-line="1573"></span></a> <span class="kd">local</span> <span class="n">ref</span><span class="p">,</span> <span class="n">valid_ref</span> <span class="o">=</span> <span class="n">getReferences</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-1574"><a href="#L-1574"><span class="linenos" data-line="1574"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">onlysourced</span> <span class="ow">and</span> <span class="n">valid_ref</span> <span class="o">==</span> <span class="kc">false</span> <span class="kr">then</span> </span><span id="L-1575"><a href="#L-1575"><span class="linenos" data-line="1575"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1576"><a href="#L-1576"><span class="linenos" data-line="1576"></span></a> <span class="kr">else</span> </span><span id="L-1577"><a href="#L-1577"><span class="linenos" data-line="1577"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">result</span> <span class="o">..</span> <span class="n">ref</span> </span><span id="L-1578"><a href="#L-1578"><span class="linenos" data-line="1578"></span></a> <span class="kr">end</span> </span><span id="L-1579"><a href="#L-1579"><span class="linenos" data-line="1579"></span></a> <span class="kr">end</span> </span><span id="L-1580"><a href="#L-1580"><span class="linenos" data-line="1580"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">.</span><span class="n">query</span> <span class="o">==</span> <span class="s1">&#39;num&#39;</span> <span class="kr">then</span> <span class="n">result_query</span> <span class="o">=</span> <span class="n">result</span> <span class="ow">and</span> <span class="mi">1</span> <span class="ow">or</span> <span class="mi">0</span> <span class="kr">end</span> </span><span id="L-1581"><a href="#L-1581"><span class="linenos" data-line="1581"></span></a> <span class="kr">end</span> </span><span id="L-1582"><a href="#L-1582"><span class="linenos" data-line="1582"></span></a> </span><span id="L-1583"><a href="#L-1583"><span class="linenos" data-line="1583"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">result</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1584"><a href="#L-1584"><span class="linenos" data-line="1584"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;table&#39;</span> <span class="ow">or</span> <span class="p">(</span><span class="n">result2</span> <span class="ow">and</span> <span class="n">result2</span> <span class="o">==</span> <span class="s1">&#39;no-icon&#39;</span><span class="p">))</span> <span class="kr">then</span> </span><span id="L-1585"><a href="#L-1585"><span class="linenos" data-line="1585"></span></a> <span class="c1">-- add edit icon, except table added previously and except explicit no-icon internal flag</span> </span><span id="L-1586"><a href="#L-1586"><span class="linenos" data-line="1586"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">result</span> <span class="o">..</span> <span class="n">addEditIcon</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span> </span><span id="L-1587"><a href="#L-1587"><span class="linenos" data-line="1587"></span></a> <span class="kr">end</span> </span><span id="L-1588"><a href="#L-1588"><span class="linenos" data-line="1588"></span></a> <span class="kr">else</span> </span><span id="L-1589"><a href="#L-1589"><span class="linenos" data-line="1589"></span></a> <span class="kr">if</span> <span class="n">showerrors</span> <span class="kr">then</span> <span class="n">result</span> <span class="o">=</span> <span class="nb">error</span> <span class="kr">else</span> <span class="n">result</span> <span class="o">=</span> <span class="n">default</span> <span class="kr">end</span> </span><span id="L-1590"><a href="#L-1590"><span class="linenos" data-line="1590"></span></a> <span class="kr">end</span> </span><span id="L-1591"><a href="#L-1591"><span class="linenos" data-line="1591"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">.</span><span class="n">query</span> <span class="o">==</span> <span class="s1">&#39;untranslated&#39;</span> <span class="ow">and</span> <span class="n">required</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_sandbox</span> <span class="kr">then</span> </span><span id="L-1592"><a href="#L-1592"><span class="linenos" data-line="1592"></span></a> <span class="n">result_query</span> <span class="o">=</span> <span class="n">untranslated</span> </span><span id="L-1593"><a href="#L-1593"><span class="linenos" data-line="1593"></span></a> <span class="kr">end</span> </span><span id="L-1594"><a href="#L-1594"><span class="linenos" data-line="1594"></span></a> <span class="kr">return</span> <span class="n">result</span><span class="p">,</span> <span class="n">result_query</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-1595"><a href="#L-1595"><span class="linenos" data-line="1595"></span></a><span class="kr">end</span> </span><span id="L-1596"><a href="#L-1596"><span class="linenos" data-line="1596"></span></a> </span><span id="L-1597"><a href="#L-1597"><span class="linenos" data-line="1597"></span></a><span class="c1">-- Local functions for getParentValues -----------------------</span> </span><span id="L-1598"><a href="#L-1598"><span class="linenos" data-line="1598"></span></a> </span><span id="L-1599"><a href="#L-1599"><span class="linenos" data-line="1599"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">uc_first</span><span class="p">(</span><span class="n">word</span><span class="p">)</span> </span><span id="L-1600"><a href="#L-1600"><span class="linenos" data-line="1600"></span></a> <span class="kr">if</span> <span class="n">word</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-1601"><a href="#L-1601"><span class="linenos" data-line="1601"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">upper</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">sub</span><span class="p">(</span><span class="n">word</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="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">sub</span><span class="p">(</span><span class="n">word</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-1602"><a href="#L-1602"><span class="linenos" data-line="1602"></span></a><span class="kr">end</span> </span><span id="L-1603"><a href="#L-1603"><span class="linenos" data-line="1603"></span></a> </span><span id="L-1604"><a href="#L-1604"><span class="linenos" data-line="1604"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getPropertyValue</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">property</span><span class="p">,</span> <span class="n">parameter</span><span class="p">,</span> <span class="n">langs</span><span class="p">,</span> <span class="n">labelicon</span><span class="p">,</span> <span class="n">case</span><span class="p">)</span> </span><span id="L-1605"><a href="#L-1605"><span class="linenos" data-line="1605"></span></a> <span class="kd">local</span> <span class="n">snaks</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getBestStatements</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">property</span><span class="p">)</span> </span><span id="L-1606"><a href="#L-1606"><span class="linenos" data-line="1606"></span></a> <span class="kd">local</span> <span class="n">mysnak</span> <span class="o">=</span> <span class="n">getSnak</span><span class="p">(</span><span class="n">snaks</span><span class="p">,</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;mainsnak&quot;</span><span class="p">})</span> </span><span id="L-1607"><a href="#L-1607"><span class="linenos" data-line="1607"></span></a> <span class="kr">if</span> <span class="n">mysnak</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-1608"><a href="#L-1608"><span class="linenos" data-line="1608"></span></a> <span class="kr">return</span> </span><span id="L-1609"><a href="#L-1609"><span class="linenos" data-line="1609"></span></a> <span class="kr">end</span> </span><span id="L-1610"><a href="#L-1610"><span class="linenos" data-line="1610"></span></a> </span><span id="L-1611"><a href="#L-1611"><span class="linenos" data-line="1611"></span></a> <span class="kd">local</span> <span class="n">entity_id</span> </span><span id="L-1612"><a href="#L-1612"><span class="linenos" data-line="1612"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="s1">&#39;-&#39;</span> <span class="c1">-- default for &#39;no value&#39;</span> </span><span id="L-1613"><a href="#L-1613"><span class="linenos" data-line="1613"></span></a> <span class="kr">if</span> <span class="n">mysnak</span><span class="p">.</span><span class="n">datavalue</span> <span class="kr">then</span> </span><span id="L-1614"><a href="#L-1614"><span class="linenos" data-line="1614"></span></a> <span class="n">entity_id</span> <span class="o">=</span> <span class="s2">&quot;Q&quot;</span> <span class="o">..</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">mysnak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="n">value</span><span class="p">[</span><span class="s1">&#39;numeric-id&#39;</span><span class="p">])</span> </span><span id="L-1615"><a href="#L-1615"><span class="linenos" data-line="1615"></span></a> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">getSnakValue</span><span class="p">(</span><span class="n">mysnak</span><span class="p">,</span> <span class="p">{</span><span class="n">formatting</span><span class="o">=</span><span class="n">parameter</span><span class="p">,</span> <span class="n">lang</span><span class="o">=</span><span class="n">langs</span><span class="p">,</span> <span class="n">labelicon</span><span class="o">=</span><span class="n">labelicon</span><span class="p">,</span> <span class="n">case</span><span class="o">=</span><span class="n">case</span><span class="p">})</span> </span><span id="L-1616"><a href="#L-1616"><span class="linenos" data-line="1616"></span></a> <span class="kr">end</span> </span><span id="L-1617"><a href="#L-1617"><span class="linenos" data-line="1617"></span></a> </span><span id="L-1618"><a href="#L-1618"><span class="linenos" data-line="1618"></span></a> <span class="kr">return</span> <span class="n">entity_id</span><span class="p">,</span> <span class="n">result</span> </span><span id="L-1619"><a href="#L-1619"><span class="linenos" data-line="1619"></span></a><span class="kr">end</span> </span><span id="L-1620"><a href="#L-1620"><span class="linenos" data-line="1620"></span></a> </span><span id="L-1621"><a href="#L-1621"><span class="linenos" data-line="1621"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getParentObjects</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> </span><span id="L-1622"><a href="#L-1622"><span class="linenos" data-line="1622"></span></a> <span class="n">prop_format</span><span class="p">,</span> </span><span id="L-1623"><a href="#L-1623"><span class="linenos" data-line="1623"></span></a> <span class="n">label_format</span><span class="p">,</span> </span><span id="L-1624"><a href="#L-1624"><span class="linenos" data-line="1624"></span></a> <span class="n">languages</span><span class="p">,</span> </span><span id="L-1625"><a href="#L-1625"><span class="linenos" data-line="1625"></span></a> <span class="n">propertySupString</span><span class="p">,</span> </span><span id="L-1626"><a href="#L-1626"><span class="linenos" data-line="1626"></span></a> <span class="n">propertyLabel</span><span class="p">,</span> </span><span id="L-1627"><a href="#L-1627"><span class="linenos" data-line="1627"></span></a> <span class="n">propertyLink</span><span class="p">,</span> </span><span id="L-1628"><a href="#L-1628"><span class="linenos" data-line="1628"></span></a> <span class="n">label_show</span><span class="p">,</span> </span><span id="L-1629"><a href="#L-1629"><span class="linenos" data-line="1629"></span></a> <span class="n">labelicon0</span><span class="p">,</span> </span><span id="L-1630"><a href="#L-1630"><span class="linenos" data-line="1630"></span></a> <span class="n">labelicon1</span><span class="p">,</span> </span><span id="L-1631"><a href="#L-1631"><span class="linenos" data-line="1631"></span></a> <span class="n">upto_number</span><span class="p">,</span> </span><span id="L-1632"><a href="#L-1632"><span class="linenos" data-line="1632"></span></a> <span class="n">upto_label</span><span class="p">,</span> </span><span id="L-1633"><a href="#L-1633"><span class="linenos" data-line="1633"></span></a> <span class="n">upto_value</span><span class="p">,</span> </span><span id="L-1634"><a href="#L-1634"><span class="linenos" data-line="1634"></span></a> <span class="n">last_only</span><span class="p">,</span> </span><span id="L-1635"><a href="#L-1635"><span class="linenos" data-line="1635"></span></a> <span class="n">grammatical_case</span><span class="p">,</span> </span><span id="L-1636"><a href="#L-1636"><span class="linenos" data-line="1636"></span></a> <span class="n">include_self</span><span class="p">)</span> </span><span id="L-1637"><a href="#L-1637"><span class="linenos" data-line="1637"></span></a> </span><span id="L-1638"><a href="#L-1638"><span class="linenos" data-line="1638"></span></a> <span class="kd">local</span> <span class="n">propertySups</span> <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">split</span><span class="p">(</span><span class="n">propertySupString</span><span class="p">,</span> <span class="s1">&#39;[^P%d]&#39;</span><span class="p">)</span> </span><span id="L-1639"><a href="#L-1639"><span class="linenos" data-line="1639"></span></a> </span><span id="L-1640"><a href="#L-1640"><span class="linenos" data-line="1640"></span></a> <span class="kd">local</span> <span class="n">maxloop</span> <span class="o">=</span> <span class="mi">10</span> </span><span id="L-1641"><a href="#L-1641"><span class="linenos" data-line="1641"></span></a> <span class="kr">if</span> <span class="n">upto_number</span> <span class="kr">then</span> </span><span id="L-1642"><a href="#L-1642"><span class="linenos" data-line="1642"></span></a> <span class="n">maxloop</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">upto_number</span><span class="p">)</span> </span><span id="L-1643"><a href="#L-1643"><span class="linenos" data-line="1643"></span></a> <span class="kr">elseif</span> <span class="nb">next</span><span class="p">(</span><span class="n">upto_label</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">next</span><span class="p">(</span><span class="n">upto_value</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1644"><a href="#L-1644"><span class="linenos" data-line="1644"></span></a> <span class="n">maxloop</span> <span class="o">=</span> <span class="mi">50</span> </span><span id="L-1645"><a href="#L-1645"><span class="linenos" data-line="1645"></span></a> <span class="kr">end</span> </span><span id="L-1646"><a href="#L-1646"><span class="linenos" data-line="1646"></span></a> </span><span id="L-1647"><a href="#L-1647"><span class="linenos" data-line="1647"></span></a> <span class="kd">local</span> <span class="n">labels_filter</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="n">label_show</span><span class="p">)</span> </span><span id="L-1648"><a href="#L-1648"><span class="linenos" data-line="1648"></span></a> </span><span id="L-1649"><a href="#L-1649"><span class="linenos" data-line="1649"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1650"><a href="#L-1650"><span class="linenos" data-line="1650"></span></a> <span class="kd">local</span> <span class="n">id_value</span> <span class="o">=</span> <span class="n">id</span> </span><span id="L-1651"><a href="#L-1651"><span class="linenos" data-line="1651"></span></a> <span class="kr">for</span> <span class="n">iter</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">maxloop</span> <span class="kr">do</span> </span><span id="L-1652"><a href="#L-1652"><span class="linenos" data-line="1652"></span></a> <span class="kd">local</span> <span class="n">link</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">labelwicon</span><span class="p">,</span> <span class="n">linktext</span><span class="p">,</span> <span class="n">id_label</span> </span><span id="L-1653"><a href="#L-1653"><span class="linenos" data-line="1653"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">propertySup</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">propertySups</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1654"><a href="#L-1654"><span class="linenos" data-line="1654"></span></a> <span class="kd">local</span> <span class="n">_id_value</span><span class="p">,</span> <span class="n">_link</span> <span class="o">=</span> <span class="n">getPropertyValue</span><span class="p">(</span><span class="n">id_value</span><span class="p">,</span> <span class="n">propertySup</span><span class="p">,</span> <span class="n">prop_format</span><span class="p">,</span> <span class="n">languages</span><span class="p">,</span> <span class="n">labelicon1</span><span class="p">,</span> <span class="n">grammatical_case</span><span class="p">)</span> </span><span id="L-1655"><a href="#L-1655"><span class="linenos" data-line="1655"></span></a> <span class="kr">if</span> <span class="n">_id_value</span> <span class="ow">and</span> <span class="n">_link</span> <span class="kr">then</span> <span class="n">id_value</span> <span class="o">=</span> <span class="n">_id_value</span><span class="p">;</span> <span class="n">link</span> <span class="o">=</span> <span class="n">_link</span> <span class="kr">break</span> <span class="kr">end</span> </span><span id="L-1656"><a href="#L-1656"><span class="linenos" data-line="1656"></span></a> <span class="kr">end</span> </span><span id="L-1657"><a href="#L-1657"><span class="linenos" data-line="1657"></span></a> </span><span id="L-1658"><a href="#L-1658"><span class="linenos" data-line="1658"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">id_value</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">link</span> <span class="kr">then</span> <span class="kr">break</span> <span class="kr">end</span> </span><span id="L-1659"><a href="#L-1659"><span class="linenos" data-line="1659"></span></a> </span><span id="L-1660"><a href="#L-1660"><span class="linenos" data-line="1660"></span></a> <span class="kr">if</span> <span class="n">propertyLink</span> <span class="kr">then</span> </span><span id="L-1661"><a href="#L-1661"><span class="linenos" data-line="1661"></span></a> <span class="n">_</span><span class="p">,</span> <span class="n">linktext</span> <span class="o">=</span> <span class="n">getPropertyValue</span><span class="p">(</span><span class="n">id_value</span><span class="p">,</span> <span class="n">propertyLink</span><span class="p">,</span> <span class="s2">&quot;label&quot;</span><span class="p">,</span> <span class="n">languages</span><span class="p">)</span> </span><span id="L-1662"><a href="#L-1662"><span class="linenos" data-line="1662"></span></a> <span class="kr">if</span> <span class="n">linktext</span> <span class="kr">then</span> </span><span id="L-1663"><a href="#L-1663"><span class="linenos" data-line="1663"></span></a> <span class="n">link</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">link</span><span class="p">,</span> <span class="s2">&quot;%[%[(.*)%|.+%]%]&quot;</span><span class="p">,</span> <span class="s2">&quot;[[%1|&quot;</span> <span class="o">..</span> <span class="n">linktext</span> <span class="o">..</span> <span class="s2">&quot;]]&quot;</span><span class="p">)</span> </span><span id="L-1664"><a href="#L-1664"><span class="linenos" data-line="1664"></span></a> <span class="kr">end</span> </span><span id="L-1665"><a href="#L-1665"><span class="linenos" data-line="1665"></span></a> <span class="kr">end</span> </span><span id="L-1666"><a href="#L-1666"><span class="linenos" data-line="1666"></span></a> </span><span id="L-1667"><a href="#L-1667"><span class="linenos" data-line="1667"></span></a> <span class="n">id_label</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="n">getPropertyValue</span><span class="p">(</span><span class="n">id_value</span><span class="p">,</span> <span class="n">propertyLabel</span><span class="p">,</span> <span class="n">label_format</span><span class="p">,</span> <span class="n">languages</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="s2">&quot;infoboxlabel&quot;</span><span class="p">)</span> </span><span id="L-1668"><a href="#L-1668"><span class="linenos" data-line="1668"></span></a> <span class="kr">if</span> <span class="n">labelicon0</span> <span class="kr">then</span> </span><span id="L-1669"><a href="#L-1669"><span class="linenos" data-line="1669"></span></a> <span class="n">_</span><span class="p">,</span> <span class="n">labelwicon</span> <span class="o">=</span> <span class="n">getPropertyValue</span><span class="p">(</span><span class="n">id_value</span><span class="p">,</span> <span class="n">propertyLabel</span><span class="p">,</span> <span class="n">label_format</span><span class="p">,</span> <span class="n">languages</span><span class="p">,</span> <span class="n">labelicon0</span><span class="p">,</span> <span class="s2">&quot;infoboxlabel&quot;</span><span class="p">)</span> </span><span id="L-1670"><a href="#L-1670"><span class="linenos" data-line="1670"></span></a> <span class="kr">else</span> </span><span id="L-1671"><a href="#L-1671"><span class="linenos" data-line="1671"></span></a> <span class="n">labelwicon</span> <span class="o">=</span> <span class="n">label</span> </span><span id="L-1672"><a href="#L-1672"><span class="linenos" data-line="1672"></span></a> <span class="kr">end</span> </span><span id="L-1673"><a href="#L-1673"><span class="linenos" data-line="1673"></span></a> </span><span id="L-1674"><a href="#L-1674"><span class="linenos" data-line="1674"></span></a> <span class="kr">if</span> <span class="n">labels_filter</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="p">(</span><span class="n">label_show</span><span class="p">[</span><span class="n">id_label</span><span class="p">]</span> <span class="ow">or</span> <span class="n">label_show</span><span class="p">[</span><span class="n">label</span><span class="p">])</span> <span class="kr">then</span> </span><span id="L-1675"><a href="#L-1675"><span class="linenos" data-line="1675"></span></a> <span class="n">result</span><span class="p">[</span><span class="o">#</span><span class="n">result</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="n">labelwicon</span><span class="p">,</span> <span class="n">link</span><span class="p">}</span> </span><span id="L-1676"><a href="#L-1676"><span class="linenos" data-line="1676"></span></a> <span class="n">label_show</span><span class="p">[</span><span class="n">id_label</span> <span class="ow">or</span> <span class="s1">&#39;none&#39;</span><span class="p">],</span> <span class="n">label_show</span><span class="p">[</span><span class="n">label</span> <span class="ow">or</span> <span class="s1">&#39;none&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">,</span> <span class="kc">nil</span> <span class="c1">-- only first label found</span> </span><span id="L-1677"><a href="#L-1677"><span class="linenos" data-line="1677"></span></a> <span class="kr">end</span> </span><span id="L-1678"><a href="#L-1678"><span class="linenos" data-line="1678"></span></a> </span><span id="L-1679"><a href="#L-1679"><span class="linenos" data-line="1679"></span></a> <span class="kr">if</span> <span class="n">upto_label</span><span class="p">[</span><span class="n">id_label</span><span class="p">]</span> <span class="ow">or</span> <span class="n">upto_label</span><span class="p">[</span><span class="n">label</span><span class="p">]</span> <span class="ow">or</span> <span class="n">upto_value</span><span class="p">[</span><span class="n">id_value</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1680"><a href="#L-1680"><span class="linenos" data-line="1680"></span></a> <span class="kr">break</span> </span><span id="L-1681"><a href="#L-1681"><span class="linenos" data-line="1681"></span></a> <span class="kr">end</span> </span><span id="L-1682"><a href="#L-1682"><span class="linenos" data-line="1682"></span></a> <span class="kr">end</span> </span><span id="L-1683"><a href="#L-1683"><span class="linenos" data-line="1683"></span></a> </span><span id="L-1684"><a href="#L-1684"><span class="linenos" data-line="1684"></span></a> <span class="kr">if</span> <span class="n">last_only</span> <span class="kr">then</span> </span><span id="L-1685"><a href="#L-1685"><span class="linenos" data-line="1685"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="p">{</span><span class="n">result</span><span class="p">[</span><span class="o">#</span><span class="n">result</span><span class="p">]}</span> </span><span id="L-1686"><a href="#L-1686"><span class="linenos" data-line="1686"></span></a> <span class="kr">end</span> </span><span id="L-1687"><a href="#L-1687"><span class="linenos" data-line="1687"></span></a> </span><span id="L-1688"><a href="#L-1688"><span class="linenos" data-line="1688"></span></a> <span class="kr">if</span> <span class="n">include_self</span> <span class="kr">then</span> </span><span id="L-1689"><a href="#L-1689"><span class="linenos" data-line="1689"></span></a> <span class="kd">local</span> <span class="n">label_self</span><span class="p">,</span> <span class="n">link_self</span> </span><span id="L-1690"><a href="#L-1690"><span class="linenos" data-line="1690"></span></a> <span class="n">_</span><span class="p">,</span> <span class="n">label_self</span> <span class="o">=</span> <span class="n">getPropertyValue</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">propertyLabel</span><span class="p">,</span> <span class="n">label_format</span><span class="p">,</span> <span class="n">languages</span><span class="p">,</span> <span class="n">labelicon0</span><span class="p">,</span> <span class="s2">&quot;infoboxlabel&quot;</span><span class="p">)</span> </span><span id="L-1691"><a href="#L-1691"><span class="linenos" data-line="1691"></span></a> <span class="n">link_self</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">getLabelByLangs</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">languages</span><span class="p">)</span> </span><span id="L-1692"><a href="#L-1692"><span class="linenos" data-line="1692"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="p">{</span><span class="n">label_self</span><span class="p">,</span> <span class="n">link_self</span><span class="p">})</span> </span><span id="L-1693"><a href="#L-1693"><span class="linenos" data-line="1693"></span></a> <span class="kr">end</span> </span><span id="L-1694"><a href="#L-1694"><span class="linenos" data-line="1694"></span></a> </span><span id="L-1695"><a href="#L-1695"><span class="linenos" data-line="1695"></span></a> <span class="kr">return</span> <span class="n">result</span> </span><span id="L-1696"><a href="#L-1696"><span class="linenos" data-line="1696"></span></a><span class="kr">end</span> </span><span id="L-1697"><a href="#L-1697"><span class="linenos" data-line="1697"></span></a> </span><span id="L-1698"><a href="#L-1698"><span class="linenos" data-line="1698"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">parentObjectsToString</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> </span><span id="L-1699"><a href="#L-1699"><span class="linenos" data-line="1699"></span></a> <span class="n">rowformat</span><span class="p">,</span> </span><span id="L-1700"><a href="#L-1700"><span class="linenos" data-line="1700"></span></a> <span class="n">cascade</span><span class="p">,</span> </span><span id="L-1701"><a href="#L-1701"><span class="linenos" data-line="1701"></span></a> <span class="n">sorting</span><span class="p">)</span> </span><span id="L-1702"><a href="#L-1702"><span class="linenos" data-line="1702"></span></a> </span><span id="L-1703"><a href="#L-1703"><span class="linenos" data-line="1703"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1704"><a href="#L-1704"><span class="linenos" data-line="1704"></span></a> <span class="kd">local</span> <span class="n">first</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-1705"><a href="#L-1705"><span class="linenos" data-line="1705"></span></a> <span class="kd">local</span> <span class="n">last</span> <span class="o">=</span> <span class="o">#</span><span class="n">result</span> </span><span id="L-1706"><a href="#L-1706"><span class="linenos" data-line="1706"></span></a> <span class="kd">local</span> <span class="n">iter</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-1707"><a href="#L-1707"><span class="linenos" data-line="1707"></span></a> <span class="kr">if</span> <span class="n">sorting</span> <span class="o">==</span> <span class="s2">&quot;-1&quot;</span> <span class="kr">then</span> <span class="n">first</span> <span class="o">=</span> <span class="o">#</span><span class="n">result</span><span class="p">;</span> <span class="n">last</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">iter</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> <span class="kr">end</span> </span><span id="L-1708"><a href="#L-1708"><span class="linenos" data-line="1708"></span></a> <span class="kr">for</span> <span class="n">i</span> <span class="o">=</span> <span class="n">first</span><span class="p">,</span> <span class="n">last</span><span class="p">,</span> <span class="n">iter</span> <span class="kr">do</span> </span><span id="L-1709"><a href="#L-1709"><span class="linenos" data-line="1709"></span></a> <span class="kd">local</span> <span class="n">rowtext</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">rowformat</span><span class="p">,</span> <span class="s2">&quot;$[01]&quot;</span><span class="p">,</span> <span class="p">{[</span><span class="s2">&quot;$0&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">result</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="s2">&quot;$1&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">result</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">2</span><span class="p">]})</span> </span><span id="L-1710"><a href="#L-1710"><span class="linenos" data-line="1710"></span></a> <span class="n">ret</span><span class="p">[</span><span class="o">#</span><span class="n">ret</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">expandBraces</span><span class="p">(</span><span class="n">rowtext</span><span class="p">,</span> <span class="n">rowformat</span><span class="p">)</span> </span><span id="L-1711"><a href="#L-1711"><span class="linenos" data-line="1711"></span></a> <span class="kr">end</span> </span><span id="L-1712"><a href="#L-1712"><span class="linenos" data-line="1712"></span></a> </span><span id="L-1713"><a href="#L-1713"><span class="linenos" data-line="1713"></span></a> <span class="kr">if</span> <span class="n">cascade</span> <span class="kr">then</span> </span><span id="L-1714"><a href="#L-1714"><span class="linenos" data-line="1714"></span></a> <span class="kd">local</span> <span class="n">direction</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">wiki</span><span class="p">.</span><span class="n">langcode</span><span class="p">):</span><span class="n">isRTL</span><span class="p">()</span> <span class="ow">and</span> <span class="s2">&quot;right&quot;</span> <span class="ow">or</span> <span class="s2">&quot;left&quot;</span> </span><span id="L-1715"><a href="#L-1715"><span class="linenos" data-line="1715"></span></a> <span class="kd">local</span> <span class="n">suffix</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> </span><span id="L-1716"><a href="#L-1716"><span class="linenos" data-line="1716"></span></a> <span class="kr">for</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="o">#</span><span class="n">ret</span> <span class="kr">do</span> </span><span id="L-1717"><a href="#L-1717"><span class="linenos" data-line="1717"></span></a> <span class="n">ret</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;&lt;ul style=&quot;line-height:100%; margin-&#39;</span> <span class="o">..</span> <span class="n">direction</span> <span class="o">..</span> <span class="s1">&#39;:0.45em; padding-&#39;</span> <span class="o">..</span> <span class="n">direction</span> <span class="o">..</span> <span class="s1">&#39;:0;&quot;&gt;&lt;li&gt;&#39;</span> <span class="o">..</span> <span class="n">ret</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> </span><span id="L-1718"><a href="#L-1718"><span class="linenos" data-line="1718"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">suffix</span> <span class="o">..</span> <span class="s1">&#39;&lt;/li&gt;&lt;/ul&gt;&#39;</span> </span><span id="L-1719"><a href="#L-1719"><span class="linenos" data-line="1719"></span></a> <span class="kr">end</span> </span><span id="L-1720"><a href="#L-1720"><span class="linenos" data-line="1720"></span></a> <span class="n">ret</span><span class="p">[</span><span class="o">#</span><span class="n">ret</span><span class="p">]</span> <span class="o">=</span> <span class="n">ret</span><span class="p">[</span><span class="o">#</span><span class="n">ret</span><span class="p">]</span> <span class="o">..</span> <span class="n">suffix</span> </span><span id="L-1721"><a href="#L-1721"><span class="linenos" data-line="1721"></span></a> <span class="kr">end</span> </span><span id="L-1722"><a href="#L-1722"><span class="linenos" data-line="1722"></span></a> </span><span id="L-1723"><a href="#L-1723"><span class="linenos" data-line="1723"></span></a> <span class="kr">return</span> <span class="n">ret</span> </span><span id="L-1724"><a href="#L-1724"><span class="linenos" data-line="1724"></span></a><span class="kr">end</span> </span><span id="L-1725"><a href="#L-1725"><span class="linenos" data-line="1725"></span></a> </span><span id="L-1726"><a href="#L-1726"><span class="linenos" data-line="1726"></span></a><span class="c1">-- Returns pairs of parent label and property value fetching a recursive tree</span> </span><span id="L-1727"><a href="#L-1727"><span class="linenos" data-line="1727"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">getParentValues</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-1728"><a href="#L-1728"><span class="linenos" data-line="1728"></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 class="ow">or</span> <span class="n">frame</span> <span class="c1">-- via invoke or require</span> </span><span id="L-1729"><a href="#L-1729"><span class="linenos" data-line="1729"></span></a> <span class="kd">local</span> <span class="n">pargs</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> <span class="ow">and</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 class="ow">or</span> <span class="p">{}</span> </span><span id="L-1730"><a href="#L-1730"><span class="linenos" data-line="1730"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">required</span> <span class="ow">and</span> <span class="n">isSet</span><span class="p">(</span><span class="n">pargs</span><span class="p">.</span><span class="n">sandbox</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1731"><a href="#L-1731"><span class="linenos" data-line="1731"></span></a> <span class="kr">return</span> <span class="nb">require</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/&quot;</span> <span class="o">..</span> <span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Sandboxlink-subpage-name&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span><span class="p">):</span><span class="n">plain</span><span class="p">()).</span><span class="n">getParentValues</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-1732"><a href="#L-1732"><span class="linenos" data-line="1732"></span></a> <span class="kr">end</span> </span><span id="L-1733"><a href="#L-1733"><span class="linenos" data-line="1733"></span></a> <span class="kd">local</span> <span class="n">id</span> <span class="o">=</span> <span class="n">getEntityId</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">pargs</span><span class="p">)</span> </span><span id="L-1734"><a href="#L-1734"><span class="linenos" data-line="1734"></span></a> <span class="kr">if</span> <span class="n">id</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-1735"><a href="#L-1735"><span class="linenos" data-line="1735"></span></a> <span class="kd">local</span> <span class="n">languages</span> <span class="o">=</span> <span class="n">findLang</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">lang</span><span class="p">)</span> </span><span id="L-1736"><a href="#L-1736"><span class="linenos" data-line="1736"></span></a> <span class="kd">local</span> <span class="n">propertySup</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">property</span><span class="p">,</span> <span class="s2">&quot;P131&quot;</span><span class="p">)</span> <span class="c1">--administrative entity</span> </span><span id="L-1737"><a href="#L-1737"><span class="linenos" data-line="1737"></span></a> <span class="kd">local</span> <span class="n">propertyLabel</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">label</span><span class="p">,</span> <span class="s2">&quot;P31&quot;</span><span class="p">)</span> <span class="c1">--instance</span> </span><span id="L-1738"><a href="#L-1738"><span class="linenos" data-line="1738"></span></a> <span class="kd">local</span> <span class="n">propertyLink</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">valuetext</span><span class="p">)</span> </span><span id="L-1739"><a href="#L-1739"><span class="linenos" data-line="1739"></span></a> <span class="kd">local</span> <span class="n">property_format</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">formatting</span><span class="p">)</span> </span><span id="L-1740"><a href="#L-1740"><span class="linenos" data-line="1740"></span></a> <span class="kd">local</span> <span class="n">label_format</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">labelformat</span><span class="p">,</span> <span class="s2">&quot;label&quot;</span><span class="p">)</span> </span><span id="L-1741"><a href="#L-1741"><span class="linenos" data-line="1741"></span></a> <span class="kd">local</span> <span class="n">upto_number</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">upto</span><span class="p">)</span> </span><span id="L-1742"><a href="#L-1742"><span class="linenos" data-line="1742"></span></a> <span class="kd">local</span> <span class="n">last_only</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">last_only</span><span class="p">,</span> <span class="kc">false</span><span class="p">)</span> </span><span id="L-1743"><a href="#L-1743"><span class="linenos" data-line="1743"></span></a> <span class="kd">local</span> <span class="n">editicon</span><span class="p">,</span> <span class="n">labelicon</span> <span class="o">=</span> <span class="n">setIcons</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">editicon</span><span class="p">,</span> <span class="n">pargs</span><span class="p">.</span><span class="n">editicon</span><span class="p">)</span> </span><span id="L-1744"><a href="#L-1744"><span class="linenos" data-line="1744"></span></a> <span class="kd">local</span> <span class="n">include_self</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">include_self</span><span class="p">,</span> <span class="kc">false</span><span class="p">)</span> </span><span id="L-1745"><a href="#L-1745"><span class="linenos" data-line="1745"></span></a> <span class="kd">local</span> <span class="n">case</span> <span class="o">=</span> <span class="n">getArg</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">case</span><span class="p">)</span> </span><span id="L-1746"><a href="#L-1746"><span class="linenos" data-line="1746"></span></a> </span><span id="L-1747"><a href="#L-1747"><span class="linenos" data-line="1747"></span></a> <span class="kd">local</span> <span class="n">upto_label</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1748"><a href="#L-1748"><span class="linenos" data-line="1748"></span></a> <span class="kr">for</span> <span class="n">q</span> <span class="kr">in</span> <span class="nb">string.gmatch</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">uptolabelid</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="s1">&#39;Q%d+&#39;</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1749"><a href="#L-1749"><span class="linenos" data-line="1749"></span></a> <span class="n">upto_label</span><span class="p">[</span><span class="n">q</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1750"><a href="#L-1750"><span class="linenos" data-line="1750"></span></a> <span class="kr">end</span> </span><span id="L-1751"><a href="#L-1751"><span class="linenos" data-line="1751"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">upto_number</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-1752"><a href="#L-1752"><span class="linenos" data-line="1752"></span></a> <span class="n">upto_label</span><span class="p">[</span><span class="n">uc_first</span><span class="p">(</span><span class="n">upto_number</span><span class="p">)]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1753"><a href="#L-1753"><span class="linenos" data-line="1753"></span></a> <span class="n">upto_number</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1754"><a href="#L-1754"><span class="linenos" data-line="1754"></span></a> <span class="nb">require</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s1">&#39;/debug&#39;</span><span class="p">).</span><span class="n">track</span><span class="p">(</span><span class="s1">&#39;upto&#39;</span><span class="p">)</span> <span class="c1">-- replace upto by uptolabelid</span> </span><span id="L-1755"><a href="#L-1755"><span class="linenos" data-line="1755"></span></a> <span class="kr">end</span> </span><span id="L-1756"><a href="#L-1756"><span class="linenos" data-line="1756"></span></a> </span><span id="L-1757"><a href="#L-1757"><span class="linenos" data-line="1757"></span></a> <span class="kd">local</span> <span class="n">upto_value</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1758"><a href="#L-1758"><span class="linenos" data-line="1758"></span></a> <span class="kr">for</span> <span class="n">q</span> <span class="kr">in</span> <span class="nb">string.gmatch</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">uptovalueid</span> <span class="ow">or</span> <span class="n">args</span><span class="p">.</span><span class="n">uptolinkid</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="s1">&#39;Q%d+&#39;</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1759"><a href="#L-1759"><span class="linenos" data-line="1759"></span></a> <span class="n">upto_value</span><span class="p">[</span><span class="n">q</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1760"><a href="#L-1760"><span class="linenos" data-line="1760"></span></a> <span class="kr">end</span> </span><span id="L-1761"><a href="#L-1761"><span class="linenos" data-line="1761"></span></a> </span><span id="L-1762"><a href="#L-1762"><span class="linenos" data-line="1762"></span></a> <span class="kd">local</span> <span class="n">label_show</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1763"><a href="#L-1763"><span class="linenos" data-line="1763"></span></a> <span class="kr">for</span> <span class="n">q</span> <span class="kr">in</span> <span class="nb">string.gmatch</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">showlabelid</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="s1">&#39;Q%d+&#39;</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1764"><a href="#L-1764"><span class="linenos" data-line="1764"></span></a> <span class="n">label_show</span><span class="p">[</span><span class="n">q</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1765"><a href="#L-1765"><span class="linenos" data-line="1765"></span></a> <span class="kr">end</span> </span><span id="L-1766"><a href="#L-1766"><span class="linenos" data-line="1766"></span></a> <span class="kr">for</span> <span class="n">_</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">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">labelshow</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="s2">&quot;/&quot;</span><span class="p">))</span> <span class="kr">do</span> </span><span id="L-1767"><a href="#L-1767"><span class="linenos" data-line="1767"></span></a> <span class="kr">if</span> <span class="n">v</span> <span class="o">~=</span> <span class="s1">&#39;&#39;</span> <span class="kr">then</span> </span><span id="L-1768"><a href="#L-1768"><span class="linenos" data-line="1768"></span></a> <span class="n">label_show</span><span class="p">[</span><span class="n">uc_first</span><span class="p">(</span><span class="n">v</span><span class="p">)]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1769"><a href="#L-1769"><span class="linenos" data-line="1769"></span></a> <span class="nb">require</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s1">&#39;/debug&#39;</span><span class="p">).</span><span class="n">track</span><span class="p">(</span><span class="s1">&#39;labelshow&#39;</span><span class="p">)</span> <span class="c1">-- replace labelshow by showlabelid</span> </span><span id="L-1770"><a href="#L-1770"><span class="linenos" data-line="1770"></span></a> <span class="kr">end</span> </span><span id="L-1771"><a href="#L-1771"><span class="linenos" data-line="1771"></span></a> <span class="kr">end</span> </span><span id="L-1772"><a href="#L-1772"><span class="linenos" data-line="1772"></span></a> </span><span id="L-1773"><a href="#L-1773"><span class="linenos" data-line="1773"></span></a> <span class="kd">local</span> <span class="n">rowformat</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">rowformat</span><span class="p">;</span> <span class="kr">if</span> <span class="ow">not</span> <span class="n">isSet</span><span class="p">(</span><span class="n">rowformat</span><span class="p">)</span> <span class="kr">then</span> <span class="n">rowformat</span> <span class="o">=</span> <span class="s2">&quot;$0 = $1&quot;</span> <span class="kr">end</span> </span><span id="L-1774"><a href="#L-1774"><span class="linenos" data-line="1774"></span></a> <span class="kd">local</span> <span class="n">labelicon0</span><span class="p">,</span> <span class="n">labelicon1</span> <span class="o">=</span> <span class="n">labelicon</span><span class="p">,</span> <span class="n">labelicon</span> </span><span id="L-1775"><a href="#L-1775"><span class="linenos" data-line="1775"></span></a> <span class="kr">if</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">label_format</span><span class="p">,</span> <span class="s1">&#39;{{.*$0.*}}&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">string.find</span><span class="p">(</span><span class="n">rowformat</span><span class="p">,</span> <span class="s1">&#39;{{.*$0.*}}&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">label_format</span> <span class="o">~=</span> <span class="s1">&#39;raw&#39;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1776"><a href="#L-1776"><span class="linenos" data-line="1776"></span></a> <span class="n">labelicon0</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1777"><a href="#L-1777"><span class="linenos" data-line="1777"></span></a> <span class="kr">end</span> </span><span id="L-1778"><a href="#L-1778"><span class="linenos" data-line="1778"></span></a> </span><span id="L-1779"><a href="#L-1779"><span class="linenos" data-line="1779"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="n">getParentObjects</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> </span><span id="L-1780"><a href="#L-1780"><span class="linenos" data-line="1780"></span></a> <span class="n">property_format</span><span class="p">,</span> </span><span id="L-1781"><a href="#L-1781"><span class="linenos" data-line="1781"></span></a> <span class="n">label_format</span><span class="p">,</span> </span><span id="L-1782"><a href="#L-1782"><span class="linenos" data-line="1782"></span></a> <span class="n">languages</span><span class="p">,</span> </span><span id="L-1783"><a href="#L-1783"><span class="linenos" data-line="1783"></span></a> <span class="n">propertySup</span><span class="p">,</span> </span><span id="L-1784"><a href="#L-1784"><span class="linenos" data-line="1784"></span></a> <span class="n">propertyLabel</span><span class="p">,</span> </span><span id="L-1785"><a href="#L-1785"><span class="linenos" data-line="1785"></span></a> <span class="n">propertyLink</span><span class="p">,</span> </span><span id="L-1786"><a href="#L-1786"><span class="linenos" data-line="1786"></span></a> <span class="n">label_show</span><span class="p">,</span> </span><span id="L-1787"><a href="#L-1787"><span class="linenos" data-line="1787"></span></a> <span class="n">labelicon0</span><span class="p">,</span> </span><span id="L-1788"><a href="#L-1788"><span class="linenos" data-line="1788"></span></a> <span class="n">labelicon1</span><span class="p">,</span> </span><span id="L-1789"><a href="#L-1789"><span class="linenos" data-line="1789"></span></a> <span class="n">upto_number</span><span class="p">,</span> </span><span id="L-1790"><a href="#L-1790"><span class="linenos" data-line="1790"></span></a> <span class="n">upto_label</span><span class="p">,</span> </span><span id="L-1791"><a href="#L-1791"><span class="linenos" data-line="1791"></span></a> <span class="n">upto_value</span><span class="p">,</span> </span><span id="L-1792"><a href="#L-1792"><span class="linenos" data-line="1792"></span></a> <span class="n">last_only</span><span class="p">,</span> </span><span id="L-1793"><a href="#L-1793"><span class="linenos" data-line="1793"></span></a> <span class="n">case</span><span class="p">,</span> </span><span id="L-1794"><a href="#L-1794"><span class="linenos" data-line="1794"></span></a> <span class="n">include_self</span><span class="p">)</span> </span><span id="L-1795"><a href="#L-1795"><span class="linenos" data-line="1795"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">result</span> <span class="o">==</span> <span class="mi">0</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-1796"><a href="#L-1796"><span class="linenos" data-line="1796"></span></a> </span><span id="L-1797"><a href="#L-1797"><span class="linenos" data-line="1797"></span></a> <span class="kd">local</span> <span class="n">separator</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">separator</span><span class="p">;</span> <span class="kr">if</span> <span class="ow">not</span> <span class="n">isSet</span><span class="p">(</span><span class="n">separator</span><span class="p">)</span> <span class="kr">then</span> <span class="n">separator</span> <span class="o">=</span> <span class="s2">&quot;&lt;br /&gt;&quot;</span> <span class="kr">end</span> </span><span id="L-1798"><a href="#L-1798"><span class="linenos" data-line="1798"></span></a> <span class="kd">local</span> <span class="n">sorting</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">sorting</span><span class="p">;</span> <span class="kr">if</span> <span class="n">sorting</span> <span class="o">==</span> <span class="s2">&quot;&quot;</span> <span class="kr">then</span> <span class="n">sorting</span> <span class="o">=</span> <span class="kc">nil</span> <span class="kr">end</span> </span><span id="L-1799"><a href="#L-1799"><span class="linenos" data-line="1799"></span></a> <span class="kd">local</span> <span class="n">cascade</span> <span class="o">=</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">cascade</span> <span class="o">==</span> <span class="s2">&quot;true&quot;</span> <span class="ow">or</span> <span class="n">args</span><span class="p">.</span><span class="n">cascade</span> <span class="o">==</span> <span class="s2">&quot;yes&quot;</span><span class="p">)</span> </span><span id="L-1800"><a href="#L-1800"><span class="linenos" data-line="1800"></span></a> </span><span id="L-1801"><a href="#L-1801"><span class="linenos" data-line="1801"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="n">parentObjectsToString</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> </span><span id="L-1802"><a href="#L-1802"><span class="linenos" data-line="1802"></span></a> <span class="n">rowformat</span><span class="p">,</span> </span><span id="L-1803"><a href="#L-1803"><span class="linenos" data-line="1803"></span></a> <span class="n">cascade</span><span class="p">,</span> </span><span id="L-1804"><a href="#L-1804"><span class="linenos" data-line="1804"></span></a> <span class="n">sorting</span><span class="p">)</span> </span><span id="L-1805"><a href="#L-1805"><span class="linenos" data-line="1805"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">addEditIconTable</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="p">{</span><span class="n">property</span><span class="o">=</span><span class="n">propertySup</span><span class="p">,</span> <span class="n">editicon</span><span class="o">=</span><span class="n">editicon</span><span class="p">,</span> <span class="n">id</span><span class="o">=</span><span class="n">id</span><span class="p">,</span> <span class="n">lang</span><span class="o">=</span><span class="n">languages</span><span class="p">})</span> </span><span id="L-1806"><a href="#L-1806"><span class="linenos" data-line="1806"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">listToText</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="n">separator</span><span class="p">,</span> <span class="n">separator</span><span class="p">)</span> </span><span id="L-1807"><a href="#L-1807"><span class="linenos" data-line="1807"></span></a><span class="kr">end</span> </span><span id="L-1808"><a href="#L-1808"><span class="linenos" data-line="1808"></span></a> </span><span id="L-1809"><a href="#L-1809"><span class="linenos" data-line="1809"></span></a><span class="c1">-- Link with a parent label --------------------</span> </span><span id="L-1810"><a href="#L-1810"><span class="linenos" data-line="1810"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">linkWithParentLabel</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-1811"><a href="#L-1811"><span class="linenos" data-line="1811"></span></a> <span class="kd">local</span> <span class="n">pargs</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> <span class="ow">and</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 class="ow">or</span> <span class="p">{}</span> </span><span id="L-1812"><a href="#L-1812"><span class="linenos" data-line="1812"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">required</span> <span class="ow">and</span> <span class="n">isSet</span><span class="p">(</span><span class="n">pargs</span><span class="p">.</span><span class="n">sandbox</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1813"><a href="#L-1813"><span class="linenos" data-line="1813"></span></a> <span class="kr">return</span> <span class="nb">require</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/&quot;</span> <span class="o">..</span> <span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Sandboxlink-subpage-name&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span><span class="p">):</span><span class="n">plain</span><span class="p">()).</span><span class="n">linkWithParentLabel</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-1814"><a href="#L-1814"><span class="linenos" data-line="1814"></span></a> <span class="kr">end</span> </span><span id="L-1815"><a href="#L-1815"><span class="linenos" data-line="1815"></span></a> <span class="kd">local</span> <span class="n">args</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1816"><a href="#L-1816"><span class="linenos" data-line="1816"></span></a> <span class="kr">if</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> <span class="kr">then</span> </span><span id="L-1817"><a href="#L-1817"><span class="linenos" data-line="1817"></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">frame</span><span class="p">.</span><span class="n">args</span><span class="p">)</span> <span class="kr">do</span> <span class="c1">-- metatable</span> </span><span id="L-1818"><a href="#L-1818"><span class="linenos" data-line="1818"></span></a> <span class="n">args</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> </span><span id="L-1819"><a href="#L-1819"><span class="linenos" data-line="1819"></span></a> <span class="kr">end</span> </span><span id="L-1820"><a href="#L-1820"><span class="linenos" data-line="1820"></span></a> <span class="kr">else</span> </span><span id="L-1821"><a href="#L-1821"><span class="linenos" data-line="1821"></span></a> <span class="n">args</span> <span class="o">=</span> <span class="n">frame</span> <span class="c1">-- via require</span> </span><span id="L-1822"><a href="#L-1822"><span class="linenos" data-line="1822"></span></a> <span class="kr">end</span> </span><span id="L-1823"><a href="#L-1823"><span class="linenos" data-line="1823"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">value</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1824"><a href="#L-1824"><span class="linenos" data-line="1824"></span></a> <span class="kr">return</span> <span class="n">args</span><span class="p">.</span><span class="n">value</span> </span><span id="L-1825"><a href="#L-1825"><span class="linenos" data-line="1825"></span></a> <span class="kr">end</span> </span><span id="L-1826"><a href="#L-1826"><span class="linenos" data-line="1826"></span></a> </span><span id="L-1827"><a href="#L-1827"><span class="linenos" data-line="1827"></span></a> <span class="c1">-- get id value of property/qualifier</span> </span><span id="L-1828"><a href="#L-1828"><span class="linenos" data-line="1828"></span></a> <span class="kd">local</span> <span class="n">largs</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">clone</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-1829"><a href="#L-1829"><span class="linenos" data-line="1829"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">list</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">list</span><span class="p">)</span> <span class="ow">and</span> <span class="n">args</span><span class="p">.</span><span class="n">list</span> <span class="ow">or</span> <span class="kc">true</span> </span><span id="L-1830"><a href="#L-1830"><span class="linenos" data-line="1830"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="s2">&quot;raw&quot;</span> </span><span id="L-1831"><a href="#L-1831"><span class="linenos" data-line="1831"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">separator</span> <span class="o">=</span> <span class="s2">&quot;/·/&quot;</span> </span><span id="L-1832"><a href="#L-1832"><span class="linenos" data-line="1832"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">editicon</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1833"><a href="#L-1833"><span class="linenos" data-line="1833"></span></a> <span class="kd">local</span> <span class="n">items_list</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">claim</span><span class="p">(</span><span class="n">largs</span><span class="p">)</span> </span><span id="L-1834"><a href="#L-1834"><span class="linenos" data-line="1834"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">isSet</span><span class="p">(</span><span class="n">items_list</span><span class="p">)</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-1835"><a href="#L-1835"><span class="linenos" data-line="1835"></span></a> <span class="kd">local</span> <span class="n">items_table</span> <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">split</span><span class="p">(</span><span class="n">items_list</span><span class="p">,</span> <span class="s2">&quot;/·/&quot;</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-1836"><a href="#L-1836"><span class="linenos" data-line="1836"></span></a> </span><span id="L-1837"><a href="#L-1837"><span class="linenos" data-line="1837"></span></a> <span class="c1">-- get internal link of property/qualifier</span> </span><span id="L-1838"><a href="#L-1838"><span class="linenos" data-line="1838"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="s2">&quot;internallink&quot;</span> </span><span id="L-1839"><a href="#L-1839"><span class="linenos" data-line="1839"></span></a> <span class="kd">local</span> <span class="n">link_list</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">claim</span><span class="p">(</span><span class="n">largs</span><span class="p">)</span> </span><span id="L-1840"><a href="#L-1840"><span class="linenos" data-line="1840"></span></a> <span class="kd">local</span> <span class="n">link_table</span> <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">split</span><span class="p">(</span><span class="n">link_list</span><span class="p">,</span> <span class="s2">&quot;/·/&quot;</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-1841"><a href="#L-1841"><span class="linenos" data-line="1841"></span></a> </span><span id="L-1842"><a href="#L-1842"><span class="linenos" data-line="1842"></span></a> <span class="c1">-- get label of parent property</span> </span><span id="L-1843"><a href="#L-1843"><span class="linenos" data-line="1843"></span></a> <span class="kd">local</span> <span class="n">parent_claim</span> <span class="o">=</span> <span class="n">getSnak</span><span class="p">(</span><span class="n">getStatements</span><span class="p">(</span><span class="n">items_table</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">args</span><span class="p">.</span><span class="n">parent</span><span class="p">,</span> <span class="kc">true</span><span class="p">),</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;mainsnak&quot;</span><span class="p">,</span> <span class="s2">&quot;datatype&quot;</span><span class="p">})</span> </span><span id="L-1844"><a href="#L-1844"><span class="linenos" data-line="1844"></span></a> <span class="kr">if</span> <span class="n">parent_claim</span> <span class="o">==</span> <span class="s1">&#39;monolingualtext&#39;</span> <span class="kr">then</span> </span><span id="L-1845"><a href="#L-1845"><span class="linenos" data-line="1845"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1846"><a href="#L-1846"><span class="linenos" data-line="1846"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">list</span> <span class="o">=</span> <span class="s1">&#39;lang&#39;</span> </span><span id="L-1847"><a href="#L-1847"><span class="linenos" data-line="1847"></span></a> <span class="kr">else</span> </span><span id="L-1848"><a href="#L-1848"><span class="linenos" data-line="1848"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="s2">&quot;label&quot;</span> </span><span id="L-1849"><a href="#L-1849"><span class="linenos" data-line="1849"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">list</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1850"><a href="#L-1850"><span class="linenos" data-line="1850"></span></a> <span class="kr">end</span> </span><span id="L-1851"><a href="#L-1851"><span class="linenos" data-line="1851"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">property</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">parent</span> </span><span id="L-1852"><a href="#L-1852"><span class="linenos" data-line="1852"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">qualifier</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1853"><a href="#L-1853"><span class="linenos" data-line="1853"></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_table</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1854"><a href="#L-1854"><span class="linenos" data-line="1854"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">item</span> <span class="o">=</span> <span class="n">v</span> </span><span id="L-1855"><a href="#L-1855"><span class="linenos" data-line="1855"></span></a> <span class="kd">local</span> <span class="n">link_label</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">claim</span><span class="p">(</span><span class="n">largs</span><span class="p">)</span> </span><span id="L-1856"><a href="#L-1856"><span class="linenos" data-line="1856"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">link_label</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1857"><a href="#L-1857"><span class="linenos" data-line="1857"></span></a> <span class="n">link_table</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">link_table</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="s2">&quot;%[%[(.*)%|.+%]%]&quot;</span><span class="p">,</span> <span class="s2">&quot;[[%1|&quot;</span> <span class="o">..</span> <span class="n">link_label</span> <span class="o">..</span> <span class="s2">&quot;]]&quot;</span><span class="p">)</span> </span><span id="L-1858"><a href="#L-1858"><span class="linenos" data-line="1858"></span></a> <span class="kr">end</span> </span><span id="L-1859"><a href="#L-1859"><span class="linenos" data-line="1859"></span></a> <span class="kr">end</span> </span><span id="L-1860"><a href="#L-1860"><span class="linenos" data-line="1860"></span></a> <span class="n">args</span><span class="p">.</span><span class="n">editicon</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">setIcons</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">editicon</span><span class="p">,</span> <span class="n">pargs</span><span class="p">.</span><span class="n">editicon</span><span class="p">)</span> </span><span id="L-1861"><a href="#L-1861"><span class="linenos" data-line="1861"></span></a> <span class="n">args</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">getEntityId</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">pargs</span><span class="p">)</span> </span><span id="L-1862"><a href="#L-1862"><span class="linenos" data-line="1862"></span></a> <span class="n">args</span><span class="p">.</span><span class="n">lang</span> <span class="o">=</span> <span class="n">findLang</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">lang</span><span class="p">)</span> </span><span id="L-1863"><a href="#L-1863"><span class="linenos" data-line="1863"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">listToText</span><span class="p">(</span><span class="n">link_table</span><span class="p">)</span> <span class="o">..</span> <span class="n">addEditIcon</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-1864"><a href="#L-1864"><span class="linenos" data-line="1864"></span></a><span class="kr">end</span> </span><span id="L-1865"><a href="#L-1865"><span class="linenos" data-line="1865"></span></a> </span><span id="L-1866"><a href="#L-1866"><span class="linenos" data-line="1866"></span></a><span class="c1">-- Calculate number of years old ----------------------------</span> </span><span id="L-1867"><a href="#L-1867"><span class="linenos" data-line="1867"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">yearsOld</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-1868"><a href="#L-1868"><span class="linenos" data-line="1868"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">required</span> <span class="ow">and</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> <span class="ow">and</span> <span class="n">isSet</span><span class="p">(</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 class="p">.</span><span class="n">sandbox</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1869"><a href="#L-1869"><span class="linenos" data-line="1869"></span></a> <span class="kr">return</span> <span class="nb">require</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/&quot;</span> <span class="o">..</span> <span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Sandboxlink-subpage-name&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span><span class="p">):</span><span class="n">plain</span><span class="p">()).</span><span class="n">yearsOld</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-1870"><a href="#L-1870"><span class="linenos" data-line="1870"></span></a> <span class="kr">end</span> </span><span id="L-1871"><a href="#L-1871"><span class="linenos" data-line="1871"></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 class="ow">or</span> <span class="n">frame</span> <span class="c1">-- via invoke or require</span> </span><span id="L-1872"><a href="#L-1872"><span class="linenos" data-line="1872"></span></a> <span class="kd">local</span> <span class="n">pargs</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> <span class="ow">and</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 class="ow">or</span> <span class="p">{}</span> </span><span id="L-1873"><a href="#L-1873"><span class="linenos" data-line="1873"></span></a> <span class="kd">local</span> <span class="n">id</span> <span class="o">=</span> <span class="n">getEntityId</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">pargs</span><span class="p">)</span> </span><span id="L-1874"><a href="#L-1874"><span class="linenos" data-line="1874"></span></a> <span class="kr">if</span> <span class="n">id</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-1875"><a href="#L-1875"><span class="linenos" data-line="1875"></span></a> <span class="kd">local</span> <span class="n">lang</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="s1">&#39;en&#39;</span><span class="p">)</span> </span><span id="L-1876"><a href="#L-1876"><span class="linenos" data-line="1876"></span></a> </span><span id="L-1877"><a href="#L-1877"><span class="linenos" data-line="1877"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">getBestValue</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">prop</span><span class="p">)</span> </span><span id="L-1878"><a href="#L-1878"><span class="linenos" data-line="1878"></span></a> <span class="kr">return</span> <span class="n">getSnak</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getBestStatements</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">prop</span><span class="p">),</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;mainsnak&quot;</span><span class="p">,</span> <span class="s2">&quot;datavalue&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">})</span> </span><span id="L-1879"><a href="#L-1879"><span class="linenos" data-line="1879"></span></a> <span class="kr">end</span> </span><span id="L-1880"><a href="#L-1880"><span class="linenos" data-line="1880"></span></a> </span><span id="L-1881"><a href="#L-1881"><span class="linenos" data-line="1881"></span></a> <span class="kd">local</span> <span class="n">birth</span> <span class="o">=</span> <span class="n">getBestValue</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="s1">&#39;P569&#39;</span><span class="p">)</span> </span><span id="L-1882"><a href="#L-1882"><span class="linenos" data-line="1882"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">birth</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;table&#39;</span> <span class="ow">or</span> <span class="n">birth</span><span class="p">.</span><span class="n">time</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="n">birth</span><span class="p">.</span><span class="n">precision</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="n">birth</span><span class="p">.</span><span class="n">precision</span> <span class="o">&lt;</span> <span class="mi">8</span> <span class="kr">then</span> </span><span id="L-1883"><a href="#L-1883"><span class="linenos" data-line="1883"></span></a> <span class="kr">return</span> </span><span id="L-1884"><a href="#L-1884"><span class="linenos" data-line="1884"></span></a> <span class="kr">end</span> </span><span id="L-1885"><a href="#L-1885"><span class="linenos" data-line="1885"></span></a> <span class="kd">local</span> <span class="n">death</span> <span class="o">=</span> <span class="n">getBestValue</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="s1">&#39;P570&#39;</span><span class="p">)</span> </span><span id="L-1886"><a href="#L-1886"><span class="linenos" data-line="1886"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">death</span><span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;table&#39;</span> <span class="ow">or</span> <span class="n">death</span><span class="p">.</span><span class="n">time</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="n">death</span><span class="p">.</span><span class="n">precision</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-1887"><a href="#L-1887"><span class="linenos" data-line="1887"></span></a> <span class="n">death</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">&#39;time&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">lang</span><span class="p">:</span><span class="n">formatDate</span><span class="p">(</span><span class="s1">&#39;c&#39;</span><span class="p">),</span> <span class="p">[</span><span class="s1">&#39;precision&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">11</span><span class="p">}</span> <span class="c1">-- current date</span> </span><span id="L-1888"><a href="#L-1888"><span class="linenos" data-line="1888"></span></a> <span class="kr">elseif</span> <span class="n">death</span><span class="p">.</span><span class="n">precision</span> <span class="o">&lt;</span> <span class="mi">8</span> <span class="kr">then</span> </span><span id="L-1889"><a href="#L-1889"><span class="linenos" data-line="1889"></span></a> <span class="kr">return</span> </span><span id="L-1890"><a href="#L-1890"><span class="linenos" data-line="1890"></span></a> <span class="kr">end</span> </span><span id="L-1891"><a href="#L-1891"><span class="linenos" data-line="1891"></span></a> </span><span id="L-1892"><a href="#L-1892"><span class="linenos" data-line="1892"></span></a> <span class="kd">local</span> <span class="n">dates</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1893"><a href="#L-1893"><span class="linenos" data-line="1893"></span></a> <span class="n">dates</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">&#39;min&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">[</span><span class="s1">&#39;max&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">[</span><span class="s1">&#39;precision&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">birth</span><span class="p">.</span><span class="n">precision</span><span class="p">}</span> </span><span id="L-1894"><a href="#L-1894"><span class="linenos" data-line="1894"></span></a> <span class="n">dates</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">min</span><span class="p">.</span><span class="n">year</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">match</span><span class="p">(</span><span class="n">birth</span><span class="p">.</span><span class="n">time</span><span class="p">,</span> <span class="s2">&quot;^[+-]?%d+&quot;</span><span class="p">))</span> </span><span id="L-1895"><a href="#L-1895"><span class="linenos" data-line="1895"></span></a> <span class="n">dates</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">min</span><span class="p">.</span><span class="n">month</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">match</span><span class="p">(</span><span class="n">birth</span><span class="p">.</span><span class="n">time</span><span class="p">,</span> <span class="s2">&quot;-(%d%d)-&quot;</span><span class="p">))</span> </span><span id="L-1896"><a href="#L-1896"><span class="linenos" data-line="1896"></span></a> <span class="n">dates</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">min</span><span class="p">.</span><span class="n">day</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">match</span><span class="p">(</span><span class="n">birth</span><span class="p">.</span><span class="n">time</span><span class="p">,</span> <span class="s2">&quot;-(%d%d)T&quot;</span><span class="p">))</span> </span><span id="L-1897"><a href="#L-1897"><span class="linenos" data-line="1897"></span></a> <span class="n">dates</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">max</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">clone</span><span class="p">(</span><span class="n">dates</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">min</span><span class="p">)</span> </span><span id="L-1898"><a href="#L-1898"><span class="linenos" data-line="1898"></span></a> <span class="n">dates</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">&#39;min&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">[</span><span class="s1">&#39;max&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">[</span><span class="s1">&#39;precision&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">death</span><span class="p">.</span><span class="n">precision</span><span class="p">}</span> </span><span id="L-1899"><a href="#L-1899"><span class="linenos" data-line="1899"></span></a> <span class="n">dates</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">min</span><span class="p">.</span><span class="n">year</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">match</span><span class="p">(</span><span class="n">death</span><span class="p">.</span><span class="n">time</span><span class="p">,</span> <span class="s2">&quot;^[+-]?%d+&quot;</span><span class="p">))</span> </span><span id="L-1900"><a href="#L-1900"><span class="linenos" data-line="1900"></span></a> <span class="n">dates</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">min</span><span class="p">.</span><span class="n">month</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">match</span><span class="p">(</span><span class="n">death</span><span class="p">.</span><span class="n">time</span><span class="p">,</span> <span class="s2">&quot;-(%d%d)-&quot;</span><span class="p">))</span> </span><span id="L-1901"><a href="#L-1901"><span class="linenos" data-line="1901"></span></a> <span class="n">dates</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">min</span><span class="p">.</span><span class="n">day</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">match</span><span class="p">(</span><span class="n">death</span><span class="p">.</span><span class="n">time</span><span class="p">,</span> <span class="s2">&quot;-(%d%d)T&quot;</span><span class="p">))</span> </span><span id="L-1902"><a href="#L-1902"><span class="linenos" data-line="1902"></span></a> <span class="n">dates</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">max</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">clone</span><span class="p">(</span><span class="n">dates</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">min</span><span class="p">)</span> </span><span id="L-1903"><a href="#L-1903"><span class="linenos" data-line="1903"></span></a> </span><span id="L-1904"><a href="#L-1904"><span class="linenos" data-line="1904"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">d</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">dates</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1905"><a href="#L-1905"><span class="linenos" data-line="1905"></span></a> <span class="kr">if</span> <span class="n">d</span><span class="p">.</span><span class="n">precision</span> <span class="o">==</span> <span class="mi">10</span> <span class="kr">then</span> <span class="c1">-- month</span> </span><span id="L-1906"><a href="#L-1906"><span class="linenos" data-line="1906"></span></a> <span class="n">d</span><span class="p">.</span><span class="n">min</span><span class="p">.</span><span class="n">day</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-1907"><a href="#L-1907"><span class="linenos" data-line="1907"></span></a> <span class="kd">local</span> <span class="n">timestamp</span> <span class="o">=</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">&quot;%04d&quot;</span><span class="p">,</span> <span class="nb">tostring</span><span class="p">(</span><span class="nb">math.abs</span><span class="p">(</span><span class="n">d</span><span class="p">.</span><span class="n">max</span><span class="p">.</span><span class="n">year</span><span class="p">)))</span> </span><span id="L-1908"><a href="#L-1908"><span class="linenos" data-line="1908"></span></a> <span class="o">..</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">&quot;%02d&quot;</span><span class="p">,</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">d</span><span class="p">.</span><span class="n">max</span><span class="p">.</span><span class="n">month</span><span class="p">))</span> </span><span id="L-1909"><a href="#L-1909"><span class="linenos" data-line="1909"></span></a> <span class="o">..</span> <span class="s2">&quot;01&quot;</span> </span><span id="L-1910"><a href="#L-1910"><span class="linenos" data-line="1910"></span></a> <span class="n">d</span><span class="p">.</span><span class="n">max</span><span class="p">.</span><span class="n">day</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">lang</span><span class="p">:</span><span class="n">formatDate</span><span class="p">(</span><span class="s2">&quot;j&quot;</span><span class="p">,</span> <span class="n">timestamp</span> <span class="o">..</span> <span class="s2">&quot; + 1 month - 1 day&quot;</span><span class="p">))</span> </span><span id="L-1911"><a href="#L-1911"><span class="linenos" data-line="1911"></span></a> <span class="kr">elseif</span> <span class="n">d</span><span class="p">.</span><span class="n">precision</span> <span class="o">&lt;</span> <span class="mi">10</span> <span class="kr">then</span> <span class="c1">-- year or decade</span> </span><span id="L-1912"><a href="#L-1912"><span class="linenos" data-line="1912"></span></a> <span class="n">d</span><span class="p">.</span><span class="n">min</span><span class="p">.</span><span class="n">day</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-1913"><a href="#L-1913"><span class="linenos" data-line="1913"></span></a> <span class="n">d</span><span class="p">.</span><span class="n">min</span><span class="p">.</span><span class="n">month</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-1914"><a href="#L-1914"><span class="linenos" data-line="1914"></span></a> <span class="n">d</span><span class="p">.</span><span class="n">max</span><span class="p">.</span><span class="n">day</span> <span class="o">=</span> <span class="mi">31</span> </span><span id="L-1915"><a href="#L-1915"><span class="linenos" data-line="1915"></span></a> <span class="n">d</span><span class="p">.</span><span class="n">max</span><span class="p">.</span><span class="n">month</span> <span class="o">=</span> <span class="mi">12</span> </span><span id="L-1916"><a href="#L-1916"><span class="linenos" data-line="1916"></span></a> <span class="kr">if</span> <span class="n">d</span><span class="p">.</span><span class="n">precision</span> <span class="o">==</span> <span class="mi">8</span> <span class="kr">then</span> <span class="c1">-- decade</span> </span><span id="L-1917"><a href="#L-1917"><span class="linenos" data-line="1917"></span></a> <span class="n">d</span><span class="p">.</span><span class="n">max</span><span class="p">.</span><span class="n">year</span> <span class="o">=</span> <span class="n">d</span><span class="p">.</span><span class="n">max</span><span class="p">.</span><span class="n">year</span> <span class="o">+</span> <span class="mi">9</span> </span><span id="L-1918"><a href="#L-1918"><span class="linenos" data-line="1918"></span></a> <span class="kr">end</span> </span><span id="L-1919"><a href="#L-1919"><span class="linenos" data-line="1919"></span></a> <span class="kr">end</span> </span><span id="L-1920"><a href="#L-1920"><span class="linenos" data-line="1920"></span></a> <span class="kr">end</span> </span><span id="L-1921"><a href="#L-1921"><span class="linenos" data-line="1921"></span></a> </span><span id="L-1922"><a href="#L-1922"><span class="linenos" data-line="1922"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">age</span><span class="p">(</span><span class="n">d1</span><span class="p">,</span> <span class="n">d2</span><span class="p">)</span> </span><span id="L-1923"><a href="#L-1923"><span class="linenos" data-line="1923"></span></a> <span class="kd">local</span> <span class="n">years</span> <span class="o">=</span> <span class="n">d2</span><span class="p">.</span><span class="n">year</span> <span class="o">-</span> <span class="n">d1</span><span class="p">.</span><span class="n">year</span> </span><span id="L-1924"><a href="#L-1924"><span class="linenos" data-line="1924"></span></a> <span class="kr">if</span> <span class="n">d2</span><span class="p">.</span><span class="n">month</span> <span class="o">&lt;</span> <span class="n">d1</span><span class="p">.</span><span class="n">month</span> <span class="ow">or</span> <span class="p">(</span><span class="n">d2</span><span class="p">.</span><span class="n">month</span> <span class="o">==</span> <span class="n">d1</span><span class="p">.</span><span class="n">month</span> <span class="ow">and</span> <span class="n">d2</span><span class="p">.</span><span class="n">day</span> <span class="o">&lt;</span> <span class="n">d1</span><span class="p">.</span><span class="n">day</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1925"><a href="#L-1925"><span class="linenos" data-line="1925"></span></a> <span class="n">years</span> <span class="o">=</span> <span class="n">years</span> <span class="o">-</span> <span class="mi">1</span> </span><span id="L-1926"><a href="#L-1926"><span class="linenos" data-line="1926"></span></a> <span class="kr">end</span> </span><span id="L-1927"><a href="#L-1927"><span class="linenos" data-line="1927"></span></a> <span class="kr">if</span> <span class="n">d2</span><span class="p">.</span><span class="n">year</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">d1</span><span class="p">.</span><span class="n">year</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1928"><a href="#L-1928"><span class="linenos" data-line="1928"></span></a> <span class="n">years</span> <span class="o">=</span> <span class="n">years</span> <span class="o">-</span> <span class="mi">1</span> <span class="c1">-- no year 0</span> </span><span id="L-1929"><a href="#L-1929"><span class="linenos" data-line="1929"></span></a> <span class="kr">end</span> </span><span id="L-1930"><a href="#L-1930"><span class="linenos" data-line="1930"></span></a> <span class="kr">return</span> <span class="n">years</span> </span><span id="L-1931"><a href="#L-1931"><span class="linenos" data-line="1931"></span></a> <span class="kr">end</span> </span><span id="L-1932"><a href="#L-1932"><span class="linenos" data-line="1932"></span></a> </span><span id="L-1933"><a href="#L-1933"><span class="linenos" data-line="1933"></span></a> <span class="kd">local</span> <span class="n">old_min</span> <span class="o">=</span> <span class="n">age</span><span class="p">(</span><span class="n">dates</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">max</span><span class="p">,</span> <span class="n">dates</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">min</span><span class="p">)</span> </span><span id="L-1934"><a href="#L-1934"><span class="linenos" data-line="1934"></span></a> <span class="kd">local</span> <span class="n">old_max</span> <span class="o">=</span> <span class="n">age</span><span class="p">(</span><span class="n">dates</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">min</span><span class="p">,</span> <span class="n">dates</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">max</span><span class="p">)</span> </span><span id="L-1935"><a href="#L-1935"><span class="linenos" data-line="1935"></span></a> <span class="kd">local</span> <span class="n">old</span><span class="p">,</span> <span class="n">old_expr</span> </span><span id="L-1936"><a href="#L-1936"><span class="linenos" data-line="1936"></span></a> <span class="kr">if</span> <span class="n">old_min</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">old_max</span> <span class="o">==</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1937"><a href="#L-1937"><span class="linenos" data-line="1937"></span></a> <span class="n">old</span> <span class="o">=</span> <span class="s2">&quot;&lt; 1&quot;</span> </span><span id="L-1938"><a href="#L-1938"><span class="linenos" data-line="1938"></span></a> <span class="n">old_max</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1">-- expression in singular</span> </span><span id="L-1939"><a href="#L-1939"><span class="linenos" data-line="1939"></span></a> <span class="kr">elseif</span> <span class="n">old_min</span> <span class="o">==</span> <span class="n">old_max</span> <span class="kr">then</span> </span><span id="L-1940"><a href="#L-1940"><span class="linenos" data-line="1940"></span></a> <span class="n">old</span> <span class="o">=</span> <span class="n">old_min</span> </span><span id="L-1941"><a href="#L-1941"><span class="linenos" data-line="1941"></span></a> <span class="kr">else</span> </span><span id="L-1942"><a href="#L-1942"><span class="linenos" data-line="1942"></span></a> <span class="n">old</span> <span class="o">=</span> <span class="n">old_min</span> <span class="o">..</span> <span class="s2">&quot;/&quot;</span> <span class="o">..</span> <span class="n">old_max</span> </span><span id="L-1943"><a href="#L-1943"><span class="linenos" data-line="1943"></span></a> <span class="kr">end</span> </span><span id="L-1944"><a href="#L-1944"><span class="linenos" data-line="1944"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">&#39;unit&#39;</span> <span class="kr">then</span> </span><span id="L-1945"><a href="#L-1945"><span class="linenos" data-line="1945"></span></a> <span class="kd">local</span> <span class="n">langs</span> <span class="o">=</span> <span class="n">findLang</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">lang</span><span class="p">)</span> </span><span id="L-1946"><a href="#L-1946"><span class="linenos" data-line="1946"></span></a> <span class="kd">local</span> <span class="n">yo</span> </span><span id="L-1947"><a href="#L-1947"><span class="linenos" data-line="1947"></span></a> <span class="kd">local</span> <span class="n">yo_pl</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1948"><a href="#L-1948"><span class="linenos" data-line="1948"></span></a> <span class="kr">if</span> <span class="n">langs</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span> <span class="kr">then</span> </span><span id="L-1949"><a href="#L-1949"><span class="linenos" data-line="1949"></span></a> <span class="n">yo_pl</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s2">&quot;years-old&quot;</span><span class="p">]</span> </span><span id="L-1950"><a href="#L-1950"><span class="linenos" data-line="1950"></span></a> <span class="kr">end</span> </span><span id="L-1951"><a href="#L-1951"><span class="linenos" data-line="1951"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">isSet</span><span class="p">(</span><span class="n">yo_pl</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="kr">then</span> </span><span id="L-1952"><a href="#L-1952"><span class="linenos" data-line="1952"></span></a> <span class="kd">local</span> <span class="n">yo_label</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">getLabelByLangs</span><span class="p">(</span><span class="s1">&#39;Q24564698&#39;</span><span class="p">,</span> <span class="n">langs</span><span class="p">)</span> </span><span id="L-1953"><a href="#L-1953"><span class="linenos" data-line="1953"></span></a> <span class="n">yo_pl</span> <span class="o">=</span> <span class="p">{</span><span class="n">yo_label</span><span class="p">,</span> <span class="n">yo_label</span><span class="p">}</span> </span><span id="L-1954"><a href="#L-1954"><span class="linenos" data-line="1954"></span></a> <span class="kr">end</span> </span><span id="L-1955"><a href="#L-1955"><span class="linenos" data-line="1955"></span></a> <span class="n">yo</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">langs</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span><span class="n">plural</span><span class="p">(</span><span class="n">old_max</span><span class="p">,</span> <span class="n">yo_pl</span><span class="p">)</span> </span><span id="L-1956"><a href="#L-1956"><span class="linenos" data-line="1956"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">yo</span><span class="p">,</span> <span class="s1">&#39;$1&#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="kr">then</span> </span><span id="L-1957"><a href="#L-1957"><span class="linenos" data-line="1957"></span></a> <span class="n">old_expr</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">yo</span><span class="p">,</span> <span class="s2">&quot;$1&quot;</span><span class="p">,</span> <span class="n">old</span><span class="p">)</span> </span><span id="L-1958"><a href="#L-1958"><span class="linenos" data-line="1958"></span></a> <span class="kr">else</span> </span><span id="L-1959"><a href="#L-1959"><span class="linenos" data-line="1959"></span></a> <span class="n">old_expr</span> <span class="o">=</span> <span class="n">old</span> <span class="o">..</span> <span class="s1">&#39;&amp;nbsp;&#39;</span> <span class="o">..</span> <span class="n">yo</span> </span><span id="L-1960"><a href="#L-1960"><span class="linenos" data-line="1960"></span></a> <span class="kr">end</span> </span><span id="L-1961"><a href="#L-1961"><span class="linenos" data-line="1961"></span></a> <span class="kr">elseif</span> <span class="n">args</span><span class="p">.</span><span class="n">formatting</span> <span class="kr">then</span> </span><span id="L-1962"><a href="#L-1962"><span class="linenos" data-line="1962"></span></a> <span class="n">old_expr</span> <span class="o">=</span> <span class="n">expandBraces</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">formatting</span><span class="p">,</span> <span class="s1">&#39;$1&#39;</span><span class="p">,</span> <span class="n">old</span><span class="p">),</span> <span class="n">args</span><span class="p">.</span><span class="n">formatting</span><span class="p">)</span> </span><span id="L-1963"><a href="#L-1963"><span class="linenos" data-line="1963"></span></a> <span class="kr">else</span> </span><span id="L-1964"><a href="#L-1964"><span class="linenos" data-line="1964"></span></a> <span class="n">old_expr</span> <span class="o">=</span> <span class="n">old</span> </span><span id="L-1965"><a href="#L-1965"><span class="linenos" data-line="1965"></span></a> <span class="kr">end</span> </span><span id="L-1966"><a href="#L-1966"><span class="linenos" data-line="1966"></span></a> </span><span id="L-1967"><a href="#L-1967"><span class="linenos" data-line="1967"></span></a> <span class="kr">return</span> <span class="n">old_expr</span> </span><span id="L-1968"><a href="#L-1968"><span class="linenos" data-line="1968"></span></a><span class="kr">end</span> </span><span id="L-1969"><a href="#L-1969"><span class="linenos" data-line="1969"></span></a> </span><span id="L-1970"><a href="#L-1970"><span class="linenos" data-line="1970"></span></a><span class="c1">-- Gets a label in a given language (content language by default) or its fallbacks, optionnally linked.</span> </span><span id="L-1971"><a href="#L-1971"><span class="linenos" data-line="1971"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">getLabel</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-1972"><a href="#L-1972"><span class="linenos" data-line="1972"></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 class="ow">or</span> <span class="n">frame</span> <span class="c1">-- via invoke or require</span> </span><span id="L-1973"><a href="#L-1973"><span class="linenos" data-line="1973"></span></a> <span class="kd">local</span> <span class="n">pargs</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> <span class="ow">and</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 class="ow">or</span> <span class="p">{}</span> </span><span id="L-1974"><a href="#L-1974"><span class="linenos" data-line="1974"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">required</span> <span class="ow">and</span> <span class="n">isSet</span><span class="p">(</span><span class="n">pargs</span><span class="p">.</span><span class="n">sandbox</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1975"><a href="#L-1975"><span class="linenos" data-line="1975"></span></a> <span class="kr">return</span> <span class="nb">require</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/&quot;</span> <span class="o">..</span> <span class="n">mw</span><span class="p">.</span><span class="n">message</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;Sandboxlink-subpage-name&#39;</span><span class="p">):</span><span class="n">inLanguage</span><span class="p">(</span><span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span><span class="p">):</span><span class="n">plain</span><span class="p">()).</span><span class="n">getLabel</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-1976"><a href="#L-1976"><span class="linenos" data-line="1976"></span></a> <span class="kr">end</span> </span><span id="L-1977"><a href="#L-1977"><span class="linenos" data-line="1977"></span></a> <span class="kd">local</span> <span class="n">id</span> <span class="o">=</span> <span class="n">getEntityId</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">pargs</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-1978"><a href="#L-1978"><span class="linenos" data-line="1978"></span></a> <span class="kr">if</span> <span class="n">id</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-1979"><a href="#L-1979"><span class="linenos" data-line="1979"></span></a> <span class="kd">local</span> <span class="n">languages</span> <span class="o">=</span> <span class="n">findLang</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">lang</span><span class="p">)</span> </span><span id="L-1980"><a href="#L-1980"><span class="linenos" data-line="1980"></span></a> <span class="kd">local</span> <span class="n">labelicon</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1981"><a href="#L-1981"><span class="linenos" data-line="1981"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">isValidEntityId</span><span class="p">(</span><span class="n">id</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1982"><a href="#L-1982"><span class="linenos" data-line="1982"></span></a> <span class="n">_</span><span class="p">,</span> <span class="n">labelicon</span> <span class="o">=</span> <span class="n">setIcons</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">editicon</span><span class="p">,</span> <span class="n">pargs</span><span class="p">.</span><span class="n">editicon</span><span class="p">)</span> </span><span id="L-1983"><a href="#L-1983"><span class="linenos" data-line="1983"></span></a> <span class="kr">end</span> </span><span id="L-1984"><a href="#L-1984"><span class="linenos" data-line="1984"></span></a> </span><span id="L-1985"><a href="#L-1985"><span class="linenos" data-line="1985"></span></a> <span class="kd">local</span> <span class="n">label_icon</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-1986"><a href="#L-1986"><span class="linenos" data-line="1986"></span></a> <span class="kd">local</span> <span class="n">label</span><span class="p">,</span> <span class="n">lang</span> </span><span id="L-1987"><a href="#L-1987"><span class="linenos" data-line="1987"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">.</span><span class="n">label</span> <span class="kr">then</span> </span><span id="L-1988"><a href="#L-1988"><span class="linenos" data-line="1988"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">label</span> </span><span id="L-1989"><a href="#L-1989"><span class="linenos" data-line="1989"></span></a> <span class="kr">else</span> </span><span id="L-1990"><a href="#L-1990"><span class="linenos" data-line="1990"></span></a> <span class="c1">-- exceptions or labels fixed</span> </span><span id="L-1991"><a href="#L-1991"><span class="linenos" data-line="1991"></span></a> <span class="kd">local</span> <span class="n">exist</span><span class="p">,</span> <span class="n">labels</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">wiki</span><span class="p">.</span><span class="n">module_title</span> <span class="o">..</span> <span class="s2">&quot;/labels&quot;</span> <span class="o">..</span> <span class="p">(</span><span class="n">languages</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">wiki</span><span class="p">.</span><span class="n">langcode</span> <span class="ow">and</span> <span class="s1">&#39;&#39;</span> <span class="ow">or</span> <span class="s1">&#39;/&#39;</span> <span class="o">..</span> <span class="n">languages</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> </span><span id="L-1992"><a href="#L-1992"><span class="linenos" data-line="1992"></span></a> <span class="kr">if</span> <span class="n">exist</span> <span class="ow">and</span> <span class="n">labels</span><span class="p">.</span><span class="n">infoboxLabelsFromId</span> <span class="ow">and</span> <span class="nb">next</span><span class="p">(</span><span class="n">labels</span><span class="p">.</span><span class="n">infoboxLabelsFromId</span><span class="p">)</span> <span class="o">~=</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-1993"><a href="#L-1993"><span class="linenos" data-line="1993"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">labels</span><span class="p">.</span><span class="n">infoboxLabelsFromId</span><span class="p">[</span><span class="n">id</span><span class="p">]</span> </span><span id="L-1994"><a href="#L-1994"><span class="linenos" data-line="1994"></span></a> <span class="kr">end</span> </span><span id="L-1995"><a href="#L-1995"><span class="linenos" data-line="1995"></span></a> </span><span id="L-1996"><a href="#L-1996"><span class="linenos" data-line="1996"></span></a> <span class="kr">if</span> <span class="n">label</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-1997"><a href="#L-1997"><span class="linenos" data-line="1997"></span></a> <span class="n">label</span><span class="p">,</span> <span class="n">lang</span> <span class="o">=</span> <span class="n">getLabelByLangs</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">languages</span><span class="p">)</span> </span><span id="L-1998"><a href="#L-1998"><span class="linenos" data-line="1998"></span></a> <span class="kr">if</span> <span class="n">label</span> <span class="kr">then</span> </span><span id="L-1999"><a href="#L-1999"><span class="linenos" data-line="1999"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">itemgender</span><span class="p">)</span> <span class="ow">and</span> <span class="n">feminineGender</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">itemgender</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-2000"><a href="#L-2000"><span class="linenos" data-line="2000"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">feminineForm</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">lang</span><span class="p">)</span> <span class="ow">or</span> <span class="n">label</span> </span><span id="L-2001"><a href="#L-2001"><span class="linenos" data-line="2001"></span></a> <span class="kr">end</span> </span><span id="L-2002"><a href="#L-2002"><span class="linenos" data-line="2002"></span></a> <span class="n">label</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 class="n">ucfirst</span><span class="p">(</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="n">label</span><span class="p">))</span> <span class="c1">-- sanitize</span> </span><span id="L-2003"><a href="#L-2003"><span class="linenos" data-line="2003"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">.</span><span class="n">case</span> <span class="kr">then</span> </span><span id="L-2004"><a href="#L-2004"><span class="linenos" data-line="2004"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">case</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">case</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">lang</span><span class="p">)</span> </span><span id="L-2005"><a href="#L-2005"><span class="linenos" data-line="2005"></span></a> <span class="kr">end</span> </span><span id="L-2006"><a href="#L-2006"><span class="linenos" data-line="2006"></span></a> <span class="kr">end</span> </span><span id="L-2007"><a href="#L-2007"><span class="linenos" data-line="2007"></span></a> <span class="n">label_icon</span> <span class="o">=</span> <span class="n">addLabelIcon</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">lang</span><span class="p">,</span> <span class="n">languages</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">labelicon</span><span class="p">)</span> </span><span id="L-2008"><a href="#L-2008"><span class="linenos" data-line="2008"></span></a> <span class="kr">end</span> </span><span id="L-2009"><a href="#L-2009"><span class="linenos" data-line="2009"></span></a> <span class="kr">end</span> </span><span id="L-2010"><a href="#L-2010"><span class="linenos" data-line="2010"></span></a> </span><span id="L-2011"><a href="#L-2011"><span class="linenos" data-line="2011"></span></a> <span class="kd">local</span> <span class="n">linked</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">linked</span> </span><span id="L-2012"><a href="#L-2012"><span class="linenos" data-line="2012"></span></a> <span class="kd">local</span> <span class="n">ret2</span> <span class="o">=</span> <span class="n">required</span> <span class="ow">and</span> <span class="n">untranslated</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-2013"><a href="#L-2013"><span class="linenos" data-line="2013"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">linked</span><span class="p">)</span> <span class="ow">and</span> <span class="n">linked</span> <span class="o">~=</span> <span class="s2">&quot;no&quot;</span> <span class="kr">then</span> </span><span id="L-2014"><a href="#L-2014"><span class="linenos" data-line="2014"></span></a> <span class="kd">local</span> <span class="n">article</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getSitelink</span><span class="p">(</span><span class="n">id</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="s2">&quot;d:Special:EntityPage/&quot;</span> <span class="o">..</span> <span class="n">id</span><span class="p">)</span> </span><span id="L-2015"><a href="#L-2015"><span class="linenos" data-line="2015"></span></a> <span class="kr">return</span> <span class="s2">&quot;[[&quot;</span> <span class="o">..</span> <span class="n">article</span> <span class="o">..</span> <span class="s2">&quot;|&quot;</span> <span class="o">..</span> <span class="p">(</span><span class="n">label</span> <span class="ow">or</span> <span class="n">id</span><span class="p">)</span> <span class="o">..</span> <span class="s2">&quot;]]&quot;</span> <span class="o">..</span> <span class="n">label_icon</span><span class="p">,</span> <span class="n">ret2</span> </span><span id="L-2016"><a href="#L-2016"><span class="linenos" data-line="2016"></span></a> <span class="kr">else</span> </span><span id="L-2017"><a href="#L-2017"><span class="linenos" data-line="2017"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="n">label</span> <span class="ow">or</span> <span class="n">id</span><span class="p">)</span> <span class="o">..</span> <span class="n">label_icon</span><span class="p">,</span> <span class="n">ret2</span> </span><span id="L-2018"><a href="#L-2018"><span class="linenos" data-line="2018"></span></a> <span class="kr">end</span> </span><span id="L-2019"><a href="#L-2019"><span class="linenos" data-line="2019"></span></a><span class="kr">end</span> </span><span id="L-2020"><a href="#L-2020"><span class="linenos" data-line="2020"></span></a> </span><span id="L-2021"><a href="#L-2021"><span class="linenos" data-line="2021"></span></a><span class="c1">-- Utilities -----------------------------</span> </span><span id="L-2022"><a href="#L-2022"><span class="linenos" data-line="2022"></span></a><span class="c1">-- See also module ../debug.</span> </span><span id="L-2023"><a href="#L-2023"><span class="linenos" data-line="2023"></span></a> </span><span id="L-2024"><a href="#L-2024"><span class="linenos" data-line="2024"></span></a><span class="c1">-- Copied from Module:Wikibase</span> </span><span id="L-2025"><a href="#L-2025"><span class="linenos" data-line="2025"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">getSiteLink</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-2026"><a href="#L-2026"><span class="linenos" data-line="2026"></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 class="ow">or</span> <span class="n">frame</span> <span class="c1">-- via invoke or require</span> </span><span id="L-2027"><a href="#L-2027"><span class="linenos" data-line="2027"></span></a> <span class="kd">local</span> <span class="n">pargs</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> <span class="ow">and</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 class="ow">or</span> <span class="p">{}</span> </span><span id="L-2028"><a href="#L-2028"><span class="linenos" data-line="2028"></span></a> <span class="kd">local</span> <span class="n">id</span> <span class="o">=</span> <span class="n">getEntityId</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">pargs</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-2029"><a href="#L-2029"><span class="linenos" data-line="2029"></span></a> <span class="kr">if</span> <span class="n">id</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-2030"><a href="#L-2030"><span class="linenos" data-line="2030"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getSitelink</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">trim</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">))</span> </span><span id="L-2031"><a href="#L-2031"><span class="linenos" data-line="2031"></span></a><span class="kr">end</span> </span><span id="L-2032"><a href="#L-2032"><span class="linenos" data-line="2032"></span></a> </span><span id="L-2033"><a href="#L-2033"><span class="linenos" data-line="2033"></span></a><span class="c1">-- Helper function for the default language code used</span> </span><span id="L-2034"><a href="#L-2034"><span class="linenos" data-line="2034"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">lang</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-2035"><a href="#L-2035"><span class="linenos" data-line="2035"></span></a> <span class="kd">local</span> <span class="n">lang</span> <span class="o">=</span> <span class="n">frame</span> <span class="ow">and</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 class="c1">-- nil via require</span> </span><span id="L-2036"><a href="#L-2036"><span class="linenos" data-line="2036"></span></a> <span class="kr">return</span> <span class="n">findLang</span><span class="p">(</span><span class="n">lang</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-2037"><a href="#L-2037"><span class="linenos" data-line="2037"></span></a><span class="kr">end</span> </span><span id="L-2038"><a href="#L-2038"><span class="linenos" data-line="2038"></span></a> </span><span id="L-2039"><a href="#L-2039"><span class="linenos" data-line="2039"></span></a><span class="c1">-- Number of statements</span> </span><span id="L-2040"><a href="#L-2040"><span class="linenos" data-line="2040"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">numStatements</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-2041"><a href="#L-2041"><span class="linenos" data-line="2041"></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 class="ow">or</span> <span class="n">frame</span> <span class="c1">-- via invoke or require</span> </span><span id="L-2042"><a href="#L-2042"><span class="linenos" data-line="2042"></span></a> <span class="kd">local</span> <span class="n">pargs</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> <span class="ow">and</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 class="ow">or</span> <span class="p">{}</span> </span><span id="L-2043"><a href="#L-2043"><span class="linenos" data-line="2043"></span></a> <span class="kd">local</span> <span class="n">id</span> <span class="o">=</span> <span class="n">getEntityId</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">pargs</span><span class="p">)</span> </span><span id="L-2044"><a href="#L-2044"><span class="linenos" data-line="2044"></span></a> <span class="kr">if</span> <span class="n">id</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> <span class="kr">return</span> <span class="mi">0</span> <span class="kr">end</span> </span><span id="L-2045"><a href="#L-2045"><span class="linenos" data-line="2045"></span></a> <span class="kd">local</span> <span class="n">prop</span> <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">trim</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> </span><span id="L-2046"><a href="#L-2046"><span class="linenos" data-line="2046"></span></a> <span class="kd">local</span> <span class="n">num</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-2047"><a href="#L-2047"><span class="linenos" data-line="2047"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">isSet</span><span class="p">(</span><span class="n">prop</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-2048"><a href="#L-2048"><span class="linenos" data-line="2048"></span></a> <span class="kd">local</span> <span class="n">largs</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-2049"><a href="#L-2049"><span class="linenos" data-line="2049"></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">pargs</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-2050"><a href="#L-2050"><span class="linenos" data-line="2050"></span></a> <span class="n">largs</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> </span><span id="L-2051"><a href="#L-2051"><span class="linenos" data-line="2051"></span></a> <span class="kr">end</span> </span><span id="L-2052"><a href="#L-2052"><span class="linenos" data-line="2052"></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-2053"><a href="#L-2053"><span class="linenos" data-line="2053"></span></a> <span class="n">largs</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> </span><span id="L-2054"><a href="#L-2054"><span class="linenos" data-line="2054"></span></a> <span class="kr">end</span> </span><span id="L-2055"><a href="#L-2055"><span class="linenos" data-line="2055"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">query</span> <span class="o">=</span> <span class="s1">&#39;num&#39;</span> </span><span id="L-2056"><a href="#L-2056"><span class="linenos" data-line="2056"></span></a> <span class="n">_</span><span class="p">,</span> <span class="n">num</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">claim</span><span class="p">(</span><span class="n">largs</span><span class="p">)</span> </span><span id="L-2057"><a href="#L-2057"><span class="linenos" data-line="2057"></span></a> <span class="kr">return</span> <span class="n">num</span> </span><span id="L-2058"><a href="#L-2058"><span class="linenos" data-line="2058"></span></a> <span class="kr">elseif</span> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="kr">then</span> <span class="c1">-- qualifier</span> </span><span id="L-2059"><a href="#L-2059"><span class="linenos" data-line="2059"></span></a> <span class="kd">local</span> <span class="n">qual</span> <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">trim</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> </span><span id="L-2060"><a href="#L-2060"><span class="linenos" data-line="2060"></span></a> <span class="kd">local</span> <span class="n">values</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">claim</span><span class="p">{</span><span class="n">item</span><span class="o">=</span><span class="n">id</span><span class="p">,</span> <span class="n">property</span><span class="o">=</span><span class="n">prop</span><span class="p">,</span> <span class="n">qualifier</span><span class="o">=</span><span class="n">qual</span><span class="p">,</span> <span class="n">formatting</span><span class="o">=</span><span class="s1">&#39;raw&#39;</span><span class="p">,</span> <span class="n">separator</span><span class="o">=</span><span class="s1">&#39;/·/&#39;</span><span class="p">}</span> </span><span id="L-2061"><a href="#L-2061"><span class="linenos" data-line="2061"></span></a> <span class="kr">if</span> <span class="n">values</span> <span class="kr">then</span> </span><span id="L-2062"><a href="#L-2062"><span class="linenos" data-line="2062"></span></a> <span class="n">num</span> <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">split</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="s1">&#39;/·/&#39;</span><span class="p">)</span> </span><span id="L-2063"><a href="#L-2063"><span class="linenos" data-line="2063"></span></a> <span class="kr">end</span> </span><span id="L-2064"><a href="#L-2064"><span class="linenos" data-line="2064"></span></a> <span class="kr">else</span> </span><span id="L-2065"><a href="#L-2065"><span class="linenos" data-line="2065"></span></a> <span class="n">num</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getBestStatements</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">prop</span><span class="p">)</span> </span><span id="L-2066"><a href="#L-2066"><span class="linenos" data-line="2066"></span></a> <span class="kr">end</span> </span><span id="L-2067"><a href="#L-2067"><span class="linenos" data-line="2067"></span></a> <span class="kr">return</span> <span class="o">#</span><span class="n">num</span> </span><span id="L-2068"><a href="#L-2068"><span class="linenos" data-line="2068"></span></a><span class="kr">end</span> </span><span id="L-2069"><a href="#L-2069"><span class="linenos" data-line="2069"></span></a> </span><span id="L-2070"><a href="#L-2070"><span class="linenos" data-line="2070"></span></a><span class="c1">-- Returns true if property datavalue is found excluding novalue/somevalue</span> </span><span id="L-2071"><a href="#L-2071"><span class="linenos" data-line="2071"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">validProperty</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-2072"><a href="#L-2072"><span class="linenos" data-line="2072"></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 class="ow">or</span> <span class="n">frame</span> <span class="c1">-- via invoke or require</span> </span><span id="L-2073"><a href="#L-2073"><span class="linenos" data-line="2073"></span></a> <span class="kd">local</span> <span class="n">pargs</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> <span class="ow">and</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 class="ow">or</span> <span class="p">{}</span> </span><span id="L-2074"><a href="#L-2074"><span class="linenos" data-line="2074"></span></a> <span class="kd">local</span> <span class="n">item</span> <span class="o">=</span> <span class="n">getEntityId</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">pargs</span><span class="p">)</span> </span><span id="L-2075"><a href="#L-2075"><span class="linenos" data-line="2075"></span></a> <span class="kr">if</span> <span class="n">item</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-2076"><a href="#L-2076"><span class="linenos" data-line="2076"></span></a> <span class="kd">local</span> <span class="n">property</span> <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">trim</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-2077"><a href="#L-2077"><span class="linenos" data-line="2077"></span></a> <span class="kd">local</span> <span class="n">prop_data</span> <span class="o">=</span> <span class="n">getSnak</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getBestStatements</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">property</span><span class="p">),</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;mainsnak&quot;</span><span class="p">,</span> <span class="s2">&quot;datavalue&quot;</span><span class="p">})</span> </span><span id="L-2078"><a href="#L-2078"><span class="linenos" data-line="2078"></span></a> <span class="kr">return</span> <span class="n">prop_data</span> <span class="ow">and</span> <span class="kc">true</span> <span class="ow">or</span> <span class="kc">nil</span> </span><span id="L-2079"><a href="#L-2079"><span class="linenos" data-line="2079"></span></a><span class="kr">end</span> </span><span id="L-2080"><a href="#L-2080"><span class="linenos" data-line="2080"></span></a> </span><span id="L-2081"><a href="#L-2081"><span class="linenos" data-line="2081"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">editAtWikidata</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-2082"><a href="#L-2082"><span class="linenos" data-line="2082"></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 class="ow">or</span> <span class="n">frame</span> <span class="c1">-- via invoke or require</span> </span><span id="L-2083"><a href="#L-2083"><span class="linenos" data-line="2083"></span></a> <span class="kd">local</span> <span class="n">pargs</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> <span class="ow">and</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 class="ow">or</span> <span class="p">{}</span> </span><span id="L-2084"><a href="#L-2084"><span class="linenos" data-line="2084"></span></a> <span class="kd">local</span> <span class="n">value</span> <span class="o">=</span> <span class="n">isSet</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-2085"><a href="#L-2085"><span class="linenos" data-line="2085"></span></a> <span class="kr">if</span> <span class="n">value</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-2086"><a href="#L-2086"><span class="linenos" data-line="2086"></span></a> <span class="kd">local</span> <span class="n">param</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-2087"><a href="#L-2087"><span class="linenos" data-line="2087"></span></a> <span class="n">param</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">getEntityId</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">pargs</span><span class="p">)</span> </span><span id="L-2088"><a href="#L-2088"><span class="linenos" data-line="2088"></span></a> <span class="n">param</span><span class="p">.</span><span class="n">property</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">property</span> </span><span id="L-2089"><a href="#L-2089"><span class="linenos" data-line="2089"></span></a> <span class="n">param</span><span class="p">.</span><span class="n">lang</span> <span class="o">=</span> <span class="n">findLang</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">lang</span><span class="p">)</span> </span><span id="L-2090"><a href="#L-2090"><span class="linenos" data-line="2090"></span></a> <span class="n">param</span><span class="p">.</span><span class="n">editicon</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">setIcons</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">editicon</span><span class="p">)</span> </span><span id="L-2091"><a href="#L-2091"><span class="linenos" data-line="2091"></span></a> <span class="kr">return</span> <span class="n">addEditIcon</span><span class="p">(</span><span class="n">param</span><span class="p">)</span> </span><span id="L-2092"><a href="#L-2092"><span class="linenos" data-line="2092"></span></a><span class="kr">end</span> </span><span id="L-2093"><a href="#L-2093"><span class="linenos" data-line="2093"></span></a> </span><span id="L-2094"><a href="#L-2094"><span class="linenos" data-line="2094"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">formatNum</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-2095"><a href="#L-2095"><span class="linenos" data-line="2095"></span></a> <span class="kd">local</span> <span class="n">num</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">trim</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-2096"><a href="#L-2096"><span class="linenos" data-line="2096"></span></a> <span class="kd">local</span> <span class="n">lang</span> <span class="o">=</span> <span class="n">findLang</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">trim</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">2</span><span class="p">]))</span> </span><span id="L-2097"><a href="#L-2097"><span class="linenos" data-line="2097"></span></a> <span class="kr">return</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 class="mi">1</span><span class="p">]):</span><span class="n">formatNum</span><span class="p">(</span><span class="n">num</span><span class="p">)</span> </span><span id="L-2098"><a href="#L-2098"><span class="linenos" data-line="2098"></span></a><span class="kr">end</span> </span><span id="L-2099"><a href="#L-2099"><span class="linenos" data-line="2099"></span></a> </span><span id="L-2100"><a href="#L-2100"><span class="linenos" data-line="2100"></span></a><span class="kr">return</span> <span class="n">p</span> </span></pre></div></div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Traesto fora da Wikipèdia - L'ençiclopedia łìbara e cołaboradiva in łéngua Vèneta "<a dir="ltr" href="https://vec.wikipedia.org/w/index.php?title=Modulo:Wikidades&amp;oldid=1169707">https://vec.wikipedia.org/w/index.php?title=Modulo:Wikidades&amp;oldid=1169707</a>"</div></div> <div id="catlinks" class="catlinks catlinks-allhidden" data-mw="interface"></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> Ùltimo canbiamento de sta pàjina el 18 avr 2024 a ƚe 17:06.</li> <li id="footer-info-copyright">El testo el ze disponibiłe segondo ła <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.it">licensa Creative Commons Attribution-ShareAlike</a>; e połe aplicarse oncora pì condision. Varda łe <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">condision d'uzo</a> par i detaji.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy/it">Privacy</a></li> <li id="footer-places-about"><a href="/wiki/Wikip%C3%A8dia_in_%C5%82%C3%A9ngua_V%C3%A8neta">Se parla de Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:Avertense_xenera%C5%82i">Avertense</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Còdese de condota</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Sviłupadori</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/vec.wikipedia.org">Statisteghe</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Dichiarasion sui cookie</a></li> <li id="footer-places-mobileview"><a href="//vec.m.wikipedia.org/w/index.php?title=Modulo:Wikidades&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Version mobiłe</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> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-694cf4987f-dj8n5","wgBackendResponseTime":794,"wgPageParseReport":{"limitreport":{"cputime":"0.198","walltime":"0.352","ppvisitednodes":{"value":2103,"limit":1000000},"postexpandincludesize":{"value":44504,"limit":2097152},"templateargumentsize":{"value":857,"limit":2097152},"expansiondepth":{"value":8,"limit":100},"expensivefunctioncount":{"value":0,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":1613,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 302.554 1 -total","100.00% 302.554 1 Modulo:Wikidades/man"," 51.96% 157.199 26 Modeło:P"," 46.80% 141.610 26 Modeło:GetLabelFix"," 32.99% 99.825 5 Modeło:Q"," 28.65% 86.670 5 Modeło:WikidataLabel"," 4.95% 14.971 10 Modeło:Tl"]},"scribunto":{"limitreport-timeusage":{"value":"0.085","limit":"10.000"},"limitreport-memusage":{"value":3006409,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-694cf4987f-dj8n5","timestamp":"20241126024434","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>

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