CINXE.COM
Mòdul:Wikidades - Viquipèdia, l'enciclopèdia lliure
<!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="ca" dir="ltr"> <head> <meta charset="UTF-8"> <title>Mòdul:Wikidades - Viquipèdia, l'enciclopèdia lliure</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(/(?:^|; )cawikimwclientpreferences=([^;]+)/);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":["","gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],"wgRequestId":"0c0c4f7a-dbe4-493a-9607-d4bb74948bb8","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Mòdul:Wikidades","wgTitle":"Wikidades","wgCurRevisionId":34103641,"wgRevisionId":34103641,"wgArticleId":1739960,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Plantilles protegides","Mòduls amb dades de Wikidata"],"wgPageViewLanguage":"ca","wgPageContentLanguage":"ca","wgPageContentModel":"Scribunto","wgRelevantPageName":"Mòdul:Wikidades","wgRelevantArticleId":1739960,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["sysop"],"wgRestrictionMove":["sysop"],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":true,"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};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.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","wikibase.client.data-bridge.externalModifiers":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["mediawiki.page.media","ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.UkensKonkurranse","ext.gadget.refToolbar","ext.gadget.charinsert","ext.gadget.AltresViccionari","ext.gadget.purgetab","ext.gadget.DocTabs","ext.gadget.switcher","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","wikibase.client.data-bridge.init","ext.checkUser.clientHints","oojs-ui.styles.icons-media","oojs-ui-core.icons","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=ca&modules=ext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.data-bridge.externalModifiers%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=ca&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=ca&modules=site.styles&only=styles&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="Mòdul:Wikidades - Viquipèdia, l'enciclopèdia lliure"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//ca.m.wikipedia.org/wiki/M%C3%B2dul:Wikidades"> <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="Viquipèdia (ca)"> <link rel="EditURI" type="application/rsd+xml" href="//ca.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://ca.wikipedia.org/wiki/M%C3%B2dul:Wikidades"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.ca"> <link rel="alternate" type="application/atom+xml" title="Canal de sindicació Atom Viquipèdia" href="/w/index.php?title=Especial:Canvis_recents&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 page-Mòdul_Wikidades rootpage-Mòdul_Wikidades skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Vés al contingut</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="Lloc"> <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ú principal" > <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ú principal</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ú principal</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">mou a la barra lateral</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">amaga</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navegació </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Portada" title="Visiteu la pàgina principal [z]" accesskey="z"><span>Portada</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Especial:Article_aleatori" title="Carrega una pàgina a l’atzar [x]" accesskey="x"><span>Article a l'atzar</span></a></li><li id="n-Articles-de-qualitat" class="mw-list-item"><a href="/wiki/Viquip%C3%A8dia:Articles_de_qualitat"><span>Articles de qualitat</span></a></li> </ul> </div> </div> <div id="p-Comunitat" class="vector-menu mw-portlet mw-portlet-Comunitat" > <div class="vector-menu-heading"> Comunitat </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-portal" class="mw-list-item"><a href="/wiki/Viquip%C3%A8dia:Portal" title="Sobre el projecte, què podeu fer, on trobareu les coses"><span>Portal viquipedista</span></a></li><li id="n-Agenda-d'actes" class="mw-list-item"><a href="/wiki/Viquip%C3%A8dia:Trobades"><span>Agenda d'actes</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Especial:Canvis_recents" title="Una llista dels canvis recents al wiki [r]" accesskey="r"><span>Canvis recents</span></a></li><li id="n-La-taverna" class="mw-list-item"><a href="/wiki/Viquip%C3%A8dia:La_taverna"><span>La taverna</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="/wiki/Viquip%C3%A8dia:Contacte"><span>Contacte</span></a></li><li id="n-Xat" class="mw-list-item"><a href="/wiki/Viquip%C3%A8dia:Canals_IRC"><span>Xat</span></a></li><li id="n-help" class="mw-list-item"><a href="/wiki/Viquip%C3%A8dia:Ajuda" title="El lloc per a saber més coses"><span>Ajuda</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Portada" 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="Viquipèdia" src="/static/images/mobile/copyright/wikipedia-wordmark-ca.svg" style="width: 7.5em; height: 1.4375em;"> <img class="mw-logo-tagline" alt="l'Enciclopèdia Lliure" src="/static/images/mobile/copyright/wikipedia-tagline-ca.svg" width="120" height="14" style="width: 7.5em; 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/Especial:Cerca" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Cerca a la Viquipèdia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Cerca</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="Cerca a Viquipèdia" aria-label="Cerca a Viquipèdia" autocapitalize="sentences" title="Cerca a la Viquipèdia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Especial:Cerca"> </div> <button class="cdx-button cdx-search-input__end-button">Cerca</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Eines personals"> <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="Aparença"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <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="Aparença" > <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">Aparença</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="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_ca.wikipedia.org&uselang=ca" class=""><span>Donatius</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=Especial:Crea_compte&returnto=M%C3%B2dul%3AWikidades" title="Us animem a crear un compte i iniciar una sessió, encara que no és obligatori" class=""><span>Crea un compte</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=Especial:Registre_i_entrada&returnto=M%C3%B2dul%3AWikidades" title="Us animem a registrar-vos, però no és obligatori [o]" accesskey="o" class=""><span>Inicia la sessió</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="Més opcions" > <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="Eines personals" > <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">Eines personals</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="Menú d'usuari" > <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="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_ca.wikipedia.org&uselang=ca"><span>Donatius</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Especial:Crea_compte&returnto=M%C3%B2dul%3AWikidades" title="Us animem a crear un compte i iniciar una sessió, encara que no és obligatori"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Crea un compte</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Especial:Registre_i_entrada&returnto=M%C3%B2dul%3AWikidades" title="Us animem a registrar-vos, però no és obligatori [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Inicia la sessió</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"> Pàgines per a editors no registrats <a href="/wiki/Ajuda:Introducci%C3%B3" aria-label="Vegeu més informació sobre l'edició"><span>més informació</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Especial:Contribucions_pr%C3%B2pies" title="Una llista de les modificacions fetes des d'aquesta adreça IP [y]" accesskey="y"><span>Contribucions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Especial:Discussi%C3%B3_personal" title="Discussió sobre les edicions per aquesta adreça ip. [n]" accesskey="n"><span>Discussió per aquest IP</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"><!-- CentralNotice --></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="Lloc"> <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="Contingut" 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">Contingut</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">mou a la barra lateral</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">amaga</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">Inici</div> </a> </li> <li id="toc-Funcions" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Funcions"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Funcions</span> </div> </a> <ul id="toc-Funcions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Funció_claim" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Funció_claim"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Funció claim</span> </div> </a> <button aria-controls="toc-Funció_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>Commuta la subsecció Funció claim</span> </button> <ul id="toc-Funció_claim-sublist" class="vector-toc-list"> <li id="toc-Paràmetres_generals" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Paràmetres_generals"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Paràmetres generals</span> </div> </a> <ul id="toc-Paràmetres_generals-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Paràmetres_de_formatació" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Paràmetres_de_formatació"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Paràmetres de formatació</span> </div> </a> <ul id="toc-Paràmetres_de_formatació-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Paràmetres_de_taula_de_propietat_i_qualificadors" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Paràmetres_de_taula_de_propietat_i_qualificadors"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>Paràmetres de taula de propietat i qualificadors</span> </div> </a> <ul id="toc-Paràmetres_de_taula_de_propietat_i_qualificadors-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Funció_getLabel" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Funció_getLabel"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Funció getLabel</span> </div> </a> <ul id="toc-Funció_getLabel-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Funció_getParentValues" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Funció_getParentValues"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Funció getParentValues</span> </div> </a> <ul id="toc-Funció_getParentValues-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Funció_linkWithParentLabel" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Funció_linkWithParentLabel"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Funció linkWithParentLabel</span> </div> </a> <ul id="toc-Funció_linkWithParentLabel-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Funció_yearsOld" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Funció_yearsOld"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Funció yearsOld</span> </div> </a> <ul id="toc-Funció_yearsOld-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Funció_editAtWikidata" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Funció_editAtWikidata"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Funció editAtWikidata</span> </div> </a> <ul id="toc-Funció_editAtWikidata-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Utilitats" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Utilitats"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Utilitats</span> </div> </a> <ul id="toc-Utilitats-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Redireccions_de_Wikidata" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Redireccions_de_Wikidata"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>Redireccions de Wikidata</span> </div> </a> <ul id="toc-Redireccions_de_Wikidata-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Crides_des_d'un_altre_mòdul" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Crides_des_d'un_altre_mòdul"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>Crides des d'un altre mòdul</span> </div> </a> <ul id="toc-Crides_des_d'un_altre_mòdul-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Exemples" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Exemples"> <div class="vector-toc-text"> <span class="vector-toc-numb">11</span> <span>Exemples</span> </div> </a> <ul id="toc-Exemples-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Dependències" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Dependències"> <div class="vector-toc-text"> <span class="vector-toc-numb">12</span> <span>Dependències</span> </div> </a> <ul id="toc-Dependències-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Vegeu_també" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Vegeu_també"> <div class="vector-toc-text"> <span class="vector-toc-numb">13</span> <span>Vegeu també</span> </div> </a> <ul id="toc-Vegeu_també-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="Contingut" 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="Commuta la taula de continguts." > <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">Commuta la taula de continguts.</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">Mòdul</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="Vés a un article en una altra llengua. Disponible en 31 llengües" > <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 llengües</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 - àrab" lang="ar" hreflang="ar" data-title="وحدة:Wikidata.Ca" data-language-autonym="العربية" data-language-local-name="àrab" 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 - asturià" lang="ast" hreflang="ast" data-title="Módulu:Wikidata" data-language-autonym="Asturianu" data-language-local-name="asturià" 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 - atacama" lang="atj" hreflang="atj" data-title="Aitapihikewin:Wikidata" data-language-autonym="Atikamekw" data-language-local-name="atacama" 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 - balinès" lang="ban" hreflang="ban" data-title="Modul:Wikidata" data-language-autonym="Basa Bali" data-language-local-name="balinès" 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-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 - kurd central" lang="ckb" hreflang="ckb" data-title="مۆدیوول:Wikidata.Ca" data-language-autonym="کوردی" data-language-local-name="kurd central" 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 - dinka" lang="din" hreflang="din" data-title="Mukääcëtök:Wikidata" data-language-autonym="Thuɔŋjäŋ" data-language-local-name="dinka" 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 - basc" lang="eu" hreflang="eu" data-title="Modulu:Wikidata" data-language-autonym="Euskara" data-language-local-name="basc" 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 - irlandès" lang="ga" hreflang="ga" data-title="Module:Wikidades" data-language-autonym="Gaeilge" data-language-local-name="irlandès" 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èlic escocès" lang="gd" hreflang="gd" data-title="Mòideal:Wikidata" data-language-autonym="Gàidhlig" data-language-local-name="gaèlic escocès" 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 - gallec" lang="gl" hreflang="gl" data-title="Módulo:Wikidades" data-language-autonym="Galego" data-language-local-name="gallec" 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 - wayú" lang="guc" hreflang="guc" data-title="Módulo:Wikidata" data-language-autonym="Wayuunaiki" data-language-local-name="wayú" 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 - haussa" lang="ha" hreflang="ha" data-title="Module:Wikidata" data-language-autonym="Hausa" data-language-local-name="haussa" 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 - indonesi" lang="id" hreflang="id" data-title="Modul:Wikidata" data-language-autonym="Bahasa Indonesia" data-language-local-name="indonesi" 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 - cabilenc" lang="kab" hreflang="kab" data-title="Module:Wikidata" data-language-autonym="Taqbaylit" data-language-local-name="cabilenc" 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 - madurès" lang="mad" hreflang="mad" data-title="Modul:Wikidata" data-language-autonym="Madhurâ" data-language-local-name="madurès" 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 - malai" lang="ms" hreflang="ms" data-title="Modul:Wikidata.Ca" data-language-autonym="Bahasa Melayu" data-language-local-name="malai" 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 - maltès" lang="mt" hreflang="mt" data-title="Module:Wikidata" data-language-autonym="Malti" data-language-local-name="maltès" 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 - mazanderani" lang="mzn" hreflang="mzn" data-title="ماژول:Wikidata.Ca" data-language-autonym="مازِرونی" data-language-local-name="mazanderani" 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 - noruec bokmål" lang="nb" hreflang="nb" data-title="Modul:Wikidades" data-language-autonym="Norsk bokmål" data-language-local-name="noruec bokmål" 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 - occità" lang="oc" hreflang="oc" data-title="Mòdul:Wikidadas" data-language-autonym="Occitan" data-language-local-name="occità" 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 - quítxua" lang="qu" hreflang="qu" data-title="Módulo:Wikidata2" data-language-autonym="Runa Simi" data-language-local-name="quítxua" 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 septentrional" lang="se" hreflang="se" data-title="Modula:Ca:Wikidata" data-language-autonym="Davvisámegiella" data-language-local-name="sami septentrional" 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 - swazi" lang="ss" hreflang="ss" data-title="Module:Wikidata" data-language-autonym="SiSwati" data-language-local-name="swazi" 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 - urdú" lang="ur" hreflang="ur" data-title="ماڈیول:Wikidata.Ca" data-language-autonym="اردو" data-language-local-name="urdú" class="interlanguage-link-target"><span>اردو</span></a></li><li class="interlanguage-link interwiki-vec mw-list-item"><a href="https://vec.wikipedia.org/wiki/Modulo:Wikidades" title="Modulo:Wikidades - vènet" lang="vec" hreflang="vec" data-title="Modulo:Wikidades" data-language-autonym="Vèneto" data-language-local-name="vènet" class="interlanguage-link-target"><span>Vèneto</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="Modifica enllaços interlingües" class="wbc-editpage">Modifica els enllaços</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="Espais de noms"> <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/M%C3%B2dul:Wikidades" title="Mostra la pàgina del mòdul [c]" accesskey="c"><span>Mòdul</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/M%C3%B2dul_Discussi%C3%B3:Wikidades" rel="discussion" title="Discussió sobre el contingut d'aquesta pàgina [t]" accesskey="t"><span>Discussió</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="Canvia la variant de llengua" > <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="Vistes"> <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/M%C3%B2dul:Wikidades"><span>Mostra</span></a></li><li id="ca-viewsource" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=M%C3%B2dul:Wikidades&action=edit" title="Aquesta pàgina està protegida. Podeu veure'n el codi font. [e]" accesskey="e"><span>Mostra el codi</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=M%C3%B2dul:Wikidades&action=history" title="Versions antigues d'aquesta pàgina [h]" accesskey="h"><span>Mostra l'historial</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Eines de la pàgina"> <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="Eines" > <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">Eines</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">Eines</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">mou a la barra lateral</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">amaga</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="Més opcions" > <div class="vector-menu-heading"> Accions </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/M%C3%B2dul:Wikidades"><span>Mostra</span></a></li><li id="ca-more-viewsource" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=M%C3%B2dul:Wikidades&action=edit"><span>Mostra el codi</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=M%C3%B2dul:Wikidades&action=history"><span>Mostra l'historial</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Especial:Enlla%C3%A7os/M%C3%B2dul:Wikidades" title="Una llista de totes les pàgines wiki que enllacen amb aquesta [j]" accesskey="j"><span>Què hi enllaça</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Especial:Seguiment/M%C3%B2dul:Wikidades" rel="nofollow" title="Canvis recents a pàgines enllaçades des d'aquesta pàgina [k]" accesskey="k"><span>Canvis relacionats</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Especial:P%C3%A0gines_especials" title="Llista totes les pàgines especials [q]" accesskey="q"><span>Pàgines especials</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=M%C3%B2dul:Wikidades&oldid=34103641" title="Enllaç permanent a aquesta revisió de la pàgina"><span>Enllaç permanent</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=M%C3%B2dul:Wikidades&action=info" title="Més informació sobre aquesta pàgina"><span>Informació de la pàgina</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Especial:UrlShortener&url=https%3A%2F%2Fca.wikipedia.org%2Fwiki%2FM%25C3%25B2dul%3AWikidades"><span>Obtén una URL abreujada</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Especial:QrCode&url=https%3A%2F%2Fca.wikipedia.org%2Fwiki%2FM%25C3%25B2dul%3AWikidades"><span>Descarrega el codi 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"> Imprimeix/exporta </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=Especial:DownloadAsPdf&page=M%C3%B2dul%3AWikidades&action=show-download-screen"><span>Baixa com a PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Versió per a impressió d'aquesta pàgina [p]" accesskey="p"><span>Versió per a impressora</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"> En altres projectes </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 class="wb-otherproject-link wb-otherproject-wikiquote mw-list-item"><a href="https://ca.wikiquote.org/wiki/M%C3%B2dul:Wikidata" hreflang="ca"><span>Viquidites</span></a></li><li class="wb-otherproject-link wb-otherproject-wikisource mw-list-item"><a href="https://ca.wikisource.org/wiki/M%C3%B2dul:Wikidata" hreflang="ca"><span>Viquitexts</span></a></li><li class="wb-otherproject-link wb-otherproject-wiktionary mw-list-item"><a href="https://ca.wiktionary.org/wiki/M%C3%B2dul:Wikidata" hreflang="ca"><span>Viccionari</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="Enllaç a l'element del repositori de dades connectat [g]" accesskey="g"><span>Element a 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="Eines de la pàgina"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Aparença"> <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">Aparença</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">mou a la barra lateral</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">amaga</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 id="mw-indicator-ind-protected" class="mw-indicator"><div class="mw-parser-output"><span typeof="mw:File"><a href="/wiki/Viquip%C3%A8dia:P%C3%A0gina_protegida" title="Viquipèdia:Pàgina protegida"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Padlock-red.svg/20px-Padlock-red.svg.png" decoding="async" width="20" height="20" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Padlock-red.svg/30px-Padlock-red.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/48/Padlock-red.svg/40px-Padlock-red.svg.png 2x" data-file-width="128" data-file-height="128" /></a></span></div></div> </div> <div id="siteSub" class="noprint">De la Viquipèdia, l'enciclopèdia lliure</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="ca" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r33711414">.mw-parser-output .template-documentation{clear:both;margin:1em 0 0 0;border:1px solid #aaa;background-color:#ecfcf4;padding:1em}@media screen{html.skin-theme-clientpref-night .mw-parser-output .template-documentation{background-color:#0b1e1c}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .template-documentation{background-color:#0b1e1c}}</style><div id="template-documentation" class="template-documentation iezoomfix"><div style="padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex;"><span style="font-size: 150%"><span typeof="mw:File"><span><img alt="Icona de documentació de mòdul" src="//upload.wikimedia.org/wikipedia/commons/thumb/1/19/Test_Template_Info-Icon.svg/50px-Test_Template_Info-Icon.svg.png" decoding="async" width="50" height="22" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/19/Test_Template_Info-Icon.svg/75px-Test_Template_Info-Icon.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/19/Test_Template_Info-Icon.svg/100px-Test_Template_Info-Icon.svg.png 2x" data-file-width="1792" data-file-height="800" /></span></span> Documentació del mòdul</span><span class="plainlinks" id="doc_editlinks"> [ <a class="external text" href="https://ca.wikipedia.org/w/index.php?title=M%C3%B2dul:Wikidades/%C3%BAs&action=view">mostra</a> ] [ <a class="external text" href="https://ca.wikipedia.org/w/index.php?title=M%C3%B2dul:Wikidades/%C3%BAs&action=edit">modifica el codi</a> ] [ <a class="external text" href="https://ca.wikipedia.org/w/index.php?title=M%C3%B2dul:Wikidades/%C3%BAs&action=history">mostra l'historial</a> ] [ <a class="external text" href="https://ca.wikipedia.org/w/index.php?title=M%C3%B2dul:Wikidades&action=purge">refresca</a> ]</span></div> <p><span class="plainlinks noprint" style="font-style: italic;">Mòdul Wikidades (<a class="mw-selflink selflink">codi</a> <b>·</b> <a href="/wiki/M%C3%B2dul:Wikidades/%C3%BAs" title="Mòdul:Wikidades/ús">ús</a> <b>·</b> <a href="/wiki/M%C3%B2dul_Discussi%C3%B3:Wikidades" title="Mòdul Discussió:Wikidades">discussió</a> <b>·</b> <a href="/wiki/M%C3%B2dul:Wikidades/proves" title="Mòdul:Wikidades/proves">proves</a> <b>·</b> <span class="plainlinks"><a class="external text" href="https://ca.wikipedia.org/w/index.php?title=M%C3%B2dul:Wikidades/tests&action=edit&redlink=1&preload=Plantilla%3A%C3%9As+de+la+plantilla%2Fprec%C3%A0rrega+m%C3%B2dul+tests"><span style="color: #BA0000;" title="Module:Wikidades/tests (encara no existeix)">tests</span></a></span> <b>·</b> <a href="/w/index.php?title=M%C3%B2dul_Discussi%C3%B3:Wikidades/tests&action=edit&redlink=1" class="new" title="Mòdul Discussió:Wikidades/tests (encara no existeix)">casos prova</a> | <a href="/wiki/Especial:Cerca_per_prefix/Module:Wikidades" title="Especial:Cerca per prefix/Module:Wikidades">subpàgines</a> <b>·</b> <a class="external text" href="https://ca.wikipedia.org/w/index.php?title=Especial:WhatLinksHere/:Module:Wikidades&limit=999">enllaços</a>)</span> </p><p><i>A continuació es mostra la <a href="/wiki/Viquip%C3%A8dia:Documentaci%C3%B3_de_plantilles" title="Viquipèdia:Documentació de plantilles">documentació</a> transclosa de la subpàgina <a href="/wiki/M%C3%B2dul:Wikidades/%C3%BAs" title="Mòdul:Wikidades/ús">/ús</a></i>. [<a href="#caixa_lua">salta a la caixa de codi</a>] </p> <hr /> <style data-mw-deduplicate="TemplateStyles:r33760873">.mw-parser-output .ombox{margin:4px 0;border-collapse:collapse;border:1px solid #a2a9b1;background-color:var(--background-color-neutral-subtle,#f8f9fa);box-sizing:border-box}.mw-parser-output .ombox.mbox-small{font-size:88%;line-height:1.25em}.mw-parser-output .ombox-speedy{border:2px solid #b32424;background-color:#fee7e6}.mw-parser-output .ombox-delete{border:2px solid #b32424}.mw-parser-output .ombox-content{border:1px solid #f28500}.mw-parser-output .ombox-style{border:1px solid #fc3}.mw-parser-output .ombox-move{border:1px solid #9932cc}.mw-parser-output .ombox-protection{border:2px solid #a2a9b1}.mw-parser-output .ombox .mbox-text{border:none;padding:0.25em 0.9em;width:100%}.mw-parser-output .ombox .mbox-image{border:none;padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .ombox .mbox-imageright{border:none;padding:2px 0.9em 2px 0;text-align:center}.mw-parser-output .ombox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ombox .mbox-invalid-type{text-align:center}@media(min-width:720px){.mw-parser-output .ombox{margin:4px 10%}.mw-parser-output .ombox.mbox-small{clear:right;float:right;margin:4px 0 4px 1em;width:238px}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .ombox-speedy{background-color:#310402}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .ombox-speedy{background-color:#310402}}</style><table class="plainlinks ombox ombox-content" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Ambox_warning_orange.svg/40px-Ambox_warning_orange.svg.png" decoding="async" width="40" height="34" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Ambox_warning_orange.svg/60px-Ambox_warning_orange.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Ambox_warning_orange.svg/80px-Ambox_warning_orange.svg.png 2x" data-file-width="378" data-file-height="326" /></span></span></td><td class="mbox-text"><b>Aquest mòdul és utilitzat en <span class="plainlinks"><a class="external text" href="http://tools.wmflabs.org/templatecount/index.php?lang=ca&namespace=828&name=Wikidades">més de 500000 pàgines</a>.</span></b><br />Per evitar la interrupció a gran escala i la innecessària càrrega del servidor, qualsevol canvi en aquest mòdul primer hauria de ser provat en la subpàgina <a href="/wiki/M%C3%B2dul:Wikidades/proves" title="Mòdul:Wikidades/proves">/proves</a>, o <a href="/w/index.php?title=M%C3%B2dul:Wikidades/tests&action=edit&redlink=1" class="new" title="Mòdul:Wikidades/tests (encara no existeix)">/tests</a>. Els canvis assajats després es poden afegir a aquesta pàgina en una sola edició. Si us plau: considereu discutir qualsevol canvi en la <a href="/wiki/M%C3%B2dul_Discussi%C3%B3:Wikidades" title="Mòdul Discussió:Wikidades">pàgina de discussió</a> abans d'implementar-los.</td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r33760873"><table class="plainlinks ombox ombox-notice" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/1/1d/Information_icon4.svg/40px-Information_icon4.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/1d/Information_icon4.svg/60px-Information_icon4.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/1d/Information_icon4.svg/80px-Information_icon4.svg.png 2x" data-file-width="620" data-file-height="620" /></span></span></td><td class="mbox-text">There is a version in English of this documentation at <a href="/wiki/M%C3%B2dul:Wikidades/%C3%BAs/en" title="Mòdul:Wikidades/ús/en">Module:Wikidades/ús/en</a>.</td></tr></tbody></table> <figure class="mw-halign-right" typeof="mw:File"><a href="/wiki/Wikidata" title="Wikidata"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/41/Wikidata_Stamp_Rec_Light.svg/100px-Wikidata_Stamp_Rec_Light.svg.png" decoding="async" width="100" height="27" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/41/Wikidata_Stamp_Rec_Light.svg/150px-Wikidata_Stamp_Rec_Light.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/41/Wikidata_Stamp_Rec_Light.svg/200px-Wikidata_Stamp_Rec_Light.svg.png 2x" data-file-width="842" data-file-height="230" /></a><figcaption></figcaption></figure> <p>Aquest mòdul extrau dades formatades de Wikidata. Funciona en la llengua local del wiki, o en una llengua específica per a proves, i té opcions de configuració. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Funcions">Funcions</h2></div> <p>Funció bàsica: </p> <ul><li><code><a href="#Funció_claim">claim</a></code>: Retorna el valor (o els valors) d'una declaració o d'un qualificador formatat amb paràmetres o amb un format per defecte segons el tipus de dada.</li></ul> <p>Altres funcions: </p> <ul><li><code><a href="#Funció_getLabel">getLabel</a></code>: retorna una etiqueta en la llengua especificada, o la llengua per defecte.</li> <li><code><a href="#Funció_getParentValues">getParentValues</a></code>: retorna etiquetes i valors superiors d'una propietat de forma recursiva.</li> <li><code><a href="#Funció_linkWithParentLabel">linkWithParentLabel</a></code>: crea un enllaç amb l'etiqueta d'una propietat superior. Per exemple per enllaçar <a href="https://www.wikidata.org/wiki/Property:P405" class="extiw" title="d:Property:P405">Autor taxonòmic <small>(P405)</small></a> amb l'etiqueta <a href="https://www.wikidata.org/wiki/Property:P835" class="extiw" title="d:Property:P835">Abrev. zoologia <small>(P835)</small></a> definida en el corresponent ítem superior.</li> <li><code><a href="#Funció_yearsOld">yearsOld</a></code>: retorna l'edat d'una persona: diferència entre <a href="https://www.wikidata.org/wiki/Property:P569" class="extiw" title="d:Property:P569">Data de naixement <small>(P569)</small></a> i <a href="https://www.wikidata.org/wiki/Property:P570" class="extiw" title="d:Property:P570">Data de defunció <small>(P570)</small></a>, quan estan les dues propietats; o diferència entre <a href="https://www.wikidata.org/wiki/Property:P569" class="extiw" title="d:Property:P569">Data de naixement <small>(P569)</small></a> i la data d'avui, si no hi ha P570. Retorna una (nn) o dues xifres (nn/mm) segons la precisió de les dates. No retorna res quan alguna de les dues està expressada en segles.</li> <li><code><a href="#Funció_editAtWikidata">editAtWikidata</a></code>: retorna la icona de llapis enllaçada a una declaració de Wikidata. Està previst que sigui gestionat per <a href="https://www.mediawiki.org/wiki/Wikidata_Bridge" class="extiw" title="mw:Wikidata Bridge">mw:Wikidata Bridge</a>.</li></ul> <p>Altres <a href="#Utilitats">utilitats</a>: getSiteLink, lang, numStatements, validProperty, formatNum. </p> <div class="mw-heading mw-heading2"><h2 id="Funció_claim"><span id="Funci.C3.B3_claim"></span>Funció claim</h2></div> <p>Retorna el valor (o els valors) d'una declaració o d'un qualificador formatat amb paràmetres o amb un format per defecte segons el tipus de dada. Per defecte està referit a l'ítem de Wikidata (Qid) associat a la pàgina actual. </p><p>Sintaxi completa: </p> <dl><dd><code>{{#invoke:Wikidades|claim|item= |lang= |property= |qualifier= |value= |list= |tablesort= |formatting= |separator= |conjunction= |editicon= |showerrors= |default= }}</code></dd></dl> <p>Sintaxi addicional pel format de taula: </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="Paràmetres_generals"><span id="Par.C3.A0metres_generals"></span>Paràmetres generals</h3></div> <ul><li><code>item=</code> (opcional) Permet indicar un ítem (Qid) diferent a l'ítem associat a la pàgina actual. Cal fer-lo servir <u>amb moderació</u> pel seu <u>alt consum</u> de recursos. Es pot usar també com a paràmetre de l'entorn superior de la plantilla. Té com a àlies <code>from</code>.</li></ul> <ul><li><code>lang=</code> (opcional) Permet indicar el codi d'una llengua determinada. Es pot usar també com a paràmetre de l'entorn superior de la plantilla. Per defecte usa la llengua local del wiki per a l'espai principal d'articles o la llengua d'usuari definida en les preferències per a altres espais de noms. Si no troba el valor en aquesta llengua ho intenta en les llengües alternatives definides en el MediaWiki. Per exemple per català les llengües alternatives són occità i anglès. En cas que el valor no s'hagi trobat en la llengua demanada, hi afegeix el codi de llengua i una icona d'etiqueta <span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q12069631#P31" title="Modifica"><img alt="Modifica" 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> per a traduir-ho a Wikidata.</li></ul> <ul><li><code>property=</code> (obligatori) Identificador de la propietat de la declaració (Pid). Es poden definir diferents propietats alternatives amb qualsevol separador, per exemple "P17 o P131", i obtindrà la primera que trobi. Accepta també una p minúscula, però no és recomanat. Igualment accepta l'etiqueta de la propietat, per exemple property=estat equival a property=P17 per la propietat <a href="https://www.wikidata.org/wiki/Property:P17" class="extiw" title="d:Property:P17">Estat <small>(P17)</small></a>.</li></ul> <ul><li><code>qualifier=</code> (opcional) Qualificador (Pid) del valor de la propietat.</li></ul> <ul><li><code>value=</code> (opcional) Valor preferent al de Wikidata. Pot ser un paràmetre opcional en una plantilla amb el format {{{paràmetre|}}}, així si existeix pren el valor del paràmetre i si està buit llavors obté el valor de Wikidata. <ul><li><code>value=NONE</code> Amb aquest valor no treu res de Wikidata. Permet configurar un paràmetre per a que no tregui cap valor de Wikidata, o bé treure només valors informats en la plantilla amb <code>{{{paràmetre|NONE}}}</code>. És equivalent a la sintaxi wiki: <code>{{#ifeq:{{{paràmetre|}}}|NONE|<!-- no res -->}}</code>.</li></ul></li></ul> <ul><li><code>references=</code> (opcional) Amb qualsevol valor diferent de "false", "no" o "" (buit) llavors mostrarà les referències del valor obtingut. Amb un valor numèric ho tractarà com el nombre màxim de referències a mostrar per la declaració, per defecte 1. Si troba <a href="https://www.wikidata.org/wiki/Property:P854" class="extiw" title="d:Property:P854">URL de la referència <small>(P854)</small></a> més o bé <a href="https://www.wikidata.org/wiki/Property:P1476" class="extiw" title="d:Property:P1476">Títol <small>(P1476)</small></a> o bé <a href="https://www.wikidata.org/wiki/Property:P248" class="extiw" title="d:Property:P248">Afirmat a <small>(P248)</small></a> llavors ho formata amb la versió local de <a href="https://www.wikidata.org/wiki/Q5637226" class="extiw" title="d:Q5637226">Plantilla:Ref-web <small>(Q5637226)</small></a> i amb els paràmetres traduïts a la taula i18n["cite"] de <a href="/wiki/M%C3%B2dul:Wikidades/i18n" title="Mòdul:Wikidades/i18n">Module:Wikidades/i18n</a>. Si troba <a href="https://www.wikidata.org/wiki/Property:P1433" class="extiw" title="d:Property:P1433">Publicat a <small>(P1433)</small></a>, més títol o afirmat, llavors ho formata amb <a href="https://www.wikidata.org/wiki/Q5624899" class="extiw" title="d:Q5624899">Plantilla:Ref-publicació <small>(Q5624899)</small></a>. En cas contrari ho formata com a text. <dl><dd>En cas d'usar-ho amb formatting=table (vegeu <a href="#Paràmetres_de_taula_de_propietat_i_qualificadors">més avall</a>) cal definir on han d'aparèixer les referències en el paràmetre "rowformat".</dd></dl></li></ul> <ul><li><code>onlysourced=</code> (opcional) Amb qualsevol valor diferent de "false", "no" o "" (buit) llavors només mostrarà els valors que tinguin una referència vàlida. Es consideren referències impròpies: <a href="https://www.wikidata.org/wiki/Property:P143" class="extiw" title="d:Property:P143">Importat de <small>(P143)</small></a>, <a href="https://www.wikidata.org/wiki/Property:P4656" class="extiw" title="d:Property:P4656">URL importada de Wikimedia <small>(P4656)</small></a>, <a href="https://www.wikidata.org/wiki/Property:P3452" class="extiw" title="d:Property:P3452">Deduït de <small>(P3452)</small></a> i <a href="https://www.wikidata.org/wiki/Property:P887" class="extiw" title="d:Property:P887">Basat en l'heurística <small>(P887)</small></a>.</li></ul> <ul><li><code>list=</code> (opcional): <ul><li><code>list=true</code> (per defecte) Mostra una llista de tots els valors preferents i normals (vegeu <i>separator</i> i <i>conjuction</i> més avall). En cap cas obté els valors obsolets.</li> <li><code>list=false</code> o <code>list=no</code> Mostra només un valor, el de rang més alt segons l'ordre preferent/normal, o el més antic dels que tenen el rang més alt.</li> <li><code>list=lang</code> En cas de valors monolingües només mostra els corresponents a la llengua del paràmetre lang. Vegeu el paràmetre lang i el formatting pel tipus de valor monolingüe (monolingualtext).</li> <li><code>list=notlang</code> En cas de valors monolingües no mostra els corresponents a la llengua del paràmetre lang.</li></ul></li> <li><code>listrank=bestrank</code> Mostra només els valors amb el rang més alt, sigui el preferent o el normal. En cas d'usar list=lang llavors s'ignora bestrank. Per compatibilitat amb versions anteriors, són àlies list=bestrank o list=firstrank. És equivalent a list=true si tots tenen el mateix rang. És equivalent a list=false si només hi ha un valor amb el rang més alt.</li> <li><code>listmax=<i><número></i></code> Número màxim de valors a llistar. Per compatibilitat amb versions anteriors, també és vàlid list=<i><número></i>. Amb listmax=1 és equivalent a list=false. Amb listmax=0 és equivalent a list=true.</li> <li><code>tablesort=0</code> (opcional) ordenació ascendent de la llista. Per defecte l'ordenació és pel rang (preferent, normal) i per l'antiguitat de definició a Wikidata.</li></ul> <ul><li><code>separator=</code> (opcional) Separador a usar en llistes o taules. En cas de llistes, per defecte és <a href="/wiki/MediaWiki:Comma-separator" title="MediaWiki:Comma-separator">MediaWiki:Comma-separator</a>, en català una coma i un espai en blanc ', '. En cas de taules per defecte és un salt de línia <br />. En algun cas, si s'inclou en etiquetes que usen <a href="https://www.mediawiki.org/wiki/Strip_marker" class="extiw" title="mw:Strip marker">strip markers</a>, pot ser que un <br /> no funcioni. L'alternativa és usar separator=LF per a un caràcter de control <a href="/wiki/Salt_de_l%C3%ADnia" title="Salt de línia">line feed</a>.</li></ul> <ul><li><code>conjunction=</code> (opcional) Conjunció a usar com a separador entre els dos últims elements de la llista. Per defecte és igual a separator si està definit i si no és <a href="/wiki/MediaWiki:And" title="MediaWiki:And">MediaWiki:And</a> més <a href="/wiki/MediaWiki:Word-separator" title="MediaWiki:Word-separator">MediaWiki:Word-separator</a>, en català ' i '. En el cas de taules per defecte és un salt de línia <br />.</li></ul> <ul><li><code>qseparator=</code> (opcional) Separador pels qualificadors a usar en llistes o taules. En cas de llistes, per defecte és separator. En cas de taules per defecte és <a href="/wiki/MediaWiki:Comma-separator" title="MediaWiki:Comma-separator">MediaWiki:Comma-separator</a>.</li></ul> <ul><li><code>qconjunction=</code> (opcional) Conjunció pels qualificadors. En cas de llistes, per defecte és conjunction. En cas de taules, per defecte és qseparator.</li></ul> <ul><li><code>case=</code> (opcional) Cas gramatical a generar, depenent de la llengua local, o canvis a aplicar en el wiki local definits a <a href="/wiki/M%C3%B2dul:Wikidades/i18n" title="Mòdul:Wikidades/i18n">Module:Wikidades/i18n</a>. Com a casos generals tractats pel mòdul: <ul><li>case=gender, segons la definició de <a href="https://www.wikidata.org/wiki/Property:P21" class="extiw" title="d:Property:P21">Sexe o gènere <small>(P21)</small></a> de l'element (pàgina actual, item o itemgender) treu el valor de <a href="https://www.wikidata.org/wiki/Property:P2521" class="extiw" title="d:Property:P2521">Forma femenina de l'etiqueta <small>(P2521)</small></a>.</li> <li>case=smallcaps, treu l'etiqueta en versaleta.</li></ul> <dl><dd>Per a altres casos locals, vegeu la documentació de <a href="/wiki/M%C3%B2dul:Wikidades/i18n" title="Mòdul:Wikidades/i18n">Module:Wikidades/i18n</a>. Com a cas local pot incloure case=location que requereix d'una configració pel wiki local.</dd></dl></li></ul> <ul><li><code>itemgender=</code> (opcional) Element on es comprova <a href="https://www.wikidata.org/wiki/Property:P21" class="extiw" title="d:Property:P21">Sexe o gènere <small>(P21)</small></a> per aplicar la forma femenina si fos necessari, per defecte <code>item</code>. S'usa en combinació amb case=gender o case=infoboxlabel.</li></ul> <ul><li><code>editicon=</code> (opcional) Defineix si es mostra un petit llapis <span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q12069631#P31" title="Modifica"><img alt="Modifica" 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> com a icona per mostrar i poder editar la declaració a Wikitada (en el futur gestionat per <a href="https://www.mediawiki.org/wiki/Wikidata_Bridge" class="extiw" title="mw:Wikidata Bridge">mw:Wikidata Bridge</a>). El valor del paràmetre s'obté de l'invoke, de l'entorn superior de la plantilla, o per defecte de la definició addpencil a <a href="/wiki/M%C3%B2dul:Wikidades/i18n" title="Mòdul:Wikidades/i18n">Module:Wikidades/i18n</a> com a configuració del wiki. <ul><li>editicon=true: mostra la icona, no caldrà definir-ho si és el valor per defecte del wiki.</li> <li>editicon=false o editicon=no: no mostra la icona.</li> <li>editicon=right: mostra la icona i l'alinea a la dreta.</li></ul></li></ul> <ul><li><code>shownovalue=</code> (opcional) Indica si s'ignora la declaració definida amb "cap valor". Per defecte és shownovalue=true mostrant el missatge <a href="/wiki/MediaWiki:Wikibase-snakview-snaktypeselector-novalue" title="MediaWiki:Wikibase-snakview-snaktypeselector-novalue">MediaWiki:Wikibase-snakview-snaktypeselector-novalue</a>. Amb valors shownovalue=false o shownovalue=no llavors s'ignora la declaració.</li></ul> <ul><li><code>showsomevalue=</code> (opcional) Indica si s'ignora la declaració definida amb "valor desconegut". Per defecte és showsomevalue=true mostrant el missatge <a href="/wiki/MediaWiki:Wikibase-snakview-snaktypeselector-somevalue" title="MediaWiki:Wikibase-snakview-snaktypeselector-somevalue">MediaWiki:Wikibase-snakview-snaktypeselector-somevalue</a>. Amb valors showsomevalue=false o showsomevalue=no llavors s'ignora la declaració.</li></ul> <ul><li><code>showerrors=</code> (opcional) Amb qualsevol valor mostra el missatge d'error, si n'hi ha cap. Si no està definit mostrarà el paràmetre default en cas d'error.</li></ul> <ul><li><code>default=</code> (opcional) Text a mostrar en cas d'error. No té cap efecte si està definit el paràmetre showerrors. Si no està definit, i tampoc el paràmetre showerrors, retornarà un valor buit en cas d'error.</li></ul> <ul><li><code>sandbox=</code> (opcional) Amb qualsevol valor desvia les crides al <a href="/wiki/M%C3%B2dul:Wikidades/proves" title="Mòdul:Wikidades/proves">Module:Wikidades/proves</a>. El títol de la subpàgina l'obté de <a href="/wiki/MediaWiki:Sandboxlink-subpage-name" title="MediaWiki:Sandboxlink-subpage-name">MediaWiki:Sandboxlink-subpage-name</a>, en català "proves". El paràmetre es pot usar en l'entorn de plantilla. Com a paràmetre d'invoke o de require no té sentit per les proves. A usar només provisionalment o en previsualització, el mòdul de proves no hauria de tenir cap enllaç permanent.</li></ul> <div class="mw-heading mw-heading3"><h3 id="Paràmetres_de_formatació"><span id="Par.C3.A0metres_de_formataci.C3.B3"></span>Paràmetres de formatació</h3></div> <p><code>formatting=</code> (opcional) Format desitjat. Valors possibles, per a cada tipus de dada: </p><p>Dada amb valor d'element (<i>entity</i>): </p> <dl><dd>Element o propietat (<i>wikibase-item, wikibase-property</i>): <ul><li><code>formatting=raw</code> Número identificador de l'element.</li> <li><code>formatting=label</code> Etiqueta de l'element en la llengua demanada, alguna de les llengües alternatives o bé com a <i>raw</i>.</li> <li><code>formatting=sitelink</code> Títol de la pàgina de la Viquipèdia de l'element, sense enllaç. Si no existeix retorna el format raw amb el prefix d:.</li> <li><code>formatting=internallink</code> Enllaç intern sempre que sigui possible: 1) a la pàgina local del wiki (sitelink), 2) un enllaç vermell a l'etiqueta si no existeix com a títol en un altre element de Wikidata, 3) a Wikidata com a darrera opció.</li> <li><code>formatting=<i>pattern</i></code> Format segons un patró usant $1 com a paràmetre a substituir. Pot incloure plantilles o funcions parser amb el format: <span style="white-space:nowrap;">{{<a href="/wiki/Plantilla:((" title="Plantilla:((">((</a>}}</span>nom-de-la-plantilla{{!}}$1<span style="white-space:nowrap;">{{<a href="/wiki/Plantilla:))" title="Plantilla:))">))</a>}}</span> o bé <span style="white-space:nowrap;">{{<a href="/wiki/Plantilla:((" title="Plantilla:((">((</a>}}</span>nom-de-la-plantilla{{!}}nom_paràmetre<span style="white-space:nowrap;">{{<a href="/wiki/Plantilla:%3D" title="Plantilla:=">=</a>}}</span>$1<span style="white-space:nowrap;">{{<a href="/wiki/Plantilla:))" title="Plantilla:))">))</a>}}</span>, o similar.</li></ul> <dl><dd>El format per defecte és un enllaç conduït, bé a <i>sitelink</i> o bé a wikitada:<i>raw</i>, usant <i>label</i> com a etiqueta de l'enllaç. Un enllaç a Wikidata té la class extiw que es pot definir amb templatestyles per mostrar-lo amb un color diferent d'un <span style="color:#0645AD;">enllaç blau</span>, per exemple un <span style="color:#3C7790;">blau més clar</span> amb el corresponent <a href="/wiki/Especial:Diff/33549392" title="Especial:Diff/33549392">valor pel mode fosc</a>. <ul><li><code>formatting=ucfirst</code> Variant del format per defecte amb majúscula inicial en l'etiqueta. En una llista només posa majúscula en el primer valor.</li> <li><code>formatting=ucinternallink</code> Combinació del format "ucfirst" i "internallink".</li></ul></dd></dl></dd> <dd>Lexema (<i>wikibase-lexeme</i>): <dl><dd>Mostra el primer lema del lexema amb indicació del codi de llengua si és diferent de la llengua del wiki. Per exemple, vegeu <a href="https://www.wikidata.org/wiki/Property:P6553" class="extiw" title="d:Property:P6553">Pronom preferent <small>(P6553)</small></a>. Accepta <code>formatting=raw</code> i <code>list=lang</code>. Vegeu els paràmetres corresponts més amunt.</dd></dl></dd></dl> <p>Dada amb valor de text (<i>string</i>): </p> <dl><dd>General: <ul><li><code>formatting=<i>pattern</i></code> Format segons un patró usant $1 com a paràmetre a substituir. Exemple: <code>formatting=[http://whc.unesco.org/en/list/$1 $1]</code>. Per a propietats d'identificador que tenen un enllaç autogenerat per Wikidata, el patró es troba a la pàgina de discussió de la propietat. Pot incloure plantilles i funcions parser (vegeu més amunt per <i>entity</i>).</li></ul></dd> <dd>Tipus URL: <ul><li><code>formatting=weblink</code> Format d'enllaç extern, posant com a etiqueta el lloc web sense prefixos i amb punts suspensius si enllaça a una pàgina web: [http://www.example.com example.com], [http://example.com/en/page example.com…].</li></ul></dd> <dd>Tipus identificador extern (<i>external-id</i>): <ul><li><code>formatting=externalid</code> Format d'enllaç extern amb el patró de l'URL definit a <a href="https://www.wikidata.org/wiki/Property:P1630" class="extiw" title="d:Property:P1630">Format d'URL <small>(P1630)</small></a> en l'entitat Pid de <code>property</code>.</li></ul></dd> <dd>Tipus fórmula matemàtica (<i>math</i>): <dl><dd>El contingut s'engloba amb l'etiqueta <math> que genera una imatge de la fórmula. Vegeu <a href="https://www.mediawiki.org/wiki/Extension:Math" class="extiw" title="mw:Extension:Math">mw:Extension:Math</a> i exemples a <a href="https://www.wikidata.org/wiki/Property:P2534" class="extiw" title="d:Property:P2534">Fórmula <small>(P2534)</small></a>.</dd></dl></dd> <dd>Tipus notació musical (<i>musical-notation</i>): <dl><dd>El contingut s'engloba amb l'etiqueta <score> que genera una imatge de la partitura. Vegeu <a href="https://www.mediawiki.org/wiki/Extension:Score" class="extiw" title="mw:Extension:Score">mw:Extension:Score</a> i exemples a <a href="https://www.wikidata.org/wiki/Property:P6686" class="extiw" title="d:Property:P6686">Motiu musical <small>(P6686)</small></a>. Opcions de format:</dd></dl> <ul><li><code>formatting=sound</code> Afegeix l'atribut sound="1" a l'etiqueta generant un fitxer d'àudio que s'incrusta sota la imatge.</li></ul></dd></dl> <p>Dada amb valor numèric (<i>quantity</i>): </p> <dl><dd>Per defecte mostra només el número.</dd></dl> <ul><li><code>formatting=unit</code> Format numèric incloent la unitat. Si és diferent d'1 ho posa en plural segons <a href="/wiki/M%C3%B2dul:Wikidades/Units" title="Mòdul:Wikidades/Units">Module:Wikidades/Units</a>. <ul><li><code>formatting=unitlinked</code> Variant amb la unitat enllaçada.</li></ul></li> <li><code>formatting=unitcode</code> Format numèric incloent el codi o l'abreviatura de la unitat definit a <a href="https://www.wikidata.org/wiki/Property:P5061" class="extiw" title="d:Property:P5061">Símbol de la unitat <small>(P5061)</small></a>. Es pot canviar a <a href="/wiki/M%C3%B2dul:Wikidades/Units" title="Mòdul:Wikidades/Units">Module:Wikidades/Units</a>. Si no el troba usa el nom de la unitat. <ul><li><code>formatting=unitcodelinked</code> Variant amb el codi enllaçat.</li></ul></li> <li><code>formatting=duration</code> Formata una durada de temps separant les unitats: mil·lennis, segles, dècades, anys, dies, hores, minuts, segons. Per exemple per 123456 segons mostra: 1 dia, 10 hores, 17 minuts i 36 segons. Prèviament intenta fer una conversió d'unitats a segons (usant convert=Q11574), en cas contrari pressuposa que la quantitat està expressada en segons. <ul><li><code>formatting=durationhms</code> Formata una durada de temps de forma abreujada en hores, minuts i segons. Per exemple per 12345 segons mostra: 3h 25m 45s. El format local de les abreviacions es pot definir a <a href="/wiki/M%C3%B2dul:Wikidades/i18n" title="Mòdul:Wikidades/i18n">Module:Wikidades/i18n</a> en la taula "hms".</li> <li><code>formatting=durationh:m:s</code> Format simplificat de durada en hores, minuts i segons (com 3:25:45), o en minuts i segons (com 01:23 o 45:00).</li> <li><code>formatting=durationm:s</code> Format de durada en minuts i segons, encara que superi els 60 minuts (habitualment, p.ex., en música).</li></ul></li> <li><code>formatting=raw</code> Valor sense formatació, és a dir amb punt decimal i sense separadors de milers, apropiat per fer càlculs numèrics. Vegeu també la <a href="#Utilitats">funció formatNum</a> per aplicar el format al resultat final segons la llengua.</li> <li><code>formatting=<i>pattern</i></code> Format segons un patró usant $1 com a paràmetre a substituir.</li> <li><code>numformat=<i>%width.precision'flag'</i></code> Formatació segons les <a href="https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#string.format" class="extiw" title="mw:Extension:Scribunto/Lua reference manual">especificacions string.format</a> per a números, on width és l'amplada total de xifres, el punt és el separador decimal, precision és el nombre de xifres decimals, i flag pot ser: f float, e exponencial (notació científica), i enter, o octal, h hexadecimal, E i H amb majúscules, entre d'altres. Per exemple: per la quantitat 15.656, "%.1f" ho formata 15.7, "%05i" ho formata 00015, "%.2e" ho formata 1.57e+01.</li> <li><code>convert=<i>Qid</i></code> Fa una conversió a la unitat indicada pel seu indicador d'element <i>Qid</i>. Les conversions es fan segons els factors indicats en la unitat obtinguda per la unitat Qid en les propietats <a href="https://www.wikidata.org/wiki/Property:P2370" class="extiw" title="d:Property:P2370">Conversió a unitats del SI <small>(P2370)</small></a> o <a href="https://www.wikidata.org/wiki/Property:P2442" class="extiw" title="d:Property:P2442">Conversió a unitats estàndard <small>(P2442)</small></a>, excepte per a temperatures on s'usen fórmules de conversió entre ºC, ºF i ºK. Per exemple, un valor de "74 polzades" amb convert=Q174728 (<a href="https://www.wikidata.org/wiki/Q174728" class="extiw" title="d:Q174728">Centímetre <small>(Q174728)</small></a>) dóna "188 centímetres" segons la conversió "2,54 centímetre" indicada a <a href="https://www.wikidata.org/wiki/Q218593" class="extiw" title="d:Q218593">Polzada <small>(Q218593)</small></a>. L'arrodoniment de la conversió es fa mantenint la precisió per defecte del valor original segons el nombre de xifres significatives. Es pot combinar amb formatting=unitcode. Es pot usar també amb formatting=table, vegeu més avall.</li> <li><code>convert=default</code> Fa una conversió de les unitats indicades en la taula convert_default de <a href="/wiki/M%C3%B2dul:Wikidades/Units" title="Mòdul:Wikidades/Units">Module:Wikidades/Units</a>.</li> <li><code>convert=default2</code> Variant que mostra els dos valors: amb la quantitat convertida i entre parèntesis la quantitat original.</li> <li><code>convert=M</code> Fa una conversió a milions, arrodonint sense decimals, si la quantitat és major que 100 milions. Afegeix M davant de la unitat o el codi, per exemple Meuro, M$.</li></ul> <p>Dada amb valor monolingüe (<i>monolingualtext</i>): </p> <ul><li><code>formatting=language</code> Retorna el codi de llengua corresponent al valor monolingüe, per exemple en el cas de <a href="https://www.wikidata.org/wiki/Property:P1448" class="extiw" title="d:Property:P1448">Nom oficial <small>(P1448)</small></a>. Per mostrar el nom sencer de la llengua, es pot utilitzar <code>{{#invoke:llengua|nom|codi}}</code>; per exemple, <code>{{#invoke:llengua|nom|es}}</code> retorna castellà.</li> <li><code>formatting=text</code> Recupera el text amb la marca de llengua, si és diferent a la llengua local del wiki: <code><span lang="en">United...</span></code>.</li> <li><code>formatting=<i>pattern</i></code> Format segons un patró usant $language i $text com a variables a substituir. Per exemple, "formatting=($language) $text" per treure el text amb el codi de llengua al davant entre parèntesis.</li> <li><code>list=lang</code> Sols treu els valors corresponents a la llengua definida o la llengua per defecte. Vegeu el paràmetre lang més amunt.</li> <li><code>list=notlang</code> Filtra els valors corresponents a la llengua definida o la llengua per defecte. Per exemple, pot ser útil per <a href="https://www.wikidata.org/wiki/Property:P1559" class="extiw" title="d:Property:P1559">Nom original <small>(P1559)</small></a> evitant redundància en la llengua local del wiki.</li></ul> <p>Dada amb valor de coordenades (<i>globecoordinate</i>): </p> <ul><li><code>formatting=latitude</code> Valor de latitud en una declaració de coordenades, en format decimal</li> <li><code>formatting=longitude</code> Valor de longitud en una declaració de coordenades, en format decimal</li> <li><code>formatting=globe</code> (per defecte) Valor del paràmetre globe amb el format usat en la plantilla <span style="white-space:nowrap;">{{<a href="/wiki/Plantilla:Coord" title="Plantilla:Coord">coord</a>}}</span>, necessari per coordenades fora de la Terra.</li> <li><code>formatting=$lat...$lon...$globe</code> Format lliure amb paràmetres $lat i $lon, i opcionalment $globe, a substituir pels valors de latitud i longitud, en format decimal, més globe. Admet la inclusió de plantilles en format no expandit, p. ex. <span style="white-space:nowrap;">{{<a href="/wiki/Plantilla:((" title="Plantilla:((">((</a>}}</span>coord{{!}}$lat{{!}}$lon<span style="white-space:nowrap;">{{<a href="/wiki/Plantilla:))" title="Plantilla:))">))</a>}}</span>.</li> <li><code>formatting=dimension</code> Valor de dimensió en una declaració de coordenades, en metres, equivalent al <a href="/wiki/Viquiprojecte:Coordenades_geogr%C3%A0fiques#dim:D" title="Viquiprojecte:Coordenades geogràfiques">paràmetre dim de GeoHack</a>.</li></ul> <p>Dada amb valor de data (<i>time</i>): </p> <dl><dd>Per defecte usa el format definit a <a href="/wiki/M%C3%B2dul:Wikidades/i18n" title="Mòdul:Wikidades/i18n">Module:Wikidades/i18n</a> en la taula datetime segons la precisió de la data. Opcionalment, per precisió de dies:</dd></dl> <ul><li><code>formatting= <i>sintaxi #time</i></code> Accepta qualsevol format vàlid de la <a href="https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions#.23time" class="extiw" title="mw:Help:Extension:ParserFunctions">funció d'analitzador #time</a>. Per exemple: formatting=d-m-Y (24-11-2024), formatting=[[j xg]] (<a href="/wiki/24_de_novembre" title="24 de novembre">24 de novembre</a>), formatting=Y (2024). Per defecte, està definit a <a href="/wiki/M%C3%B2dul:Wikidades/i18n" title="Mòdul:Wikidades/i18n">Module:Wikidades/i18n</a> com "j F Y" (24 novembre 2024), però amb una funció que permet modificar el dia 1r de cada mes.</li></ul> <dl><dd>Hi afegeix el calendari quan pot ser ambigu: si la data és anterior al 15-10-1582 i està definida en gregorià o si és posterior al 4-10-1582 i està definida en julià. Vegeu <a href="/wiki/Calendari_gregori%C3%A0" title="Calendari gregorià">calendari gregorià</a> per a més informació.</dd></dl> <div class="mw-heading mw-heading3"><h3 id="Paràmetres_de_taula_de_propietat_i_qualificadors"><span id="Par.C3.A0metres_de_taula_de_propietat_i_qualificadors"></span>Paràmetres de taula de propietat i qualificadors</h3></div> <table class="wikitable" style="float:right;"> <tbody><tr> <th></th> <th>propietat</th> <th>qualificador1</th> <th>qualificador2 etc. </th></tr> <tr> <th>valors 1a declaració </th> <td>$0</td> <td>$1</td> <td>$2, etc. </td></tr> <tr> <th>2a, etc. </th> <td>$0</td> <td>$1</td> <td>$2, etc. </td></tr></tbody></table> <p><code>formatting=table</code> Una declaració amb qualificadors es considera com una taula de valors mostrada a la dreta. Es pot indicar el format de les files i de cada columna de la taula. Els separadors per a cada fila són per defecte salts de línia (vegeu <i>separator</i> i <i>conjunction</i> més amunt). Si realment voleu el resultat en una taula wiki podeu usar separator=</tr><tr> amb les corresponents etiquetes d'apertura i tancament abans i desprès de l'invoke. Paràmetres específics per a aquest format: </p><p>Columnes: </p> <ul><li><code>qualifier1 ... qualifier<i>x</i>=</code> Qualificadors amb un número consecutiu i il·limitat. El paràmetre general <code>qualifier</code> és un àlies per qualifier1. <ul><li><code>qualifier<i>x</i> = P<i>id1</i> OR P<i>id2</i></code> Definició alternativa d'un qualificador quan el primer no existeix. Un cas d'ús típic és <a href="https://www.wikidata.org/wiki/Property:P585" class="extiw" title="d:Property:P585">Data <small>(P585)</small></a> OR <a href="https://www.wikidata.org/wiki/Property:P580" class="extiw" title="d:Property:P580">Data d'inici <small>(P580)</small></a>. No hi ha límit per successius OR. Els espais en blanc d'abans i després són opcionals.</li> <li><code>qualifier<i>x</i> = P<i>id1</i>/P<i>id2</i></code> De l'element corresponent a P<i>id1</i> (un qualificador o una propietat) obté la propietat superior P<i>id2</i>. Permet obtenir dades addicionals en la taula encara que definides en l'element superior. Per exemple, per obtenir les línies de metro amb la seva icona: qualifier=P81/P154. Es pot combinar amb l'opció OR prenent prioritat l'OR.</li> <li><code>qualifier<i>x</i> = /P<i>id</i></code> Equivalent a l'anterior però sense P<i>id1</i>, obté una segona propietat del mateix element. Permet obtenir dades definides bé en un qualificador o bé en una propietat.</li></ul></li> <li><code>colformat0 ... colformat<i>x</i>=</code> Format opcional a aplicar a les columnes, usant 0 per la propietat i 1-x pels qualificadors. Accepta la mateixa sintaxi que <code>formatting</code> per a cada tipus de dada. Vegeu més amunt <a href="#Paràmetres_de_formatació">#Paràmetres de formatació</a>.</li> <li><code>case0 ... case<i>x</i>=</code> Cas gramatical a aplicar a cada columna. El paràmetre <code>case</code>, sense numeració, s'aplica a tots els valors. Vegeu més amunt <a href="#Paràmetres_generals">#Paràmetres generals</a>.</li> <li><code>convert0 ... convert<i>x</i>=</code> Conversió d'unitats a aplicar a cada columna. Vegeu més amunt <a href="#Paràmetres_de_formatació">#Paràmetres de formatació</a> per format numèric.</li> <li><code>whitelist0 ... whitelist<i>x</i>=</code> Llista de valors raw, normalment Qid, per a una columna que mostraran la declaració. Pot usar qualsevol separador.</li> <li><code>blacklist0 ... blacklist<i>x</i>=</code> Llista valors raw, normalment Qid, per a una columna que no es mostraran la declaració, usant qualsevol separador. <dl><dd>Usant múltiples whitelist, o múltiples blacklist, actua com una funció OR. En cas d'usar whitelist per a una columna i blacklist per a una altra els resultats poden ser inesperats (vegeu un <a class="external text" href="https://ca.wikipedia.org/w/index.php?title=Tema:Ujnttzn0w9k1x0vq&topic_showPostId=ujsb7o283btc0pix#flow-post-ujsb7o283btc0pix">comentari al respecte</a>)</dd></dl></li> <li><code>selectvalue1 ... selectvalue<i>x</i>=</code> Llista de valors raw, normalment Qid, per a una columna que mostraran el seu valor.</li> <li><code>ignorevalue1 ... ignorevalue<i>x</i>=</code> Llista de valors raw, normalment Qid, per a una columna que no es mostraran el seu valor.</li></ul> <p>Files: </p> <ul><li><code>rowformat=</code> Format de les files de propietat més qualificadors. La propietat s'indica amb $0 i els qualificadors $1 a $x. Per defecte és <code>rowformat=$0 ($1, ... $x)</code>. Pot incloure marques de llistes * o # i també plantilles o funcions parser amb el format: <span style="white-space:nowrap;">{{<a href="/wiki/Plantilla:((" title="Plantilla:((">((</a>}}</span>plantilla{{!}}paràmetre{{!}}nom<span style="white-space:nowrap;">{{<a href="/wiki/Plantilla:%3D" title="Plantilla:=">=</a>}}</span>paràmetre<span style="white-space:nowrap;">{{<a href="/wiki/Plantilla:))" title="Plantilla:))">))</a>}}</span>. En cas d'usar el paràmetre "references" (vegeu <a href="#Paràmetres_generals">més amunt</a>) cal indicar on han d'aparèixer les referències amb $R0.</li> <li><code>rowsubformat1 ... rowsubformat<i>x</i>=</code> Format previ a aplicar a $1-$x definits en rowformat, només si existeix el valor. Per exemple, "rowformat=$0 $1" i "rowsubformat1=($1)" resulta "$0 ($1)" o bé "$0" si $1 està buit, evitant uns parèntesis buits. Un rowsubformat pot contenir diferents variables $1-$x. Cal tenir en compte que les substitucions en fan de forma seqüencial per ordre numèric, per tant pot incloure un $x posterior però no un d'anterior ja que haurà estat tractat.</li> <li><code>tablesort=</code> amb valors de 0 a x, permet ordenar la taula per la propietat (0) o els qualificadors (1 a x). L'ordenació és ascendent alfabèticament, numèricament o per dates, segons el tipus de dada. Accepta múltiples claus usant qualsevol separador, p. ex. <code>tablesort=0/2/1</code>. Per defecte l'ordenació és pel rang de la propietat (preferent, normal) i per l'antiguitat de definició a Wikidata.</li> <li><code>sorting=-1</code> inverteix l'ordenació fent-la descendent. Amb qualsevol altre valor, o en el seu defecte, l'ordenació és ascendent. En cas de <code>tablesort</code> amb múltiples claus, el criteri de <code>sorting</code> s'aplicarà a totes per igual.</li> <li><code>list=false</code> Treu només la primera fila de la taula, segons l'ordre indicat o l'ordre per defecte.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Funció_getLabel"><span id="Funci.C3.B3_getLabel"></span>Funció getLabel</h2></div> <p>Retorna l'etiqueta d'un element. </p> <ul><li><code>1=</code> (primer paràmetre posicional, opcional) Identificador de l'ítem de Wikidata (Qid o Pid), per defecte l'ítem associat a la pàgina actual. Àlies: <code>item</code>, <code>from</code>.</li> <li><code>lang=</code> (opcional) Codi de llengua, com en la funció claim. Vegeu més amunt <a href="#Paràmetres_generals">#Paràmetres generals</a>.</li> <li><code>itemgender=</code> (opcional) Identificador de l'ítem que determina el gènere a usar, com en la funció claim. Vegeu més amunt <a href="#Paràmetres_generals">#Paràmetres generals</a>.</li> <li><code>linked=</code> (opcional) Amb qualsevol valor, excepte 'no', retorna l'etiqueta enllaçada a l'article local o bé a Wikidata.</li> <li><code>label=</code> (opcional) Treu l'etiqueta indicada. Només té sentit amb linked= per generar un enllaç amb l'etiqueta de label=.</li> <li><code>editicon=</code> (opcional) permet eliminar la icona del llapis, com en la funció claim. Vegeu més amunt <a href="#Paràmetres_generals">#Paràmetres generals</a>.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Funció_getParentValues"><span id="Funci.C3.B3_getParentValues"></span>Funció getParentValues</h2></div> <p>Retorna de forma recursiva els valors d'una propietat usant com a etiqueta un valor superior. Per exemple pot extreure l'estructura administrativa o la classificació de tàxons. </p> <ul><li><code>item=</code> (opcional) Permet indicar un item (Qid) diferent de l'article actiu. Aquest accés arbitrari a Wikidata està limitat pel seu alt consum de recursos.</li> <li><code>property=</code> (opcional) Propietat de la declaració (Pid). Per defecte és <a href="https://www.wikidata.org/wiki/Property:P131" class="extiw" title="d:Property:P131">Localitzat a l'entitat territorial administrativa <small>(P131)</small></a>. Admet una llista de valors alternatius usant qualsevol separador.</li> <li><code>label=</code> (opcional) Propietat superior a usar com a etiqueta. Per defecte és <a href="https://www.wikidata.org/wiki/Property:P31" class="extiw" title="d:Property:P31">Instància de <small>(P31)</small></a>.</li> <li><code>uptolabelid=</code> (opcional) Darrera iteració a extraure, usant el Qid de l'etiqueta, si abans no ha trobat cap propietat no existent. Admet valors múltiples usant qualsevol separador.</li> <li><code>uptovalueid=</code> (opcional) Alternatiu a <code>uptolabelid</code> usant el Qid del valor en lloc de l'etiqueta. Admet valors múltiples usant qualsevol separador. Àlies uptolinkid mantingut provisionalment per compatibilitat.</li> <li><code>upto=</code> (opcional) Valor numèric amb el nombre màxim d'iteracions. Si es fa servir <code>uptolabelid</code> o <code>uptovalueid</code>, el valor per defecte és 50, en cas contrari és 10.</li> <li><code>showlabelid=</code> (opcional) Filtre d'etiquetes a mostrar usant Qid i qualsevol separador. Mostra el primer valor trobat per a cada etiqueta, sense repeticions posteriors de la mateixa etiqueta.</li> <li><code>labelshow=</code> (obsolet) Alternatiu a <code>showlabelid</code> usant valors d'etiquetes separades per una barra /. Per exemple "labelshow=municipi/comarca".</li> <li><code>include_self=true</code> (opcional) Inclou l'etiqueta de la pròpia pàgina en la llista generada.</li> <li><code>sorting=-1</code> (opcional) Ordenació descendent de la llista.</li> <li><code>last_only=true</code> (opcional) Només mostra el darrer valor obtingut. Per exemple amb uptolinkid=Qid només mostrarà el valor corresponent a Qid.</li> <li><code>formatting=</code> (opcional) Format del valor de la propietat. Per defecte és un enllaç conduït local o a Wikidata (vegeu més amunt <a href="#Paràmetres_de_formatació">formatting</a> de la funció claim per valors <i>entity</i>).</li> <li><code>valuetext=</code> (opcional) Propietat a usar com a text de l'enllaç amb el valor 'property' com a enllaç conduït.</li> <li><code>labelformat=</code> (opcional) Format de l'etiqueta. Per defecte és "label" (vegeu més amunt <a href="#Paràmetres_de_formatació">formatting</a> de la funció claim per valors <i>entity</i>).</li> <li><code>rowformat=</code> (opcional) Format de sortida per a cada parell de valors obtingut, indicant $0 per l'etiqueta i $1 pel valor. Per defecte és "rowformat=$0 = $1" mostrant per exemple "comarca = [[Maresme]]"</li> <li><code>separator=</code> (opcional) Separador per a cada parell de valors obtingut, per defecte és <br />.</li> <li><code>cascade=true</code> (opcional) opció de presentació amb sagnat. Pot ser útil quan només s'utilitza $1 a rowformat.</li></ul> <p>Nota: les etiquetes es modifiquen amb un format adequat a les necessitats d'una infotaula segons les definicions a <a href="/wiki/M%C3%B2dul:Wikidades/labels" title="Mòdul:Wikidades/labels">Module:Wikidades/labels</a>. Per exemple, "municipi del Brasil" es presenta com a "Municipi". </p> <div class="mw-heading mw-heading2"><h2 id="Funció_linkWithParentLabel"><span id="Funci.C3.B3_linkWithParentLabel"></span>Funció linkWithParentLabel</h2></div> <p>Crea un enllaç amb l'etiqueta d'una propietat superior. </p><p>Accepta la majoria de paràmetres de la funció <a href="#Funció_claim">claim</a>, excepte "formatting" que usa el valor per defecte "internallink". Addicionalment: </p> <ul><li><code>parent=</code> és la propietat a usar en l'etiqueta corresponent a l'ítem superior del valor obtingut per "property/qualifier". Accepta valors alternatius amb qualsevol separador, igual que el paràmetre "property" de la funció claim.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Funció_yearsOld"><span id="Funci.C3.B3_yearsOld"></span>Funció yearsOld</h2></div> <p>Retorna l'edat avaluant la data de naixement i la data de defunció o en el seu defecte la data actual. Si les dues dates no tenen precisió de dia mostra el rang amb un marge d'1 o de 10 anys. </p><p>La seva sintaxi és: <code>{{#invoke:Wikidades|yearsOld|formatting= |item= }}</code>. Els paràmetres <code>item</code> i <code>formatting</code> són opcionals. Per defecte retorna la quantitat. </p> <ul><li><code>formatting=unit</code> (opcional) Obté la unitat de la taula i18n["years-old"] de <a href="/wiki/M%C3%B2dul:Wikidades/i18n" title="Mòdul:Wikidades/i18n">Module:Wikidades/i18n</a> pel singular o el plural, a més de paucal usat en llengües eslaves com el rus. Vegeu la funció parser PLURAL a <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> (opcional) Format amb un patró usant $1 com a variable per la quantitat. Un exemple típic és " ($1 anys)". En aquest cas no avalua l'expressió en singular, plural o paucal i obté la unitat de <a href="https://www.wikidata.org/wiki/Q24564698" class="extiw" title="d:Q24564698">Anys <small>(Q24564698)</small></a>. Una alternativa és usar un patró uniforme definit en la taula i18n["years-old"] que admet el paràmetre $1.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Funció_editAtWikidata"><span id="Funci.C3.B3_editAtWikidata"></span>Funció editAtWikidata</h2></div> <p>Retorna la icona del llapis per editar una declaració a Wikidata. </p><p>Sintaxi: <code>{{#invoke:Wikidades|editAtWikidata|<valor>|item= |property= |lang= |editicon= }}</code> </p> <ul><li><code>1</code> (opcional). Si existeix el primer valor, sense nom, no mostrarà cap icona. Per exemple si un paràmetre està informat en local llavors no s'ha obtingut de Wikidata i no cal la icona.</li> <li><code>property=<i>Pid</i></code> (requerit). Identificador de la propietat on enllaçar amb àncora. No fa cap comprovació del Pid, es poden usar altres àncores, per exemple property=identifiers per enllaçar a la secció d'identificadors.</li> <li><code>item=<i>Qid</i></code> (opcional). Identificador de l'element. No serà necessari si és el mateix que la pàgina associada.</li> <li><code>lang=<i>codi</i></code> (opcional). Codi de llengua. En obrir l'enllaç a Wikidata es mostrarà la pàgina en aquesta llengua. Per defecte usa la llengua local del wiki per a l'espai principal d'articles o la llengua d'usuari definida en les preferències per a altres espais de noms.</li> <li><code>editicon=<right/true></code> (opcional). Amb valor right alinea a la dreta. El valor true només té sentit si pel wiki està definit ["addpencil"] = false a <a href="/wiki/M%C3%B2dul:Wikidades/i18n" title="Mòdul:Wikidades/i18n">Module:Wikidades/i18n</a>.</li></ul> <p>Vegeu <a href="#Paràmetres_generals">#Paràmetres generals</a> per a més informació d'aquests paràmetres. </p> <div class="mw-heading mw-heading2"><h2 id="Utilitats">Utilitats</h2></div> <ul><li><code>getSiteLink</code> Retorna el títol de pàgina local per un element donat. Sintaxi: <dl><dd><code>{{#invoke:Wikidades|getSiteLink|<Qid>|<wiki>}}</code></dd> <dd>Sense cap paràmetre retorna la pròpia pàgina. Proporcionant l'id retornarà la pàgina local enllaçada en l'element corresponent. En cas de no existir o ser erroni no retorna res. Amb un segon paràmetre amb un codi de wiki obté la pàgina en el wiki especificat (enwiki, frwiki,... cawiktionary, etc.)</dd></dl></li></ul> <ul><li><code>lang</code> Retorna el codi de llengua tal com el gestiona la funció claim. Vegeu <a href="#Paràmetres_generals">#Paràmetres generals</a> més amunt. Sintaxi: <dl><dd><code>{{#invoke:Wikidades|lang|{{{lang|}}}}}</code></dd> <dd>El paràmetre <code>lang</code> és el codi de la llengua aportat explícitament.</dd></dl></li></ul> <ul><li><code>numStatements</code> Retorna el nombre de declaracions que té una propietat multi-valor, comptant les de rang més alt. Permet decidir el tractament a donar a llistes llargues. Amb un segon paràmetre compta el nombre de declaracions d'un qualificador. Sintaxi: <dl><dd><code>{{#invoke:Wikidades|numStatements|<Pid>|item={{{item|}}} }}</code></dd> <dd><code>{{#invoke:Wikidades|numStatements|<Pid>|<Qual_id>|item={{{item|}}} }}</code></dd> <dd>Exemple: {{#invoke:Wikidades|numStatements|P47|item=Q1861}} → 6</dd> <dd>Per a consultes més complexes, per exemple amb list=true pels valors preferents i normals o bé amb filtres com whitelist, es por usar la mateixa sintaxi que la <a href="#Funció_claim">funció claim</a>, sense paràmetres posicionals.</dd></dl></li></ul> <ul><li><code>validProperty</code> Retorna "null" si la propietat no existeix, o només té valors amb marcador "sense valor" o "valor desconegut" o obsolet. Sintaxi: <dl><dd><code>{{#invoke:Wikidades|validProperty|<Pid>|item={{{item|}}} }}</code></dd> <dd>Es pot usar com a alternativa a #property. Per compatibilitat amb aquesta funció parser, el paràmetre <code>from</code> és un àlies de <code>item</code>.</dd></dl></li></ul> <ul><li><code>formatNum</code> Formata un valor numèric segons les definicions d'una llengua. És equivalent a la paraula màgina <a href="https://www.mediawiki.org/wiki/Help:Magic_words/ca#Formatació" class="extiw" title="mw:Help:Magic words/ca">formatnum</a> amb l'opció d'indicar una llengua diferent a la del wiki. Sintaxi: <dl><dd><code>{{#invoke:Wikidades|formatNum|<núm>|<lang>}}</code></dd> <dd>El primer paràmetre requerit és el número a formatar. El segon paràmetre opcional és el codi de llengua (vegeu el paràmetre lang de la <a href="#Paràmetres_generals">funció claim</a>).</dd></dl></li></ul> <ul><li><code><s>getTAValue</s></code> Antiga funció pels valors <a href="https://www.wikidata.org/wiki/Property:P1323" class="extiw" title="d:Property:P1323">Identificador Terminologia Anatomica 98 <small>(P1323)</small></a>. Substituïda per la consulta {{#invoke:Wikidades | claim | property=P1323 | formatting=externalid | separator=<br />}}.</li></ul> <ul><li>Per a funcions de depuració vegeu <a href="/wiki/M%C3%B2dul:Wikidades/debug" title="Mòdul:Wikidades/debug">Module:Wikidades/debug</a>.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Redireccions_de_Wikidata">Redireccions de Wikidata</h2></div> <p>Un element de Wikidata pot ser una redirecció a un altre element, sovint com a resultat d'una fusió. Els valors d'una propietat poden ser provisionalment una redirecció, normalment corregit per bot al cap d'una setmana. </p><p>Les consultes a Wikidata resolen les redireccions: els valors obtinguts corresponen a l'element on redirigeix. Si s'usa un Qid en brut que no sigui per treure'n valors sinó per fer comparacions directes, per exemple en un filtre, llavors no es comprova si aquest Qid és una redirecció i pot donar resultat inesperats. Això pot afectar a la funció claim amb els paràmetres whitelist, blacklist, selectvalue o ignorevalue, i a la funció getParentValues amb els paràmetres uptolabelid, uptovalueid, showlabelid. </p><p>Es pot comprovar si els Qid inclosos en una plantilla, o altra pàgina, són vàlids o no. Useu la funció: <code>{{#invoke:Wikidades/debug|validateIds|<page>}}</code> amb el nom de la pàgina a comprovar. Per a cada Qid inclós en la pàgina indica: <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> (no trobat) o <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> (redirecció). Aquesta funció consumeix molts recursos i per a una llista llarga pot provocar un error per excedir la memòria Lua. </p> <div class="mw-heading mw-heading2"><h2 id="Crides_des_d'un_altre_mòdul"><span id="Crides_des_d.27un_altre_m.C3.B2dul"></span>Crides des d'un altre mòdul</h2></div> <p>Totes les funcions (claim, getLabel, getParentValues, linkWithParentLabel, yearsOld, lang) es poden cridar des d'altres mòduls via <code>require</code> amb els mateixos paràmetres proporcionats en una taula, per exemple: </p> <dl><dd>require("Module:Wikidades").claim{item="Q...", property="P...", ...}</dd> <dd>require("Module:Wikidades").getLabel({"Q...", ['lang']="ca"})</dd></dl> <p>La funció claim pot retornar un segon valor segons el paràmetre query per a tractament específic en mòduls d'infotaules. Amb query=untranslated retorna nil o true si el valor no s'ha trobat en la llengua demanada. Amb query=num retirna el número de declaracions igual que la <a href="#Utilitats">funció numStatements</a>. </p><p>El paràmetres que accepten valors "true" o "false" poden usar un valor de tipus booleà. </p> <div class="mw-heading mw-heading2"><h2 id="Exemples">Exemples</h2></div> <p>Els exemples a continuació són mostres provades en les pàgines corresponents. Es poden fer proves a <a href="/wiki/Viquip%C3%A8dia:Proves_de_Wikidata" title="Viquipèdia:Proves de Wikidata">Viquipèdia:Proves de Wikidata</a>, comprovacions en previsualització d'una pàgina o usar el paràmetre <code>item</code> per un element de Wikidata diferent de la pàgina actual. </p> <ul><li>Ús simple:</li></ul> <dl><dd>{{#invoke:Wikidades | claim |property=P20}} a l'article <a href="/wiki/Jean-Fran%C3%A7ois_Champollion" title="Jean-François Champollion">Jean-François Champollion</a> dóna: <a href="/wiki/Par%C3%ADs" title="París">París</a> <span class="penicon"><span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q260?uselang=ca#P20" title="Modifica el valor a Wikidata"><img alt="Modifica el valor a 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></span></dd> <dd>és la propietat <a href="https://www.wikidata.org/wiki/Property:P20" class="extiw" title="d:Property:P20">Lloc de defunció <small>(P20)</small></a>, per defecte amb el valor enllaçat.</dd></dl> <ul><li>Sense enllaç:</li></ul> <dl><dd>{{#invoke:Wikidades | claim | property=P20 | formatting=label}} dóna: París <span class="penicon"><span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q260?uselang=ca#P20" title="Modifica el valor a Wikidata"><img alt="Modifica el valor a 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></span></dd></dl> <ul><li>Valor preferent:</li></ul> <dl><dd>{{#invoke:Wikidades | claim | property=P20 | value={{{lloc_mort|}}} }} en la infotaula de l'article donarà</dd> <dd>el valor de {{{lloc_mort|}}} si està definit en l'article, en cas contrari <a href="/wiki/Par%C3%ADs" title="París">París</a></dd></dl> <ul><li>Valor tipus data:</li></ul> <dl><dd>{{#invoke:Wikidades | claim | property=P569}} dóna la data de naixement amb el format per defecte:</dd> <dd>23 desembre 1790 i 22 desembre 1790 <span class="penicon"><span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q260?uselang=ca#P569" title="Modifica el valor a Wikidata"><img alt="Modifica el valor a 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></span></dd></dl> <ul><li>Formatat amb un patró:</li></ul> <dl><dd>{{#invoke:Wikidades | claim | property=P214 | formatting=[http://viaf.org/viaf/$1 $1]}} dóna:</dd> <dd><a rel="nofollow" class="external text" href="http://viaf.org/viaf/34454460">34454460</a> <span class="penicon"><span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q260?uselang=ca#P214" title="Modifica el valor a Wikidata"><img alt="Modifica el valor a 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></span></dd></dl> <ul><li>Un únic valor:</li></ul> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/Fitxer:Leon_Cogniet_-_Jean-Francois_Champollion.jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Leon_Cogniet_-_Jean-Francois_Champollion.jpg/110px-Leon_Cogniet_-_Jean-Francois_Champollion.jpg" decoding="async" width="110" height="133" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Leon_Cogniet_-_Jean-Francois_Champollion.jpg/165px-Leon_Cogniet_-_Jean-Francois_Champollion.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Leon_Cogniet_-_Jean-Francois_Champollion.jpg/220px-Leon_Cogniet_-_Jean-Francois_Champollion.jpg 2x" data-file-width="1128" data-file-height="1367" /></a><figcaption>Imatge de mostra</figcaption></figure> <dl><dd>{{#invoke:Wikidades | claim | property=P18 | list=false | formatting=[[File:$1|thumb|upright=.5|Imatge de mostra]]}}</dd> <dd>Treu només la primera de les imatges definides.</dd></dl> <ul><li>Format d'enllaç extern:</li></ul> <dl><dd>{{#invoke:Wikidades | claim | property=P856 | formatting=weblink}} a <a href="/wiki/Berl%C3%ADn" title="Berlín">Berlín</a> dóna:</dd> <dd><a rel="nofollow" class="external text" href="https://www.berlin.de/">berlin.de</a> <span class="penicon"><span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q64?uselang=ca#P856" title="Modifica el valor a Wikidata"><img alt="Modifica el valor a 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></span></dd></dl> <ul><li>Format d'una plantilla:</li></ul> <dl><dd>{{#invoke:Wikidades | claim | item=Q425440 | property=P267 | formatting={{((}}color{{!}}green{{!}}$1{{))}} }}, que utilitza <span style="white-space:nowrap;">{{<a href="/wiki/Plantilla:Color" title="Plantilla:Color">color</a>}}</span>, dóna:</dd> <dd><span style="color:green">M01AE17</span> i <span style="color:green">M02AA27</span> <span class="penicon"><span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q425440?uselang=ca#P267" title="Modifica el valor a Wikidata"><img alt="Modifica el valor a 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></span></dd></dl> <ul><li>Llista de valors:</li></ul> <dl><dd>{{#invoke:Wikidades | claim | property=P47}} a <a href="/wiki/Alcoi%C3%A0" title="Alcoià">Alcoià</a> dóna:</dd> <dd><a href="/wiki/Alacant%C3%AD" title="Alacantí">l'Alacantí</a>, <a href="/wiki/Alt_Vinalop%C3%B3" title="Alt Vinalopó">l'Alt Vinalopó</a>, <a href="/wiki/Comtat_(Pa%C3%ADs_Valenci%C3%A0)" title="Comtat (País Valencià)">el Comtat</a>, <a href="/wiki/Marina_Baixa" title="Marina Baixa">la Marina Baixa</a>, <a href="/wiki/Vall_d%27Albaida" title="Vall d'Albaida">la Vall d'Albaida</a> i <a href="/wiki/Vinalop%C3%B3_Mitj%C3%A0" title="Vinalopó Mitjà">el Vinalopó Mitjà</a> <span class="penicon"><span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q746061?uselang=ca#P47" title="Modifica el valor a Wikidata"><img alt="Modifica el valor a 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></span></dd> <dd>Cal notar l'enllaç conduït [[Comtat (País Valencià)|Comtat]]</dd></dl> <ul><li>Llista formatada:</li></ul> <dl><dd>{{#invoke:Wikidades | claim | property=P150 | separator=<br /> | conjunction=<br />}} dóna</dd> <dd><a href="/wiki/Alcoi" title="Alcoi">Alcoi</a><br /><a href="/wiki/Banyeres_de_Mariola" title="Banyeres de Mariola">Banyeres de Mariola</a><br /><a href="/wiki/Benifallim" title="Benifallim">Benifallim</a><br /><a href="/wiki/Castalla" title="Castalla">Castalla</a><br /><a href="/wiki/Ibi" title="Ibi">Ibi</a><br /><a href="/wiki/Onil" title="Onil">Onil</a><br /><a href="/wiki/Pen%C3%A0guila" title="Penàguila">Penàguila</a><br /><a href="/wiki/Tibi" title="Tibi">Tibi</a> <span class="penicon"><span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q746061?uselang=ca#P150" title="Modifica el valor a Wikidata"><img alt="Modifica el valor a 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></span></dd></dl> <ul><li>Coordenades:</li></ul> <dl><dd>{{#invoke:Wikidades | claim | property=P625 | formatting=latitude}} dóna: 38.7019 <span class="penicon"><span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q746061?uselang=ca#P625" title="Modifica el valor a Wikidata"><img alt="Modifica el valor a 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></span></dd> <dd>{{#invoke:Wikidades | claim | property=P625 | formatting=longitude}} dóna: -0.4772 <span class="penicon"><span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q746061?uselang=ca#P625" title="Modifica el valor a Wikidata"><img alt="Modifica el valor a 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></span></dd></dl> <div class="mw-heading mw-heading2"><h2 id="Dependències"><span id="Depend.C3.A8ncies"></span>Dependències</h2></div> <ul><li>Subpàgines relatives al mòdul principal. El títol del mòdul està definit a la variable <code>module_title = </code>. En una nova instal·lació amb un títol diferent cal modificar aquesta variable. <ul><li><a href="/wiki/M%C3%B2dul:Wikidades/i18n" title="Mòdul:Wikidades/i18n">../i18n</a> (opcional): traduccions de missatges i formats locals. Si s'usa <code>lang</code> diferent al local cerca la subpàgina corresponent, per exemple <a href="/wiki/M%C3%B2dul:Wikidades/i18n/eu" title="Mòdul:Wikidades/i18n/eu">../i18n/eu</a>. Si no existeix, surt en anglès per defecte.</li> <li><a href="/wiki/M%C3%B2dul:Wikidades/Units" title="Mòdul:Wikidades/Units">../Units</a> (opcional): tractament d'unitats, en plural o amb codi. Si no existeix, treu el nom complet de la unitat en singular.</li> <li><a href="/wiki/M%C3%B2dul:Wikidades/labels" title="Mòdul:Wikidades/labels">../labels</a> (opcional): excepcions i correccions d'etiquetes per a una infotaula.</li> <li><a href="/wiki/M%C3%B2dul:Wikidades/debug" title="Mòdul:Wikidades/debug">../debug</a>: pot aparèixer ocasionalment per la funció track de manteniment.</li></ul></li> <li>Missatges Mediawiki utilitzats depenent de la llengua: <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>, <a href="/wiki/MediaWiki:Mwe-upwiz-add-flickr-or" title="MediaWiki:Mwe-upwiz-add-flickr-or">MediaWiki:Mwe-upwiz-add-flickr-or</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>Si és necessari es poden crear, o modificar, a <a href="https://meta.wikimedia.org/wiki/translatewiki.net" class="extiw" title="m:translatewiki.net">Translatewiki</a>. Per accedir-hi directament activeu l'enllaç corresponent amb el títol del missatge i el codi de llengua <code>[[translatewiki:MediaWiki:<i><missatge></i>/<i><lang></i>]]</code>.</dd></dl></li></ul> <div class="mw-heading mw-heading2"><h2 id="Vegeu_també"><span id="Vegeu_tamb.C3.A9"></span>Vegeu també</h2></div> <ul><li><a href="https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua" class="extiw" title="mw:Extension:Wikibase Client/Lua">Llibreria mw.wikibase</a>. Són les funcions bàsiques que es poden trobar a <a href="https://www.wikidata.org/wiki/Special:GoToLinkedPage/cawiki/Q8565357" class="extiw" title="d:Special:GoToLinkedPage/cawiki/Q8565357">Mòdul:Wikibase</a>.</li> <li><a href="https://www.wikidata.org/wiki/Wikidata:How_to_use_data_on_Wikimedia_projects" class="extiw" title="d:Wikidata:How to use data on Wikimedia projects">How to use data on Wikimedia projects</a>: accés bàsic amb funcions parser.</li></ul> <div style="clear: both;"></div> </div><p><span id="caixa_lua"></span></p><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 20241001 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:</span> </span><span id="L-3"><a href="#L-3"><span class="linenos" data-line="3"></span></a><span class="c1">---- enabled function convert2M on module /Units for localization with convert=M</span> </span><span id="L-4"><a href="#L-4"><span class="linenos" data-line="4"></span></a><span class="c1">---- return timestamp with formatting=raw</span> </span><span id="L-5"><a href="#L-5"><span class="linenos" data-line="5"></span></a><span class="c1">---- function getLabel with a list of Qid in itemgender</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">p</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-8"><a href="#L-8"><span class="linenos" data-line="8"></span></a> </span><span id="L-9"><a href="#L-9"><span class="linenos" data-line="9"></span></a><span class="c1">-- Initialization of variables --------------------</span> </span><span id="L-10"><a href="#L-10"><span class="linenos" data-line="10"></span></a> </span><span id="L-11"><a href="#L-11"><span class="linenos" data-line="11"></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-12"><a href="#L-12"><span class="linenos" data-line="12"></span></a> <span class="p">[</span><span class="s2">"errors"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-13"><a href="#L-13"><span class="linenos" data-line="13"></span></a> <span class="p">[</span><span class="s2">"property-not-found"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Property not found."</span><span class="p">,</span> </span><span id="L-14"><a href="#L-14"><span class="linenos" data-line="14"></span></a> <span class="p">[</span><span class="s2">"qualifier-not-found"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Qualifier not found."</span><span class="p">,</span> </span><span id="L-15"><a href="#L-15"><span class="linenos" data-line="15"></span></a> <span class="p">},</span> </span><span id="L-16"><a href="#L-16"><span class="linenos" data-line="16"></span></a> </span><span id="L-17"><a href="#L-17"><span class="linenos" data-line="17"></span></a> <span class="p">[</span><span class="s2">"datetime"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-18"><a href="#L-18"><span class="linenos" data-line="18"></span></a> <span class="c1">-- $1 is a placeholder for the actual number</span> </span><span id="L-19"><a href="#L-19"><span class="linenos" data-line="19"></span></a> <span class="p">[</span><span class="s2">"beforenow"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 BCE"</span><span class="p">,</span> <span class="c1">-- how to format negative numbers for precisions 0 to 5</span> </span><span id="L-20"><a href="#L-20"><span class="linenos" data-line="20"></span></a> <span class="p">[</span><span class="s2">"afternow"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 CE"</span><span class="p">,</span> <span class="c1">-- how to format positive numbers for precisions 0 to 5</span> </span><span id="L-21"><a href="#L-21"><span class="linenos" data-line="21"></span></a> <span class="p">[</span><span class="s2">"bc"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 BCE"</span><span class="p">,</span> <span class="c1">-- how print negative 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="s2">"ad"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1"</span><span class="p">,</span> <span class="c1">-- how print 1st century AD dates</span> </span><span id="L-23"><a href="#L-23"><span class="linenos" data-line="23"></span></a> </span><span id="L-24"><a href="#L-24"><span class="linenos" data-line="24"></span></a> <span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 billion years"</span><span class="p">,</span> <span class="c1">-- precision: billion years</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">1</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$100 million years"</span><span class="p">,</span> <span class="c1">-- precision: hundred million years</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">2</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$10 million years"</span><span class="p">,</span> <span class="c1">-- precision: ten million years</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">3</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 million years"</span><span class="p">,</span> <span class="c1">-- precision: million years</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">4</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$100000 years"</span><span class="p">,</span> <span class="c1">-- precision: hundred thousand years; thousand separators added afterwards</span> </span><span id="L-29"><a href="#L-29"><span class="linenos" data-line="29"></span></a> <span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$10000 years"</span><span class="p">,</span> <span class="c1">-- precision: ten thousand years; thousand separators added afterwards</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">6</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 millennium"</span><span class="p">,</span> <span class="c1">-- precision: millennium</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">7</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 century"</span><span class="p">,</span> <span class="c1">-- precision: century</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">8</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1s"</span><span class="p">,</span> <span class="c1">-- precision: decade</span> </span><span id="L-33"><a href="#L-33"><span class="linenos" data-line="33"></span></a> <span class="c1">-- the following use the format of #time parser function</span> </span><span id="L-34"><a href="#L-34"><span class="linenos" data-line="34"></span></a> <span class="p">[</span><span class="mi">9</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Y"</span><span class="p">,</span> <span class="c1">-- precision: year, </span> </span><span id="L-35"><a href="#L-35"><span class="linenos" data-line="35"></span></a> <span class="p">[</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"F Y"</span><span class="p">,</span> <span class="c1">-- precision: month</span> </span><span id="L-36"><a href="#L-36"><span class="linenos" data-line="36"></span></a> <span class="p">[</span><span class="mi">11</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"F j, Y"</span><span class="p">,</span> <span class="c1">-- precision: day</span> </span><span id="L-37"><a href="#L-37"><span class="linenos" data-line="37"></span></a> </span><span id="L-38"><a href="#L-38"><span class="linenos" data-line="38"></span></a> <span class="p">[</span><span class="s2">"hms"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{[</span><span class="s2">"hours"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"h"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"minutes"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"m"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"seconds"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"s"</span><span class="p">},</span> <span class="c1">-- duration: xh xm xs</span> </span><span id="L-39"><a href="#L-39"><span class="linenos" data-line="39"></span></a> <span class="p">},</span> </span><span id="L-40"><a href="#L-40"><span class="linenos" data-line="40"></span></a> </span><span id="L-41"><a href="#L-41"><span class="linenos" data-line="41"></span></a> <span class="p">[</span><span class="s2">"years-old"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">""</span><span class="p">,</span> <span class="s2">""</span><span class="p">},</span> <span class="c1">-- year(s) old, as in {{PLURAL:$1|singular|plural}}</span> </span><span id="L-42"><a href="#L-42"><span class="linenos" data-line="42"></span></a> <span class="c1">-- two values for most languages, up to six values for some languages</span> </span><span id="L-43"><a href="#L-43"><span class="linenos" data-line="43"></span></a> <span class="c1">-- see documentation of PLURAL magic word in your language, examples:</span> </span><span id="L-44"><a href="#L-44"><span class="linenos" data-line="44"></span></a> <span class="c1">-- ["years-old"] = {"singular", "paucal", "plural"} in Russian and other Slavic languages</span> </span><span id="L-45"><a href="#L-45"><span class="linenos" data-line="45"></span></a> <span class="c1">-- ["years-old"] = {"zero", "one", "two", "few 3-10", "many 11-99", "other 100-102"} in Arabic</span> </span><span id="L-46"><a href="#L-46"><span class="linenos" data-line="46"></span></a> </span><span id="L-47"><a href="#L-47"><span class="linenos" data-line="47"></span></a> <span class="p">[</span><span class="s2">"cite"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">-- cite parameters</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">"title"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"title"</span><span class="p">,</span> </span><span id="L-49"><a href="#L-49"><span class="linenos" data-line="49"></span></a> <span class="p">[</span><span class="s2">"author"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"author"</span><span class="p">,</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">"date"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"date"</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">"pages"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"pages"</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">"language"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"language"</span><span class="p">,</span> </span><span id="L-53"><a href="#L-53"><span class="linenos" data-line="53"></span></a> <span class="c1">-- cite web parameters</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">"url"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"url"</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">"website"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"website"</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">"access-date"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"access-date"</span><span class="p">,</span> </span><span id="L-57"><a href="#L-57"><span class="linenos" data-line="57"></span></a> <span class="p">[</span><span class="s2">"archive-url"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"archive-url"</span><span class="p">,</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">"archive-date"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"archive-date"</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">"publisher"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"publisher"</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">"quote"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"quote"</span><span class="p">,</span> </span><span id="L-61"><a href="#L-61"><span class="linenos" data-line="61"></span></a> <span class="c1">-- cite journal parameters</span> </span><span id="L-62"><a href="#L-62"><span class="linenos" data-line="62"></span></a> <span class="p">[</span><span class="s2">"work"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"work"</span><span class="p">,</span> </span><span id="L-63"><a href="#L-63"><span class="linenos" data-line="63"></span></a> <span class="p">[</span><span class="s2">"issue"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"issue"</span><span class="p">,</span> </span><span id="L-64"><a href="#L-64"><span class="linenos" data-line="64"></span></a> <span class="p">[</span><span class="s2">"issn"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"issn"</span><span class="p">,</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">"doi"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"doi"</span> </span><span id="L-66"><a href="#L-66"><span class="linenos" data-line="66"></span></a> <span class="p">},</span> </span><span id="L-67"><a href="#L-67"><span class="linenos" data-line="67"></span></a> </span><span id="L-68"><a href="#L-68"><span class="linenos" data-line="68"></span></a> <span class="c1">-- default local wiki settings</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">"addpencil"</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-70"><a href="#L-70"><span class="linenos" data-line="70"></span></a> <span class="p">[</span><span class="s2">"categorylabels"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">""</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-71"><a href="#L-71"><span class="linenos" data-line="71"></span></a> <span class="p">[</span><span class="s2">"categoryprop"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> <span class="c1">-- Category:Pages using Wikidata property $1 (void for no local category)</span> </span><span id="L-72"><a href="#L-72"><span class="linenos" data-line="72"></span></a> <span class="p">[</span><span class="s2">"categoryref"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> <span class="c1">-- Category:Pages with references from Wikidata (void for no local category)</span> </span><span id="L-73"><a href="#L-73"><span class="linenos" data-line="73"></span></a> <span class="p">[</span><span class="s2">"addfallback"</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-74"><a href="#L-74"><span class="linenos" data-line="74"></span></a> <span class="p">[</span><span class="s2">"suppressids"</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-75"><a href="#L-75"><span class="linenos" data-line="75"></span></a> <span class="p">[</span><span class="s2">"qidlabels"</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-76"><a href="#L-76"><span class="linenos" data-line="76"></span></a><span class="p">}</span> </span><span id="L-77"><a href="#L-77"><span class="linenos" data-line="77"></span></a> </span><span id="L-78"><a href="#L-78"><span class="linenos" data-line="78"></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-79"><a href="#L-79"><span class="linenos" data-line="79"></span></a> </span><span id="L-80"><a href="#L-80"><span class="linenos" data-line="80"></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-81"><a href="#L-81"><span class="linenos" data-line="81"></span></a><span class="kd">local</span> <span class="n">wiki</span> <span class="o">=</span> </span><span id="L-82"><a href="#L-82"><span class="linenos" data-line="82"></span></a><span class="p">{</span> </span><span id="L-83"><a href="#L-83"><span class="linenos" data-line="83"></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-84"><a href="#L-84"><span class="linenos" data-line="84"></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-85"><a href="#L-85"><span class="linenos" data-line="85"></span></a><span class="p">}</span> </span><span id="L-86"><a href="#L-86"><span class="linenos" data-line="86"></span></a> </span><span id="L-87"><a href="#L-87"><span class="linenos" data-line="87"></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-88"><a href="#L-88"><span class="linenos" data-line="88"></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-89"><a href="#L-89"><span class="linenos" data-line="89"></span></a> </span><span id="L-90"><a href="#L-90"><span class="linenos" data-line="90"></span></a><span class="c1">-- Module local functions --------------------------------------------</span> </span><span id="L-91"><a href="#L-91"><span class="linenos" data-line="91"></span></a> </span><span id="L-92"><a href="#L-92"><span class="linenos" data-line="92"></span></a><span class="c1">-- Credit to http://stackoverflow.com/a/1283608/2644759, cc-by-sa 3.0</span> </span><span id="L-93"><a href="#L-93"><span class="linenos" data-line="93"></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-94"><a href="#L-94"><span class="linenos" data-line="94"></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-95"><a href="#L-95"><span class="linenos" data-line="95"></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">"table"</span> <span class="kr">then</span> </span><span id="L-96"><a href="#L-96"><span class="linenos" data-line="96"></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">"table"</span> <span class="kr">then</span> </span><span id="L-97"><a href="#L-97"><span class="linenos" data-line="97"></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-98"><a href="#L-98"><span class="linenos" data-line="98"></span></a> <span class="kr">else</span> </span><span id="L-99"><a href="#L-99"><span class="linenos" data-line="99"></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-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">else</span> </span><span id="L-102"><a href="#L-102"><span class="linenos" data-line="102"></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-103"><a href="#L-103"><span class="linenos" data-line="103"></span></a> <span class="kr">end</span> </span><span id="L-104"><a href="#L-104"><span class="linenos" data-line="104"></span></a> <span class="kr">end</span> </span><span id="L-105"><a href="#L-105"><span class="linenos" data-line="105"></span></a> <span class="kr">return</span> <span class="n">t1</span> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a><span class="kr">end</span> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></span></a> </span><span id="L-108"><a href="#L-108"><span class="linenos" data-line="108"></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-109"><a href="#L-109"><span class="linenos" data-line="109"></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">"/i18n"</span><span class="p">)</span> </span><span id="L-110"><a href="#L-110"><span class="linenos" data-line="110"></span></a> <span class="kr">if</span> <span class="n">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-111"><a href="#L-111"><span class="linenos" data-line="111"></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-112"><a href="#L-112"><span class="linenos" data-line="112"></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-113"><a href="#L-113"><span class="linenos" data-line="113"></span></a> <span class="kr">end</span> </span><span id="L-114"><a href="#L-114"><span class="linenos" data-line="114"></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-115"><a href="#L-115"><span class="linenos" data-line="115"></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">"/i18n/"</span> <span class="o">..</span> <span class="n">lang</span><span class="p">)</span> </span><span id="L-116"><a href="#L-116"><span class="linenos" data-line="116"></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-117"><a href="#L-117"><span class="linenos" data-line="117"></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-118"><a href="#L-118"><span class="linenos" data-line="118"></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-119"><a href="#L-119"><span class="linenos" data-line="119"></span></a> <span class="kr">end</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="n">i18n</span><span class="p">.</span><span class="n">suppress</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-122"><a href="#L-122"><span class="linenos" data-line="122"></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-123"><a href="#L-123"><span class="linenos" data-line="123"></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-124"><a href="#L-124"><span class="linenos" data-line="124"></span></a> <span class="kr">end</span> </span><span id="L-125"><a href="#L-125"><span class="linenos" data-line="125"></span></a><span class="kr">end</span> </span><span id="L-126"><a href="#L-126"><span class="linenos" data-line="126"></span></a> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a><span class="c1">-- Table of language codes: requested or default and its fallbacks</span> </span><span id="L-128"><a href="#L-128"><span class="linenos" data-line="128"></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-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">''</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="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-131"><a href="#L-131"><span class="linenos" data-line="131"></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-132"><a href="#L-132"><span class="linenos" data-line="132"></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-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">''</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="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-135"><a href="#L-135"><span class="linenos" data-line="135"></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">'int'</span><span class="p">,</span> <span class="p">{</span><span class="s1">'lang'</span><span class="p">})</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">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">''</span><span class="p">)</span> <span class="o">==</span> <span class="kc">false</span> <span class="kr">then</span> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></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-139"><a href="#L-139"><span class="linenos" data-line="139"></span></a> <span class="kr">end</span> </span><span id="L-140"><a href="#L-140"><span class="linenos" data-line="140"></span></a> <span class="kr">end</span> </span><span id="L-141"><a href="#L-141"><span class="linenos" data-line="141"></span></a> <span class="kr">end</span> </span><span id="L-142"><a href="#L-142"><span class="linenos" data-line="142"></span></a> </span><span id="L-143"><a href="#L-143"><span class="linenos" data-line="143"></span></a> <span class="n">loadI18n</span><span class="p">(</span><span class="n">langcode</span><span class="p">)</span> </span><span id="L-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></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-146"><a href="#L-146"><span class="linenos" data-line="146"></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-147"><a href="#L-147"><span class="linenos" data-line="147"></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-148"><a href="#L-148"><span class="linenos" data-line="148"></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-149"><a href="#L-149"><span class="linenos" data-line="149"></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-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 class="kr">end</span> </span><span id="L-152"><a href="#L-152"><span class="linenos" data-line="152"></span></a> </span><span id="L-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a> <span class="kr">return</span> <span class="n">languages</span> </span><span id="L-154"><a href="#L-154"><span class="linenos" data-line="154"></span></a><span class="kr">end</span> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a><span class="c1">-- Argument is 'set' when it exists (not nil) or when it is not an empty string.</span> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></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-158"><a href="#L-158"><span class="linenos" data-line="158"></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">'string'</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">''</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">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="c1">-- Set local case to a label</span> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></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-163"><a href="#L-163"><span class="linenos" data-line="163"></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-164"><a href="#L-164"><span class="linenos" data-line="164"></span></a> </span><span id="L-165"><a href="#L-165"><span class="linenos" data-line="165"></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">"function"</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">localcase</span><span class="p">(</span><span class="n">label</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">elseif</span> <span class="n">localcase</span> <span class="o">==</span> <span class="s2">"smallcaps"</span> <span class="kr">then</span> </span><span id="L-168"><a href="#L-168"><span class="linenos" data-line="168"></span></a> <span class="kr">return</span> <span class="s1">'<span style="font-variant: small-caps;">'</span> <span class="o">..</span> <span class="n">label</span> <span class="o">..</span> <span class="s1">'</span>'</span> </span><span id="L-169"><a href="#L-169"><span class="linenos" data-line="169"></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-170"><a href="#L-170"><span class="linenos" data-line="170"></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-171"><a href="#L-171"><span class="linenos" data-line="171"></span></a> <span class="kr">end</span> </span><span id="L-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a> </span><span id="L-173"><a href="#L-173"><span class="linenos" data-line="173"></span></a> <span class="kr">return</span> <span class="n">label</span> </span><span id="L-174"><a href="#L-174"><span class="linenos" data-line="174"></span></a><span class="kr">end</span> </span><span id="L-175"><a href="#L-175"><span class="linenos" data-line="175"></span></a> </span><span id="L-176"><a href="#L-176"><span class="linenos" data-line="176"></span></a><span class="c1">-- get safely a serialized snak</span> </span><span id="L-177"><a href="#L-177"><span class="linenos" data-line="177"></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-178"><a href="#L-178"><span class="linenos" data-line="178"></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-179"><a href="#L-179"><span class="linenos" data-line="179"></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-180"><a href="#L-180"><span class="linenos" data-line="180"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">ret</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-181"><a href="#L-181"><span class="linenos" data-line="181"></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-182"><a href="#L-182"><span class="linenos" data-line="182"></span></a> <span class="kr">end</span> </span><span id="L-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a> <span class="kr">return</span> <span class="n">ret</span> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a><span class="kr">end</span> </span><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a> </span><span id="L-186"><a href="#L-186"><span class="linenos" data-line="186"></span></a><span class="c1">-- mw.wikibase.getLabelWithLang or getLabelByLang with a table of languages</span> </span><span id="L-187"><a href="#L-187"><span class="linenos" data-line="187"></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-188"><a href="#L-188"><span class="linenos" data-line="188"></span></a> <span class="kd">local</span> <span class="n">label</span> </span><span id="L-189"><a href="#L-189"><span class="linenos" data-line="189"></span></a> <span class="kd">local</span> <span class="n">lang</span> </span><span id="L-190"><a href="#L-190"><span class="linenos" data-line="190"></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-191"><a href="#L-191"><span class="linenos" data-line="191"></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-192"><a href="#L-192"><span class="linenos" data-line="192"></span></a> <span class="c1">-- using getLabelWithLang when possible instead of getLabelByLang</span> </span><span id="L-193"><a href="#L-193"><span class="linenos" data-line="193"></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-194"><a href="#L-194"><span class="linenos" data-line="194"></span></a> <span class="kr">else</span> </span><span id="L-195"><a href="#L-195"><span class="linenos" data-line="195"></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-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">if</span> <span class="n">label</span> <span class="kr">then</span> </span><span id="L-198"><a href="#L-198"><span class="linenos" data-line="198"></span></a> <span class="n">lang</span> <span class="o">=</span> <span class="n">l</span> </span><span id="L-199"><a href="#L-199"><span class="linenos" data-line="199"></span></a> <span class="kr">break</span> </span><span id="L-200"><a href="#L-200"><span class="linenos" data-line="200"></span></a> <span class="kr">end</span> </span><span id="L-201"><a href="#L-201"><span class="linenos" data-line="201"></span></a> <span class="kr">end</span> </span><span id="L-202"><a href="#L-202"><span class="linenos" data-line="202"></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-203"><a href="#L-203"><span class="linenos" data-line="203"></span></a><span class="kr">end</span> </span><span id="L-204"><a href="#L-204"><span class="linenos" data-line="204"></span></a> </span><span id="L-205"><a href="#L-205"><span class="linenos" data-line="205"></span></a><span class="c1">-- getBestStatements if bestrank=true, else getAllStatements with no deprecated</span> </span><span id="L-206"><a href="#L-206"><span class="linenos" data-line="206"></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-207"><a href="#L-207"><span class="linenos" data-line="207"></span></a> <span class="kd">local</span> <span class="n">claims</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-208"><a href="#L-208"><span class="linenos" data-line="208"></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">"^P%d+$"</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-209"><a href="#L-209"><span class="linenos" data-line="209"></span></a> <span class="kr">if</span> <span class="n">bestrank</span> <span class="kr">then</span> </span><span id="L-210"><a href="#L-210"><span class="linenos" data-line="210"></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-211"><a href="#L-211"><span class="linenos" data-line="211"></span></a> <span class="kr">else</span> </span><span id="L-212"><a href="#L-212"><span class="linenos" data-line="212"></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-213"><a href="#L-213"><span class="linenos" data-line="213"></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-214"><a href="#L-214"><span class="linenos" data-line="214"></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">"deprecated"</span> <span class="kr">then</span> </span><span id="L-215"><a href="#L-215"><span class="linenos" data-line="215"></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-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 class="kr">end</span> </span><span id="L-218"><a href="#L-218"><span class="linenos" data-line="218"></span></a> <span class="kr">end</span> </span><span id="L-219"><a href="#L-219"><span class="linenos" data-line="219"></span></a> <span class="kr">return</span> <span class="n">claims</span> </span><span id="L-220"><a href="#L-220"><span class="linenos" data-line="220"></span></a><span class="kr">end</span> </span><span id="L-221"><a href="#L-221"><span class="linenos" data-line="221"></span></a> </span><span id="L-222"><a href="#L-222"><span class="linenos" data-line="222"></span></a><span class="c1">-- Is gender femenine? true or false</span> </span><span id="L-223"><a href="#L-223"><span class="linenos" data-line="223"></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-224"><a href="#L-224"><span class="linenos" data-line="224"></span></a> <span class="kr">for</span> <span class="n">idn</span> <span class="kr">in</span> <span class="nb">string.gmatch</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="s2">"Q%d+"</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-225"><a href="#L-225"><span class="linenos" data-line="225"></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">idn</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">'P21'</span><span class="p">)</span> </span><span id="L-226"><a href="#L-226"><span class="linenos" data-line="226"></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">"mainsnak"</span><span class="p">,</span> <span class="s2">"datavalue"</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">,</span> <span class="s2">"id"</span><span class="p">})</span> </span><span id="L-227"><a href="#L-227"><span class="linenos" data-line="227"></span></a> <span class="kr">if</span> <span class="n">gender_id</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="ow">not</span> <span class="p">(</span><span class="n">gender_id</span> <span class="o">==</span> <span class="s2">"Q6581072"</span> <span class="ow">or</span> <span class="n">gender_id</span> <span class="o">==</span> <span class="s2">"Q1052281"</span> <span class="ow">or</span> <span class="n">gender_id</span> <span class="o">==</span> <span class="s2">"Q43445"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-228"><a href="#L-228"><span class="linenos" data-line="228"></span></a> <span class="c1">-- not female, transgender female or female organism</span> </span><span id="L-229"><a href="#L-229"><span class="linenos" data-line="229"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-230"><a href="#L-230"><span class="linenos" data-line="230"></span></a> <span class="kr">end</span> </span><span id="L-231"><a href="#L-231"><span class="linenos" data-line="231"></span></a> <span class="kr">end</span> </span><span id="L-232"><a href="#L-232"><span class="linenos" data-line="232"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-233"><a href="#L-233"><span class="linenos" data-line="233"></span></a><span class="kr">end</span> </span><span id="L-234"><a href="#L-234"><span class="linenos" data-line="234"></span></a> </span><span id="L-235"><a href="#L-235"><span class="linenos" data-line="235"></span></a><span class="c1">-- Fetch female form of label</span> </span><span id="L-236"><a href="#L-236"><span class="linenos" data-line="236"></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-237"><a href="#L-237"><span class="linenos" data-line="237"></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">'P2521'</span><span class="p">)</span> </span><span id="L-238"><a href="#L-238"><span class="linenos" data-line="238"></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-239"><a href="#L-239"><span class="linenos" data-line="239"></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">'mainsnak'</span><span class="p">,</span> <span class="s1">'datavalue'</span><span class="p">,</span> <span class="s1">'value'</span><span class="p">,</span> <span class="s1">'language'</span><span class="p">})</span> <span class="o">==</span> <span class="n">lang</span> <span class="kr">then</span> </span><span id="L-240"><a href="#L-240"><span class="linenos" data-line="240"></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-241"><a href="#L-241"><span class="linenos" data-line="241"></span></a> <span class="kr">end</span> </span><span id="L-242"><a href="#L-242"><span class="linenos" data-line="242"></span></a> <span class="kr">end</span> </span><span id="L-243"><a href="#L-243"><span class="linenos" data-line="243"></span></a><span class="kr">end</span> </span><span id="L-244"><a href="#L-244"><span class="linenos" data-line="244"></span></a> </span><span id="L-245"><a href="#L-245"><span class="linenos" data-line="245"></span></a><span class="c1">-- Add an icon for no label in requested language</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="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-247"><a href="#L-247"><span class="linenos" data-line="247"></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">''</span><span class="p">,</span> <span class="s1">''</span> </span><span id="L-248"><a href="#L-248"><span class="linenos" data-line="248"></span></a> <span class="kr">if</span> <span class="n">icon</span> <span class="kr">then</span> </span><span id="L-249"><a href="#L-249"><span class="linenos" data-line="249"></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-250"><a href="#L-250"><span class="linenos" data-line="250"></span></a> <span class="n">ret_lang</span> <span class="o">=</span> <span class="s2">" <sup>("</span> <span class="o">..</span> <span class="n">lang</span> <span class="o">..</span> <span class="s2">")</sup>"</span> </span><span id="L-251"><a href="#L-251"><span class="linenos" data-line="251"></span></a> <span class="kr">end</span> </span><span id="L-252"><a href="#L-252"><span class="linenos" data-line="252"></span></a> <span class="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-253"><a href="#L-253"><span class="linenos" data-line="253"></span></a> <span class="kd">local</span> <span class="n">namespace</span> <span class="o">=</span> <span class="s1">''</span> </span><span id="L-254"><a href="#L-254"><span class="linenos" data-line="254"></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">'P'</span> <span class="kr">then</span> </span><span id="L-255"><a href="#L-255"><span class="linenos" data-line="255"></span></a> <span class="n">namespace</span> <span class="o">=</span> <span class="s1">'Property:'</span> </span><span id="L-256"><a href="#L-256"><span class="linenos" data-line="256"></span></a> <span class="kr">end</span> </span><span id="L-257"><a href="#L-257"><span class="linenos" data-line="257"></span></a> <span class="n">ret_icon</span> <span class="o">=</span> <span class="s2">" [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|"</span> </span><span id="L-258"><a href="#L-258"><span class="linenos" data-line="258"></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">'Translate-taction-translate'</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-259"><a href="#L-259"><span class="linenos" data-line="259"></span></a> <span class="o">..</span> <span class="s2">"|link=https://www.wikidata.org/wiki/"</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">"?uselang="</span> <span class="o">..</span> <span class="n">uselang</span> <span class="o">..</span> <span class="s2">"]]"</span> </span><span id="L-260"><a href="#L-260"><span class="linenos" data-line="260"></span></a> <span class="n">untranslated</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-261"><a href="#L-261"><span class="linenos" data-line="261"></span></a> <span class="kr">end</span> </span><span id="L-262"><a href="#L-262"><span class="linenos" data-line="262"></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-263"><a href="#L-263"><span class="linenos" data-line="263"></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">'[['</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">']]'</span> <span class="ow">or</span> <span class="s1">'/Q]]'</span><span class="p">)</span> </span><span id="L-264"><a href="#L-264"><span class="linenos" data-line="264"></span></a> <span class="kr">end</span> </span><span id="L-265"><a href="#L-265"><span class="linenos" data-line="265"></span></a> <span class="kr">end</span> </span><span id="L-266"><a href="#L-266"><span class="linenos" data-line="266"></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-267"><a href="#L-267"><span class="linenos" data-line="267"></span></a><span class="kr">end</span> </span><span id="L-268"><a href="#L-268"><span class="linenos" data-line="268"></span></a> </span><span id="L-269"><a href="#L-269"><span class="linenos" data-line="269"></span></a><span class="c1">-- editicon values: true/false (no=false), right, void defaults to i18n.addpencil</span> </span><span id="L-270"><a href="#L-270"><span class="linenos" data-line="270"></span></a><span class="c1">-- labelicon only by parameter</span> </span><span id="L-271"><a href="#L-271"><span class="linenos" data-line="271"></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-272"><a href="#L-272"><span class="linenos" data-line="272"></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-273"><a href="#L-273"><span class="linenos" data-line="273"></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-274"><a href="#L-274"><span class="linenos" data-line="274"></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-275"><a href="#L-275"><span class="linenos" data-line="275"></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-276"><a href="#L-276"><span class="linenos" data-line="276"></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">"false"</span> <span class="ow">or</span> <span class="n">val</span> <span class="o">==</span> <span class="s2">"no"</span> <span class="kr">then</span> </span><span id="L-277"><a href="#L-277"><span class="linenos" data-line="277"></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-278"><a href="#L-278"><span class="linenos" data-line="278"></span></a> <span class="kr">else</span> </span><span id="L-279"><a href="#L-279"><span class="linenos" data-line="279"></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-280"><a href="#L-280"><span class="linenos" data-line="280"></span></a> <span class="kr">end</span> </span><span id="L-281"><a href="#L-281"><span class="linenos" data-line="281"></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-282"><a href="#L-282"><span class="linenos" data-line="282"></span></a><span class="kr">end</span> </span><span id="L-283"><a href="#L-283"><span class="linenos" data-line="283"></span></a> </span><span id="L-284"><a href="#L-284"><span class="linenos" data-line="284"></span></a><span class="c1">-- Add an icon for editing a statement with requirements for future Wikidata Bridge</span> </span><span id="L-285"><a href="#L-285"><span class="linenos" data-line="285"></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-286"><a href="#L-286"><span class="linenos" data-line="286"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="s1">''</span> </span><span id="L-287"><a href="#L-287"><span class="linenos" data-line="287"></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-288"><a href="#L-288"><span class="linenos" data-line="288"></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">' data-bridge-edit-flow="single-best-value"'</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-289"><a href="#L-289"><span class="linenos" data-line="289"></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">"right"</span> <span class="ow">and</span> <span class="s1">' style="float: right;"'</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-290"><a href="#L-290"><span class="linenos" data-line="290"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="s1">' <span class="penicon"'</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">'>'</span> </span><span id="L-291"><a href="#L-291"><span class="linenos" data-line="291"></span></a> <span class="o">..</span> <span class="s2">"[[File:Arbcom ru editing.svg|10px|baseline|"</span> </span><span id="L-292"><a href="#L-292"><span class="linenos" data-line="292"></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">'Wikibase-client-data-bridge-bailout-suggestion-go-to-repo-button'</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">'{{WBREPONAME}}'</span><span class="p">,</span> <span class="s1">'Wikidata'</span><span class="p">)</span> </span><span id="L-293"><a href="#L-293"><span class="linenos" data-line="293"></span></a> <span class="o">..</span> <span class="s2">"|link=https://www.wikidata.org/wiki/"</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">"?uselang="</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">"#"</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">"]]"</span> </span><span id="L-294"><a href="#L-294"><span class="linenos" data-line="294"></span></a> <span class="o">..</span> <span class="s2">"</span>"</span> </span><span id="L-295"><a href="#L-295"><span class="linenos" data-line="295"></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-296"><a href="#L-296"><span class="linenos" data-line="296"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">ret</span> <span class="o">..</span> <span class="s2">"[["</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">'$1'</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">"]]"</span> </span><span id="L-297"><a href="#L-297"><span class="linenos" data-line="297"></span></a> <span class="kr">end</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="kr">return</span> <span class="n">ret</span> </span><span id="L-300"><a href="#L-300"><span class="linenos" data-line="300"></span></a><span class="kr">end</span> </span><span id="L-301"><a href="#L-301"><span class="linenos" data-line="301"></span></a><span class="c1">-- add edit icon to the last element of a table</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="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-303"><a href="#L-303"><span class="linenos" data-line="303"></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-304"><a href="#L-304"><span class="linenos" data-line="304"></span></a> <span class="kr">return</span> <span class="n">thetable</span> </span><span id="L-305"><a href="#L-305"><span class="linenos" data-line="305"></span></a> <span class="kr">end</span> </span><span id="L-306"><a href="#L-306"><span class="linenos" data-line="306"></span></a> <span 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-307"><a href="#L-307"><span class="linenos" data-line="307"></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-308"><a href="#L-308"><span class="linenos" data-line="308"></span></a> <span class="c1">-- add it before last html closing tags</span> </span><span id="L-309"><a href="#L-309"><span class="linenos" data-line="309"></span></a> <span class="kd">local</span> <span class="n">tags</span> <span class="o">=</span> <span class="s1">''</span> </span><span id="L-310"><a href="#L-310"><span class="linenos" data-line="310"></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-311"><a href="#L-311"><span class="linenos" data-line="311"></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">'(>%l+/<)'</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-312"><a href="#L-312"><span class="linenos" data-line="312"></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">'^'</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-313"><a href="#L-313"><span class="linenos" data-line="313"></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-314"><a href="#L-314"><span class="linenos" data-line="314"></span></a> <span class="kr">else</span> </span><span id="L-315"><a href="#L-315"><span class="linenos" data-line="315"></span></a> <span class="kr">break</span> </span><span id="L-316"><a href="#L-316"><span class="linenos" data-line="316"></span></a> <span class="kr">end</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="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-319"><a href="#L-319"><span class="linenos" data-line="319"></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">'$'</span><span class="p">)</span> </span><span id="L-320"><a href="#L-320"><span class="linenos" data-line="320"></span></a> <span class="kr">if</span> <span class="n">offset</span> <span class="kr">then</span> </span><span id="L-321"><a href="#L-321"><span class="linenos" data-line="321"></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-322"><a href="#L-322"><span class="linenos" data-line="322"></span></a> <span class="kr">else</span> </span><span id="L-323"><a href="#L-323"><span class="linenos" data-line="323"></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-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 class="kr">return</span> <span class="n">thetable</span> </span><span id="L-326"><a href="#L-326"><span class="linenos" data-line="326"></span></a><span class="kr">end</span> </span><span id="L-327"><a href="#L-327"><span class="linenos" data-line="327"></span></a> </span><span id="L-328"><a href="#L-328"><span class="linenos" data-line="328"></span></a><span class="c1">-- Escape Lua captures</span> </span><span id="L-329"><a href="#L-329"><span class="linenos" data-line="329"></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-330"><a href="#L-330"><span class="linenos" data-line="330"></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">"(%%%d)"</span><span class="p">,</span> <span class="s2">"%%%1"</span><span class="p">)</span> </span><span id="L-331"><a href="#L-331"><span class="linenos" data-line="331"></span></a><span class="kr">end</span> </span><span id="L-332"><a href="#L-332"><span class="linenos" data-line="332"></span></a> </span><span id="L-333"><a href="#L-333"><span class="linenos" data-line="333"></span></a><span class="c1">-- expandTemplate or callParserFunction</span> </span><span id="L-334"><a href="#L-334"><span class="linenos" data-line="334"></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-335"><a href="#L-335"><span class="linenos" data-line="335"></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-336"><a href="#L-336"><span class="linenos" data-line="336"></span></a> <span class="c1">-- only expand braces if provided in argument, not included in value as in Q1164668</span> </span><span id="L-337"><a href="#L-337"><span class="linenos" data-line="337"></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">'{{'</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-338"><a href="#L-338"><span class="linenos" data-line="338"></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">"string"</span> <span class="kr">then</span> </span><span id="L-339"><a href="#L-339"><span class="linenos" data-line="339"></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-340"><a href="#L-340"><span class="linenos" data-line="340"></span></a> <span class="kr">end</span> </span><span id="L-341"><a href="#L-341"><span class="linenos" data-line="341"></span></a> </span><span id="L-342"><a href="#L-342"><span class="linenos" data-line="342"></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">"{{(.-)}}"</span><span class="p">)</span> <span class="kr">do</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">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">"|"</span><span class="p">)</span> </span><span id="L-344"><a href="#L-344"><span class="linenos" data-line="344"></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-345"><a href="#L-345"><span class="linenos" data-line="345"></span></a> <span class="kd">local</span> <span class="n">parameters</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-346"><a href="#L-346"><span class="linenos" data-line="346"></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-347"><a href="#L-347"><span class="linenos" data-line="347"></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">"="</span><span class="p">)</span> </span><span id="L-348"><a href="#L-348"><span class="linenos" data-line="348"></span></a> <span class="kr">if</span> <span class="n">subparts</span> <span class="kr">then</span> </span><span id="L-349"><a href="#L-349"><span class="linenos" data-line="349"></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-350"><a href="#L-350"><span class="linenos" data-line="350"></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-351"><a href="#L-351"><span class="linenos" data-line="351"></span></a> <span class="c1">-- reconstruct broken links by parts</span> </span><span id="L-352"><a href="#L-352"><span class="linenos" data-line="352"></span></a> <span class="kr">if</span> <span class="n">i</span> <span class="o"><</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">"[["</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">"]]"</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-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="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-355"><a href="#L-355"><span class="linenos" data-line="355"></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">"]]"</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-356"><a href="#L-356"><span class="linenos" data-line="356"></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">"|"</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-357"><a href="#L-357"><span class="linenos" data-line="357"></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-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 class="kr">else</span> </span><span id="L-360"><a href="#L-360"><span class="linenos" data-line="360"></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-361"><a href="#L-361"><span class="linenos" data-line="361"></span></a> <span class="kr">end</span> </span><span id="L-362"><a href="#L-362"><span class="linenos" data-line="362"></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">"]]"</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-363"><a href="#L-363"><span class="linenos" data-line="363"></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-364"><a href="#L-364"><span class="linenos" data-line="364"></span></a> <span class="kr">end</span> </span><span id="L-365"><a href="#L-365"><span class="linenos" data-line="365"></span></a> <span class="kr">end</span> </span><span id="L-366"><a href="#L-366"><span class="linenos" data-line="366"></span></a> </span><span id="L-367"><a href="#L-367"><span class="linenos" data-line="367"></span></a> <span class="kd">local</span> <span class="n">braces_expanded</span> </span><span id="L-368"><a href="#L-368"><span class="linenos" data-line="368"></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">":"</span><span class="p">)</span> </span><span id="L-369"><a href="#L-369"><span class="linenos" data-line="369"></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">":"</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-370"><a href="#L-370"><span class="linenos" data-line="370"></span></a> <span class="kr">then</span> </span><span id="L-371"><a href="#L-371"><span class="linenos" data-line="371"></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-372"><a href="#L-372"><span class="linenos" data-line="372"></span></a> <span class="kr">else</span> </span><span id="L-373"><a href="#L-373"><span class="linenos" data-line="373"></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-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 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">"([%^%$%(%)%%%.%[%]%*%+%-%?])"</span><span class="p">,</span> <span class="s2">"%%%1"</span><span class="p">)</span> <span class="c1">-- escape magic characters</span> </span><span id="L-376"><a href="#L-376"><span class="linenos" data-line="376"></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-377"><a href="#L-377"><span class="linenos" data-line="377"></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">"{{"</span> <span class="o">..</span> <span class="n">braces</span> <span class="o">..</span> <span class="s2">"}}"</span><span class="p">,</span> <span class="n">braces_expanded</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">end</span> </span><span id="L-379"><a href="#L-379"><span class="linenos" data-line="379"></span></a> </span><span id="L-380"><a href="#L-380"><span class="linenos" data-line="380"></span></a> <span class="kr">return</span> <span class="n">text</span> </span><span id="L-381"><a href="#L-381"><span class="linenos" data-line="381"></span></a><span class="kr">end</span> </span><span id="L-382"><a href="#L-382"><span class="linenos" data-line="382"></span></a> </span><span id="L-383"><a href="#L-383"><span class="linenos" data-line="383"></span></a><span class="c1">-- format data type math</span> </span><span id="L-384"><a href="#L-384"><span class="linenos" data-line="384"></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-385"><a href="#L-385"><span class="linenos" data-line="385"></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">'#tag:math'</span><span class="p">,</span> <span class="n">data</span><span class="p">)</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><span id="L-388"><a href="#L-388"><span class="linenos" data-line="388"></span></a><span class="c1">-- format data type musical-notation</span> </span><span id="L-389"><a href="#L-389"><span class="linenos" data-line="389"></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-390"><a href="#L-390"><span class="linenos" data-line="390"></span></a> <span class="kd">local</span> <span class="n">attr</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-391"><a href="#L-391"><span class="linenos" data-line="391"></span></a> <span class="kr">if</span> <span class="n">formatting</span> <span class="o">==</span> <span class="s1">'sound'</span> <span class="kr">then</span> </span><span id="L-392"><a href="#L-392"><span class="linenos" data-line="392"></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-393"><a href="#L-393"><span class="linenos" data-line="393"></span></a> <span class="kr">end</span> </span><span id="L-394"><a href="#L-394"><span class="linenos" data-line="394"></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">'score'</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-395"><a href="#L-395"><span class="linenos" data-line="395"></span></a><span class="kr">end</span> </span><span id="L-396"><a href="#L-396"><span class="linenos" data-line="396"></span></a> </span><span id="L-397"><a href="#L-397"><span class="linenos" data-line="397"></span></a><span class="c1">-- format data type string</span> </span><span id="L-398"><a href="#L-398"><span class="linenos" data-line="398"></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-399"><a href="#L-399"><span class="linenos" data-line="399"></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">''</span><span class="p">),</span> <span class="s1">'$1'</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-400"><a href="#L-400"><span class="linenos" data-line="400"></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">'$1'</span><span class="p">,</span> <span class="p">{[</span><span class="s1">'$1'</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-401"><a href="#L-401"><span class="linenos" data-line="401"></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-402"><a href="#L-402"><span class="linenos" data-line="402"></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-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 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">"^%d+"</span><span class="p">)</span> </span><span id="L-405"><a href="#L-405"><span class="linenos" data-line="405"></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-406"><a href="#L-406"><span class="linenos" data-line="406"></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">"%019d"</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-407"><a href="#L-407"><span class="linenos" data-line="407"></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-408"><a href="#L-408"><span class="linenos" data-line="408"></span></a> <span class="kr">end</span> </span><span id="L-409"><a href="#L-409"><span class="linenos" data-line="409"></span></a> <span class="kr">return</span> <span class="n">data</span> </span><span id="L-410"><a href="#L-410"><span class="linenos" data-line="410"></span></a><span class="kr">end</span> </span><span id="L-411"><a href="#L-411"><span class="linenos" data-line="411"></span></a> </span><span id="L-412"><a href="#L-412"><span class="linenos" data-line="412"></span></a><span class="c1">-- format data type tabular-data</span> </span><span id="L-413"><a href="#L-413"><span class="linenos" data-line="413"></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-414"><a href="#L-414"><span class="linenos" data-line="414"></span></a> <span class="kd">local</span> <span class="n">icon</span> </span><span id="L-415"><a href="#L-415"><span class="linenos" data-line="415"></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">'raw'</span> <span class="kr">then</span> </span><span id="L-416"><a href="#L-416"><span class="linenos" data-line="416"></span></a> <span class="n">icon</span> <span class="o">=</span> <span class="s2">"no-icon"</span> </span><span id="L-417"><a href="#L-417"><span class="linenos" data-line="417"></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">'^Data:'</span><span class="p">,</span> <span class="s1">''</span><span class="p">)</span> <span class="c1">-- remove prefix, i.e. see Module:Tabular data</span> </span><span id="L-418"><a href="#L-418"><span class="linenos" data-line="418"></span></a> <span class="kr">end</span> </span><span id="L-419"><a href="#L-419"><span class="linenos" data-line="419"></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-420"><a href="#L-420"><span class="linenos" data-line="420"></span></a><span class="kr">end</span> </span><span id="L-421"><a href="#L-421"><span class="linenos" data-line="421"></span></a> </span><span id="L-422"><a href="#L-422"><span class="linenos" data-line="422"></span></a><span class="c1">-- format data type url</span> </span><span id="L-423"><a href="#L-423"><span class="linenos" data-line="423"></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-424"><a href="#L-424"><span class="linenos" data-line="424"></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">'weblink'</span> <span class="kr">then</span> </span><span id="L-425"><a href="#L-425"><span class="linenos" data-line="425"></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">'/$'</span><span class="p">,</span> <span class="s1">''</span><span class="p">),</span> <span class="s1">'/'</span><span class="p">)</span> </span><span id="L-426"><a href="#L-426"><span class="linenos" data-line="426"></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">'^www%.'</span><span class="p">,</span> <span class="s1">''</span><span class="p">)</span> </span><span id="L-427"><a href="#L-427"><span class="linenos" data-line="427"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">label_parts</span> <span class="o">></span> <span class="mi">3</span> <span class="kr">then</span> </span><span id="L-428"><a href="#L-428"><span class="linenos" data-line="428"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">label</span> <span class="o">..</span> <span class="s1">'…'</span> </span><span id="L-429"><a href="#L-429"><span class="linenos" data-line="429"></span></a> <span class="kr">end</span> </span><span id="L-430"><a href="#L-430"><span class="linenos" data-line="430"></span></a> <span class="kr">return</span> <span class="s1">'['</span> <span class="o">..</span> <span class="n">data</span> <span class="o">..</span> <span class="s1">' '</span> <span class="o">..</span> <span class="n">label</span> <span class="o">..</span> <span class="s1">']'</span> </span><span id="L-431"><a href="#L-431"><span class="linenos" data-line="431"></span></a> <span class="kr">end</span> </span><span id="L-432"><a href="#L-432"><span class="linenos" data-line="432"></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-433"><a href="#L-433"><span class="linenos" data-line="433"></span></a><span class="kr">end</span> </span><span id="L-434"><a href="#L-434"><span class="linenos" data-line="434"></span></a> </span><span id="L-435"><a href="#L-435"><span class="linenos" data-line="435"></span></a><span class="c1">-- format data type external-id</span> </span><span id="L-436"><a href="#L-436"><span class="linenos" data-line="436"></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-437"><a href="#L-437"><span class="linenos" data-line="437"></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">'externalid'</span> <span class="kr">then</span> </span><span id="L-438"><a href="#L-438"><span class="linenos" data-line="438"></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">'P1630'</span><span class="p">)</span> <span class="c1">-- formatter URL</span> </span><span id="L-439"><a href="#L-439"><span class="linenos" data-line="439"></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">"mainsnak"</span><span class="p">,</span> <span class="s2">"datavalue"</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">})</span> </span><span id="L-440"><a href="#L-440"><span class="linenos" data-line="440"></span></a> <span class="kr">if</span> <span class="n">p_link_pattern</span> <span class="kr">then</span> </span><span id="L-441"><a href="#L-441"><span class="linenos" data-line="441"></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">'$1'</span><span class="p">,</span> <span class="p">{[</span><span class="s1">'$1'</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">})</span> </span><span id="L-442"><a href="#L-442"><span class="linenos" data-line="442"></span></a> <span class="kr">return</span> <span class="s1">'['</span> <span class="o">..</span> <span class="n">p_link</span> <span class="o">..</span> <span class="s1">' '</span> <span class="o">..</span> <span class="n">data</span> <span class="o">..</span> <span class="s1">']'</span> </span><span id="L-443"><a href="#L-443"><span class="linenos" data-line="443"></span></a> <span class="kr">end</span> </span><span id="L-444"><a href="#L-444"><span class="linenos" data-line="444"></span></a> <span class="kr">end</span> </span><span id="L-445"><a href="#L-445"><span class="linenos" data-line="445"></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-446"><a href="#L-446"><span class="linenos" data-line="446"></span></a><span class="kr">end</span> </span><span id="L-447"><a href="#L-447"><span class="linenos" data-line="447"></span></a> </span><span id="L-448"><a href="#L-448"><span class="linenos" data-line="448"></span></a><span class="c1">-- format data type commonsMedia and geo-shape</span> </span><span id="L-449"><a href="#L-449"><span class="linenos" data-line="449"></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-450"><a href="#L-450"><span class="linenos" data-line="450"></span></a> <span class="kd">local</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">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">''</span><span class="p">),</span> <span class="s1">'$1'</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-452"><a href="#L-452"><span class="linenos" data-line="452"></span></a> <span class="n">icon</span> <span class="o">=</span> <span class="s2">"no-icon"</span> </span><span id="L-453"><a href="#L-453"><span class="linenos" data-line="453"></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">'^Data:'</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-454"><a href="#L-454"><span class="linenos" data-line="454"></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">'PATH'</span><span class="p">)</span> <span class="c1">-- encode special characters in filename</span> </span><span id="L-455"><a href="#L-455"><span class="linenos" data-line="455"></span></a> <span class="kr">end</span> </span><span id="L-456"><a href="#L-456"><span class="linenos" data-line="456"></span></a> <span class="kr">end</span> </span><span id="L-457"><a href="#L-457"><span class="linenos" data-line="457"></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-458"><a href="#L-458"><span class="linenos" data-line="458"></span></a><span class="kr">end</span> </span><span id="L-459"><a href="#L-459"><span class="linenos" data-line="459"></span></a> </span><span id="L-460"><a href="#L-460"><span class="linenos" data-line="460"></span></a><span class="c1">-- format data type globe-coordinate</span> </span><span id="L-461"><a href="#L-461"><span class="linenos" data-line="461"></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-462"><a href="#L-462"><span class="linenos" data-line="462"></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-463"><a href="#L-463"><span class="linenos" data-line="463"></span></a> <span class="kd">local</span> <span class="n">globes</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">'Q3134'</span><span class="p">]</span><span class="o">=</span><span class="s1">'callisto'</span><span class="p">,[</span><span class="s1">'Q596'</span><span class="p">]</span><span class="o">=</span><span class="s1">'ceres'</span><span class="p">,[</span><span class="s1">'Q15040'</span><span class="p">]</span><span class="o">=</span><span class="s1">'dione'</span><span class="p">,[</span><span class="s1">'Q2'</span><span class="p">]</span><span class="o">=</span><span class="s1">'earth'</span><span class="p">,[</span><span class="s1">'Q3303'</span><span class="p">]</span><span class="o">=</span><span class="s1">'enceladus'</span><span class="p">,</span> </span><span id="L-464"><a href="#L-464"><span class="linenos" data-line="464"></span></a> <span class="p">[</span><span class="s1">'Q3143'</span><span class="p">]</span><span class="o">=</span><span class="s1">'europa'</span><span class="p">,[</span><span class="s1">'Q17975'</span><span class="p">]</span><span class="o">=</span><span class="s1">'phoebe'</span><span class="p">,[</span><span class="s1">'Q3169'</span><span class="p">]</span><span class="o">=</span><span class="s1">'ganymede'</span><span class="p">,[</span><span class="s1">'Q3123'</span><span class="p">]</span><span class="o">=</span><span class="s1">'io'</span><span class="p">,[</span><span class="s1">'Q17958'</span><span class="p">]</span><span class="o">=</span><span class="s1">'iapetus'</span><span class="p">,</span> </span><span id="L-465"><a href="#L-465"><span class="linenos" data-line="465"></span></a> <span class="p">[</span><span class="s1">'Q308'</span><span class="p">]</span><span class="o">=</span><span class="s1">'mercury'</span><span class="p">,[</span><span class="s1">'Q15034'</span><span class="p">]</span><span class="o">=</span><span class="s1">'mimas'</span><span class="p">,[</span><span class="s1">'Q405'</span><span class="p">]</span><span class="o">=</span><span class="s1">'moon'</span><span class="p">,[</span><span class="s1">'Q15050'</span><span class="p">]</span><span class="o">=</span><span class="s1">'rhea'</span><span class="p">,[</span><span class="s1">'Q15047'</span><span class="p">]</span><span class="o">=</span><span class="s1">'tethys'</span><span class="p">,</span> </span><span id="L-466"><a href="#L-466"><span class="linenos" data-line="466"></span></a> <span class="p">[</span><span class="s1">'Q111'</span><span class="p">]</span><span class="o">=</span><span class="s1">'mars'</span><span class="p">,[</span><span class="s1">'Q2565'</span><span class="p">]</span><span class="o">=</span><span class="s1">'titan'</span><span class="p">,[</span><span class="s1">'Q3359'</span><span class="p">]</span><span class="o">=</span><span class="s1">'triton'</span><span class="p">,[</span><span class="s1">'Q313'</span><span class="p">]</span><span class="o">=</span><span class="s1">'venus'</span><span class="p">,[</span><span class="s1">'Q3030'</span><span class="p">]</span><span class="o">=</span><span class="s1">'vesta'</span><span class="p">}</span> </span><span id="L-467"><a href="#L-467"><span class="linenos" data-line="467"></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-468"><a href="#L-468"><span class="linenos" data-line="468"></span></a> <span class="kr">end</span> </span><span id="L-469"><a href="#L-469"><span class="linenos" data-line="469"></span></a> </span><span id="L-470"><a href="#L-470"><span class="linenos" data-line="470"></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-471"><a href="#L-471"><span class="linenos" data-line="471"></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"><=</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-472"><a href="#L-472"><span class="linenos" data-line="472"></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 -> 0.001</span> </span><span id="L-473"><a href="#L-473"><span class="linenos" data-line="473"></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-474"><a href="#L-474"><span class="linenos" data-line="474"></span></a> <span class="kr">end</span> </span><span id="L-475"><a href="#L-475"><span class="linenos" data-line="475"></span></a> </span><span id="L-476"><a href="#L-476"><span class="linenos" data-line="476"></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-477"><a href="#L-477"><span class="linenos" data-line="477"></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-478"><a href="#L-478"><span class="linenos" data-line="478"></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-479"><a href="#L-479"><span class="linenos" data-line="479"></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">'$lat'</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">'$lon'</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-480"><a href="#L-480"><span class="linenos" data-line="480"></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">'$l[ao][tn]'</span><span class="p">,</span> <span class="p">{[</span><span class="s1">'$lat'</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">'$lon'</span><span class="p">]</span> <span class="o">=</span> <span class="n">longitude</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">if</span> <span class="nb">string.find</span><span class="p">(</span><span class="n">formatting</span><span class="p">,</span> <span class="s1">'$globe'</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-482"><a href="#L-482"><span class="linenos" data-line="482"></span></a> <span class="kd">local</span> <span class="n">myglobe</span> <span class="o">=</span> <span class="s1">'earth'</span> </span><span id="L-483"><a href="#L-483"><span class="linenos" data-line="483"></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-484"><a href="#L-484"><span class="linenos" data-line="484"></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">'entity/'</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-485"><a href="#L-485"><span class="linenos" data-line="485"></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">'earth'</span> </span><span id="L-486"><a href="#L-486"><span class="linenos" data-line="486"></span></a> <span class="kr">end</span> </span><span id="L-487"><a href="#L-487"><span class="linenos" data-line="487"></span></a> <span class="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">'$globe'</span><span class="p">,</span> <span class="n">myglobe</span><span class="p">)</span> </span><span id="L-488"><a href="#L-488"><span class="linenos" data-line="488"></span></a> <span class="kr">end</span> </span><span id="L-489"><a href="#L-489"><span class="linenos" data-line="489"></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-490"><a href="#L-490"><span class="linenos" data-line="490"></span></a> <span class="kr">elseif</span> <span class="n">formatting</span> <span class="o">==</span> <span class="s1">'latitude'</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="n">latitude</span><span class="p">,</span> <span class="s2">"no-icon"</span> </span><span id="L-492"><a href="#L-492"><span class="linenos" data-line="492"></span></a> <span class="kr">elseif</span> <span class="n">formatting</span> <span class="o">==</span> <span class="s1">'longitude'</span> <span class="kr">then</span> </span><span id="L-493"><a href="#L-493"><span class="linenos" data-line="493"></span></a> <span class="kr">return</span> <span class="n">longitude</span><span class="p">,</span> <span class="s2">"no-icon"</span> </span><span id="L-494"><a href="#L-494"><span class="linenos" data-line="494"></span></a> <span class="kr">elseif</span> <span class="n">formatting</span> <span class="o">==</span> <span class="s1">'dimension'</span> <span class="kr">then</span> </span><span id="L-495"><a href="#L-495"><span class="linenos" data-line="495"></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">"no-icon"</span> </span><span id="L-496"><a href="#L-496"><span class="linenos" data-line="496"></span></a> <span class="kr">else</span> <span class="c1">--default formatting='globe'</span> </span><span id="L-497"><a href="#L-497"><span class="linenos" data-line="497"></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">'http://www.wikidata.org/entity/Q2'</span> <span class="kr">then</span> </span><span id="L-498"><a href="#L-498"><span class="linenos" data-line="498"></span></a> <span class="kr">return</span> <span class="s1">'earth'</span><span class="p">,</span> <span class="s2">"no-icon"</span> </span><span id="L-499"><a href="#L-499"><span class="linenos" data-line="499"></span></a> <span class="kr">else</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="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">'entity/'</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> </span><span id="L-501"><a href="#L-501"><span class="linenos" data-line="501"></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">"no-icon"</span> </span><span id="L-502"><a href="#L-502"><span class="linenos" data-line="502"></span></a> <span class="kr">end</span> </span><span id="L-503"><a href="#L-503"><span class="linenos" data-line="503"></span></a> <span class="kr">end</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><span id="L-506"><a href="#L-506"><span class="linenos" data-line="506"></span></a><span class="c1">-- Local functions for data value quantity</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="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-508"><a href="#L-508"><span class="linenos" data-line="508"></span></a> <span class="kd">local</span> <span class="n">unit_symbol</span> <span class="o">=</span> <span class="s1">''</span> </span><span id="L-509"><a href="#L-509"><span class="linenos" data-line="509"></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">"/Units"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-510"><a href="#L-510"><span class="linenos" data-line="510"></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">"/Units"</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">''</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-511"><a href="#L-511"><span class="linenos" data-line="511"></span></a> <span class="kr">end</span> </span><span id="L-512"><a href="#L-512"><span class="linenos" data-line="512"></span></a> <span class="kr">if</span> <span class="n">unit_symbol</span> <span class="o">==</span> <span class="s1">''</span> <span class="kr">then</span> </span><span id="L-513"><a href="#L-513"><span class="linenos" data-line="513"></span></a> <span class="c1">-- fetch it</span> </span><span id="L-514"><a href="#L-514"><span class="linenos" data-line="514"></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">'P5061'</span><span class="p">)</span> </span><span id="L-515"><a href="#L-515"><span class="linenos" data-line="515"></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-516"><a href="#L-516"><span class="linenos" data-line="516"></span></a> <span class="kd">local</span> <span class="n">langclaims</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-517"><a href="#L-517"><span class="linenos" data-line="517"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">lang</span><span class="p">,</span> <span class="s1">'mul'</span><span class="p">)</span> <span class="c1">-- multilingual as last try</span> </span><span id="L-518"><a href="#L-518"><span class="linenos" data-line="518"></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-519"><a href="#L-519"><span class="linenos" data-line="519"></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">"mainsnak"</span><span class="p">,</span> <span class="s2">"datavalue"</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">,</span> <span class="s2">"language"</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">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-521"><a href="#L-521"><span class="linenos" data-line="521"></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-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">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-525"><a href="#L-525"><span class="linenos" data-line="525"></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-526"><a href="#L-526"><span class="linenos" data-line="526"></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-527"><a href="#L-527"><span class="linenos" data-line="527"></span></a> <span class="kr">end</span> </span><span id="L-528"><a href="#L-528"><span class="linenos" data-line="528"></span></a> <span class="kr">end</span> </span><span id="L-529"><a href="#L-529"><span class="linenos" data-line="529"></span></a> <span class="kr">end</span> </span><span id="L-530"><a href="#L-530"><span class="linenos" data-line="530"></span></a> <span class="kr">end</span> </span><span id="L-531"><a href="#L-531"><span class="linenos" data-line="531"></span></a> <span class="kr">return</span> <span class="n">unit_symbol</span> </span><span id="L-532"><a href="#L-532"><span class="linenos" data-line="532"></span></a><span class="kr">end</span> </span><span id="L-533"><a href="#L-533"><span class="linenos" data-line="533"></span></a> </span><span id="L-534"><a href="#L-534"><span class="linenos" data-line="534"></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-535"><a href="#L-535"><span class="linenos" data-line="535"></span></a> <span class="kd">local</span> <span class="n">suffix</span> <span class="o">=</span> <span class="s1">''</span> </span><span id="L-536"><a href="#L-536"><span class="linenos" data-line="536"></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">''</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">"unitcode"</span> <span class="kr">then</span> </span><span id="L-537"><a href="#L-537"><span class="linenos" data-line="537"></span></a> <span class="c1">-- get unit symbol</span> </span><span id="L-538"><a href="#L-538"><span class="linenos" data-line="538"></span></a> <span class="kd">local</span> <span class="n">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-539"><a href="#L-539"><span class="linenos" data-line="539"></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-540"><a href="#L-540"><span class="linenos" data-line="540"></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">''</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">"linked"</span> <span class="kr">then</span> </span><span id="L-541"><a href="#L-541"><span class="linenos" data-line="541"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="s2">"[["</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">"d:"</span> <span class="o">..</span> <span class="n">id</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"|"</span> <span class="o">..</span> <span class="n">unit_symbol</span> <span class="o">..</span> <span class="s2">"]]"</span> </span><span id="L-542"><a href="#L-542"><span class="linenos" data-line="542"></span></a> <span class="kr">else</span> </span><span id="L-543"><a href="#L-543"><span class="linenos" data-line="543"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">unit_symbol</span> </span><span id="L-544"><a href="#L-544"><span class="linenos" data-line="544"></span></a> <span class="kr">end</span> </span><span id="L-545"><a href="#L-545"><span class="linenos" data-line="545"></span></a> <span class="kr">end</span> </span><span id="L-546"><a href="#L-546"><span class="linenos" data-line="546"></span></a> <span class="kr">end</span> </span><span id="L-547"><a href="#L-547"><span class="linenos" data-line="547"></span></a> <span class="kr">if</span> <span class="n">suffix</span> <span class="o">==</span> <span class="s1">''</span> <span class="kr">then</span> <span class="c1">-- formatting=unit, or formatting=unitcode not found</span> </span><span id="L-548"><a href="#L-548"><span class="linenos" data-line="548"></span></a> <span class="c1">-- get unit label</span> </span><span id="L-549"><a href="#L-549"><span class="linenos" data-line="549"></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-550"><a href="#L-550"><span class="linenos" data-line="550"></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">"/Units"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-551"><a href="#L-551"><span class="linenos" data-line="551"></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">"/Units"</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-552"><a href="#L-552"><span class="linenos" data-line="552"></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">''</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">"linked"</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="s2">"[["</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">"d:"</span> <span class="o">..</span> <span class="n">id</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"|"</span> <span class="o">..</span> <span class="n">suffix</span> <span class="o">..</span> <span class="s2">"]]"</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">else</span> </span><span id="L-556"><a href="#L-556"><span class="linenos" data-line="556"></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-557"><a href="#L-557"><span class="linenos" data-line="557"></span></a> <span class="kr">end</span> </span><span id="L-558"><a href="#L-558"><span class="linenos" data-line="558"></span></a> <span class="kr">end</span> </span><span id="L-559"><a href="#L-559"><span class="linenos" data-line="559"></span></a> <span class="kr">if</span> <span class="n">suffix</span> <span class="o">~=</span> <span class="s1">''</span> <span class="kr">then</span> </span><span id="L-560"><a href="#L-560"><span class="linenos" data-line="560"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="s1">' '</span> <span class="o">..</span> <span class="n">suffix</span> </span><span id="L-561"><a href="#L-561"><span class="linenos" data-line="561"></span></a> <span class="kr">end</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">suffix</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><span id="L-565"><a href="#L-565"><span class="linenos" data-line="565"></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-566"><a href="#L-566"><span class="linenos" data-line="566"></span></a> <span class="c1">-- rounds out_num with significant figures of in_num (default precision)</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">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-568"><a href="#L-568"><span class="linenos" data-line="568"></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-569"><a href="#L-569"><span class="linenos" data-line="569"></span></a> <span class="kr">return</span> <span class="n">out_num</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="c1">-- first, count digits after decimal mark, handling cases like '12.345e6'</span> </span><span id="L-572"><a href="#L-572"><span class="linenos" data-line="572"></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-573"><a href="#L-573"><span class="linenos" data-line="573"></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">'^(%d*)(%.?)(%d*)(.*)'</span><span class="p">)</span> </span><span id="L-574"><a href="#L-574"><span class="linenos" data-line="574"></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-575"><a href="#L-575"><span class="linenos" data-line="575"></span></a> <span class="kr">if</span> <span class="n">e</span> <span class="o">==</span> <span class="s1">'e'</span> <span class="ow">or</span> <span class="n">e</span> <span class="o">==</span> <span class="s1">'E'</span> <span class="kr">then</span> </span><span id="L-576"><a href="#L-576"><span class="linenos" data-line="576"></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-577"><a href="#L-577"><span class="linenos" data-line="577"></span></a> <span class="kr">end</span> </span><span id="L-578"><a href="#L-578"><span class="linenos" data-line="578"></span></a> <span class="kr">if</span> <span class="n">dot</span> <span class="o">==</span> <span class="s1">''</span> <span class="kr">then</span> </span><span id="L-579"><a href="#L-579"><span class="linenos" data-line="579"></span></a> <span class="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">'0*$'</span><span class="p">):</span><span class="n">len</span><span class="p">()</span> </span><span id="L-580"><a href="#L-580"><span class="linenos" data-line="580"></span></a> <span class="kr">else</span> </span><span id="L-581"><a href="#L-581"><span class="linenos" data-line="581"></span></a> <span class="n">prec</span> <span class="o">=</span> <span class="o">#</span><span class="n">decimals</span> </span><span id="L-582"><a href="#L-582"><span class="linenos" data-line="582"></span></a> <span class="kr">end</span> </span><span id="L-583"><a href="#L-583"><span class="linenos" data-line="583"></span></a> <span class="kr">if</span> <span class="n">exponent</span> <span class="kr">then</span> </span><span id="L-584"><a href="#L-584"><span class="linenos" data-line="584"></span></a> <span class="c1">-- So '1230' and '1.23e3' both give prec = -1, and '0.00123' and '1.23e-3' give 5.</span> </span><span id="L-585"><a href="#L-585"><span class="linenos" data-line="585"></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-586"><a href="#L-586"><span class="linenos" data-line="586"></span></a> <span class="kr">end</span> </span><span id="L-587"><a href="#L-587"><span class="linenos" data-line="587"></span></a> <span class="c1">-- significant figures</span> </span><span id="L-588"><a href="#L-588"><span class="linenos" data-line="588"></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 -> 10, 5 -> 0.00001</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="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-590"><a href="#L-590"><span class="linenos" data-line="590"></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 -> 1000, 0.00123 -> 0.001</span> </span><span id="L-591"><a href="#L-591"><span class="linenos" data-line="591"></span></a> <span class="c1">-- round it (credit to Luc Bloom from http://lua-users.org/wiki/SimpleRound)</span> </span><span id="L-592"><a href="#L-592"><span class="linenos" data-line="592"></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">>=</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-593"><a href="#L-593"><span class="linenos" data-line="593"></span></a><span class="kr">end</span> </span><span id="L-594"><a href="#L-594"><span class="linenos" data-line="594"></span></a> </span><span id="L-595"><a href="#L-595"><span class="linenos" data-line="595"></span></a><span class="c1">-- format data type quantity</span> </span><span id="L-596"><a href="#L-596"><span class="linenos" data-line="596"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">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-597"><a href="#L-597"><span class="linenos" data-line="597"></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-598"><a href="#L-598"><span class="linenos" data-line="598"></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">"%+"</span><span class="p">,</span> <span class="s2">""</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">suffix</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-600"><a href="#L-600"><span class="linenos" data-line="600"></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-601"><a href="#L-601"><span class="linenos" data-line="601"></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">''</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">"unit"</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">''</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">"duration"</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-602"><a href="#L-602"><span class="linenos" data-line="602"></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-603"><a href="#L-603"><span class="linenos" data-line="603"></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">"Q"</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</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">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">"Q"</span> <span class="kr">then</span> </span><span id="L-605"><a href="#L-605"><span class="linenos" data-line="605"></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-606"><a href="#L-606"><span class="linenos" data-line="606"></span></a> <span class="kd">local</span> <span class="n">convert_to</span> </span><span id="L-607"><a href="#L-607"><span class="linenos" data-line="607"></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">"default"</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">"default2"</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="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">"/Units"</span><span class="p">)</span> </span><span id="L-609"><a href="#L-609"><span class="linenos" data-line="609"></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-610"><a href="#L-610"><span class="linenos" data-line="610"></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-611"><a href="#L-611"><span class="linenos" data-line="611"></span></a> <span class="kr">end</span> </span><span id="L-612"><a href="#L-612"><span class="linenos" data-line="612"></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">''</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">"Q"</span> <span class="kr">then</span> </span><span id="L-613"><a href="#L-613"><span class="linenos" data-line="613"></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-614"><a href="#L-614"><span class="linenos" data-line="614"></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">''</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">"duration"</span> <span class="kr">then</span> </span><span id="L-615"><a href="#L-615"><span class="linenos" data-line="615"></span></a> <span class="n">convert_to</span> <span class="o">=</span> <span class="s1">'Q11574'</span> <span class="c1">-- seconds</span> </span><span id="L-616"><a href="#L-616"><span class="linenos" data-line="616"></span></a> <span class="kr">end</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">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-618"><a href="#L-618"><span class="linenos" data-line="618"></span></a> <span class="c1">-- convert units</span> </span><span id="L-619"><a href="#L-619"><span class="linenos" data-line="619"></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] = 'formula'}</span> </span><span id="L-620"><a href="#L-620"><span class="linenos" data-line="620"></span></a> <span class="p">[</span><span class="s1">'Q25267'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">'Q42289'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'$1*1.8+32'</span><span class="p">,</span> <span class="p">[</span><span class="s1">'Q11597'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'$1+273.15'</span><span class="p">},</span> </span><span id="L-621"><a href="#L-621"><span class="linenos" data-line="621"></span></a> <span class="p">[</span><span class="s1">'Q42289'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">'Q25267'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'($1-32)/1.8'</span><span class="p">,</span> <span class="p">[</span><span class="s1">'Q11597'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'($1+459.67)*5/9'</span><span class="p">},</span> </span><span id="L-622"><a href="#L-622"><span class="linenos" data-line="622"></span></a> <span class="p">[</span><span class="s1">'Q11597'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">'Q25267'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'$1-273.15'</span><span class="p">,</span> <span class="p">[</span><span class="s1">'Q42289'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'($1-273.15)*1.8000+32.00'</span><span class="p">}</span> </span><span id="L-623"><a href="#L-623"><span class="linenos" data-line="623"></span></a> <span class="p">}</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_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-625"><a href="#L-625"><span class="linenos" data-line="625"></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">'#expr'</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">"$1"</span><span class="p">,</span> <span class="n">amount</span><span class="p">))</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="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-627"><a href="#L-627"><span class="linenos" data-line="627"></span></a> <span class="kr">else</span> </span><span id="L-628"><a href="#L-628"><span class="linenos" data-line="628"></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">'P2442'</span><span class="p">)</span> <span class="c1">-- conversion to standard unit</span> </span><span id="L-629"><a href="#L-629"><span class="linenos" data-line="629"></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">'P2370'</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-630"><a href="#L-630"><span class="linenos" data-line="630"></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-631"><a href="#L-631"><span class="linenos" data-line="631"></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">'value'</span> <span class="kr">then</span> <span class="c1">-- no somevalue nor novalue</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</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">"http://www.wikidata.org/entity/"</span> <span class="o">..</span> <span class="n">convert_to</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_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-634"><a href="#L-634"><span class="linenos" data-line="634"></span></a> <span class="kr">break</span> </span><span id="L-635"><a href="#L-635"><span class="linenos" data-line="635"></span></a> <span class="kr">end</span> </span><span id="L-636"><a href="#L-636"><span class="linenos" data-line="636"></span></a> <span class="kr">end</span> </span><span id="L-637"><a href="#L-637"><span class="linenos" data-line="637"></span></a> <span class="kr">end</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="kr">then</span> </span><span id="L-640"><a href="#L-640"><span class="linenos" data-line="640"></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-641"><a href="#L-641"><span class="linenos" data-line="641"></span></a> <span class="kr">end</span> </span><span id="L-642"><a href="#L-642"><span class="linenos" data-line="642"></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">'M'</span> <span class="kr">then</span> </span><span id="L-643"><a href="#L-643"><span class="linenos" data-line="643"></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">"/Units"</span><span class="p">)</span> </span><span id="L-644"><a href="#L-644"><span class="linenos" data-line="644"></span></a> <span class="kr">if</span> <span class="n">wiki</span><span class="p">.</span><span class="n">langcode</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><span id="L-645"><a href="#L-645"><span class="linenos" data-line="645"></span></a> <span class="ow">and</span> <span class="n">exist</span> <span class="ow">and</span> <span class="n">units</span><span class="p">.</span><span class="n">convert2M</span> <span class="ow">and</span> <span class="nb">type</span><span class="p">(</span><span class="n">units</span><span class="p">.</span><span class="n">convert2M</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"function"</span> </span><span id="L-646"><a href="#L-646"><span class="linenos" data-line="646"></span></a> <span class="kr">then</span> </span><span id="L-647"><a href="#L-647"><span class="linenos" data-line="647"></span></a> <span class="n">conv_amount</span><span class="p">,</span> <span class="n">conv_suffix</span> <span class="o">=</span> <span class="n">units</span><span class="p">.</span><span class="n">convert2M</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span> </span><span id="L-648"><a href="#L-648"><span class="linenos" data-line="648"></span></a> <span class="n">conv_suffix</span> <span class="o">=</span> <span class="p">(</span><span class="n">conv_suffix</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">)</span><span class="o">..</span> <span class="n">suffix</span> </span><span id="L-649"><a href="#L-649"><span class="linenos" data-line="649"></span></a> <span class="kr">elseif</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">10</span><span class="o">^</span><span class="mi">8</span> <span class="kr">then</span> </span><span id="L-650"><a href="#L-650"><span class="linenos" data-line="650"></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-651"><a href="#L-651"><span class="linenos" data-line="651"></span></a> <span class="n">conv_suffix</span> <span class="o">=</span> <span class="s1">' M'</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">suffix</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">end</span> </span><span id="L-653"><a href="#L-653"><span class="linenos" data-line="653"></span></a> <span class="kr">end</span> </span><span id="L-654"><a href="#L-654"><span class="linenos" data-line="654"></span></a> </span><span id="L-655"><a href="#L-655"><span class="linenos" data-line="655"></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">'raw'</span> <span class="kr">then</span> </span><span id="L-656"><a href="#L-656"><span class="linenos" data-line="656"></span></a> <span class="n">amount</span> <span class="o">=</span> <span class="n">conv_amount</span> </span><span id="L-657"><a href="#L-657"><span class="linenos" data-line="657"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-658"><a href="#L-658"><span class="linenos" data-line="658"></span></a> <span class="n">conv_amount</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-659"><a href="#L-659"><span class="linenos" data-line="659"></span></a> <span class="kr">end</span> </span><span id="L-660"><a href="#L-660"><span class="linenos" data-line="660"></span></a> <span class="kr">end</span> </span><span id="L-661"><a href="#L-661"><span class="linenos" data-line="661"></span></a> <span class="kr">end</span> </span><span id="L-662"><a href="#L-662"><span class="linenos" data-line="662"></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-663"><a href="#L-663"><span class="linenos" data-line="663"></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">"%019d"</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-664"><a href="#L-664"><span class="linenos" data-line="664"></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">''</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">"duration"</span> <span class="kr">then</span> </span><span id="L-665"><a href="#L-665"><span class="linenos" data-line="665"></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-666"><a href="#L-666"><span class="linenos" data-line="666"></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">'duration'</span> <span class="kr">then</span> </span><span id="L-667"><a href="#L-667"><span class="linenos" data-line="667"></span></a> <span class="kr">return</span> <span class="n">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-668"><a href="#L-668"><span class="linenos" data-line="668"></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">'durationm:s'</span> <span class="kr">then</span> </span><span id="L-669"><a href="#L-669"><span class="linenos" data-line="669"></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-670"><a href="#L-670"><span class="linenos" data-line="670"></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-671"><a href="#L-671"><span class="linenos" data-line="671"></span></a> <span class="kr">return</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">"%02d:%02d"</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-672"><a href="#L-672"><span class="linenos" data-line="672"></span></a> <span class="kr">else</span> <span class="c1">-- durationhms or durationh:m:s</span> </span><span id="L-673"><a href="#L-673"><span class="linenos" data-line="673"></span></a> <span class="kd">local</span> <span class="n">intervals</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"hours"</span><span class="p">,</span> <span class="s2">"minutes"</span><span class="p">,</span> <span class="s2">"seconds"</span><span class="p">}</span> </span><span id="L-674"><a href="#L-674"><span class="linenos" data-line="674"></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-675"><a href="#L-675"><span class="linenos" data-line="675"></span></a> <span class="n">sec2table</span><span class="p">[</span><span class="s2">"seconds"</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">"seconds"</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">"."</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">"%.(%d+)"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"0"</span><span class="p">))</span> <span class="c1">-- add decimals</span> </span><span id="L-676"><a href="#L-676"><span class="linenos" data-line="676"></span></a> <span class="kd">local</span> <span class="n">duration</span> <span class="o">=</span> <span class="s1">''</span> </span><span id="L-677"><a href="#L-677"><span class="linenos" data-line="677"></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-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">formatting</span> <span class="o">==</span> <span class="s1">'durationh:m:s'</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="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-680"><a href="#L-680"><span class="linenos" data-line="680"></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">":"</span> </span><span id="L-681"><a href="#L-681"><span class="linenos" data-line="681"></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-682"><a href="#L-682"><span class="linenos" data-line="682"></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">"%02d"</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">":"</span> </span><span id="L-683"><a href="#L-683"><span class="linenos" data-line="683"></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-684"><a href="#L-684"><span class="linenos" data-line="684"></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-685"><a href="#L-685"><span class="linenos" data-line="685"></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"><</span> <span class="mi">10</span> <span class="ow">and</span> <span class="s2">"0"</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">)</span> <span class="o">..</span> <span class="n">sec_str</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">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-688"><a href="#L-688"><span class="linenos" data-line="688"></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"><</span> <span class="mi">3</span> <span class="ow">and</span> <span class="s2">" "</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">)</span> </span><span id="L-689"><a href="#L-689"><span class="linenos" data-line="689"></span></a> <span class="kr">end</span> </span><span id="L-690"><a href="#L-690"><span class="linenos" data-line="690"></span></a> <span class="kr">end</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">duration</span> </span><span id="L-692"><a href="#L-692"><span class="linenos" data-line="692"></span></a> <span class="kr">end</span> </span><span id="L-693"><a href="#L-693"><span class="linenos" data-line="693"></span></a> <span class="kr">end</span> </span><span id="L-694"><a href="#L-694"><span class="linenos" data-line="694"></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-695"><a href="#L-695"><span class="linenos" data-line="695"></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-696"><a href="#L-696"><span class="linenos" data-line="696"></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">'raw'</span> <span class="kr">then</span> </span><span id="L-697"><a href="#L-697"><span class="linenos" data-line="697"></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-698"><a href="#L-698"><span class="linenos" data-line="698"></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-699"><a href="#L-699"><span class="linenos" data-line="699"></span></a> <span class="kr">else</span> </span><span id="L-700"><a href="#L-700"><span class="linenos" data-line="700"></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-701"><a href="#L-701"><span class="linenos" data-line="701"></span></a> <span class="kr">end</span> </span><span id="L-702"><a href="#L-702"><span class="linenos" data-line="702"></span></a> <span class="kr">end</span> </span><span id="L-703"><a href="#L-703"><span class="linenos" data-line="703"></span></a> <span class="kr">if</span> <span class="n">conv_amount</span> <span class="kr">then</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">conv_sortkey</span> <span class="o">=</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">"%019d"</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-705"><a href="#L-705"><span class="linenos" data-line="705"></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-706"><a href="#L-706"><span class="linenos" data-line="706"></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">'default2'</span> <span class="kr">then</span> </span><span id="L-707"><a href="#L-707"><span class="linenos" data-line="707"></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">' ('</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">')'</span><span class="p">,</span> <span class="n">conv_sortkey</span> </span><span id="L-708"><a href="#L-708"><span class="linenos" data-line="708"></span></a> <span class="kr">else</span> </span><span id="L-709"><a href="#L-709"><span class="linenos" data-line="709"></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-710"><a href="#L-710"><span class="linenos" data-line="710"></span></a> <span class="kr">end</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="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">''</span><span class="p">),</span> <span class="s1">'$1'</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-712"><a href="#L-712"><span class="linenos" data-line="712"></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">'$1'</span><span class="p">,</span> <span class="p">{[</span><span class="s1">'$1'</span><span class="p">]</span> <span class="o">=</span> <span class="n">amount</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">end</span> </span><span id="L-714"><a href="#L-714"><span class="linenos" data-line="714"></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-715"><a href="#L-715"><span class="linenos" data-line="715"></span></a><span class="kr">end</span> </span><span id="L-716"><a href="#L-716"><span class="linenos" data-line="716"></span></a> </span><span id="L-717"><a href="#L-717"><span class="linenos" data-line="717"></span></a><span class="c1">-- format data type time</span> </span><span id="L-718"><a href="#L-718"><span class="linenos" data-line="718"></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-719"><a href="#L-719"><span class="linenos" data-line="719"></span></a> <span class="c1">-- Dates and times are stored in ISO 8601 format</span> </span><span id="L-720"><a href="#L-720"><span class="linenos" data-line="720"></span></a> <span class="kd">local</span> <span class="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-721"><a href="#L-721"><span class="linenos" data-line="721"></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">"raw"</span> <span class="kr">then</span> </span><span id="L-722"><a href="#L-722"><span class="linenos" data-line="722"></span></a> <span class="kr">return</span> <span class="n">timestamp</span><span class="p">,</span> <span class="n">timestamp</span> </span><span id="L-723"><a href="#L-723"><span class="linenos" data-line="723"></span></a> <span class="kr">end</span> </span><span id="L-724"><a href="#L-724"><span class="linenos" data-line="724"></span></a> <span class="kd">local</span> <span class="n">post_format</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">calendar_add</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-726"><a href="#L-726"><span class="linenos" data-line="726"></span></a> <span class="kd">local</span> <span class="n">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-727"><a href="#L-727"><span class="linenos" data-line="727"></span></a> </span><span id="L-728"><a href="#L-728"><span class="linenos" data-line="728"></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">'-'</span> <span class="kr">then</span> </span><span id="L-729"><a href="#L-729"><span class="linenos" data-line="729"></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">"bc"</span><span class="p">]</span> </span><span id="L-730"><a href="#L-730"><span class="linenos" data-line="730"></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">'00'</span> <span class="kr">then</span> </span><span id="L-731"><a href="#L-731"><span class="linenos" data-line="731"></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">"ad"</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">elseif</span> <span class="n">precision</span> <span class="o">></span> <span class="mi">8</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="c1">-- calendar model</span> </span><span id="L-734"><a href="#L-734"><span class="linenos" data-line="734"></span></a> <span class="kd">local</span> <span class="n">calendar_model</span> <span class="o">=</span> <span class="p">{[</span><span class="s2">"Q12138"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"gregorian"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"Q1985727"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"gregorian"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"Q11184"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"julian"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"Q1985786"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"julian"</span><span class="p">}</span> </span><span id="L-735"><a href="#L-735"><span class="linenos" data-line="735"></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">'entity/'</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">if</span> <span class="p">(</span><span class="n">timestamp</span> <span class="o"><</span> <span class="s2">"+1582-10-15T00:00:00Z"</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">"gregorian"</span><span class="p">)</span> </span><span id="L-737"><a href="#L-737"><span class="linenos" data-line="737"></span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">timestamp</span> <span class="o">></span> <span class="s2">"+1582-10-04T00:00:00Z"</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">"julian"</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">then</span> </span><span id="L-739"><a href="#L-739"><span class="linenos" data-line="739"></span></a> <span class="n">calendar_add</span> <span class="o">=</span> <span class="s2">" <sup>("</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">'Wikibase-time-calendar-'</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">")</sup>"</span> </span><span id="L-740"><a href="#L-740"><span class="linenos" data-line="740"></span></a> <span class="kr">end</span> </span><span id="L-741"><a href="#L-741"><span class="linenos" data-line="741"></span></a> <span class="kr">end</span> </span><span id="L-742"><a href="#L-742"><span class="linenos" data-line="742"></span></a> </span><span id="L-743"><a href="#L-743"><span class="linenos" data-line="743"></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-744"><a href="#L-744"><span class="linenos" data-line="744"></span></a> <span class="kd">local</span> <span class="n">pattern</span> </span><span id="L-745"><a href="#L-745"><span class="linenos" data-line="745"></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">"function"</span> <span class="kr">then</span> </span><span id="L-746"><a href="#L-746"><span class="linenos" data-line="746"></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-747"><a href="#L-747"><span class="linenos" data-line="747"></span></a> <span class="kr">else</span> </span><span id="L-748"><a href="#L-748"><span class="linenos" data-line="748"></span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">form</span> </span><span id="L-749"><a href="#L-749"><span class="linenos" data-line="749"></span></a> <span class="kr">end</span> </span><span id="L-750"><a href="#L-750"><span class="linenos" data-line="750"></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-751"><a href="#L-751"><span class="linenos" data-line="751"></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">"$1"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-752"><a href="#L-752"><span class="linenos" data-line="752"></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">"$1"</span><span class="p">,</span> <span class="n">stamp</span><span class="p">)</span> </span><span id="L-753"><a href="#L-753"><span class="linenos" data-line="753"></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">'-'</span> <span class="kr">then</span> <span class="c1">-- formatDate() only supports years from 0</span> </span><span id="L-754"><a href="#L-754"><span class="linenos" data-line="754"></span></a> <span class="n">stamp</span> <span class="o">=</span> <span class="s1">'+'</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-755"><a href="#L-755"><span class="linenos" data-line="755"></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">'+'</span> <span class="kr">then</span> <span class="c1">-- not a valid timestamp, it is a number</span> </span><span id="L-756"><a href="#L-756"><span class="linenos" data-line="756"></span></a> <span class="n">stamp</span> <span class="o">=</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">"%04d"</span><span class="p">,</span> <span class="n">stamp</span><span class="p">)</span> </span><span id="L-757"><a href="#L-757"><span class="linenos" data-line="757"></span></a> <span class="kr">end</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">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-759"><a href="#L-759"><span class="linenos" data-line="759"></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">"^(%[?%[?)0+"</span><span class="p">,</span> <span class="s2">"%1"</span><span class="p">)</span> <span class="c1">-- suppress leading zeros</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="nb">string.gsub</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="s2">"( %[?%[?)0+"</span><span class="p">,</span> <span class="s2">"%1"</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">return</span> <span class="n">ret</span> </span><span id="L-762"><a href="#L-762"><span class="linenos" data-line="762"></span></a> <span class="kr">end</span> </span><span id="L-763"><a href="#L-763"><span class="linenos" data-line="763"></span></a> </span><span id="L-764"><a href="#L-764"><span class="linenos" data-line="764"></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-765"><a href="#L-765"><span class="linenos" data-line="765"></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">"$1"</span><span class="p">)</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="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">"$1"</span><span class="p">,</span> <span class="n">t</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">return</span> <span class="n">t</span> </span><span id="L-769"><a href="#L-769"><span class="linenos" data-line="769"></span></a> <span class="kr">end</span> </span><span id="L-770"><a href="#L-770"><span class="linenos" data-line="770"></span></a> </span><span id="L-771"><a href="#L-771"><span class="linenos" data-line="771"></span></a> <span class="kd">local</span> <span class="n">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">"[+-](%d+)"</span><span class="p">))</span> </span><span id="L-772"><a href="#L-772"><span class="linenos" data-line="772"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-773"><a href="#L-773"><span class="linenos" data-line="773"></span></a> </span><span id="L-774"><a href="#L-774"><span class="linenos" data-line="774"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o"><=</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-775"><a href="#L-775"><span class="linenos" data-line="775"></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-776"><a href="#L-776"><span class="linenos" data-line="776"></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-777"><a href="#L-777"><span class="linenos" data-line="777"></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-778"><a href="#L-778"><span class="linenos" data-line="778"></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">"bc"</span><span class="p">]</span> <span class="kr">then</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">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">"$1"</span><span class="p">,</span> <span class="n">relative</span><span class="p">)</span> </span><span id="L-780"><a href="#L-780"><span class="linenos" data-line="780"></span></a> <span class="kr">else</span> </span><span id="L-781"><a href="#L-781"><span class="linenos" data-line="781"></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">"$1"</span><span class="p">,</span> <span class="n">relative</span><span class="p">)</span> </span><span id="L-782"><a href="#L-782"><span class="linenos" data-line="782"></span></a> <span class="kr">end</span> </span><span id="L-783"><a href="#L-783"><span class="linenos" data-line="783"></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">"%d+"</span><span class="p">)</span> </span><span id="L-784"><a href="#L-784"><span class="linenos" data-line="784"></span></a> <span class="kr">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-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">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-786"><a href="#L-786"><span class="linenos" data-line="786"></span></a> <span class="kr">end</span> </span><span id="L-787"><a href="#L-787"><span class="linenos" data-line="787"></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-788"><a href="#L-788"><span class="linenos" data-line="788"></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-789"><a href="#L-789"><span class="linenos" data-line="789"></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-790"><a href="#L-790"><span class="linenos" data-line="790"></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-791"><a href="#L-791"><span class="linenos" data-line="791"></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-792"><a href="#L-792"><span class="linenos" data-line="792"></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-793"><a href="#L-793"><span class="linenos" data-line="793"></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-794"><a href="#L-794"><span class="linenos" data-line="794"></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-795"><a href="#L-795"><span class="linenos" data-line="795"></span></a> <span class="kr">elseif</span> <span class="n">intyear</span> <span class="o">></span> <span class="mi">9999</span> <span class="kr">then</span> <span class="c1">-- not a valid timestamp</span> </span><span id="L-796"><a href="#L-796"><span class="linenos" data-line="796"></span></a> <span class="kr">return</span> </span><span id="L-797"><a href="#L-797"><span class="linenos" data-line="797"></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">'Y'</span> <span class="kr">then</span> <span class="c1">-- precision is year</span> </span><span id="L-798"><a href="#L-798"><span class="linenos" data-line="798"></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-799"><a href="#L-799"><span class="linenos" data-line="799"></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-800"><a href="#L-800"><span class="linenos" data-line="800"></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-801"><a href="#L-801"><span class="linenos" data-line="801"></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">" + 1 day"</span><span class="p">)</span> <span class="c1">-- formatDate yyyy-mm-00 returns the previous month</span> </span><span id="L-802"><a href="#L-802"><span class="linenos" data-line="802"></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-803"><a href="#L-803"><span class="linenos" data-line="803"></span></a> <span class="kr">else</span> <span class="c1">-- precision 11, day</span> </span><span id="L-804"><a href="#L-804"><span class="linenos" data-line="804"></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-805"><a href="#L-805"><span class="linenos" data-line="805"></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-806"><a href="#L-806"><span class="linenos" data-line="806"></span></a> <span class="kr">end</span> </span><span id="L-807"><a href="#L-807"><span class="linenos" data-line="807"></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-808"><a href="#L-808"><span class="linenos" data-line="808"></span></a><span class="kr">end</span> </span><span id="L-809"><a href="#L-809"><span class="linenos" data-line="809"></span></a> </span><span id="L-810"><a href="#L-810"><span class="linenos" data-line="810"></span></a><span class="c1">-- format data value wikibase-entityid with data types wikibase-item or wikibase-property</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="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-812"><a href="#L-812"><span class="linenos" data-line="812"></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">'id'</span><span class="p">]</span> </span><span id="L-813"><a href="#L-813"><span class="linenos" data-line="813"></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">'raw'</span> <span class="kr">then</span> </span><span id="L-814"><a href="#L-814"><span class="linenos" data-line="814"></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-815"><a href="#L-815"><span class="linenos" data-line="815"></span></a> <span class="kr">end</span> </span><span id="L-816"><a href="#L-816"><span class="linenos" data-line="816"></span></a> <span class="kd">local</span> <span class="n">entity_page</span> <span class="o">=</span> <span class="s1">'Special:EntityPage/'</span> <span class="o">..</span> <span class="n">entity_id</span> </span><span id="L-817"><a href="#L-817"><span class="linenos" data-line="817"></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-818"><a href="#L-818"><span class="linenos" data-line="818"></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-819"><a href="#L-819"><span class="linenos" data-line="819"></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-820"><a href="#L-820"><span class="linenos" data-line="820"></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-821"><a href="#L-821"><span class="linenos" data-line="821"></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">'feminineform'</span> <span class="kr">then</span> </span><span id="L-822"><a href="#L-822"><span class="linenos" data-line="822"></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-823"><a href="#L-823"><span class="linenos" data-line="823"></span></a> <span class="kr">end</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">parameters</span><span class="p">.</span><span class="n">case</span> <span class="o">~=</span> <span class="s1">'gender'</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">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-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="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-828"><a href="#L-828"><span class="linenos" data-line="828"></span></a> <span class="kr">return</span> </span><span id="L-829"><a href="#L-829"><span class="linenos" data-line="829"></span></a> <span class="kr">end</span> </span><span id="L-830"><a href="#L-830"><span class="linenos" data-line="830"></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-831"><a href="#L-831"><span class="linenos" data-line="831"></span></a> <span class="kr">if</span> <span class="n">parameter</span> <span class="o">==</span> <span class="s1">'label'</span> <span class="kr">then</span> </span><span id="L-832"><a href="#L-832"><span class="linenos" data-line="832"></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-833"><a href="#L-833"><span class="linenos" data-line="833"></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-834"><a href="#L-834"><span class="linenos" data-line="834"></span></a> <span class="kr">elseif</span> <span class="n">parameter</span> <span class="o">==</span> <span class="s1">'sitelink'</span> <span class="kr">then</span> </span><span id="L-835"><a href="#L-835"><span class="linenos" data-line="835"></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">'d:'</span> <span class="o">..</span> <span class="n">entity_page</span><span class="p">)</span> </span><span id="L-836"><a href="#L-836"><span class="linenos" data-line="836"></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-837"><a href="#L-837"><span class="linenos" data-line="837"></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">''</span><span class="p">),</span> <span class="s1">'$1'</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-838"><a href="#L-838"><span class="linenos" data-line="838"></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">'$1'</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-839"><a href="#L-839"><span class="linenos" data-line="839"></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-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 class="ow">or</span> <span class="n">entity_id</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="kr">if</span> <span class="n">parameter</span> <span class="o">==</span> <span class="s2">"ucfirst"</span> <span class="ow">or</span> <span class="n">parameter</span> <span class="o">==</span> <span class="s2">"ucinternallink"</span> <span class="kr">then</span> </span><span id="L-843"><a href="#L-843"><span class="linenos" data-line="843"></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-844"><a href="#L-844"><span class="linenos" data-line="844"></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-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 class="c1">-- only first of a list, reset formatting for next ones</span> </span><span id="L-847"><a href="#L-847"><span class="linenos" data-line="847"></span></a> <span class="kr">if</span> <span class="n">parameter</span> <span class="o">==</span> <span class="s2">"ucinterlanllink"</span> <span class="kr">then</span> </span><span id="L-848"><a href="#L-848"><span class="linenos" data-line="848"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="s1">'internallink'</span> </span><span id="L-849"><a href="#L-849"><span class="linenos" data-line="849"></span></a> <span class="kr">else</span> </span><span id="L-850"><a href="#L-850"><span class="linenos" data-line="850"></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-851"><a href="#L-851"><span class="linenos" data-line="851"></span></a> <span class="kr">end</span> </span><span id="L-852"><a href="#L-852"><span class="linenos" data-line="852"></span></a> <span class="kr">end</span> </span><span id="L-853"><a href="#L-853"><span class="linenos" data-line="853"></span></a> </span><span id="L-854"><a href="#L-854"><span class="linenos" data-line="854"></span></a> <span class="kr">if</span> <span class="n">sitelink</span> <span class="kr">then</span> </span><span id="L-855"><a href="#L-855"><span class="linenos" data-line="855"></span></a> <span class="n">ret1</span> <span class="o">=</span> <span class="s1">'[['</span> <span class="o">..</span> <span class="n">sitelink</span> <span class="o">..</span> <span class="s1">'|'</span> <span class="o">..</span> <span class="n">labelcase</span> <span class="o">..</span> <span class="s1">']]'</span> </span><span id="L-856"><a href="#L-856"><span class="linenos" data-line="856"></span></a> <span class="n">ret2</span> <span class="o">=</span> <span class="n">labelcase</span> </span><span id="L-857"><a href="#L-857"><span class="linenos" data-line="857"></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">''</span><span class="p">,</span> <span class="s1">'internallink$'</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-858"><a href="#L-858"><span class="linenos" data-line="858"></span></a> <span class="n">ret1</span> <span class="o">=</span> <span class="s1">'[['</span> <span class="o">..</span> <span class="n">label</span> <span class="o">..</span> <span class="s1">'|'</span> <span class="o">..</span> <span class="n">labelcase</span> <span class="o">..</span> <span class="s1">']]'</span> </span><span id="L-859"><a href="#L-859"><span class="linenos" data-line="859"></span></a> <span class="n">ret2</span> <span class="o">=</span> <span class="n">labelcase</span> </span><span id="L-860"><a href="#L-860"><span class="linenos" data-line="860"></span></a> <span class="kr">else</span> </span><span id="L-861"><a href="#L-861"><span class="linenos" data-line="861"></span></a> <span class="n">ret1</span> <span class="o">=</span> <span class="s1">'[[d:'</span> <span class="o">..</span> <span class="n">entity_page</span> <span class="o">..</span> <span class="s1">'|'</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">']]'</span> </span><span id="L-862"><a href="#L-862"><span class="linenos" data-line="862"></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-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">end</span> </span><span id="L-865"><a href="#L-865"><span class="linenos" data-line="865"></span></a> </span><span id="L-866"><a href="#L-866"><span class="linenos" data-line="866"></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-867"><a href="#L-867"><span class="linenos" data-line="867"></span></a><span class="kr">end</span> </span><span id="L-868"><a href="#L-868"><span class="linenos" data-line="868"></span></a> </span><span id="L-869"><a href="#L-869"><span class="linenos" data-line="869"></span></a><span class="c1">-- format data type wikibase-lexeme</span> </span><span id="L-870"><a href="#L-870"><span class="linenos" data-line="870"></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-871"><a href="#L-871"><span class="linenos" data-line="871"></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">'id'</span><span class="p">]</span> </span><span id="L-872"><a href="#L-872"><span class="linenos" data-line="872"></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">'raw'</span> <span class="kr">then</span> </span><span id="L-873"><a href="#L-873"><span class="linenos" data-line="873"></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-874"><a href="#L-874"><span class="linenos" data-line="874"></span></a> <span class="kr">end</span> </span><span id="L-875"><a href="#L-875"><span class="linenos" data-line="875"></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-876"><a href="#L-876"><span class="linenos" data-line="876"></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">'lang'</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-877"><a href="#L-877"><span class="linenos" data-line="877"></span></a> <span class="kr">return</span> </span><span id="L-878"><a href="#L-878"><span class="linenos" data-line="878"></span></a> <span class="kr">end</span> </span><span id="L-879"><a href="#L-879"><span class="linenos" data-line="879"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="s1">'[[d:Special:EntityPage/'</span> <span class="o">..</span> <span class="n">entity_id</span> <span class="o">..</span> <span class="s1">'|'</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">']]'</span> </span><span id="L-880"><a href="#L-880"><span class="linenos" data-line="880"></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">'lang'</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">'lang'</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-881"><a href="#L-881"><span class="linenos" data-line="881"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">ret</span> <span class="o">..</span> <span class="s2">" <sup>("</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">")</sup>"</span> </span><span id="L-882"><a href="#L-882"><span class="linenos" data-line="882"></span></a> <span class="kr">end</span> </span><span id="L-883"><a href="#L-883"><span class="linenos" data-line="883"></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-884"><a href="#L-884"><span class="linenos" data-line="884"></span></a><span class="kr">end</span> </span><span id="L-885"><a href="#L-885"><span class="linenos" data-line="885"></span></a> </span><span id="L-886"><a href="#L-886"><span class="linenos" data-line="886"></span></a><span class="c1">-- format data type monolingualtext</span> </span><span id="L-887"><a href="#L-887"><span class="linenos" data-line="887"></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-888"><a href="#L-888"><span class="linenos" data-line="888"></span></a> <span class="c1">-- data fields: language [string], text [string]</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="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">==</span> <span class="s2">"lang"</span> <span class="ow">and</span> <span class="n">data</span><span class="p">[</span><span class="s2">"language"</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-891"><a href="#L-891"><span class="linenos" data-line="891"></span></a> <span class="kr">return</span> </span><span id="L-892"><a href="#L-892"><span class="linenos" data-line="892"></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">"notlang"</span> <span class="ow">and</span> <span class="n">data</span><span class="p">[</span><span class="s2">"language"</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-893"><a href="#L-893"><span class="linenos" data-line="893"></span></a> <span class="kr">return</span> </span><span id="L-894"><a href="#L-894"><span class="linenos" data-line="894"></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">"language"</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">"text"</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="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-896"><a href="#L-896"><span class="linenos" data-line="896"></span></a> <span class="kr">end</span> </span><span id="L-897"><a href="#L-897"><span class="linenos" data-line="897"></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">"text"</span><span class="p">]</span> </span><span id="L-898"><a href="#L-898"><span class="linenos" data-line="898"></span></a> <span class="kr">if</span> <span class="n">data</span><span class="p">[</span><span class="s2">"language"</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-899"><a href="#L-899"><span class="linenos" data-line="899"></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">'<span lang="$1">$2</span>'</span><span class="p">,</span> <span class="s1">'$[12]'</span><span class="p">,</span> <span class="p">{[</span><span class="s2">"$1"</span><span class="p">]</span><span class="o">=</span><span class="n">data</span><span class="p">[</span><span class="s2">"language"</span><span class="p">],</span> <span class="p">[</span><span class="s2">"$2"</span><span class="p">]</span><span class="o">=</span><span class="n">data</span><span class="p">[</span><span class="s2">"text"</span><span class="p">]})</span> </span><span id="L-900"><a href="#L-900"><span class="linenos" data-line="900"></span></a> <span class="kr">end</span> </span><span id="L-901"><a href="#L-901"><span class="linenos" data-line="901"></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">''</span><span class="p">),</span> <span class="s1">'$'</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-902"><a href="#L-902"><span class="linenos" data-line="902"></span></a> <span class="c1">-- output format defined with $text, $language</span> </span><span id="L-903"><a href="#L-903"><span class="linenos" data-line="903"></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">'$text'</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> </span><span id="L-904"><a href="#L-904"><span class="linenos" data-line="904"></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">'$language'</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="s2">"language"</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">end</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">result</span> </span><span id="L-907"><a href="#L-907"><span class="linenos" data-line="907"></span></a><span class="kr">end</span> </span><span id="L-908"><a href="#L-908"><span class="linenos" data-line="908"></span></a> </span><span id="L-909"><a href="#L-909"><span class="linenos" data-line="909"></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-910"><a href="#L-910"><span class="linenos" data-line="910"></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-911"><a href="#L-911"><span class="linenos" data-line="911"></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">'value'</span> <span class="kr">then</span> <span class="c1">-- see Special:ListDatatypes</span> </span><span id="L-912"><a href="#L-912"><span class="linenos" data-line="912"></span></a> <span class="c1">-- data value string</span> </span><span id="L-913"><a href="#L-913"><span class="linenos" data-line="913"></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">"string"</span> <span class="kr">then</span> </span><span id="L-914"><a href="#L-914"><span class="linenos" data-line="914"></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-915"><a href="#L-915"><span class="linenos" data-line="915"></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-916"><a href="#L-916"><span class="linenos" data-line="916"></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">"commonsMedia"</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">"geo-shape"</span> <span class="kr">then</span> </span><span id="L-917"><a href="#L-917"><span class="linenos" data-line="917"></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-918"><a href="#L-918"><span class="linenos" data-line="918"></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">"tabular-data"</span> <span class="kr">then</span> </span><span id="L-919"><a href="#L-919"><span class="linenos" data-line="919"></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-920"><a href="#L-920"><span class="linenos" data-line="920"></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">"url"</span> <span class="kr">then</span> </span><span id="L-921"><a href="#L-921"><span class="linenos" data-line="921"></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-922"><a href="#L-922"><span class="linenos" data-line="922"></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">"external-id"</span> <span class="kr">then</span> </span><span id="L-923"><a href="#L-923"><span class="linenos" data-line="923"></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-924"><a href="#L-924"><span class="linenos" data-line="924"></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">'math'</span> <span class="kr">then</span> </span><span id="L-925"><a href="#L-925"><span class="linenos" data-line="925"></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-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">datatype</span> <span class="o">==</span> <span class="s1">'musical-notation'</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">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-928"><a href="#L-928"><span class="linenos" data-line="928"></span></a> <span class="c1">-- data types other than string value</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">datatype</span> <span class="o">==</span> <span class="s1">'wikibase-item'</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">'wikibase-property'</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">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-931"><a href="#L-931"><span class="linenos" data-line="931"></span></a> <span class="kr">return</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">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-934"><a href="#L-934"><span class="linenos" data-line="934"></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">'wikibase-lexeme'</span> <span class="kr">then</span> </span><span id="L-935"><a href="#L-935"><span class="linenos" data-line="935"></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-936"><a href="#L-936"><span class="linenos" data-line="936"></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">'monolingualtext'</span> <span class="kr">then</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="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-938"><a href="#L-938"><span class="linenos" data-line="938"></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">"globe-coordinate"</span> <span class="kr">then</span> </span><span id="L-939"><a href="#L-939"><span class="linenos" data-line="939"></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-940"><a href="#L-940"><span class="linenos" data-line="940"></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">"quantity"</span> <span class="kr">then</span> </span><span id="L-941"><a href="#L-941"><span class="linenos" data-line="941"></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-942"><a href="#L-942"><span class="linenos" data-line="942"></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">"time"</span> <span class="kr">then</span> </span><span id="L-943"><a href="#L-943"><span class="linenos" data-line="943"></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-944"><a href="#L-944"><span class="linenos" data-line="944"></span></a> <span class="kr">end</span> </span><span id="L-945"><a href="#L-945"><span class="linenos" data-line="945"></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">'novalue'</span> <span class="kr">then</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">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">'raw'</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-947"><a href="#L-947"><span class="linenos" data-line="947"></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">'Wikibase-snakview-snaktypeselector-novalue'</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-948"><a href="#L-948"><span class="linenos" data-line="948"></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">'somevalue'</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">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">'raw'</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-950"><a href="#L-950"><span class="linenos" data-line="950"></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">'Wikibase-snakview-snaktypeselector-somevalue'</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-951"><a href="#L-951"><span class="linenos" data-line="951"></span></a> <span class="kr">end</span> </span><span id="L-952"><a href="#L-952"><span class="linenos" data-line="952"></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-953"><a href="#L-953"><span class="linenos" data-line="953"></span></a><span class="kr">end</span> </span><span id="L-954"><a href="#L-954"><span class="linenos" data-line="954"></span></a> </span><span id="L-955"><a href="#L-955"><span class="linenos" data-line="955"></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-956"><a href="#L-956"><span class="linenos" data-line="956"></span></a> <span class="kr">return</span> <span class="s1">'<span class="error">'</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">'</span>'</span> </span><span id="L-957"><a href="#L-957"><span class="linenos" data-line="957"></span></a><span class="kr">end</span> </span><span id="L-958"><a href="#L-958"><span class="linenos" data-line="958"></span></a> </span><span id="L-959"><a href="#L-959"><span class="linenos" data-line="959"></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-960"><a href="#L-960"><span class="linenos" data-line="960"></span></a> <span class="c1">-- a "snak" is Wikidata terminology for a typed key/value pair</span> </span><span id="L-961"><a href="#L-961"><span class="linenos" data-line="961"></span></a> <span class="c1">-- a claim consists of a main snak holding the main information of this claim,</span> </span><span id="L-962"><a href="#L-962"><span class="linenos" data-line="962"></span></a> <span class="c1">-- as well as a list of attribute snaks and a list of references snaks</span> </span><span id="L-963"><a href="#L-963"><span class="linenos" data-line="963"></span></a> <span class="kr">if</span> <span class="n">qualifierId</span> <span class="kr">then</span> </span><span id="L-964"><a href="#L-964"><span class="linenos" data-line="964"></span></a> <span class="c1">-- search the attribute snak with the given qualifier as key</span> </span><span id="L-965"><a href="#L-965"><span class="linenos" data-line="965"></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-966"><a href="#L-966"><span class="linenos" data-line="966"></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-967"><a href="#L-967"><span class="linenos" data-line="967"></span></a> <span class="kr">if</span> <span class="n">qualifier</span> <span class="kr">then</span> </span><span id="L-968"><a href="#L-968"><span class="linenos" data-line="968"></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">"monolingualtext"</span> <span class="kr">then</span> </span><span id="L-969"><a href="#L-969"><span class="linenos" data-line="969"></span></a> <span class="c1">-- iterate over monolingualtext qualifiers to get local language</span> </span><span id="L-970"><a href="#L-970"><span class="linenos" data-line="970"></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-971"><a href="#L-971"><span class="linenos" data-line="971"></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">"datavalue"</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">,</span> <span class="s2">"language"</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-972"><a href="#L-972"><span class="linenos" data-line="972"></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-973"><a href="#L-973"><span class="linenos" data-line="973"></span></a> <span class="kr">end</span> </span><span id="L-974"><a href="#L-974"><span class="linenos" data-line="974"></span></a> <span class="kr">end</span> </span><span id="L-975"><a href="#L-975"><span class="linenos" data-line="975"></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-976"><a href="#L-976"><span class="linenos" data-line="976"></span></a> <span class="kr">return</span> <span class="n">qualifier</span> </span><span id="L-977"><a href="#L-977"><span class="linenos" data-line="977"></span></a> <span class="kr">else</span> </span><span id="L-978"><a href="#L-978"><span class="linenos" data-line="978"></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-979"><a href="#L-979"><span class="linenos" data-line="979"></span></a> <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">end</span> </span><span id="L-982"><a href="#L-982"><span class="linenos" data-line="982"></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">"qualifier-not-found"</span><span class="p">)</span> </span><span id="L-983"><a href="#L-983"><span class="linenos" data-line="983"></span></a> <span class="kr">else</span> </span><span id="L-984"><a href="#L-984"><span class="linenos" data-line="984"></span></a> <span class="c1">-- otherwise return the main snak</span> </span><span id="L-985"><a href="#L-985"><span class="linenos" data-line="985"></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-986"><a href="#L-986"><span class="linenos" data-line="986"></span></a> <span class="kr">end</span> </span><span id="L-987"><a href="#L-987"><span class="linenos" data-line="987"></span></a><span class="kr">end</span> </span><span id="L-988"><a href="#L-988"><span class="linenos" data-line="988"></span></a> </span><span id="L-989"><a href="#L-989"><span class="linenos" data-line="989"></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-990"><a href="#L-990"><span class="linenos" data-line="990"></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-991"><a href="#L-991"><span class="linenos" data-line="991"></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-992"><a href="#L-992"><span class="linenos" data-line="992"></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-993"><a href="#L-993"><span class="linenos" data-line="993"></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-994"><a href="#L-994"><span class="linenos" data-line="994"></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-995"><a href="#L-995"><span class="linenos" data-line="995"></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-996"><a href="#L-996"><span class="linenos" data-line="996"></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-997"><a href="#L-997"><span class="linenos" data-line="997"></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-998"><a href="#L-998"><span class="linenos" data-line="998"></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-999"><a href="#L-999"><span class="linenos" data-line="999"></span></a> <span class="kr">end</span> </span><span id="L-1000"><a href="#L-1000"><span class="linenos" data-line="1000"></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-1001"><a href="#L-1001"><span class="linenos" data-line="1001"></span></a> <span class="kr">else</span> <span class="c1">-- a property or a qualifier</span> </span><span id="L-1002"><a href="#L-1002"><span class="linenos" data-line="1002"></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-1003"><a href="#L-1003"><span class="linenos" data-line="1003"></span></a> <span class="kr">end</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><span id="L-1006"><a href="#L-1006"><span class="linenos" data-line="1006"></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-1007"><a href="#L-1007"><span class="linenos" data-line="1007"></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">'/'</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-1008"><a href="#L-1008"><span class="linenos" data-line="1008"></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-1009"><a href="#L-1009"><span class="linenos" data-line="1009"></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-1010"><a href="#L-1010"><span class="linenos" data-line="1010"></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-1011"><a href="#L-1011"><span class="linenos" data-line="1011"></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">"formatting"</span><span class="p">]</span><span class="o">=</span><span class="s2">"raw"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"lang"</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-1012"><a href="#L-1012"><span class="linenos" data-line="1012"></span></a> <span class="kr">else</span> </span><span id="L-1013"><a href="#L-1013"><span class="linenos" data-line="1013"></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">"formatting"</span><span class="p">]</span><span class="o">=</span><span class="s2">"raw"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"lang"</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">"list"</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">"qseparator"</span><span class="p">]</span><span class="o">=</span><span class="s1">'/'</span><span class="p">,</span> <span class="p">[</span><span class="s2">"qconjunction"</span><span class="p">]</span><span class="o">=</span><span class="s1">'/'</span><span class="p">})</span> </span><span id="L-1014"><a href="#L-1014"><span class="linenos" data-line="1014"></span></a> <span class="kr">end</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="nb">string.sub</span><span class="p">(</span><span class="n">parent_raw</span> <span class="ow">or</span> <span class="s1">''</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">"Q"</span> <span class="kr">then</span> <span class="c1">-- protection for 'no value'</span> </span><span id="L-1016"><a href="#L-1016"><span class="linenos" data-line="1016"></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">'/'</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-1017"><a href="#L-1017"><span class="linenos" data-line="1017"></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-1018"><a href="#L-1018"><span class="linenos" data-line="1018"></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-1019"><a href="#L-1019"><span class="linenos" data-line="1019"></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-1020"><a href="#L-1020"><span class="linenos" data-line="1020"></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-1021"><a href="#L-1021"><span class="linenos" data-line="1021"></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-1022"><a href="#L-1022"><span class="linenos" data-line="1022"></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">"formatting"</span><span class="p">]</span><span class="o">=</span><span class="s2">"raw"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"lang"</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-1023"><a href="#L-1023"><span class="linenos" data-line="1023"></span></a> <span class="kr">end</span> </span><span id="L-1024"><a href="#L-1024"><span class="linenos" data-line="1024"></span></a> <span class="kr">end</span> </span><span id="L-1025"><a href="#L-1025"><span class="linenos" data-line="1025"></span></a> <span class="kr">end</span> </span><span id="L-1026"><a href="#L-1026"><span class="linenos" data-line="1026"></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-1027"><a href="#L-1027"><span class="linenos" data-line="1027"></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-1028"><a href="#L-1028"><span class="linenos" data-line="1028"></span></a> <span class="kr">end</span> </span><span id="L-1029"><a href="#L-1029"><span class="linenos" data-line="1029"></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-1030"><a href="#L-1030"><span class="linenos" data-line="1030"></span></a><span class="kr">end</span> </span><span id="L-1031"><a href="#L-1031"><span class="linenos" data-line="1031"></span></a> </span><span id="L-1032"><a href="#L-1032"><span class="linenos" data-line="1032"></span></a><span class="c1">-- see d:Help:Sources</span> </span><span id="L-1033"><a href="#L-1033"><span class="linenos" data-line="1033"></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-1034"><a href="#L-1034"><span class="linenos" data-line="1034"></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-1035"><a href="#L-1035"><span class="linenos" data-line="1035"></span></a> <span class="kr">return</span> <span class="s1">''</span><span class="p">,</span> <span class="kc">false</span> </span><span id="L-1036"><a href="#L-1036"><span class="linenos" data-line="1036"></span></a> <span class="kr">end</span> </span><span id="L-1037"><a href="#L-1037"><span class="linenos" data-line="1037"></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-1038"><a href="#L-1038"><span class="linenos" data-line="1038"></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-1039"><a href="#L-1039"><span class="linenos" data-line="1039"></span></a> <span class="kd">local</span> <span class="n">notproperref</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-1040"><a href="#L-1040"><span class="linenos" data-line="1040"></span></a> <span class="p">[</span><span class="s2">"P143"</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-1041"><a href="#L-1041"><span class="linenos" data-line="1041"></span></a> <span class="p">[</span><span class="s2">"P3452"</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-1042"><a href="#L-1042"><span class="linenos" data-line="1042"></span></a> <span class="p">[</span><span class="s2">"P887"</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-1043"><a href="#L-1043"><span class="linenos" data-line="1043"></span></a> <span class="p">[</span><span class="s2">"P4656"</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-1044"><a href="#L-1044"><span class="linenos" data-line="1044"></span></a> <span class="p">}</span> </span><span id="L-1045"><a href="#L-1045"><span class="linenos" data-line="1045"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1046"><a href="#L-1046"><span class="linenos" data-line="1046"></span></a> <span class="c1">-- traverse through all references</span> </span><span id="L-1047"><a href="#L-1047"><span class="linenos" data-line="1047"></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-1048"><a href="#L-1048"><span class="linenos" data-line="1048"></span></a> <span class="kd">local</span> <span class="n">refparts</span> </span><span id="L-1049"><a href="#L-1049"><span class="linenos" data-line="1049"></span></a> <span class="kd">local</span> <span class="n">refs</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1050"><a href="#L-1050"><span class="linenos" data-line="1050"></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-1051"><a href="#L-1051"><span class="linenos" data-line="1051"></span></a> <span class="kd">local</span> <span class="n">ref_id</span> </span><span id="L-1052"><a href="#L-1052"><span class="linenos" data-line="1052"></span></a> <span class="c1">-- traverse through all parts of the current reference</span> </span><span id="L-1053"><a href="#L-1053"><span class="linenos" data-line="1053"></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-1054"><a href="#L-1054"><span class="linenos" data-line="1054"></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-1055"><a href="#L-1055"><span class="linenos" data-line="1055"></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-1056"><a href="#L-1056"><span class="linenos" data-line="1056"></span></a> <span class="n">validref</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1057"><a href="#L-1057"><span class="linenos" data-line="1057"></span></a> <span class="kr">break</span> </span><span id="L-1058"><a href="#L-1058"><span class="linenos" data-line="1058"></span></a> <span class="kr">end</span> </span><span id="L-1059"><a href="#L-1059"><span class="linenos" data-line="1059"></span></a> <span class="kr">end</span> </span><span id="L-1060"><a href="#L-1060"><span class="linenos" data-line="1060"></span></a> <span class="kr">if</span> <span class="n">validref</span> <span class="kr">then</span> </span><span id="L-1061"><a href="#L-1061"><span class="linenos" data-line="1061"></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-1062"><a href="#L-1062"><span class="linenos" data-line="1062"></span></a> <span class="kr">if</span> <span class="n">snakidx</span> <span class="o">></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">", "</span> <span class="kr">end</span> </span><span id="L-1063"><a href="#L-1063"><span class="linenos" data-line="1063"></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">'external-id'</span> <span class="kr">then</span> </span><span id="L-1064"><a href="#L-1064"><span class="linenos" data-line="1064"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="n">refparts</span> <span class="ow">or</span> <span class="s1">''</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">'externalid'</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">''</span><span class="p">)</span> </span><span id="L-1065"><a href="#L-1065"><span class="linenos" data-line="1065"></span></a> <span class="kr">else</span> </span><span id="L-1066"><a href="#L-1066"><span class="linenos" data-line="1066"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="n">refparts</span> <span class="ow">or</span> <span class="s1">''</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">''</span><span class="p">)</span> </span><span id="L-1067"><a href="#L-1067"><span class="linenos" data-line="1067"></span></a> <span class="kr">end</span> </span><span id="L-1068"><a href="#L-1068"><span class="linenos" data-line="1068"></span></a> <span class="kr">end</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="n">snakkey</span><span class="p">]</span> <span class="o">=</span> <span class="n">refparts</span> </span><span id="L-1070"><a href="#L-1070"><span class="linenos" data-line="1070"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1071"><a href="#L-1071"><span class="linenos" data-line="1071"></span></a> <span class="kr">if</span> <span class="n">snakkey</span> <span class="o">==</span> <span class="s2">"P248"</span> <span class="kr">then</span> <span class="c1">-- stated in</span> </span><span id="L-1072"><a href="#L-1072"><span class="linenos" data-line="1072"></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">"datavalue"</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">,</span> <span class="s2">"id"</span><span class="p">})</span> </span><span id="L-1073"><a href="#L-1073"><span class="linenos" data-line="1073"></span></a> <span class="kr">end</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 class="kr">end</span> </span><span id="L-1076"><a href="#L-1076"><span class="linenos" data-line="1076"></span></a> </span><span id="L-1077"><a href="#L-1077"><span class="linenos" data-line="1077"></span></a> <span class="c1">-- fill missing values with parent item</span> </span><span id="L-1078"><a href="#L-1078"><span class="linenos" data-line="1078"></span></a> <span class="kr">if</span> <span class="n">ref_id</span> <span class="kr">then</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="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-1080"><a href="#L-1080"><span class="linenos" data-line="1080"></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">"mainsnak"</span><span class="p">})</span> </span><span id="L-1081"><a href="#L-1081"><span class="linenos" data-line="1081"></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-1082"><a href="#L-1082"><span class="linenos" data-line="1082"></span></a> <span class="kr">end</span> </span><span id="L-1083"><a href="#L-1083"><span class="linenos" data-line="1083"></span></a> </span><span id="L-1084"><a href="#L-1084"><span class="linenos" data-line="1084"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'P50'</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P50'</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">'P50'</span><span class="p">,</span> <span class="s1">'label'</span><span class="p">)</span> <span class="c1">-- author</span> </span><span id="L-1085"><a href="#L-1085"><span class="linenos" data-line="1085"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'P407'</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P407'</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">'P407'</span><span class="p">,</span> <span class="s1">'label'</span><span class="p">)</span> <span class="c1">-- language of work</span> </span><span id="L-1086"><a href="#L-1086"><span class="linenos" data-line="1086"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'P123'</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P123'</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">'P123'</span><span class="p">,</span> <span class="s1">'label'</span><span class="p">)</span> <span class="c1">-- publisher</span> </span><span id="L-1087"><a href="#L-1087"><span class="linenos" data-line="1087"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'P577'</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P577'</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">'P577'</span><span class="p">)</span> <span class="c1">-- date</span> </span><span id="L-1088"><a href="#L-1088"><span class="linenos" data-line="1088"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'P1433'</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P1433'</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">'P1433'</span><span class="p">,</span> <span class="s1">'label'</span><span class="p">)</span> <span class="c1">-- published in</span> </span><span id="L-1089"><a href="#L-1089"><span class="linenos" data-line="1089"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'P304'</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P304'</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">'P304'</span><span class="p">)</span> <span class="c1">-- page(s)</span> </span><span id="L-1090"><a href="#L-1090"><span class="linenos" data-line="1090"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'P433'</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P433'</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">'P433'</span><span class="p">)</span> <span class="c1">-- issue</span> </span><span id="L-1091"><a href="#L-1091"><span class="linenos" data-line="1091"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'P236'</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P236'</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">'P236'</span><span class="p">)</span> <span class="c1">-- ISSN</span> </span><span id="L-1092"><a href="#L-1092"><span class="linenos" data-line="1092"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'P356'</span><span class="p">]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P356'</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">'P356'</span><span class="p">)</span> <span class="c1">-- DOI</span> </span><span id="L-1093"><a href="#L-1093"><span class="linenos" data-line="1093"></span></a> <span class="kr">end</span> </span><span id="L-1094"><a href="#L-1094"><span class="linenos" data-line="1094"></span></a> </span><span id="L-1095"><a href="#L-1095"><span class="linenos" data-line="1095"></span></a> <span class="c1">-- get title of local templates for citing references</span> </span><span id="L-1096"><a href="#L-1096"><span class="linenos" data-line="1096"></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">'Q5637226'</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> </span><span id="L-1097"><a href="#L-1097"><span class="linenos" data-line="1097"></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">":"</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-1098"><a href="#L-1098"><span class="linenos" data-line="1098"></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">'Q5624899'</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> </span><span id="L-1099"><a href="#L-1099"><span class="linenos" data-line="1099"></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">":"</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> </span><span id="L-1100"><a href="#L-1100"><span class="linenos" data-line="1100"></span></a> </span><span id="L-1101"><a href="#L-1101"><span class="linenos" data-line="1101"></span></a> <span class="kd">local</span> <span class="n">citeParams</span> <span class="o">=</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">if</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P854'</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">'P1476'</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P248'</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-1103"><a href="#L-1103"><span class="linenos" data-line="1103"></span></a> <span class="c1">-- if both "reference URL" and "title" (or "stated in") are present, then use cite web 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">'cite'</span><span class="p">][</span><span class="s1">'url'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P854'</span><span class="p">]</span> </span><span id="L-1105"><a href="#L-1105"><span class="linenos" data-line="1105"></span></a> <span class="kr">if</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P248'</span><span class="p">]</span> <span class="ow">and</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P1476'</span><span class="p">]</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</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">'cite'</span><span class="p">][</span><span class="s1">'title'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P248'</span><span class="p">]:</span><span class="n">match</span><span class="p">(</span><span class="s2">"^%[%[.-|(.-)%]%]"</span><span class="p">)</span> </span><span id="L-1107"><a href="#L-1107"><span class="linenos" data-line="1107"></span></a> <span class="kr">else</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">'cite'</span><span class="p">][</span><span class="s1">'title'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P1476'</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">'cite'</span><span class="p">][</span><span class="s1">'website'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P248'</span><span class="p">]</span> </span><span id="L-1110"><a href="#L-1110"><span class="linenos" data-line="1110"></span></a> <span class="kr">end</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">'cite'</span><span class="p">][</span><span class="s1">'author'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P50'</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">'cite'</span><span class="p">][</span><span class="s1">'language'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P407'</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">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'publisher'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P123'</span><span class="p">]</span> </span><span id="L-1114"><a href="#L-1114"><span class="linenos" data-line="1114"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'date'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P577'</span><span class="p">]</span> </span><span id="L-1115"><a href="#L-1115"><span class="linenos" data-line="1115"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'pages'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P304'</span><span class="p">]</span> </span><span id="L-1116"><a href="#L-1116"><span class="linenos" data-line="1116"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'access-date'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P813'</span><span class="p">]</span> </span><span id="L-1117"><a href="#L-1117"><span class="linenos" data-line="1117"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'archive-url'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P1065'</span><span class="p">]</span> </span><span id="L-1118"><a href="#L-1118"><span class="linenos" data-line="1118"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'archive-date'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P2960'</span><span class="p">]</span> </span><span id="L-1119"><a href="#L-1119"><span class="linenos" data-line="1119"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'quote'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P1683'</span><span class="p">]</span> </span><span id="L-1120"><a href="#L-1120"><span class="linenos" data-line="1120"></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-1121"><a href="#L-1121"><span class="linenos" data-line="1121"></span></a> <span class="kr">elseif</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P1433'</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">'P1476'</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P248'</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-1122"><a href="#L-1122"><span class="linenos" data-line="1122"></span></a> <span class="c1">-- if both "published in" and "title" (or "stated in") are present, then use cite journal template</span> </span><span id="L-1123"><a href="#L-1123"><span class="linenos" data-line="1123"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'work'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P1433'</span><span class="p">]</span> </span><span id="L-1124"><a href="#L-1124"><span class="linenos" data-line="1124"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'title'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P1476'</span><span class="p">]</span> <span class="ow">or</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P248'</span><span class="p">]</span> </span><span id="L-1125"><a href="#L-1125"><span class="linenos" data-line="1125"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'author'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P50'</span><span class="p">]</span> </span><span id="L-1126"><a href="#L-1126"><span class="linenos" data-line="1126"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'date'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P577'</span><span class="p">]</span> </span><span id="L-1127"><a href="#L-1127"><span class="linenos" data-line="1127"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'issue'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P433'</span><span class="p">]</span> </span><span id="L-1128"><a href="#L-1128"><span class="linenos" data-line="1128"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'pages'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P304'</span><span class="p">]</span> </span><span id="L-1129"><a href="#L-1129"><span class="linenos" data-line="1129"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'language'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P407'</span><span class="p">]</span> </span><span id="L-1130"><a href="#L-1130"><span class="linenos" data-line="1130"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'issn'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P236'</span><span class="p">]</span> </span><span id="L-1131"><a href="#L-1131"><span class="linenos" data-line="1131"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'doi'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">refs</span><span class="p">[</span><span class="s1">'P356'</span><span class="p">]</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">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-1133"><a href="#L-1133"><span class="linenos" data-line="1133"></span></a> <span class="kr">elseif</span> <span class="n">validref</span> <span class="kr">then</span> </span><span id="L-1134"><a href="#L-1134"><span class="linenos" data-line="1134"></span></a> <span class="c1">-- raw ouput</span> </span><span id="L-1135"><a href="#L-1135"><span class="linenos" data-line="1135"></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">"snaks-order"</span><span class="p">]</span> </span><span id="L-1136"><a href="#L-1136"><span class="linenos" data-line="1136"></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-1137"><a href="#L-1137"><span class="linenos" data-line="1137"></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-1138"><a href="#L-1138"><span class="linenos" data-line="1138"></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-1139"><a href="#L-1139"><span class="linenos" data-line="1139"></span></a> <span class="kr">end</span> </span><span id="L-1140"><a href="#L-1140"><span class="linenos" data-line="1140"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-1141"><a href="#L-1141"><span class="linenos" data-line="1141"></span></a> <span class="kr">end</span> </span><span id="L-1142"><a href="#L-1142"><span class="linenos" data-line="1142"></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-1143"><a href="#L-1143"><span class="linenos" data-line="1143"></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-1144"><a href="#L-1144"><span class="linenos" data-line="1144"></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-1145"><a href="#L-1145"><span class="linenos" data-line="1145"></span></a> <span class="kr">end</span> </span><span id="L-1146"><a href="#L-1146"><span class="linenos" data-line="1146"></span></a> <span class="kr">end</span> </span><span id="L-1147"><a href="#L-1147"><span class="linenos" data-line="1147"></span></a> <span class="kd">local</span> <span class="n">italics</span> <span class="o">=</span> <span class="s2">"''"</span> </span><span id="L-1148"><a href="#L-1148"><span class="linenos" data-line="1148"></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-1149"><a href="#L-1149"><span class="linenos" data-line="1149"></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-1150"><a href="#L-1150"><span class="linenos" data-line="1150"></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">" "</span> <span class="ow">or</span> <span class="s2">""</span> </span><span id="L-1151"><a href="#L-1151"><span class="linenos" data-line="1151"></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="ow">or</span> <span class="s1">''</span><span class="p">,</span> <span class="s2">"^%l"</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">": "</span> </span><span id="L-1152"><a href="#L-1152"><span class="linenos" data-line="1152"></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">"."</span> </span><span id="L-1153"><a href="#L-1153"><span class="linenos" data-line="1153"></span></a> <span class="n">italics</span> <span class="o">=</span> <span class="s2">""</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">end</span> </span><span id="L-1157"><a href="#L-1157"><span class="linenos" data-line="1157"></span></a> </span><span id="L-1158"><a href="#L-1158"><span class="linenos" data-line="1158"></span></a> <span class="kr">if</span> <span class="n">refparts</span> <span class="kr">then</span> </span><span id="L-1159"><a href="#L-1159"><span class="linenos" data-line="1159"></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-1160"><a href="#L-1160"><span class="linenos" data-line="1160"></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">"ref"</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-1161"><a href="#L-1161"><span class="linenos" data-line="1161"></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-1162"><a href="#L-1162"><span class="linenos" data-line="1162"></span></a> <span class="kr">end</span> </span><span id="L-1163"><a href="#L-1163"><span class="linenos" data-line="1163"></span></a> <span class="kr">end</span> </span><span id="L-1164"><a href="#L-1164"><span class="linenos" data-line="1164"></span></a> </span><span id="L-1165"><a href="#L-1165"><span class="linenos" data-line="1165"></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><span id="L-1166"><a href="#L-1166"><span class="linenos" data-line="1166"></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-1167"><a href="#L-1167"><span class="linenos" data-line="1167"></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-1168"><a href="#L-1168"><span class="linenos" data-line="1168"></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">"[["</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">"]]"</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">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-1171"><a href="#L-1171"><span class="linenos" data-line="1171"></span></a> <span class="kr">else</span> </span><span id="L-1172"><a href="#L-1172"><span class="linenos" data-line="1172"></span></a> <span class="kr">return</span> <span class="s1">''</span><span class="p">,</span> <span class="kc">true</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">return</span> <span class="s1">''</span><span class="p">,</span> <span class="kc">false</span> </span><span id="L-1176"><a href="#L-1176"><span class="linenos" data-line="1176"></span></a><span class="kr">end</span> </span><span id="L-1177"><a href="#L-1177"><span class="linenos" data-line="1177"></span></a> </span><span id="L-1178"><a href="#L-1178"><span class="linenos" data-line="1178"></span></a><span class="c1">-- Set whitelist or blacklist values</span> </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">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-1180"><a href="#L-1180"><span class="linenos" data-line="1180"></span></a> <span class="kd">local</span> <span class="n">lists</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">'whitelist'</span><span class="p">]</span><span class="o">=</span><span class="p">{},</span> <span class="p">[</span><span class="s1">'blacklist'</span><span class="p">]</span><span class="o">=</span><span class="p">{},</span> <span class="p">[</span><span class="s1">'ignorevalue'</span><span class="p">]</span><span class="o">=</span><span class="p">{},</span> <span class="p">[</span><span class="s1">'selectvalue'</span><span class="p">]</span><span class="o">=</span><span class="p">{}}</span> </span><span id="L-1181"><a href="#L-1181"><span class="linenos" data-line="1181"></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-1182"><a href="#L-1182"><span class="linenos" data-line="1182"></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-1183"><a href="#L-1183"><span class="linenos" data-line="1183"></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-1184"><a href="#L-1184"><span class="linenos" data-line="1184"></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-1185"><a href="#L-1185"><span class="linenos" data-line="1185"></span></a> <span class="kd">local</span> <span class="n">pattern</span> <span class="o">=</span> <span class="s1">'Q%d+'</span> </span><span id="L-1186"><a href="#L-1186"><span class="linenos" data-line="1186"></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">'Q'</span> <span class="kr">then</span> </span><span id="L-1187"><a href="#L-1187"><span class="linenos" data-line="1187"></span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="s1">'[^%p%s]+'</span> </span><span id="L-1188"><a href="#L-1188"><span class="linenos" data-line="1188"></span></a> <span class="kr">end</span> </span><span id="L-1189"><a href="#L-1189"><span class="linenos" data-line="1189"></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-1190"><a href="#L-1190"><span class="linenos" data-line="1190"></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-1191"><a href="#L-1191"><span class="linenos" data-line="1191"></span></a> <span class="kr">end</span> </span><span id="L-1192"><a href="#L-1192"><span class="linenos" data-line="1192"></span></a> <span class="kr">end</span> </span><span id="L-1193"><a href="#L-1193"><span class="linenos" data-line="1193"></span></a> <span class="kr">end</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">return</span> <span class="n">lists</span><span class="p">[</span><span class="s1">'whitelist'</span><span class="p">],</span> <span class="n">lists</span><span class="p">[</span><span class="s1">'blacklist'</span><span class="p">],</span> <span class="n">lists</span><span class="p">[</span><span class="s1">'ignorevalue'</span><span class="p">],</span> <span class="n">lists</span><span class="p">[</span><span class="s1">'selectvalue'</span><span class="p">]</span> </span><span id="L-1196"><a href="#L-1196"><span class="linenos" data-line="1196"></span></a><span class="kr">end</span> </span><span id="L-1197"><a href="#L-1197"><span class="linenos" data-line="1197"></span></a> </span><span id="L-1198"><a href="#L-1198"><span class="linenos" data-line="1198"></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-1199"><a href="#L-1199"><span class="linenos" data-line="1199"></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-1200"><a href="#L-1200"><span class="linenos" data-line="1200"></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">"colformat"</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">""</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-1201"><a href="#L-1201"><span class="linenos" data-line="1201"></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">"convert"</span> <span class="o">..</span> <span class="n">column</span><span class="p">]</span> </span><span id="L-1202"><a href="#L-1202"><span class="linenos" data-line="1202"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">[</span><span class="s2">"case"</span> <span class="o">..</span> <span class="n">column</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1203"><a href="#L-1203"><span class="linenos" data-line="1203"></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">"case"</span> <span class="o">..</span> <span class="n">column</span><span class="p">]</span> </span><span id="L-1204"><a href="#L-1204"><span class="linenos" data-line="1204"></span></a> <span class="kr">end</span> </span><span id="L-1205"><a href="#L-1205"><span class="linenos" data-line="1205"></span></a> <span class="kr">return</span> <span class="n">column_params</span> </span><span id="L-1206"><a href="#L-1206"><span class="linenos" data-line="1206"></span></a><span class="kr">end</span> </span><span id="L-1207"><a href="#L-1207"><span class="linenos" data-line="1207"></span></a> </span><span id="L-1208"><a href="#L-1208"><span class="linenos" data-line="1208"></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-1209"><a href="#L-1209"><span class="linenos" data-line="1209"></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-1210"><a href="#L-1210"><span class="linenos" data-line="1210"></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">''</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">nil</span><span class="p">)</span> </span><span id="L-1211"><a href="#L-1211"><span class="linenos" data-line="1211"></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-1212"><a href="#L-1212"><span class="linenos" data-line="1212"></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">''</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">nil</span><span class="p">)</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">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-1215"><a href="#L-1215"><span class="linenos" data-line="1215"></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">":"</span><span class="p">)</span> <span class="kr">then</span> <span class="c1">-- remove prefix as Property:Pid</span> </span><span id="L-1216"><a href="#L-1216"><span class="linenos" data-line="1216"></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">":"</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> </span><span id="L-1217"><a href="#L-1217"><span class="linenos" data-line="1217"></span></a> <span class="kr">end</span> </span><span id="L-1218"><a href="#L-1218"><span class="linenos" data-line="1218"></span></a> <span class="kr">else</span> </span><span id="L-1219"><a href="#L-1219"><span class="linenos" data-line="1219"></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-1220"><a href="#L-1220"><span class="linenos" data-line="1220"></span></a> <span class="kr">end</span> </span><span id="L-1221"><a href="#L-1221"><span class="linenos" data-line="1221"></span></a> <span class="kr">return</span> <span class="n">id</span> </span><span id="L-1222"><a href="#L-1222"><span class="linenos" data-line="1222"></span></a><span class="kr">end</span> </span><span id="L-1223"><a href="#L-1223"><span class="linenos" data-line="1223"></span></a> </span><span id="L-1224"><a href="#L-1224"><span class="linenos" data-line="1224"></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-1225"><a href="#L-1225"><span class="linenos" data-line="1225"></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">'boolean'</span> <span class="kr">then</span> <span class="kr">return</span> <span class="n">value</span> </span><span id="L-1226"><a href="#L-1226"><span class="linenos" data-line="1226"></span></a> <span class="kr">elseif</span> <span class="n">value</span> <span class="o">==</span> <span class="s2">"false"</span> <span class="ow">or</span> <span class="n">value</span> <span class="o">==</span> <span class="s2">"no"</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-1227"><a href="#L-1227"><span class="linenos" data-line="1227"></span></a> <span class="kr">elseif</span> <span class="n">value</span> <span class="o">==</span> <span class="s2">"true"</span> <span class="ow">or</span> <span class="n">value</span> <span class="o">==</span> <span class="s2">"yes"</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1228"><a href="#L-1228"><span class="linenos" data-line="1228"></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-1229"><a href="#L-1229"><span class="linenos" data-line="1229"></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-1230"><a href="#L-1230"><span class="linenos" data-line="1230"></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-1231"><a href="#L-1231"><span class="linenos" data-line="1231"></span></a> <span class="kr">else</span> <span class="kr">return</span> <span class="kc">nil</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 class="kr">end</span> </span><span id="L-1234"><a href="#L-1234"><span class="linenos" data-line="1234"></span></a> </span><span id="L-1235"><a href="#L-1235"><span class="linenos" data-line="1235"></span></a><span class="c1">-- Main function claim ---------------------------------------------</span> </span><span id="L-1236"><a href="#L-1236"><span class="linenos" data-line="1236"></span></a><span class="c1">-- on debug console use: =p.claim{item="Q...", property="P...", ...}</span> </span><span id="L-1237"><a href="#L-1237"><span class="linenos" data-line="1237"></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-1238"><a href="#L-1238"><span class="linenos" data-line="1238"></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-1239"><a href="#L-1239"><span class="linenos" data-line="1239"></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-1240"><a href="#L-1240"><span class="linenos" data-line="1240"></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-1241"><a href="#L-1241"><span class="linenos" data-line="1241"></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-1242"><a href="#L-1242"><span class="linenos" data-line="1242"></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">"/"</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">'Sandboxlink-subpage-name'</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-1243"><a href="#L-1243"><span class="linenos" data-line="1243"></span></a> <span class="kr">end</span> </span><span id="L-1244"><a href="#L-1244"><span class="linenos" data-line="1244"></span></a> <span class="c1">--If a value is already set, use it</span> </span><span id="L-1245"><a href="#L-1245"><span class="linenos" data-line="1245"></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-1246"><a href="#L-1246"><span class="linenos" data-line="1246"></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">'NONE'</span> <span class="kr">then</span> </span><span id="L-1247"><a href="#L-1247"><span class="linenos" data-line="1247"></span></a> <span class="kr">return</span> </span><span id="L-1248"><a href="#L-1248"><span class="linenos" data-line="1248"></span></a> <span class="kr">else</span> </span><span id="L-1249"><a href="#L-1249"><span class="linenos" data-line="1249"></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-1250"><a href="#L-1250"><span class="linenos" data-line="1250"></span></a> <span class="kr">end</span> </span><span id="L-1251"><a href="#L-1251"><span class="linenos" data-line="1251"></span></a> <span class="kr">end</span> </span><span id="L-1252"><a href="#L-1252"><span class="linenos" data-line="1252"></span></a> </span><span id="L-1253"><a href="#L-1253"><span class="linenos" data-line="1253"></span></a> <span class="c1">-- arguments</span> </span><span id="L-1254"><a href="#L-1254"><span class="linenos" data-line="1254"></span></a> <span class="kd">local</span> <span class="n">parameters</span> <span class="o">=</span> <span class="p">{}</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">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-1256"><a href="#L-1256"><span class="linenos" data-line="1256"></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-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">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">""</span><span class="p">)</span> </span><span id="L-1258"><a href="#L-1258"><span class="linenos" data-line="1258"></span></a> <span class="kd">local</span> <span class="n">qualifierId</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1259"><a href="#L-1259"><span class="linenos" data-line="1259"></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">""</span><span class="p">))</span> </span><span id="L-1260"><a href="#L-1260"><span class="linenos" data-line="1260"></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-1261"><a href="#L-1261"><span class="linenos" data-line="1261"></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">"qualifier"</span> <span class="o">..</span> <span class="n">i</span><span class="p">])</span> <span class="kr">do</span> </span><span id="L-1262"><a href="#L-1262"><span class="linenos" data-line="1262"></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">"qualifier"</span> <span class="o">..</span> <span class="n">i</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">i</span> <span class="o">=</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-1264"><a href="#L-1264"><span class="linenos" data-line="1264"></span></a> <span class="kr">end</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">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-1266"><a href="#L-1266"><span class="linenos" data-line="1266"></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-1267"><a href="#L-1267"><span class="linenos" data-line="1267"></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-1268"><a href="#L-1268"><span class="linenos" data-line="1268"></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-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">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">'bestrank'</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">listmax</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">listmax</span> </span><span id="L-1271"><a href="#L-1271"><span class="linenos" data-line="1271"></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-1272"><a href="#L-1272"><span class="linenos" data-line="1272"></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">"number"</span> <span class="kr">then</span> <span class="c1">-- backwards compatibility</span> </span><span id="L-1273"><a href="#L-1273"><span class="linenos" data-line="1273"></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-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">list</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1275"><a href="#L-1275"><span class="linenos" data-line="1275"></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">"bestrank"</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">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">"bestrank"</span> </span><span id="L-1277"><a href="#L-1277"><span class="linenos" data-line="1277"></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-1278"><a href="#L-1278"><span class="linenos" data-line="1278"></span></a> <span class="kr">end</span> </span><span id="L-1279"><a href="#L-1279"><span class="linenos" data-line="1279"></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-1280"><a href="#L-1280"><span class="linenos" data-line="1280"></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-1281"><a href="#L-1281"><span class="linenos" data-line="1281"></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-1282"><a href="#L-1282"><span class="linenos" data-line="1282"></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-1283"><a href="#L-1283"><span class="linenos" data-line="1283"></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-1284"><a href="#L-1284"><span class="linenos" data-line="1284"></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-1285"><a href="#L-1285"><span class="linenos" data-line="1285"></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-1286"><a href="#L-1286"><span class="linenos" data-line="1286"></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">""</span><span class="p">)</span> <span class="o">~=</span> <span class="s2">"-1"</span> </span><span id="L-1287"><a href="#L-1287"><span class="linenos" data-line="1287"></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-1288"><a href="#L-1288"><span class="linenos" data-line="1288"></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-1289"><a href="#L-1289"><span class="linenos" data-line="1289"></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-1290"><a href="#L-1290"><span class="linenos" data-line="1290"></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-1291"><a href="#L-1291"><span class="linenos" data-line="1291"></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-1292"><a href="#L-1292"><span class="linenos" data-line="1292"></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-1293"><a href="#L-1293"><span class="linenos" data-line="1293"></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-1294"><a href="#L-1294"><span class="linenos" data-line="1294"></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">"raw"</span> <span class="kr">then</span> </span><span id="L-1295"><a href="#L-1295"><span class="linenos" data-line="1295"></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-1296"><a href="#L-1296"><span class="linenos" data-line="1296"></span></a> <span class="kr">else</span> </span><span id="L-1297"><a href="#L-1297"><span class="linenos" data-line="1297"></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-1298"><a href="#L-1298"><span class="linenos" data-line="1298"></span></a> <span class="kr">end</span> </span><span id="L-1299"><a href="#L-1299"><span class="linenos" data-line="1299"></span></a> </span><span id="L-1300"><a href="#L-1300"><span class="linenos" data-line="1300"></span></a> <span class="c1">-- fetch property</span> </span><span id="L-1301"><a href="#L-1301"><span class="linenos" data-line="1301"></span></a> <span class="kd">local</span> <span class="n">claims</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1302"><a href="#L-1302"><span class="linenos" data-line="1302"></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">'bestrank'</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">'lang'</span> </span><span id="L-1303"><a href="#L-1303"><span class="linenos" data-line="1303"></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">'P%d+'</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1304"><a href="#L-1304"><span class="linenos" data-line="1304"></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-1305"><a href="#L-1305"><span class="linenos" data-line="1305"></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-1306"><a href="#L-1306"><span class="linenos" data-line="1306"></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-1307"><a href="#L-1307"><span class="linenos" data-line="1307"></span></a> <span class="kr">break</span> </span><span id="L-1308"><a href="#L-1308"><span class="linenos" data-line="1308"></span></a> <span class="kr">end</span> </span><span id="L-1309"><a href="#L-1309"><span class="linenos" data-line="1309"></span></a> <span class="kr">end</span> </span><span id="L-1310"><a href="#L-1310"><span class="linenos" data-line="1310"></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-1311"><a href="#L-1311"><span class="linenos" data-line="1311"></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">"property-not-found"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">default</span> </span><span id="L-1312"><a href="#L-1312"><span class="linenos" data-line="1312"></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">'num'</span> <span class="ow">and</span> <span class="mi">0</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-1313"><a href="#L-1313"><span class="linenos" data-line="1313"></span></a> <span class="kr">end</span> </span><span id="L-1314"><a href="#L-1314"><span class="linenos" data-line="1314"></span></a> </span><span id="L-1315"><a href="#L-1315"><span class="linenos" data-line="1315"></span></a> <span class="c1">-- defaults for table</span> </span><span id="L-1316"><a href="#L-1316"><span class="linenos" data-line="1316"></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">""</span><span class="p">,</span> <span class="s2">""</span> </span><span id="L-1317"><a href="#L-1317"><span class="linenos" data-line="1317"></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-1318"><a href="#L-1318"><span class="linenos" data-line="1318"></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-1319"><a href="#L-1319"><span class="linenos" data-line="1319"></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">"table"</span> <span class="kr">then</span> </span><span id="L-1320"><a href="#L-1320"><span class="linenos" data-line="1320"></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">"<br />"</span> </span><span id="L-1321"><a href="#L-1321"><span class="linenos" data-line="1321"></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">"<br />"</span> </span><span id="L-1322"><a href="#L-1322"><span class="linenos" data-line="1322"></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">'Comma-separator'</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-1323"><a href="#L-1323"><span class="linenos" data-line="1323"></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-1324"><a href="#L-1324"><span class="linenos" data-line="1324"></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-1325"><a href="#L-1325"><span class="linenos" data-line="1325"></span></a> <span class="n">rowformat</span> <span class="o">=</span> <span class="s2">"$0 ($1"</span> </span><span id="L-1326"><a href="#L-1326"><span class="linenos" data-line="1326"></span></a> <span class="n">i</span> <span class="o">=</span> <span class="mi">2</span> </span><span id="L-1327"><a href="#L-1327"><span class="linenos" data-line="1327"></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-1328"><a href="#L-1328"><span class="linenos" data-line="1328"></span></a> <span class="n">rowformat</span> <span class="o">=</span> <span class="n">rowformat</span> <span class="o">..</span> <span class="s2">", $"</span> <span class="o">..</span> <span class="n">i</span> </span><span id="L-1329"><a href="#L-1329"><span class="linenos" data-line="1329"></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-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 class="n">rowformat</span> <span class="o">=</span> <span class="n">rowformat</span> <span class="o">..</span> <span class="s2">")"</span> </span><span id="L-1332"><a href="#L-1332"><span class="linenos" data-line="1332"></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">"^[*#]"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1333"><a href="#L-1333"><span class="linenos" data-line="1333"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span> <span class="o">=</span> <span class="s2">"</li><li>"</span> </span><span id="L-1334"><a href="#L-1334"><span class="linenos" data-line="1334"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span> <span class="o">=</span> <span class="s2">"</li><li>"</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">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">"^[*#]"</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"*"</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="n">preformat</span> <span class="o">=</span> <span class="s2">"<ul><li>"</span> </span><span id="L-1337"><a href="#L-1337"><span class="linenos" data-line="1337"></span></a> <span class="n">postformat</span> <span class="o">=</span> <span class="s2">"</li></ul>"</span> </span><span id="L-1338"><a href="#L-1338"><span class="linenos" data-line="1338"></span></a> <span class="kr">else</span> </span><span id="L-1339"><a href="#L-1339"><span class="linenos" data-line="1339"></span></a> <span class="n">preformat</span> <span class="o">=</span> <span class="s2">"<ol><li>"</span> </span><span id="L-1340"><a href="#L-1340"><span class="linenos" data-line="1340"></span></a> <span class="n">postformat</span> <span class="o">=</span> <span class="s2">"</li></ol>"</span> </span><span id="L-1341"><a href="#L-1341"><span class="linenos" data-line="1341"></span></a> <span class="kr">end</span> </span><span id="L-1342"><a href="#L-1342"><span class="linenos" data-line="1342"></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">"^[*#] ?"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</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><span id="L-1345"><a href="#L-1345"><span class="linenos" data-line="1345"></span></a> <span class="c1">-- set whitelist and blacklist values</span> </span><span id="L-1346"><a href="#L-1346"><span class="linenos" data-line="1346"></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-1347"><a href="#L-1347"><span class="linenos" data-line="1347"></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-1348"><a href="#L-1348"><span class="linenos" data-line="1348"></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-1349"><a href="#L-1349"><span class="linenos" data-line="1349"></span></a> <span class="kr">end</span> </span><span id="L-1350"><a href="#L-1350"><span class="linenos" data-line="1350"></span></a> </span><span id="L-1351"><a href="#L-1351"><span class="linenos" data-line="1351"></span></a> <span class="c1">-- set feminine case if gender is requested</span> </span><span id="L-1352"><a href="#L-1352"><span class="linenos" data-line="1352"></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-1353"><a href="#L-1353"><span class="linenos" data-line="1353"></span></a> <span class="kd">local</span> <span class="n">idgender</span> </span><span id="L-1354"><a href="#L-1354"><span class="linenos" data-line="1354"></span></a> <span class="kr">if</span> <span class="n">itemgender</span> <span class="kr">then</span> </span><span id="L-1355"><a href="#L-1355"><span class="linenos" data-line="1355"></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">"^P%d+$"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1356"><a href="#L-1356"><span class="linenos" data-line="1356"></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">"mainsnak"</span><span class="p">,</span> <span class="s2">"datavalue"</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">,</span> <span class="s2">"id"</span><span class="p">})</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">snak_id</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">idgender</span> <span class="o">=</span> <span class="n">snak_id</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">elseif</span> <span class="nb">string.match</span><span class="p">(</span><span class="n">itemgender</span><span class="p">,</span> <span class="s2">"^Q%d+$"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1361"><a href="#L-1361"><span class="linenos" data-line="1361"></span></a> <span class="n">idgender</span> <span class="o">=</span> <span class="n">itemgender</span> </span><span id="L-1362"><a href="#L-1362"><span class="linenos" data-line="1362"></span></a> <span class="kr">end</span> </span><span id="L-1363"><a href="#L-1363"><span class="linenos" data-line="1363"></span></a> <span class="kr">end</span> </span><span id="L-1364"><a href="#L-1364"><span class="linenos" data-line="1364"></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-1365"><a href="#L-1365"><span class="linenos" data-line="1365"></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">"gender"</span> <span class="ow">or</span> <span class="n">idgender</span> <span class="kr">then</span> </span><span id="L-1366"><a href="#L-1366"><span class="linenos" data-line="1366"></span></a> <span class="n">gender_requested</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1367"><a href="#L-1367"><span class="linenos" data-line="1367"></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">"table"</span> <span class="kr">then</span> </span><span id="L-1368"><a href="#L-1368"><span class="linenos" data-line="1368"></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-1369"><a href="#L-1369"><span class="linenos" data-line="1369"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">[</span><span class="s2">"case"</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">"case"</span> <span class="o">..</span> <span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"gender"</span> <span class="kr">then</span> </span><span id="L-1370"><a href="#L-1370"><span class="linenos" data-line="1370"></span></a> <span class="n">gender_requested</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1371"><a href="#L-1371"><span class="linenos" data-line="1371"></span></a> <span class="kr">break</span> </span><span id="L-1372"><a href="#L-1372"><span class="linenos" data-line="1372"></span></a> <span class="kr">end</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="kr">end</span> </span><span id="L-1375"><a href="#L-1375"><span class="linenos" data-line="1375"></span></a> <span class="kr">if</span> <span class="n">gender_requested</span> <span class="kr">then</span> </span><span id="L-1376"><a href="#L-1376"><span class="linenos" data-line="1376"></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-1377"><a href="#L-1377"><span class="linenos" data-line="1377"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">gender</span> <span class="o">=</span> <span class="s2">"feminineform"</span> </span><span id="L-1378"><a href="#L-1378"><span class="linenos" data-line="1378"></span></a> <span class="kr">end</span> </span><span id="L-1379"><a href="#L-1379"><span class="linenos" data-line="1379"></span></a> <span class="kr">end</span> </span><span id="L-1380"><a href="#L-1380"><span class="linenos" data-line="1380"></span></a> </span><span id="L-1381"><a href="#L-1381"><span class="linenos" data-line="1381"></span></a> <span class="c1">-- get initial sort indices</span> </span><span id="L-1382"><a href="#L-1382"><span class="linenos" data-line="1382"></span></a> <span class="kd">local</span> <span class="n">sortindices</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1383"><a href="#L-1383"><span class="linenos" data-line="1383"></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-1384"><a href="#L-1384"><span class="linenos" data-line="1384"></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-1385"><a href="#L-1385"><span class="linenos" data-line="1385"></span></a> <span class="kr">end</span> </span><span id="L-1386"><a href="#L-1386"><span class="linenos" data-line="1386"></span></a> <span class="c1">-- sort by claim rank</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">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-1388"><a href="#L-1388"><span class="linenos" data-line="1388"></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-1389"><a href="#L-1389"><span class="linenos" data-line="1389"></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">"normal"</span><span class="p">]</span> <span class="o">..</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">"%08d"</span><span class="p">,</span> <span class="n">a</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">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">"normal"</span><span class="p">]</span> <span class="o">..</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">"%08d"</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span> </span><span id="L-1391"><a href="#L-1391"><span class="linenos" data-line="1391"></span></a> <span class="kr">return</span> <span class="n">ranka</span> <span class="o"><</span> <span class="n">rankb</span> </span><span id="L-1392"><a href="#L-1392"><span class="linenos" data-line="1392"></span></a> <span class="kr">end</span> </span><span id="L-1393"><a href="#L-1393"><span class="linenos" data-line="1393"></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-1394"><a href="#L-1394"><span class="linenos" data-line="1394"></span></a> </span><span id="L-1395"><a href="#L-1395"><span class="linenos" data-line="1395"></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-1396"><a href="#L-1396"><span class="linenos" data-line="1396"></span></a> <span class="kd">local</span> <span class="nb">error</span> </span><span id="L-1397"><a href="#L-1397"><span class="linenos" data-line="1397"></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">"table"</span> <span class="kr">then</span> </span><span id="L-1398"><a href="#L-1398"><span class="linenos" data-line="1398"></span></a> <span class="c1">-- convert LF to line feed, <br /> may not work on some cases</span> </span><span id="L-1399"><a href="#L-1399"><span class="linenos" data-line="1399"></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">"LF"</span> <span class="ow">and</span> <span class="s2">"</span><span class="se">\010</span><span class="s2">"</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span> </span><span id="L-1400"><a href="#L-1400"><span class="linenos" data-line="1400"></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">"LF"</span> <span class="ow">and</span> <span class="s2">"</span><span class="se">\010</span><span class="s2">"</span> <span class="ow">or</span> <span class="n">parameters</span><span class="p">.</span><span class="n">conjunction</span> </span><span id="L-1401"><a href="#L-1401"><span class="linenos" data-line="1401"></span></a> <span class="c1">-- i18n separators</span> </span><span id="L-1402"><a href="#L-1402"><span class="linenos" data-line="1402"></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">'Comma-separator'</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-1403"><a href="#L-1403"><span class="linenos" data-line="1403"></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">'And'</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">'Word-separator'</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-1404"><a href="#L-1404"><span class="linenos" data-line="1404"></span></a> <span class="c1">-- iterate over all elements and return their value (if existing)</span> </span><span id="L-1405"><a href="#L-1405"><span class="linenos" data-line="1405"></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-1406"><a href="#L-1406"><span class="linenos" data-line="1406"></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-1407"><a href="#L-1407"><span class="linenos" data-line="1407"></span></a> <span class="kd">local</span> <span class="n">values</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1408"><a href="#L-1408"><span class="linenos" data-line="1408"></span></a> <span class="kd">local</span> <span class="n">sortkeys</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1409"><a href="#L-1409"><span class="linenos" data-line="1409"></span></a> <span class="kd">local</span> <span class="n">refs</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1410"><a href="#L-1410"><span class="linenos" data-line="1410"></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-1411"><a href="#L-1411"><span class="linenos" data-line="1411"></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-1412"><a href="#L-1412"><span class="linenos" data-line="1412"></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-1413"><a href="#L-1413"><span class="linenos" data-line="1413"></span></a> <span class="kd">local</span> <span class="n">reference</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1414"><a href="#L-1414"><span class="linenos" data-line="1414"></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-1415"><a href="#L-1415"><span class="linenos" data-line="1415"></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">"table"</span> <span class="kr">then</span> </span><span id="L-1416"><a href="#L-1416"><span class="linenos" data-line="1416"></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">"0"</span><span class="p">)</span> </span><span id="L-1417"><a href="#L-1417"><span class="linenos" data-line="1417"></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-1418"><a href="#L-1418"><span class="linenos" data-line="1418"></span></a> <span class="kr">if</span> <span class="n">value</span> <span class="kr">then</span> </span><span id="L-1419"><a href="#L-1419"><span class="linenos" data-line="1419"></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-1420"><a href="#L-1420"><span class="linenos" data-line="1420"></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-1421"><a href="#L-1421"><span class="linenos" data-line="1421"></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-1422"><a href="#L-1422"><span class="linenos" data-line="1422"></span></a> <span class="kr">if</span> <span class="n">whitelist</span><span class="p">[</span><span class="s2">"0"</span><span class="p">]</span> <span class="ow">or</span> <span class="n">blacklist</span><span class="p">[</span><span class="s2">"0"</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1423"><a href="#L-1423"><span class="linenos" data-line="1423"></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">"formatting"</span><span class="p">]</span><span class="o">=</span><span class="s2">"raw"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"lang"</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-1424"><a href="#L-1424"><span class="linenos" data-line="1424"></span></a> <span class="kr">if</span> <span class="n">whitelist</span><span class="p">[</span><span class="s2">"0"</span><span class="p">]</span> <span class="ow">and</span> <span class="n">whitelist</span><span class="p">[</span><span class="s2">"0"</span><span class="p">][</span><span class="n">valueraw</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1425"><a href="#L-1425"><span class="linenos" data-line="1425"></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-1426"><a href="#L-1426"><span class="linenos" data-line="1426"></span></a> <span class="kr">elseif</span> <span class="n">blacklist</span><span class="p">[</span><span class="s2">"0"</span><span class="p">]</span> <span class="ow">and</span> <span class="n">blacklist</span><span class="p">[</span><span class="s2">"0"</span><span class="p">][</span><span class="n">valueraw</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1427"><a href="#L-1427"><span class="linenos" data-line="1427"></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-1428"><a href="#L-1428"><span class="linenos" data-line="1428"></span></a> <span class="kr">end</span> </span><span id="L-1429"><a href="#L-1429"><span class="linenos" data-line="1429"></span></a> <span class="kr">end</span> </span><span id="L-1430"><a href="#L-1430"><span class="linenos" data-line="1430"></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-1431"><a href="#L-1431"><span class="linenos" data-line="1431"></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-1432"><a href="#L-1432"><span class="linenos" data-line="1432"></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-1433"><a href="#L-1433"><span class="linenos" data-line="1433"></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-1434"><a href="#L-1434"><span class="linenos" data-line="1434"></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-1435"><a href="#L-1435"><span class="linenos" data-line="1435"></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-1436"><a href="#L-1436"><span class="linenos" data-line="1436"></span></a> <span class="kr">else</span> </span><span id="L-1437"><a href="#L-1437"><span class="linenos" data-line="1437"></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">'%s*OR%s*'</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1438"><a href="#L-1438"><span class="linenos" data-line="1438"></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">".+/.+"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1439"><a href="#L-1439"><span class="linenos" data-line="1439"></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-1440"><a href="#L-1440"><span class="linenos" data-line="1440"></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">"^/.+"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1441"><a href="#L-1441"><span class="linenos" data-line="1441"></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-1442"><a href="#L-1442"><span class="linenos" data-line="1442"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">claim2</span> <span class="o">></span> <span class="mi">0</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="c1">-- only first value of a property as alternative to a qualifier</span> </span><span id="L-1444"><a href="#L-1444"><span class="linenos" data-line="1444"></span></a> <span class="c1">-- multiple values may not be related to a given raw of the table</span> </span><span id="L-1445"><a href="#L-1445"><span class="linenos" data-line="1445"></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-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">else</span> </span><span id="L-1448"><a href="#L-1448"><span class="linenos" data-line="1448"></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-1449"><a href="#L-1449"><span class="linenos" data-line="1449"></span></a> <span class="kr">end</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">valueq</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">qual</span> <span class="o">=</span> <span class="n">q</span> </span><span id="L-1452"><a href="#L-1452"><span class="linenos" data-line="1452"></span></a> <span class="kr">break</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">end</span> </span><span id="L-1455"><a href="#L-1455"><span class="linenos" data-line="1455"></span></a> <span class="kr">end</span> </span><span id="L-1456"><a href="#L-1456"><span class="linenos" data-line="1456"></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">"col"</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-1457"><a href="#L-1457"><span class="linenos" data-line="1457"></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">"col"</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-1458"><a href="#L-1458"><span class="linenos" data-line="1458"></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-1459"><a href="#L-1459"><span class="linenos" data-line="1459"></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">"formatting"</span><span class="p">]</span><span class="o">=</span><span class="s2">"raw"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"lang"</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">"list"</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-1460"><a href="#L-1460"><span class="linenos" data-line="1460"></span></a> <span class="kr">if</span> <span class="n">valueq</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="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-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">whitelist</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">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-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">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-1468"><a href="#L-1468"><span class="linenos" data-line="1468"></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-1469"><a href="#L-1469"><span class="linenos" data-line="1469"></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-1470"><a href="#L-1470"><span class="linenos" data-line="1470"></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-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">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-1474"><a href="#L-1474"><span class="linenos" data-line="1474"></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-1475"><a href="#L-1475"><span class="linenos" data-line="1475"></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-1476"><a href="#L-1476"><span class="linenos" data-line="1476"></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">"col"</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-1477"><a href="#L-1477"><span class="linenos" data-line="1477"></span></a> <span class="kr">end</span> </span><span id="L-1478"><a href="#L-1478"><span class="linenos" data-line="1478"></span></a> <span class="kr">end</span> </span><span id="L-1479"><a href="#L-1479"><span class="linenos" data-line="1479"></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-1480"><a href="#L-1480"><span class="linenos" data-line="1480"></span></a> <span class="kd">local</span> <span class="n">selected</span> </span><span id="L-1481"><a href="#L-1481"><span class="linenos" data-line="1481"></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-1482"><a href="#L-1482"><span class="linenos" data-line="1482"></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-1483"><a href="#L-1483"><span class="linenos" data-line="1483"></span></a> <span class="n">selected</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1484"><a href="#L-1484"><span class="linenos" data-line="1484"></span></a> <span class="kr">end</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="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-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">"col"</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-1488"><a href="#L-1488"><span class="linenos" data-line="1488"></span></a> <span class="kr">end</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="kr">end</span> </span><span id="L-1492"><a href="#L-1492"><span class="linenos" data-line="1492"></span></a> <span class="kr">end</span> </span><span id="L-1493"><a href="#L-1493"><span class="linenos" data-line="1493"></span></a> <span class="kr">end</span> </span><span id="L-1494"><a href="#L-1494"><span class="linenos" data-line="1494"></span></a> <span class="kr">else</span> </span><span id="L-1495"><a href="#L-1495"><span class="linenos" data-line="1495"></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-1496"><a href="#L-1496"><span class="linenos" data-line="1496"></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-1497"><a href="#L-1497"><span class="linenos" data-line="1497"></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-1498"><a href="#L-1498"><span class="linenos" data-line="1498"></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-1499"><a href="#L-1499"><span class="linenos" data-line="1499"></span></a> <span class="kr">end</span> </span><span id="L-1500"><a href="#L-1500"><span class="linenos" data-line="1500"></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-1501"><a href="#L-1501"><span class="linenos" data-line="1501"></span></a> <span class="kr">if</span> <span class="n">value</span> <span class="kr">then</span> </span><span id="L-1502"><a href="#L-1502"><span class="linenos" data-line="1502"></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-1503"><a href="#L-1503"><span class="linenos" data-line="1503"></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-1504"><a href="#L-1504"><span class="linenos" data-line="1504"></span></a> <span class="kr">end</span> </span><span id="L-1505"><a href="#L-1505"><span class="linenos" data-line="1505"></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">"col0"</span><span class="p">]</span> <span class="o">=</span> <span class="n">reference</span> </span><span id="L-1506"><a href="#L-1506"><span class="linenos" data-line="1506"></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">"col0"</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> </span><span id="L-1507"><a href="#L-1507"><span class="linenos" data-line="1507"></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">"col0"</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-1508"><a href="#L-1508"><span class="linenos" data-line="1508"></span></a> <span class="kr">end</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="c1">-- sort and format results</span> </span><span id="L-1511"><a href="#L-1511"><span class="linenos" data-line="1511"></span></a> <span class="n">sortindices</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1512"><a href="#L-1512"><span class="linenos" data-line="1512"></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-1513"><a href="#L-1513"><span class="linenos" data-line="1513"></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-1514"><a href="#L-1514"><span class="linenos" data-line="1514"></span></a> <span class="kr">end</span> </span><span id="L-1515"><a href="#L-1515"><span class="linenos" data-line="1515"></span></a> <span class="kr">if</span> <span class="n">sorting_col</span> <span class="kr">then</span> </span><span id="L-1516"><a href="#L-1516"><span class="linenos" data-line="1516"></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">'%D+'</span><span class="p">)</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">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-1518"><a href="#L-1518"><span class="linenos" data-line="1518"></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-1519"><a href="#L-1519"><span class="linenos" data-line="1519"></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-1520"><a href="#L-1520"><span class="linenos" data-line="1520"></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"><=</span> <span class="o">#</span><span class="n">sorting_table</span> <span class="kr">do</span> </span><span id="L-1521"><a href="#L-1521"><span class="linenos" data-line="1521"></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">"col"</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">''</span> </span><span id="L-1522"><a href="#L-1522"><span class="linenos" data-line="1522"></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">"col"</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">''</span> </span><span id="L-1523"><a href="#L-1523"><span class="linenos" data-line="1523"></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-1524"><a href="#L-1524"><span class="linenos" data-line="1524"></span></a> <span class="kr">end</span> </span><span id="L-1525"><a href="#L-1525"><span class="linenos" data-line="1525"></span></a> </span><span id="L-1526"><a href="#L-1526"><span class="linenos" data-line="1526"></span></a> <span class="kr">if</span> <span class="n">sorting_up</span> <span class="kr">then</span> </span><span id="L-1527"><a href="#L-1527"><span class="linenos" data-line="1527"></span></a> <span class="kr">return</span> <span class="n">valueb</span> <span class="o">></span> <span class="n">valuea</span> </span><span id="L-1528"><a href="#L-1528"><span class="linenos" data-line="1528"></span></a> <span class="kr">end</span> </span><span id="L-1529"><a href="#L-1529"><span class="linenos" data-line="1529"></span></a> <span class="kr">return</span> <span class="n">valueb</span> <span class="o"><</span> <span class="n">valuea</span> </span><span id="L-1530"><a href="#L-1530"><span class="linenos" data-line="1530"></span></a> <span class="kr">end</span> </span><span id="L-1531"><a href="#L-1531"><span class="linenos" data-line="1531"></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-1532"><a href="#L-1532"><span class="linenos" data-line="1532"></span></a> <span class="kr">end</span> </span><span id="L-1533"><a href="#L-1533"><span class="linenos" data-line="1533"></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-1534"><a href="#L-1534"><span class="linenos" data-line="1534"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1535"><a href="#L-1535"><span class="linenos" data-line="1535"></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-1536"><a href="#L-1536"><span class="linenos" data-line="1536"></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-1537"><a href="#L-1537"><span class="linenos" data-line="1537"></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">"references"</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">"col0"</span><span class="p">]},</span> <span class="n">parameters</span><span class="p">)</span> </span><span id="L-1538"><a href="#L-1538"><span class="linenos" data-line="1538"></span></a> </span><span id="L-1539"><a href="#L-1539"><span class="linenos" data-line="1539"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">valuerow</span><span class="p">[</span><span class="s2">"col0"</span><span class="p">]</span> </span><span id="L-1540"><a href="#L-1540"><span class="linenos" data-line="1540"></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">"table"</span> <span class="kr">then</span> </span><span id="L-1541"><a href="#L-1541"><span class="linenos" data-line="1541"></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-1542"><a href="#L-1542"><span class="linenos" data-line="1542"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1543"><a href="#L-1543"><span class="linenos" data-line="1543"></span></a> <span class="kr">else</span> </span><span id="L-1544"><a href="#L-1544"><span class="linenos" data-line="1544"></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">"$"</span> <span class="c1">-- fake end character added for easy gsub</span> </span><span id="L-1545"><a href="#L-1545"><span class="linenos" data-line="1545"></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">"$0"</span><span class="p">,</span> <span class="p">{[</span><span class="s2">"$0"</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span><span class="p">})</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">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">"$R0"</span><span class="p">,</span> <span class="n">reference</span><span class="p">)</span> <span class="c1">-- add reference</span> </span><span id="L-1547"><a href="#L-1547"><span class="linenos" data-line="1547"></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-1548"><a href="#L-1548"><span class="linenos" data-line="1548"></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">"col"</span> <span class="o">..</span> <span class="n">i</span><span class="p">]</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">args</span><span class="p">[</span><span class="s2">"rowsubformat"</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-1550"><a href="#L-1550"><span class="linenos" data-line="1550"></span></a> <span class="c1">-- add fake end character $</span> </span><span id="L-1551"><a href="#L-1551"><span class="linenos" data-line="1551"></span></a> <span class="c1">-- gsub $i not followed by a number so $1 doesn't match $10, $11...</span> </span><span id="L-1552"><a href="#L-1552"><span class="linenos" data-line="1552"></span></a> <span class="c1">-- remove fake end character</span> </span><span id="L-1553"><a href="#L-1553"><span class="linenos" data-line="1553"></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-1554"><a href="#L-1554"><span class="linenos" data-line="1554"></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">"rowsubformat"</span> <span class="o">..</span> <span class="n">i</span><span class="p">]</span> <span class="o">..</span> <span class="s2">"$"</span><span class="p">,</span> <span class="s2">"$"</span> <span class="o">..</span> <span class="n">i</span> <span class="o">..</span> <span class="s2">"(%D)"</span><span class="p">,</span> <span class="n">valueq</span> <span class="o">..</span> <span class="s2">"%1"</span><span class="p">)</span> </span><span id="L-1555"><a href="#L-1555"><span class="linenos" data-line="1555"></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-1556"><a href="#L-1556"><span class="linenos" data-line="1556"></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">"$"</span> <span class="o">..</span> <span class="n">i</span> <span class="o">..</span> <span class="s2">"(%D)"</span><span class="p">,</span> <span class="n">args</span><span class="p">[</span><span class="s2">"rowsubformat"</span> <span class="o">..</span> <span class="n">i</span><span class="p">]</span> <span class="o">..</span> <span class="s2">"%1"</span><span class="p">)</span> </span><span id="L-1557"><a href="#L-1557"><span class="linenos" data-line="1557"></span></a> <span class="kr">end</span> </span><span id="L-1558"><a href="#L-1558"><span class="linenos" data-line="1558"></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">''</span> </span><span id="L-1559"><a href="#L-1559"><span class="linenos" data-line="1559"></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">"$"</span> <span class="o">..</span> <span class="n">i</span> <span class="o">..</span> <span class="s2">"(%D)"</span><span class="p">,</span> <span class="n">valueq</span> <span class="o">..</span> <span class="s2">"%1"</span><span class="p">)</span> </span><span id="L-1560"><a href="#L-1560"><span class="linenos" data-line="1560"></span></a> <span class="kr">end</span> </span><span id="L-1561"><a href="#L-1561"><span class="linenos" data-line="1561"></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-1562"><a href="#L-1562"><span class="linenos" data-line="1562"></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-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="kr">elseif</span> <span class="n">value</span> <span class="kr">then</span> </span><span id="L-1565"><a href="#L-1565"><span class="linenos" data-line="1565"></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-1566"><a href="#L-1566"><span class="linenos" data-line="1566"></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-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">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-1569"><a href="#L-1569"><span class="linenos" data-line="1569"></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-1570"><a href="#L-1570"><span class="linenos" data-line="1570"></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-1571"><a href="#L-1571"><span class="linenos" data-line="1571"></span></a> <span class="kr">break</span> </span><span id="L-1572"><a href="#L-1572"><span class="linenos" data-line="1572"></span></a> <span class="kr">end</span> </span><span id="L-1573"><a href="#L-1573"><span class="linenos" data-line="1573"></span></a> <span class="kr">end</span> </span><span id="L-1574"><a href="#L-1574"><span class="linenos" data-line="1574"></span></a> <span class="kr">end</span> </span><span id="L-1575"><a href="#L-1575"><span class="linenos" data-line="1575"></span></a> </span><span id="L-1576"><a href="#L-1576"><span class="linenos" data-line="1576"></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">'num'</span> <span class="kr">then</span> </span><span id="L-1577"><a href="#L-1577"><span class="linenos" data-line="1577"></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-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">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><span id="L-1580"><a href="#L-1580"><span class="linenos" data-line="1580"></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">'table'</span> <span class="kr">then</span> </span><span id="L-1581"><a href="#L-1581"><span class="linenos" data-line="1581"></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-1582"><a href="#L-1582"><span class="linenos" data-line="1582"></span></a> <span class="kr">end</span> </span><span id="L-1583"><a href="#L-1583"><span class="linenos" data-line="1583"></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-1584"><a href="#L-1584"><span class="linenos" data-line="1584"></span></a> <span class="kr">else</span> </span><span id="L-1585"><a href="#L-1585"><span class="linenos" data-line="1585"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="s1">''</span> </span><span id="L-1586"><a href="#L-1586"><span class="linenos" data-line="1586"></span></a> <span class="kr">end</span> </span><span id="L-1587"><a href="#L-1587"><span class="linenos" data-line="1587"></span></a> <span class="kr">else</span> </span><span id="L-1588"><a href="#L-1588"><span class="linenos" data-line="1588"></span></a> <span class="c1">-- return first element</span> </span><span id="L-1589"><a href="#L-1589"><span class="linenos" data-line="1589"></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-1590"><a href="#L-1590"><span class="linenos" data-line="1590"></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-1591"><a href="#L-1591"><span class="linenos" data-line="1591"></span></a> <span class="kr">if</span> <span class="n">result</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="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-1593"><a href="#L-1593"><span class="linenos" data-line="1593"></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-1594"><a href="#L-1594"><span class="linenos" data-line="1594"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1595"><a href="#L-1595"><span class="linenos" data-line="1595"></span></a> <span class="kr">else</span> </span><span id="L-1596"><a href="#L-1596"><span class="linenos" data-line="1596"></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-1597"><a href="#L-1597"><span class="linenos" data-line="1597"></span></a> <span class="kr">end</span> </span><span id="L-1598"><a href="#L-1598"><span class="linenos" data-line="1598"></span></a> <span class="kr">end</span> </span><span id="L-1599"><a href="#L-1599"><span class="linenos" data-line="1599"></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">'num'</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-1600"><a href="#L-1600"><span class="linenos" data-line="1600"></span></a> <span class="kr">end</span> </span><span id="L-1601"><a href="#L-1601"><span class="linenos" data-line="1601"></span></a> </span><span id="L-1602"><a href="#L-1602"><span class="linenos" data-line="1602"></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-1603"><a href="#L-1603"><span class="linenos" data-line="1603"></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">'table'</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">'no-icon'</span><span class="p">))</span> <span class="kr">then</span> </span><span id="L-1604"><a href="#L-1604"><span class="linenos" data-line="1604"></span></a> <span class="c1">-- add edit icon, except table added previously and except explicit no-icon internal flag</span> </span><span id="L-1605"><a href="#L-1605"><span class="linenos" data-line="1605"></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-1606"><a href="#L-1606"><span class="linenos" data-line="1606"></span></a> <span class="kr">end</span> </span><span id="L-1607"><a href="#L-1607"><span class="linenos" data-line="1607"></span></a> <span class="kr">else</span> </span><span id="L-1608"><a href="#L-1608"><span class="linenos" data-line="1608"></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-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 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">'untranslated'</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-1611"><a href="#L-1611"><span class="linenos" data-line="1611"></span></a> <span class="n">result_query</span> <span class="o">=</span> <span class="n">untranslated</span> </span><span id="L-1612"><a href="#L-1612"><span class="linenos" data-line="1612"></span></a> <span class="kr">end</span> </span><span id="L-1613"><a href="#L-1613"><span class="linenos" data-line="1613"></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">''</span> </span><span id="L-1614"><a href="#L-1614"><span class="linenos" data-line="1614"></span></a><span class="kr">end</span> </span><span id="L-1615"><a href="#L-1615"><span class="linenos" data-line="1615"></span></a> </span><span id="L-1616"><a href="#L-1616"><span class="linenos" data-line="1616"></span></a><span class="c1">-- Local functions for getParentValues -----------------------</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="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-1619"><a href="#L-1619"><span class="linenos" data-line="1619"></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-1620"><a href="#L-1620"><span class="linenos" data-line="1620"></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-1621"><a href="#L-1621"><span class="linenos" data-line="1621"></span></a><span class="kr">end</span> </span><span id="L-1622"><a href="#L-1622"><span class="linenos" data-line="1622"></span></a> </span><span id="L-1623"><a href="#L-1623"><span class="linenos" data-line="1623"></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-1624"><a href="#L-1624"><span class="linenos" data-line="1624"></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-1625"><a href="#L-1625"><span class="linenos" data-line="1625"></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">"mainsnak"</span><span class="p">})</span> </span><span id="L-1626"><a href="#L-1626"><span class="linenos" data-line="1626"></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-1627"><a href="#L-1627"><span class="linenos" data-line="1627"></span></a> <span class="kr">return</span> </span><span id="L-1628"><a href="#L-1628"><span class="linenos" data-line="1628"></span></a> <span class="kr">end</span> </span><span id="L-1629"><a href="#L-1629"><span class="linenos" data-line="1629"></span></a> </span><span id="L-1630"><a href="#L-1630"><span class="linenos" data-line="1630"></span></a> <span class="kd">local</span> <span class="n">entity_id</span> </span><span id="L-1631"><a href="#L-1631"><span class="linenos" data-line="1631"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="s1">'-'</span> <span class="c1">-- default for 'no value'</span> </span><span id="L-1632"><a href="#L-1632"><span class="linenos" data-line="1632"></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-1633"><a href="#L-1633"><span class="linenos" data-line="1633"></span></a> <span class="n">entity_id</span> <span class="o">=</span> <span class="s2">"Q"</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">'numeric-id'</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">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-1635"><a href="#L-1635"><span class="linenos" data-line="1635"></span></a> <span class="kr">end</span> </span><span id="L-1636"><a href="#L-1636"><span class="linenos" data-line="1636"></span></a> </span><span id="L-1637"><a href="#L-1637"><span class="linenos" data-line="1637"></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-1638"><a href="#L-1638"><span class="linenos" data-line="1638"></span></a><span class="kr">end</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="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-1641"><a href="#L-1641"><span class="linenos" data-line="1641"></span></a> <span class="n">prop_format</span><span class="p">,</span> </span><span id="L-1642"><a href="#L-1642"><span class="linenos" data-line="1642"></span></a> <span class="n">label_format</span><span class="p">,</span> </span><span id="L-1643"><a href="#L-1643"><span class="linenos" data-line="1643"></span></a> <span class="n">languages</span><span class="p">,</span> </span><span id="L-1644"><a href="#L-1644"><span class="linenos" data-line="1644"></span></a> <span class="n">propertySupString</span><span class="p">,</span> </span><span id="L-1645"><a href="#L-1645"><span class="linenos" data-line="1645"></span></a> <span class="n">propertyLabel</span><span class="p">,</span> </span><span id="L-1646"><a href="#L-1646"><span class="linenos" data-line="1646"></span></a> <span class="n">propertyLink</span><span class="p">,</span> </span><span id="L-1647"><a href="#L-1647"><span class="linenos" data-line="1647"></span></a> <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 class="n">labelicon0</span><span class="p">,</span> </span><span id="L-1649"><a href="#L-1649"><span class="linenos" data-line="1649"></span></a> <span class="n">labelicon1</span><span class="p">,</span> </span><span id="L-1650"><a href="#L-1650"><span class="linenos" data-line="1650"></span></a> <span class="n">upto_number</span><span class="p">,</span> </span><span id="L-1651"><a href="#L-1651"><span class="linenos" data-line="1651"></span></a> <span class="n">upto_label</span><span class="p">,</span> </span><span id="L-1652"><a href="#L-1652"><span class="linenos" data-line="1652"></span></a> <span class="n">upto_value</span><span class="p">,</span> </span><span id="L-1653"><a href="#L-1653"><span class="linenos" data-line="1653"></span></a> <span class="n">last_only</span><span class="p">,</span> </span><span id="L-1654"><a href="#L-1654"><span class="linenos" data-line="1654"></span></a> <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="n">include_self</span><span class="p">)</span> </span><span id="L-1656"><a href="#L-1656"><span class="linenos" data-line="1656"></span></a> </span><span id="L-1657"><a href="#L-1657"><span class="linenos" data-line="1657"></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">'[^P%d]'</span><span class="p">)</span> </span><span id="L-1658"><a href="#L-1658"><span class="linenos" data-line="1658"></span></a> </span><span id="L-1659"><a href="#L-1659"><span class="linenos" data-line="1659"></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-1660"><a href="#L-1660"><span class="linenos" data-line="1660"></span></a> <span class="kr">if</span> <span class="n">upto_number</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">maxloop</span> <span class="o">=</span> <span class="n">upto_number</span> </span><span id="L-1662"><a href="#L-1662"><span class="linenos" data-line="1662"></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-1663"><a href="#L-1663"><span class="linenos" data-line="1663"></span></a> <span class="n">maxloop</span> <span class="o">=</span> <span class="mi">50</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><span id="L-1666"><a href="#L-1666"><span class="linenos" data-line="1666"></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-1667"><a href="#L-1667"><span class="linenos" data-line="1667"></span></a> </span><span id="L-1668"><a href="#L-1668"><span class="linenos" data-line="1668"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1669"><a href="#L-1669"><span class="linenos" data-line="1669"></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-1670"><a href="#L-1670"><span class="linenos" data-line="1670"></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-1671"><a href="#L-1671"><span class="linenos" data-line="1671"></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-1672"><a href="#L-1672"><span class="linenos" data-line="1672"></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-1673"><a href="#L-1673"><span class="linenos" data-line="1673"></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-1674"><a href="#L-1674"><span class="linenos" data-line="1674"></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-1675"><a href="#L-1675"><span class="linenos" data-line="1675"></span></a> <span class="kr">end</span> </span><span id="L-1676"><a href="#L-1676"><span class="linenos" data-line="1676"></span></a> </span><span id="L-1677"><a href="#L-1677"><span class="linenos" data-line="1677"></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-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">propertyLink</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="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">"label"</span><span class="p">,</span> <span class="n">languages</span><span class="p">)</span> </span><span id="L-1681"><a href="#L-1681"><span class="linenos" data-line="1681"></span></a> <span class="kr">if</span> <span class="n">linktext</span> <span class="kr">then</span> </span><span id="L-1682"><a href="#L-1682"><span class="linenos" data-line="1682"></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">"%[%[(.*)%|.+%]%]"</span><span class="p">,</span> <span class="s2">"[[%1|"</span> <span class="o">..</span> <span class="n">linktext</span> <span class="o">..</span> <span class="s2">"]]"</span><span class="p">)</span> </span><span id="L-1683"><a href="#L-1683"><span class="linenos" data-line="1683"></span></a> <span class="kr">end</span> </span><span id="L-1684"><a href="#L-1684"><span class="linenos" data-line="1684"></span></a> <span class="kr">end</span> </span><span id="L-1685"><a href="#L-1685"><span class="linenos" data-line="1685"></span></a> </span><span id="L-1686"><a href="#L-1686"><span class="linenos" data-line="1686"></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">"infoboxlabel"</span><span class="p">)</span> </span><span id="L-1687"><a href="#L-1687"><span class="linenos" data-line="1687"></span></a> <span class="kr">if</span> <span class="n">labelicon0</span> <span class="kr">then</span> </span><span id="L-1688"><a href="#L-1688"><span class="linenos" data-line="1688"></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">"infoboxlabel"</span><span class="p">)</span> </span><span id="L-1689"><a href="#L-1689"><span class="linenos" data-line="1689"></span></a> <span class="kr">else</span> </span><span id="L-1690"><a href="#L-1690"><span class="linenos" data-line="1690"></span></a> <span class="n">labelwicon</span> <span class="o">=</span> <span class="n">label</span> </span><span id="L-1691"><a href="#L-1691"><span class="linenos" data-line="1691"></span></a> <span class="kr">end</span> </span><span id="L-1692"><a href="#L-1692"><span class="linenos" data-line="1692"></span></a> </span><span id="L-1693"><a href="#L-1693"><span class="linenos" data-line="1693"></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-1694"><a href="#L-1694"><span class="linenos" data-line="1694"></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-1695"><a href="#L-1695"><span class="linenos" data-line="1695"></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">'none'</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">'none'</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-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="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-1699"><a href="#L-1699"><span class="linenos" data-line="1699"></span></a> <span class="kr">break</span> </span><span id="L-1700"><a href="#L-1700"><span class="linenos" data-line="1700"></span></a> <span class="kr">end</span> </span><span id="L-1701"><a href="#L-1701"><span class="linenos" data-line="1701"></span></a> <span class="kr">end</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="kr">if</span> <span class="n">last_only</span> <span class="kr">then</span> </span><span id="L-1704"><a href="#L-1704"><span class="linenos" data-line="1704"></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-1705"><a href="#L-1705"><span class="linenos" data-line="1705"></span></a> <span class="kr">end</span> </span><span id="L-1706"><a href="#L-1706"><span class="linenos" data-line="1706"></span></a> </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">include_self</span> <span class="kr">then</span> </span><span id="L-1708"><a href="#L-1708"><span class="linenos" data-line="1708"></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-1709"><a href="#L-1709"><span class="linenos" data-line="1709"></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">"infoboxlabel"</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">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-1711"><a href="#L-1711"><span class="linenos" data-line="1711"></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-1712"><a href="#L-1712"><span class="linenos" data-line="1712"></span></a> <span class="kr">end</span> </span><span id="L-1713"><a href="#L-1713"><span class="linenos" data-line="1713"></span></a> </span><span id="L-1714"><a href="#L-1714"><span class="linenos" data-line="1714"></span></a> <span class="kr">return</span> <span class="n">result</span> </span><span id="L-1715"><a href="#L-1715"><span class="linenos" data-line="1715"></span></a><span class="kr">end</span> </span><span id="L-1716"><a href="#L-1716"><span class="linenos" data-line="1716"></span></a> </span><span id="L-1717"><a href="#L-1717"><span class="linenos" data-line="1717"></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-1718"><a href="#L-1718"><span class="linenos" data-line="1718"></span></a> <span class="n">rowformat</span><span class="p">,</span> </span><span id="L-1719"><a href="#L-1719"><span class="linenos" data-line="1719"></span></a> <span class="n">cascade</span><span class="p">,</span> </span><span id="L-1720"><a href="#L-1720"><span class="linenos" data-line="1720"></span></a> <span class="n">sorting</span><span class="p">)</span> </span><span id="L-1721"><a href="#L-1721"><span class="linenos" data-line="1721"></span></a> </span><span id="L-1722"><a href="#L-1722"><span class="linenos" data-line="1722"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1723"><a href="#L-1723"><span class="linenos" data-line="1723"></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-1724"><a href="#L-1724"><span class="linenos" data-line="1724"></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-1725"><a href="#L-1725"><span class="linenos" data-line="1725"></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-1726"><a href="#L-1726"><span class="linenos" data-line="1726"></span></a> <span class="kr">if</span> <span class="n">sorting</span> <span class="o">==</span> <span class="s2">"-1"</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-1727"><a href="#L-1727"><span class="linenos" data-line="1727"></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-1728"><a href="#L-1728"><span class="linenos" data-line="1728"></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">"$[01]"</span><span class="p">,</span> <span class="p">{[</span><span class="s2">"$0"</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">"$1"</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-1729"><a href="#L-1729"><span class="linenos" data-line="1729"></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-1730"><a href="#L-1730"><span class="linenos" data-line="1730"></span></a> <span class="kr">end</span> </span><span id="L-1731"><a href="#L-1731"><span class="linenos" data-line="1731"></span></a> </span><span id="L-1732"><a href="#L-1732"><span class="linenos" data-line="1732"></span></a> <span class="kr">if</span> <span class="n">cascade</span> <span class="kr">then</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">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">"right"</span> <span class="ow">or</span> <span class="s2">"left"</span> </span><span id="L-1734"><a href="#L-1734"><span class="linenos" data-line="1734"></span></a> <span class="kd">local</span> <span class="n">suffix</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-1735"><a href="#L-1735"><span class="linenos" data-line="1735"></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-1736"><a href="#L-1736"><span class="linenos" data-line="1736"></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">'<ul style="line-height:100%; margin-'</span> <span class="o">..</span> <span class="n">direction</span> <span class="o">..</span> <span class="s1">':0.45em; padding-'</span> <span class="o">..</span> <span class="n">direction</span> <span class="o">..</span> <span class="s1">':0;"><li>'</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-1737"><a href="#L-1737"><span class="linenos" data-line="1737"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">suffix</span> <span class="o">..</span> <span class="s1">'</li></ul>'</span> </span><span id="L-1738"><a href="#L-1738"><span class="linenos" data-line="1738"></span></a> <span class="kr">end</span> </span><span id="L-1739"><a href="#L-1739"><span class="linenos" data-line="1739"></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-1740"><a href="#L-1740"><span class="linenos" data-line="1740"></span></a> <span class="kr">end</span> </span><span id="L-1741"><a href="#L-1741"><span class="linenos" data-line="1741"></span></a> </span><span id="L-1742"><a href="#L-1742"><span class="linenos" data-line="1742"></span></a> <span class="kr">return</span> <span class="n">ret</span> </span><span id="L-1743"><a href="#L-1743"><span class="linenos" data-line="1743"></span></a><span class="kr">end</span> </span><span id="L-1744"><a href="#L-1744"><span class="linenos" data-line="1744"></span></a> </span><span id="L-1745"><a href="#L-1745"><span class="linenos" data-line="1745"></span></a><span class="c1">-- Returns pairs of parent label and property value fetching a recursive tree</span> </span><span id="L-1746"><a href="#L-1746"><span class="linenos" data-line="1746"></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-1747"><a href="#L-1747"><span class="linenos" data-line="1747"></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-1748"><a href="#L-1748"><span class="linenos" data-line="1748"></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-1749"><a href="#L-1749"><span class="linenos" data-line="1749"></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-1750"><a href="#L-1750"><span class="linenos" data-line="1750"></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">"/"</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">'Sandboxlink-subpage-name'</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-1751"><a href="#L-1751"><span class="linenos" data-line="1751"></span></a> <span class="kr">end</span> </span><span id="L-1752"><a href="#L-1752"><span class="linenos" data-line="1752"></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-1753"><a href="#L-1753"><span class="linenos" data-line="1753"></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-1754"><a href="#L-1754"><span class="linenos" data-line="1754"></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-1755"><a href="#L-1755"><span class="linenos" data-line="1755"></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">"P131"</span><span class="p">)</span> <span class="c1">--administrative entity</span> </span><span id="L-1756"><a href="#L-1756"><span class="linenos" data-line="1756"></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">"P31"</span><span class="p">)</span> <span class="c1">--instance</span> </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">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-1758"><a href="#L-1758"><span class="linenos" data-line="1758"></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-1759"><a href="#L-1759"><span class="linenos" data-line="1759"></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">"label"</span><span class="p">)</span> </span><span id="L-1760"><a href="#L-1760"><span class="linenos" data-line="1760"></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-1761"><a href="#L-1761"><span class="linenos" data-line="1761"></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-1762"><a href="#L-1762"><span class="linenos" data-line="1762"></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-1763"><a href="#L-1763"><span class="linenos" data-line="1763"></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-1764"><a href="#L-1764"><span class="linenos" data-line="1764"></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-1765"><a href="#L-1765"><span class="linenos" data-line="1765"></span></a> </span><span id="L-1766"><a href="#L-1766"><span class="linenos" data-line="1766"></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-1767"><a href="#L-1767"><span class="linenos" data-line="1767"></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">''</span><span class="p">,</span> <span class="s1">'Q%d+'</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1768"><a href="#L-1768"><span class="linenos" data-line="1768"></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-1769"><a href="#L-1769"><span class="linenos" data-line="1769"></span></a> <span class="kr">end</span> </span><span id="L-1770"><a href="#L-1770"><span class="linenos" data-line="1770"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="nb">tonumber</span><span class="p">(</span><span class="n">upto_number</span><span class="p">))</span> <span class="o">==</span> <span class="s2">"number"</span> <span class="kr">then</span> </span><span id="L-1771"><a href="#L-1771"><span class="linenos" data-line="1771"></span></a> <span class="n">upto_number</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-1772"><a href="#L-1772"><span class="linenos" data-line="1772"></span></a> <span class="kr">elseif</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">'string'</span> <span class="kr">then</span> </span><span id="L-1773"><a href="#L-1773"><span class="linenos" data-line="1773"></span></a> <span class="n">upto_number</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1774"><a href="#L-1774"><span class="linenos" data-line="1774"></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">'/debug'</span><span class="p">).</span><span class="n">track</span><span class="p">(</span><span class="s1">'upto'</span><span class="p">)</span> <span class="c1">-- replace upto by uptolabelid</span> </span><span id="L-1775"><a href="#L-1775"><span class="linenos" data-line="1775"></span></a> <span class="kr">end</span> </span><span id="L-1776"><a href="#L-1776"><span class="linenos" data-line="1776"></span></a> </span><span id="L-1777"><a href="#L-1777"><span class="linenos" data-line="1777"></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-1778"><a href="#L-1778"><span class="linenos" data-line="1778"></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">''</span><span class="p">,</span> <span class="s1">'Q%d+'</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1779"><a href="#L-1779"><span class="linenos" data-line="1779"></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-1780"><a href="#L-1780"><span class="linenos" data-line="1780"></span></a> <span class="kr">end</span> </span><span id="L-1781"><a href="#L-1781"><span class="linenos" data-line="1781"></span></a> </span><span id="L-1782"><a href="#L-1782"><span class="linenos" data-line="1782"></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-1783"><a href="#L-1783"><span class="linenos" data-line="1783"></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">''</span><span class="p">,</span> <span class="s1">'Q%d+'</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1784"><a href="#L-1784"><span class="linenos" data-line="1784"></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-1785"><a href="#L-1785"><span class="linenos" data-line="1785"></span></a> <span class="kr">end</span> </span><span id="L-1786"><a href="#L-1786"><span class="linenos" data-line="1786"></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">''</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">))</span> <span class="kr">do</span> </span><span id="L-1787"><a href="#L-1787"><span class="linenos" data-line="1787"></span></a> <span class="kr">if</span> <span class="n">v</span> <span class="o">~=</span> <span class="s1">''</span> <span class="kr">then</span> </span><span id="L-1788"><a href="#L-1788"><span class="linenos" data-line="1788"></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-1789"><a href="#L-1789"><span class="linenos" data-line="1789"></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">'/debug'</span><span class="p">).</span><span class="n">track</span><span class="p">(</span><span class="s1">'labelshow'</span><span class="p">)</span> <span class="c1">-- replace labelshow by showlabelid</span> </span><span id="L-1790"><a href="#L-1790"><span class="linenos" data-line="1790"></span></a> <span class="kr">end</span> </span><span id="L-1791"><a href="#L-1791"><span class="linenos" data-line="1791"></span></a> <span class="kr">end</span> </span><span id="L-1792"><a href="#L-1792"><span class="linenos" data-line="1792"></span></a> </span><span id="L-1793"><a href="#L-1793"><span class="linenos" data-line="1793"></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">"$0 = $1"</span> <span class="kr">end</span> </span><span id="L-1794"><a href="#L-1794"><span class="linenos" data-line="1794"></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-1795"><a href="#L-1795"><span class="linenos" data-line="1795"></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">'{{.*$0.*}}'</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">'{{.*$0.*}}'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">label_format</span> <span class="o">~=</span> <span class="s1">'raw'</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1796"><a href="#L-1796"><span class="linenos" data-line="1796"></span></a> <span class="n">labelicon0</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1797"><a href="#L-1797"><span class="linenos" data-line="1797"></span></a> <span class="kr">end</span> </span><span id="L-1798"><a href="#L-1798"><span class="linenos" data-line="1798"></span></a> </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">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-1800"><a href="#L-1800"><span class="linenos" data-line="1800"></span></a> <span class="n">property_format</span><span class="p">,</span> </span><span id="L-1801"><a href="#L-1801"><span class="linenos" data-line="1801"></span></a> <span class="n">label_format</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">languages</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">propertySup</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">propertyLabel</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">propertyLink</span><span class="p">,</span> </span><span id="L-1806"><a href="#L-1806"><span class="linenos" data-line="1806"></span></a> <span class="n">label_show</span><span class="p">,</span> </span><span id="L-1807"><a href="#L-1807"><span class="linenos" data-line="1807"></span></a> <span class="n">labelicon0</span><span class="p">,</span> </span><span id="L-1808"><a href="#L-1808"><span class="linenos" data-line="1808"></span></a> <span class="n">labelicon1</span><span class="p">,</span> </span><span id="L-1809"><a href="#L-1809"><span class="linenos" data-line="1809"></span></a> <span class="n">upto_number</span><span class="p">,</span> </span><span id="L-1810"><a href="#L-1810"><span class="linenos" data-line="1810"></span></a> <span class="n">upto_label</span><span class="p">,</span> </span><span id="L-1811"><a href="#L-1811"><span class="linenos" data-line="1811"></span></a> <span class="n">upto_value</span><span class="p">,</span> </span><span id="L-1812"><a href="#L-1812"><span class="linenos" data-line="1812"></span></a> <span class="n">last_only</span><span class="p">,</span> </span><span id="L-1813"><a href="#L-1813"><span class="linenos" data-line="1813"></span></a> <span class="n">case</span><span class="p">,</span> </span><span id="L-1814"><a href="#L-1814"><span class="linenos" data-line="1814"></span></a> <span class="n">include_self</span><span class="p">)</span> </span><span id="L-1815"><a href="#L-1815"><span class="linenos" data-line="1815"></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-1816"><a href="#L-1816"><span class="linenos" data-line="1816"></span></a> </span><span id="L-1817"><a href="#L-1817"><span class="linenos" data-line="1817"></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">"<br />"</span> <span class="kr">end</span> </span><span id="L-1818"><a href="#L-1818"><span class="linenos" data-line="1818"></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">""</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-1819"><a href="#L-1819"><span class="linenos" data-line="1819"></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">"true"</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">"yes"</span><span class="p">)</span> </span><span id="L-1820"><a href="#L-1820"><span class="linenos" data-line="1820"></span></a> </span><span id="L-1821"><a href="#L-1821"><span class="linenos" data-line="1821"></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-1822"><a href="#L-1822"><span class="linenos" data-line="1822"></span></a> <span class="n">rowformat</span><span class="p">,</span> </span><span id="L-1823"><a href="#L-1823"><span class="linenos" data-line="1823"></span></a> <span class="n">cascade</span><span class="p">,</span> </span><span id="L-1824"><a href="#L-1824"><span class="linenos" data-line="1824"></span></a> <span class="n">sorting</span><span class="p">)</span> </span><span id="L-1825"><a href="#L-1825"><span class="linenos" data-line="1825"></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-1826"><a href="#L-1826"><span class="linenos" data-line="1826"></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-1827"><a href="#L-1827"><span class="linenos" data-line="1827"></span></a><span class="kr">end</span> </span><span id="L-1828"><a href="#L-1828"><span class="linenos" data-line="1828"></span></a> </span><span id="L-1829"><a href="#L-1829"><span class="linenos" data-line="1829"></span></a><span class="c1">-- Link with a parent label --------------------</span> </span><span id="L-1830"><a href="#L-1830"><span class="linenos" data-line="1830"></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-1831"><a href="#L-1831"><span class="linenos" data-line="1831"></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-1832"><a href="#L-1832"><span class="linenos" data-line="1832"></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-1833"><a href="#L-1833"><span class="linenos" data-line="1833"></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">"/"</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">'Sandboxlink-subpage-name'</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-1834"><a href="#L-1834"><span class="linenos" data-line="1834"></span></a> <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">args</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1836"><a href="#L-1836"><span class="linenos" data-line="1836"></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-1837"><a href="#L-1837"><span class="linenos" data-line="1837"></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-1838"><a href="#L-1838"><span class="linenos" data-line="1838"></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-1839"><a href="#L-1839"><span class="linenos" data-line="1839"></span></a> <span class="kr">end</span> </span><span id="L-1840"><a href="#L-1840"><span class="linenos" data-line="1840"></span></a> <span class="kr">else</span> </span><span id="L-1841"><a href="#L-1841"><span class="linenos" data-line="1841"></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-1842"><a href="#L-1842"><span class="linenos" data-line="1842"></span></a> <span class="kr">end</span> </span><span id="L-1843"><a href="#L-1843"><span class="linenos" data-line="1843"></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-1844"><a href="#L-1844"><span class="linenos" data-line="1844"></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-1845"><a href="#L-1845"><span class="linenos" data-line="1845"></span></a> <span class="kr">end</span> </span><span id="L-1846"><a href="#L-1846"><span class="linenos" data-line="1846"></span></a> </span><span id="L-1847"><a href="#L-1847"><span class="linenos" data-line="1847"></span></a> <span class="c1">-- get id value of property/qualifier</span> </span><span id="L-1848"><a href="#L-1848"><span class="linenos" data-line="1848"></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-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="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-1850"><a href="#L-1850"><span class="linenos" data-line="1850"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="s2">"raw"</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">separator</span> <span class="o">=</span> <span class="s2">"/·/"</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">editicon</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1853"><a href="#L-1853"><span class="linenos" data-line="1853"></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-1854"><a href="#L-1854"><span class="linenos" data-line="1854"></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-1855"><a href="#L-1855"><span class="linenos" data-line="1855"></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">"/·/"</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-1856"><a href="#L-1856"><span class="linenos" data-line="1856"></span></a> </span><span id="L-1857"><a href="#L-1857"><span class="linenos" data-line="1857"></span></a> <span class="c1">-- get internal link of property/qualifier</span> </span><span id="L-1858"><a href="#L-1858"><span class="linenos" data-line="1858"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="s2">"internallink"</span> </span><span id="L-1859"><a href="#L-1859"><span class="linenos" data-line="1859"></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-1860"><a href="#L-1860"><span class="linenos" data-line="1860"></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">"/·/"</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-1861"><a href="#L-1861"><span class="linenos" data-line="1861"></span></a> </span><span id="L-1862"><a href="#L-1862"><span class="linenos" data-line="1862"></span></a> <span class="c1">-- get label of parent property</span> </span><span id="L-1863"><a href="#L-1863"><span class="linenos" data-line="1863"></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">"mainsnak"</span><span class="p">,</span> <span class="s2">"datatype"</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">if</span> <span class="n">parent_claim</span> <span class="o">==</span> <span class="s1">'monolingualtext'</span> <span class="kr">then</span> </span><span id="L-1865"><a href="#L-1865"><span class="linenos" data-line="1865"></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-1866"><a href="#L-1866"><span class="linenos" data-line="1866"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">list</span> <span class="o">=</span> <span class="s1">'lang'</span> </span><span id="L-1867"><a href="#L-1867"><span class="linenos" data-line="1867"></span></a> <span class="kr">else</span> </span><span id="L-1868"><a href="#L-1868"><span class="linenos" data-line="1868"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">formatting</span> <span class="o">=</span> <span class="s2">"label"</span> </span><span id="L-1869"><a href="#L-1869"><span class="linenos" data-line="1869"></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-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="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-1872"><a href="#L-1872"><span class="linenos" data-line="1872"></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-1873"><a href="#L-1873"><span class="linenos" data-line="1873"></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-1874"><a href="#L-1874"><span class="linenos" data-line="1874"></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-1875"><a href="#L-1875"><span class="linenos" data-line="1875"></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-1876"><a href="#L-1876"><span class="linenos" data-line="1876"></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-1877"><a href="#L-1877"><span class="linenos" data-line="1877"></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">''</span><span class="p">,</span> <span class="s2">"%[%[(.*)%|.+%]%]"</span><span class="p">,</span> <span class="s2">"[[%1|"</span> <span class="o">..</span> <span class="n">link_label</span> <span class="o">..</span> <span class="s2">"]]"</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">end</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 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-1881"><a href="#L-1881"><span class="linenos" data-line="1881"></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-1882"><a href="#L-1882"><span class="linenos" data-line="1882"></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-1883"><a href="#L-1883"><span class="linenos" data-line="1883"></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-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><span id="L-1886"><a href="#L-1886"><span class="linenos" data-line="1886"></span></a><span class="c1">-- Calculate number of years old ----------------------------</span> </span><span id="L-1887"><a href="#L-1887"><span class="linenos" data-line="1887"></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-1888"><a href="#L-1888"><span class="linenos" data-line="1888"></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-1889"><a href="#L-1889"><span class="linenos" data-line="1889"></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">"/"</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">'Sandboxlink-subpage-name'</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-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 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-1892"><a href="#L-1892"><span class="linenos" data-line="1892"></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-1893"><a href="#L-1893"><span class="linenos" data-line="1893"></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-1894"><a href="#L-1894"><span class="linenos" data-line="1894"></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-1895"><a href="#L-1895"><span class="linenos" data-line="1895"></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">'en'</span><span class="p">)</span> </span><span id="L-1896"><a href="#L-1896"><span class="linenos" data-line="1896"></span></a> </span><span id="L-1897"><a href="#L-1897"><span class="linenos" data-line="1897"></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-1898"><a href="#L-1898"><span class="linenos" data-line="1898"></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">"mainsnak"</span><span class="p">,</span> <span class="s2">"datavalue"</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">})</span> </span><span id="L-1899"><a href="#L-1899"><span class="linenos" data-line="1899"></span></a> <span class="kr">end</span> </span><span id="L-1900"><a href="#L-1900"><span class="linenos" data-line="1900"></span></a> </span><span id="L-1901"><a href="#L-1901"><span class="linenos" data-line="1901"></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">'P569'</span><span class="p">)</span> </span><span id="L-1902"><a href="#L-1902"><span class="linenos" data-line="1902"></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">'table'</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"><</span> <span class="mi">8</span> <span class="kr">then</span> </span><span id="L-1903"><a href="#L-1903"><span class="linenos" data-line="1903"></span></a> <span class="kr">return</span> </span><span id="L-1904"><a href="#L-1904"><span class="linenos" data-line="1904"></span></a> <span class="kr">end</span> </span><span id="L-1905"><a href="#L-1905"><span class="linenos" data-line="1905"></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">'P570'</span><span class="p">)</span> </span><span id="L-1906"><a href="#L-1906"><span class="linenos" data-line="1906"></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">'table'</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-1907"><a href="#L-1907"><span class="linenos" data-line="1907"></span></a> <span class="n">death</span> <span class="o">=</span> <span class="p">{[</span><span class="s1">'time'</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">'c'</span><span class="p">),</span> <span class="p">[</span><span class="s1">'precision'</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-1908"><a href="#L-1908"><span class="linenos" data-line="1908"></span></a> <span class="kr">elseif</span> <span class="n">death</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><span id="L-1909"><a href="#L-1909"><span class="linenos" data-line="1909"></span></a> <span class="kr">return</span> </span><span id="L-1910"><a href="#L-1910"><span class="linenos" data-line="1910"></span></a> <span class="kr">end</span> </span><span id="L-1911"><a href="#L-1911"><span class="linenos" data-line="1911"></span></a> </span><span id="L-1912"><a href="#L-1912"><span class="linenos" data-line="1912"></span></a> <span class="kd">local</span> <span class="n">dates</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1913"><a href="#L-1913"><span class="linenos" data-line="1913"></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">'min'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">[</span><span class="s1">'max'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">[</span><span class="s1">'precision'</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-1914"><a href="#L-1914"><span class="linenos" data-line="1914"></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">"^[+-]?%d+"</span><span class="p">))</span> </span><span id="L-1915"><a href="#L-1915"><span class="linenos" data-line="1915"></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">"-(%d%d)-"</span><span class="p">))</span> </span><span id="L-1916"><a href="#L-1916"><span class="linenos" data-line="1916"></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">"-(%d%d)T"</span><span class="p">))</span> </span><span id="L-1917"><a href="#L-1917"><span class="linenos" data-line="1917"></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-1918"><a href="#L-1918"><span class="linenos" data-line="1918"></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">'min'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">[</span><span class="s1">'max'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">[</span><span class="s1">'precision'</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-1919"><a href="#L-1919"><span class="linenos" data-line="1919"></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">"^[+-]?%d+"</span><span class="p">))</span> </span><span id="L-1920"><a href="#L-1920"><span class="linenos" data-line="1920"></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">"-(%d%d)-"</span><span class="p">))</span> </span><span id="L-1921"><a href="#L-1921"><span class="linenos" data-line="1921"></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">"-(%d%d)T"</span><span class="p">))</span> </span><span id="L-1922"><a href="#L-1922"><span class="linenos" data-line="1922"></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-1923"><a href="#L-1923"><span class="linenos" data-line="1923"></span></a> </span><span id="L-1924"><a href="#L-1924"><span class="linenos" data-line="1924"></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-1925"><a href="#L-1925"><span class="linenos" data-line="1925"></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-1926"><a href="#L-1926"><span class="linenos" data-line="1926"></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-1927"><a href="#L-1927"><span class="linenos" data-line="1927"></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">"%04d"</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-1928"><a href="#L-1928"><span class="linenos" data-line="1928"></span></a> <span class="o">..</span> <span class="nb">string.format</span><span class="p">(</span><span class="s2">"%02d"</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-1929"><a href="#L-1929"><span class="linenos" data-line="1929"></span></a> <span class="o">..</span> <span class="s2">"01"</span> </span><span id="L-1930"><a href="#L-1930"><span class="linenos" data-line="1930"></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">"j"</span><span class="p">,</span> <span class="n">timestamp</span> <span class="o">..</span> <span class="s2">" + 1 month - 1 day"</span><span class="p">))</span> </span><span id="L-1931"><a href="#L-1931"><span class="linenos" data-line="1931"></span></a> <span class="kr">elseif</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">-- year or decade</span> </span><span id="L-1932"><a href="#L-1932"><span class="linenos" data-line="1932"></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-1933"><a href="#L-1933"><span class="linenos" data-line="1933"></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-1934"><a href="#L-1934"><span class="linenos" data-line="1934"></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-1935"><a href="#L-1935"><span class="linenos" data-line="1935"></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-1936"><a href="#L-1936"><span class="linenos" data-line="1936"></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-1937"><a href="#L-1937"><span class="linenos" data-line="1937"></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-1938"><a href="#L-1938"><span class="linenos" data-line="1938"></span></a> <span class="kr">end</span> </span><span id="L-1939"><a href="#L-1939"><span class="linenos" data-line="1939"></span></a> <span class="kr">end</span> </span><span id="L-1940"><a href="#L-1940"><span class="linenos" data-line="1940"></span></a> <span class="kr">end</span> </span><span id="L-1941"><a href="#L-1941"><span class="linenos" data-line="1941"></span></a> </span><span id="L-1942"><a href="#L-1942"><span class="linenos" data-line="1942"></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-1943"><a href="#L-1943"><span class="linenos" data-line="1943"></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-1944"><a href="#L-1944"><span class="linenos" data-line="1944"></span></a> <span class="kr">if</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">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"><</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-1945"><a href="#L-1945"><span class="linenos" data-line="1945"></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-1946"><a href="#L-1946"><span class="linenos" data-line="1946"></span></a> <span class="kr">end</span> </span><span id="L-1947"><a href="#L-1947"><span class="linenos" data-line="1947"></span></a> <span class="kr">if</span> <span class="n">d2</span><span class="p">.</span><span class="n">year</span> <span class="o">></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"><</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1948"><a href="#L-1948"><span class="linenos" data-line="1948"></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-1949"><a href="#L-1949"><span class="linenos" data-line="1949"></span></a> <span class="kr">end</span> </span><span id="L-1950"><a href="#L-1950"><span class="linenos" data-line="1950"></span></a> <span class="kr">return</span> <span class="n">years</span> </span><span id="L-1951"><a href="#L-1951"><span class="linenos" data-line="1951"></span></a> <span class="kr">end</span> </span><span id="L-1952"><a href="#L-1952"><span class="linenos" data-line="1952"></span></a> </span><span id="L-1953"><a href="#L-1953"><span class="linenos" data-line="1953"></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-1954"><a href="#L-1954"><span class="linenos" data-line="1954"></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-1955"><a href="#L-1955"><span class="linenos" data-line="1955"></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-1956"><a href="#L-1956"><span class="linenos" data-line="1956"></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-1957"><a href="#L-1957"><span class="linenos" data-line="1957"></span></a> <span class="n">old</span> <span class="o">=</span> <span class="s2">"< 1"</span> </span><span id="L-1958"><a href="#L-1958"><span class="linenos" data-line="1958"></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-1959"><a href="#L-1959"><span class="linenos" data-line="1959"></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-1960"><a href="#L-1960"><span class="linenos" data-line="1960"></span></a> <span class="n">old</span> <span class="o">=</span> <span class="n">old_min</span> </span><span id="L-1961"><a href="#L-1961"><span class="linenos" data-line="1961"></span></a> <span class="kr">else</span> </span><span id="L-1962"><a href="#L-1962"><span class="linenos" data-line="1962"></span></a> <span class="n">old</span> <span class="o">=</span> <span class="n">old_min</span> <span class="o">..</span> <span class="s2">"/"</span> <span class="o">..</span> <span class="n">old_max</span> </span><span id="L-1963"><a href="#L-1963"><span class="linenos" data-line="1963"></span></a> <span class="kr">end</span> </span><span id="L-1964"><a href="#L-1964"><span class="linenos" data-line="1964"></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">'unit'</span> <span class="kr">then</span> </span><span id="L-1965"><a href="#L-1965"><span class="linenos" data-line="1965"></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-1966"><a href="#L-1966"><span class="linenos" data-line="1966"></span></a> <span class="kd">local</span> <span class="n">yo</span> </span><span id="L-1967"><a href="#L-1967"><span class="linenos" data-line="1967"></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-1968"><a href="#L-1968"><span class="linenos" data-line="1968"></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-1969"><a href="#L-1969"><span class="linenos" data-line="1969"></span></a> <span class="n">yo_pl</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s2">"years-old"</span><span class="p">]</span> </span><span id="L-1970"><a href="#L-1970"><span class="linenos" data-line="1970"></span></a> <span class="kr">end</span> </span><span id="L-1971"><a href="#L-1971"><span class="linenos" data-line="1971"></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-1972"><a href="#L-1972"><span class="linenos" data-line="1972"></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">'Q24564698'</span><span class="p">,</span> <span class="n">langs</span><span class="p">)</span> </span><span id="L-1973"><a href="#L-1973"><span class="linenos" data-line="1973"></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-1974"><a href="#L-1974"><span class="linenos" data-line="1974"></span></a> <span class="kr">end</span> </span><span id="L-1975"><a href="#L-1975"><span class="linenos" data-line="1975"></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-1976"><a href="#L-1976"><span class="linenos" data-line="1976"></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">'$1'</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-1977"><a href="#L-1977"><span class="linenos" data-line="1977"></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">"$1"</span><span class="p">,</span> <span class="n">old</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">else</span> </span><span id="L-1979"><a href="#L-1979"><span class="linenos" data-line="1979"></span></a> <span class="n">old_expr</span> <span class="o">=</span> <span class="n">old</span> <span class="o">..</span> <span class="s1">'&nbsp;'</span> <span class="o">..</span> <span class="n">yo</span> </span><span id="L-1980"><a href="#L-1980"><span class="linenos" data-line="1980"></span></a> <span class="kr">end</span> </span><span id="L-1981"><a href="#L-1981"><span class="linenos" data-line="1981"></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-1982"><a href="#L-1982"><span class="linenos" data-line="1982"></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">'$1'</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-1983"><a href="#L-1983"><span class="linenos" data-line="1983"></span></a> <span class="kr">else</span> </span><span id="L-1984"><a href="#L-1984"><span class="linenos" data-line="1984"></span></a> <span class="n">old_expr</span> <span class="o">=</span> <span class="n">old</span> </span><span id="L-1985"><a href="#L-1985"><span class="linenos" data-line="1985"></span></a> <span class="kr">end</span> </span><span id="L-1986"><a href="#L-1986"><span class="linenos" data-line="1986"></span></a> </span><span id="L-1987"><a href="#L-1987"><span class="linenos" data-line="1987"></span></a> <span class="kr">return</span> <span class="n">old_expr</span> </span><span id="L-1988"><a href="#L-1988"><span class="linenos" data-line="1988"></span></a><span class="kr">end</span> </span><span id="L-1989"><a href="#L-1989"><span class="linenos" data-line="1989"></span></a> </span><span id="L-1990"><a href="#L-1990"><span class="linenos" data-line="1990"></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-1991"><a href="#L-1991"><span class="linenos" data-line="1991"></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-1992"><a href="#L-1992"><span class="linenos" data-line="1992"></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-1993"><a href="#L-1993"><span class="linenos" data-line="1993"></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-1994"><a href="#L-1994"><span class="linenos" data-line="1994"></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-1995"><a href="#L-1995"><span class="linenos" data-line="1995"></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">"/"</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">'Sandboxlink-subpage-name'</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-1996"><a href="#L-1996"><span class="linenos" data-line="1996"></span></a> <span class="kr">end</span> </span><span id="L-1997"><a href="#L-1997"><span class="linenos" data-line="1997"></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-1998"><a href="#L-1998"><span class="linenos" data-line="1998"></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-1999"><a href="#L-1999"><span class="linenos" data-line="1999"></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-2000"><a href="#L-2000"><span class="linenos" data-line="2000"></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-2001"><a href="#L-2001"><span class="linenos" data-line="2001"></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-2002"><a href="#L-2002"><span class="linenos" data-line="2002"></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-2003"><a href="#L-2003"><span class="linenos" data-line="2003"></span></a> <span class="kr">end</span> </span><span id="L-2004"><a href="#L-2004"><span class="linenos" data-line="2004"></span></a> </span><span id="L-2005"><a href="#L-2005"><span class="linenos" data-line="2005"></span></a> <span class="kd">local</span> <span class="n">label_icon</span> <span class="o">=</span> <span class="s1">''</span> </span><span id="L-2006"><a href="#L-2006"><span class="linenos" data-line="2006"></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-2007"><a href="#L-2007"><span class="linenos" data-line="2007"></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-2008"><a href="#L-2008"><span class="linenos" data-line="2008"></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-2009"><a href="#L-2009"><span class="linenos" data-line="2009"></span></a> <span class="kr">else</span> </span><span id="L-2010"><a href="#L-2010"><span class="linenos" data-line="2010"></span></a> <span class="c1">-- exceptions or labels fixed</span> </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">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">"/labels"</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">''</span> <span class="ow">or</span> <span class="s1">'/'</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-2012"><a href="#L-2012"><span class="linenos" data-line="2012"></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-2013"><a href="#L-2013"><span class="linenos" data-line="2013"></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-2014"><a href="#L-2014"><span class="linenos" data-line="2014"></span></a> <span class="kr">end</span> </span><span id="L-2015"><a href="#L-2015"><span class="linenos" data-line="2015"></span></a> </span><span id="L-2016"><a href="#L-2016"><span class="linenos" data-line="2016"></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-2017"><a href="#L-2017"><span class="linenos" data-line="2017"></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-2018"><a href="#L-2018"><span class="linenos" data-line="2018"></span></a> <span class="kr">if</span> <span class="n">label</span> <span class="kr">then</span> </span><span id="L-2019"><a href="#L-2019"><span class="linenos" data-line="2019"></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="kr">then</span> </span><span id="L-2020"><a href="#L-2020"><span class="linenos" data-line="2020"></span></a> <span class="kr">if</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-2021"><a href="#L-2021"><span class="linenos" data-line="2021"></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-2022"><a href="#L-2022"><span class="linenos" data-line="2022"></span></a> <span class="kr">end</span> </span><span id="L-2023"><a href="#L-2023"><span class="linenos" data-line="2023"></span></a> <span class="kd">local</span> <span class="n">_</span><span class="p">,</span> <span class="n">items_g</span> <span class="o">=</span> <span class="nb">string.gsub</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="s2">"Q%d+"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span> </span><span id="L-2024"><a href="#L-2024"><span class="linenos" data-line="2024"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">isSet</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="ow">and</span> <span class="n">items_g</span> <span class="o">></span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-2025"><a href="#L-2025"><span class="linenos" data-line="2025"></span></a> <span class="n">args</span><span class="p">.</span><span class="n">case</span> <span class="o">=</span> <span class="s2">"plural"</span> </span><span id="L-2026"><a href="#L-2026"><span class="linenos" data-line="2026"></span></a> <span class="kr">end</span> </span><span id="L-2027"><a href="#L-2027"><span class="linenos" data-line="2027"></span></a> <span class="kr">end</span> </span><span id="L-2028"><a href="#L-2028"><span class="linenos" data-line="2028"></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-2029"><a href="#L-2029"><span class="linenos" data-line="2029"></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-2030"><a href="#L-2030"><span class="linenos" data-line="2030"></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-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 class="kr">end</span> </span><span id="L-2033"><a href="#L-2033"><span class="linenos" data-line="2033"></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-2034"><a href="#L-2034"><span class="linenos" data-line="2034"></span></a> <span class="kr">end</span> </span><span id="L-2035"><a href="#L-2035"><span class="linenos" data-line="2035"></span></a> <span class="kr">end</span> </span><span id="L-2036"><a href="#L-2036"><span class="linenos" data-line="2036"></span></a> </span><span id="L-2037"><a href="#L-2037"><span class="linenos" data-line="2037"></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-2038"><a href="#L-2038"><span class="linenos" data-line="2038"></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">''</span> </span><span id="L-2039"><a href="#L-2039"><span class="linenos" data-line="2039"></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">"no"</span> <span class="kr">then</span> </span><span id="L-2040"><a href="#L-2040"><span class="linenos" data-line="2040"></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">"d:Special:EntityPage/"</span> <span class="o">..</span> <span class="n">id</span><span class="p">)</span> </span><span id="L-2041"><a href="#L-2041"><span class="linenos" data-line="2041"></span></a> <span class="kr">return</span> <span class="s2">"[["</span> <span class="o">..</span> <span class="n">article</span> <span class="o">..</span> <span class="s2">"|"</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">"]]"</span> <span class="o">..</span> <span class="n">label_icon</span><span class="p">,</span> <span class="n">ret2</span> </span><span id="L-2042"><a href="#L-2042"><span class="linenos" data-line="2042"></span></a> <span class="kr">else</span> </span><span id="L-2043"><a href="#L-2043"><span class="linenos" data-line="2043"></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-2044"><a href="#L-2044"><span class="linenos" data-line="2044"></span></a> <span class="kr">end</span> </span><span id="L-2045"><a href="#L-2045"><span class="linenos" data-line="2045"></span></a><span class="kr">end</span> </span><span id="L-2046"><a href="#L-2046"><span class="linenos" data-line="2046"></span></a> </span><span id="L-2047"><a href="#L-2047"><span class="linenos" data-line="2047"></span></a><span class="c1">-- Utilities -----------------------------</span> </span><span id="L-2048"><a href="#L-2048"><span class="linenos" data-line="2048"></span></a><span class="c1">-- See also module ../debug.</span> </span><span id="L-2049"><a href="#L-2049"><span class="linenos" data-line="2049"></span></a> </span><span id="L-2050"><a href="#L-2050"><span class="linenos" data-line="2050"></span></a><span class="c1">-- Copied from Module:Wikibase</span> </span><span id="L-2051"><a href="#L-2051"><span class="linenos" data-line="2051"></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-2052"><a href="#L-2052"><span class="linenos" data-line="2052"></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-2053"><a href="#L-2053"><span class="linenos" data-line="2053"></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-2054"><a href="#L-2054"><span class="linenos" data-line="2054"></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-2055"><a href="#L-2055"><span class="linenos" data-line="2055"></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-2056"><a href="#L-2056"><span class="linenos" data-line="2056"></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">''</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">end</span> </span><span id="L-2058"><a href="#L-2058"><span class="linenos" data-line="2058"></span></a> </span><span id="L-2059"><a href="#L-2059"><span class="linenos" data-line="2059"></span></a><span class="c1">-- Helper function for the default language code used</span> </span><span id="L-2060"><a href="#L-2060"><span class="linenos" data-line="2060"></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-2061"><a href="#L-2061"><span class="linenos" data-line="2061"></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-2062"><a href="#L-2062"><span class="linenos" data-line="2062"></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-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><span id="L-2065"><a href="#L-2065"><span class="linenos" data-line="2065"></span></a><span class="c1">-- Number of statements</span> </span><span id="L-2066"><a href="#L-2066"><span class="linenos" data-line="2066"></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-2067"><a href="#L-2067"><span class="linenos" data-line="2067"></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-2068"><a href="#L-2068"><span class="linenos" data-line="2068"></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-2069"><a href="#L-2069"><span class="linenos" data-line="2069"></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-2070"><a href="#L-2070"><span class="linenos" data-line="2070"></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-2071"><a href="#L-2071"><span class="linenos" data-line="2071"></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">''</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">num</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-2073"><a href="#L-2073"><span class="linenos" data-line="2073"></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-2074"><a href="#L-2074"><span class="linenos" data-line="2074"></span></a> <span class="kd">local</span> <span class="n">largs</span> <span class="o">=</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">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-2076"><a href="#L-2076"><span class="linenos" data-line="2076"></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-2077"><a href="#L-2077"><span class="linenos" data-line="2077"></span></a> <span class="kr">end</span> </span><span id="L-2078"><a href="#L-2078"><span class="linenos" data-line="2078"></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-2079"><a href="#L-2079"><span class="linenos" data-line="2079"></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-2080"><a href="#L-2080"><span class="linenos" data-line="2080"></span></a> <span class="kr">end</span> </span><span id="L-2081"><a href="#L-2081"><span class="linenos" data-line="2081"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">query</span> <span class="o">=</span> <span class="s1">'num'</span> </span><span id="L-2082"><a href="#L-2082"><span class="linenos" data-line="2082"></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-2083"><a href="#L-2083"><span class="linenos" data-line="2083"></span></a> <span class="kr">return</span> <span class="n">num</span> </span><span id="L-2084"><a href="#L-2084"><span class="linenos" data-line="2084"></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-2085"><a href="#L-2085"><span class="linenos" data-line="2085"></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-2086"><a href="#L-2086"><span class="linenos" data-line="2086"></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">'raw'</span><span class="p">,</span> <span class="n">separator</span><span class="o">=</span><span class="s1">'/·/'</span><span class="p">}</span> </span><span id="L-2087"><a href="#L-2087"><span class="linenos" data-line="2087"></span></a> <span class="kr">if</span> <span class="n">values</span> <span class="kr">then</span> </span><span id="L-2088"><a href="#L-2088"><span class="linenos" data-line="2088"></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">'/·/'</span><span class="p">)</span> </span><span id="L-2089"><a href="#L-2089"><span class="linenos" data-line="2089"></span></a> <span class="kr">end</span> </span><span id="L-2090"><a href="#L-2090"><span class="linenos" data-line="2090"></span></a> <span class="kr">else</span> </span><span id="L-2091"><a href="#L-2091"><span class="linenos" data-line="2091"></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-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 class="kr">return</span> <span class="o">#</span><span class="n">num</span> </span><span id="L-2094"><a href="#L-2094"><span class="linenos" data-line="2094"></span></a><span class="kr">end</span> </span><span id="L-2095"><a href="#L-2095"><span class="linenos" data-line="2095"></span></a> </span><span id="L-2096"><a href="#L-2096"><span class="linenos" data-line="2096"></span></a><span class="c1">-- Returns true if property datavalue is found excluding novalue/somevalue</span> </span><span id="L-2097"><a href="#L-2097"><span class="linenos" data-line="2097"></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-2098"><a href="#L-2098"><span class="linenos" data-line="2098"></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-2099"><a href="#L-2099"><span class="linenos" data-line="2099"></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-2100"><a href="#L-2100"><span class="linenos" data-line="2100"></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-2101"><a href="#L-2101"><span class="linenos" data-line="2101"></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-2102"><a href="#L-2102"><span class="linenos" data-line="2102"></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-2103"><a href="#L-2103"><span class="linenos" data-line="2103"></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">"mainsnak"</span><span class="p">,</span> <span class="s2">"datavalue"</span><span class="p">})</span> </span><span id="L-2104"><a href="#L-2104"><span class="linenos" data-line="2104"></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-2105"><a href="#L-2105"><span class="linenos" data-line="2105"></span></a><span class="kr">end</span> </span><span id="L-2106"><a href="#L-2106"><span class="linenos" data-line="2106"></span></a> </span><span id="L-2107"><a href="#L-2107"><span class="linenos" data-line="2107"></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-2108"><a href="#L-2108"><span class="linenos" data-line="2108"></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-2109"><a href="#L-2109"><span class="linenos" data-line="2109"></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-2110"><a href="#L-2110"><span class="linenos" data-line="2110"></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-2111"><a href="#L-2111"><span class="linenos" data-line="2111"></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-2112"><a href="#L-2112"><span class="linenos" data-line="2112"></span></a> <span class="kd">local</span> <span class="n">param</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-2113"><a href="#L-2113"><span class="linenos" data-line="2113"></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-2114"><a href="#L-2114"><span class="linenos" data-line="2114"></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-2115"><a href="#L-2115"><span class="linenos" data-line="2115"></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-2116"><a href="#L-2116"><span class="linenos" data-line="2116"></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-2117"><a href="#L-2117"><span class="linenos" data-line="2117"></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-2118"><a href="#L-2118"><span class="linenos" data-line="2118"></span></a><span class="kr">end</span> </span><span id="L-2119"><a href="#L-2119"><span class="linenos" data-line="2119"></span></a> </span><span id="L-2120"><a href="#L-2120"><span class="linenos" data-line="2120"></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-2121"><a href="#L-2121"><span class="linenos" data-line="2121"></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-2122"><a href="#L-2122"><span class="linenos" data-line="2122"></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-2123"><a href="#L-2123"><span class="linenos" data-line="2123"></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-2124"><a href="#L-2124"><span class="linenos" data-line="2124"></span></a><span class="kr">end</span> </span><span id="L-2125"><a href="#L-2125"><span class="linenos" data-line="2125"></span></a> </span><span id="L-2126"><a href="#L-2126"><span class="linenos" data-line="2126"></span></a><span class="kr">return</span> <span class="n">p</span> </span></pre></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐znn46 Cached time: 20241124184458 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.403 seconds Real time usage: 0.654 seconds Preprocessor visited node count: 3653/1000000 Post‐expand include size: 75651/2097152 bytes Template argument size: 4265/2097152 bytes Highest expansion depth: 12/100 Expensive parser function count: 2/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 6040/5000000 bytes Lua time usage: 0.205/10.000 seconds Lua memory usage: 2644006/52428800 bytes Number of Wikibase entities loaded: 5/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 557.275 1 -total 96.10% 535.515 1 Mòdul:Wikidades/ús 34.06% 189.809 37 Plantilla:GetLabelFix 27.05% 150.721 32 Plantilla:P 13.76% 76.680 5 Plantilla:Q 8.64% 48.135 1 Plantilla:Risc_elevat 8.07% 44.962 1 Plantilla:Ombox 7.60% 42.335 2 Plantilla:Metacaixa_d'avís_projecte/core 3.36% 18.717 15 Plantilla:Qid_normalize 1.98% 11.038 1 Plantilla:Avís --> </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="">Obtingut de «<a dir="ltr" href="https://ca.wikipedia.org/w/index.php?title=Mòdul:Wikidades&oldid=34103641">https://ca.wikipedia.org/w/index.php?title=Mòdul:Wikidades&oldid=34103641</a>»</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Especial:Categorias" title="Especial:Categorias">Categories</a>: <ul><li><a href="/wiki/Categoria:Plantilles_protegides" title="Categoria:Plantilles protegides">Plantilles protegides</a></li><li><a href="/wiki/Categoria:M%C3%B2duls_amb_dades_de_Wikidata" title="Categoria:Mòduls amb dades de Wikidata">Mòduls amb dades de Wikidata</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> La pàgina va ser modificada per darrera vegada el 11 oct 2024 a les 08:37.</li> <li id="footer-info-copyright">El text està disponible sota la <a href="/wiki/Viquip%C3%A8dia:Text_de_la_llic%C3%A8ncia_de_Creative_Commons_Reconeixement-Compartir_Igual_4.0_No_adaptada" title="Viquipèdia:Text de la llicència de Creative Commons Reconeixement-Compartir Igual 4.0 No adaptada"> Llicència de Creative Commons Reconeixement i Compartir-Igual</a>; es poden aplicar termes addicionals. Vegeu les <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use/ca">Condicions d'ús</a>. Wikipedia® (Viquipèdia™) és una <a href="/wiki/Marca_comercial" title="Marca comercial">marca registrada</a> de <a rel="nofollow" class="external text" href="https://www.wikimediafoundation.org">Wikimedia Foundation, Inc</a>.<br /></li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Política de privadesa</a></li> <li id="footer-places-about"><a href="/wiki/Viquip%C3%A8dia:Quant_a_la_Viquip%C3%A8dia">Quant al projecte Viquipèdia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Viquip%C3%A8dia:Av%C3%ADs_d%27exempci%C3%B3_de_responsabilitat">Descàrrec de responsabilitat</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Codi de conducta</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Desenvolupadors</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/ca.wikipedia.org">Estadístiques</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Declaració de cookies</a></li> <li id="footer-places-mobileview"><a href="//ca.m.wikipedia.org/w/index.php?title=M%C3%B2dul:Wikidades&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Versió per a mòbils</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-f69cdc8f6-znn46","wgBackendResponseTime":1053,"wgPageParseReport":{"limitreport":{"cputime":"0.403","walltime":"0.654","ppvisitednodes":{"value":3653,"limit":1000000},"postexpandincludesize":{"value":75651,"limit":2097152},"templateargumentsize":{"value":4265,"limit":2097152},"expansiondepth":{"value":12,"limit":100},"expensivefunctioncount":{"value":2,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":6040,"limit":5000000},"entityaccesscount":{"value":5,"limit":400},"timingprofile":["100.00% 557.275 1 -total"," 96.10% 535.515 1 Mòdul:Wikidades/ús"," 34.06% 189.809 37 Plantilla:GetLabelFix"," 27.05% 150.721 32 Plantilla:P"," 13.76% 76.680 5 Plantilla:Q"," 8.64% 48.135 1 Plantilla:Risc_elevat"," 8.07% 44.962 1 Plantilla:Ombox"," 7.60% 42.335 2 Plantilla:Metacaixa_d'avís_projecte/core"," 3.36% 18.717 15 Plantilla:Qid_normalize"," 1.98% 11.038 1 Plantilla:Avís"]},"scribunto":{"limitreport-timeusage":{"value":"0.205","limit":"10.000"},"limitreport-memusage":{"value":2644006,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-znn46","timestamp":"20241124184458","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>