CINXE.COM
Module:Wikidades - Vicipéid
<!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="ga" dir="ltr"> <head> <meta charset="UTF-8"> <title>Module:Wikidades - Vicipéid</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(/(?:^|; )gawikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],"wgRequestId":"bd386d5b-94ed-4d6e-bae6-cb8428056f03","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Module:Wikidades","wgTitle":"Wikidades","wgCurRevisionId":1229700,"wgRevisionId":1229700,"wgArticleId":94842,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgPageViewLanguage":"ga","wgPageContentLanguage":"ga","wgPageContentModel":"Scribunto","wgRelevantPageName":"Module:Wikidades","wgRelevantArticleId":94842,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"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","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","wikibase.client.vector-2022","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</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=ga&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.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=ga&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=ga&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="Module:Wikidades - Vicipéid"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//ga.m.wikipedia.org/wiki/Module:Wikidades"> <link rel="alternate" type="application/x-wiki" title="Cuir in eagar" href="/w/index.php?title=Module:Wikidades&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Vicipéid (ga)"> <link rel="EditURI" type="application/rsd+xml" href="//ga.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://ga.wikipedia.org/wiki/Module:Wikidades"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.ga"> <link rel="alternate" type="application/atom+xml" title="Fotha Atom Vicipéid" href="/w/index.php?title=Speisialta:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject mw-editable page-Module_Wikidades rootpage-Module_Wikidades skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</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="Site"> <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="Príomh-roghchlár" > <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">Príomh-roghchlár</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">Príomh-roghchlár</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">folaigh</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Nascleanúint </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Pr%C3%ADomhleathanach" title="Tabhair cuairt ar an bpríomhleathanach [z]" accesskey="z"><span>Príomhleathanach</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Vicip%C3%A9id:L%C3%A1rionad_comhphobail" title="Maidir leis an tionscadal, cad is féidir leat a dhéanamh, conas rudaí a aimsiú"><span>Tairseach chomhphobail</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Vicip%C3%A9id:C%C3%BArsa%C3%AD_reatha" title="Faigh eolas cúlrach maidir le chursaí reatha"><span>Cúrsaí reatha</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Speisialta:RecentChanges" title="Liosta de na hathruithe is déanaí sa vicí [r]" accesskey="r"><span>Athruithe deireanacha</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Speisialta:Random" title="Lódáil leathanach randamach [x]" accesskey="x"><span>Leathanach fánach</span></a></li><li id="n-help" class="mw-list-item"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents" title="An áit chun cabhair a fháil."><span>Cabhair</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Pr%C3%ADomhleathanach" 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="Vicipéid" src="/static/images/mobile/copyright/wikipedia-wordmark-ga.svg" style="width: 7.5em; height: 1.375em;"> <img class="mw-logo-tagline" alt="" src="/static/images/mobile/copyright/wikipedia-tagline-ga.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/Speisialta:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Cuardaigh Vicipéid [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Cuardaigh</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="Cuardaigh Vicipéid" aria-label="Cuardaigh Vicipéid" autocapitalize="sentences" title="Cuardaigh Vicipéid [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Speisialta:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Cuardaigh</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Do chuid uirlisí"> <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="Cuma"> <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="Cuma" > <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">Cuma</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_ga.wikipedia.org&uselang=ga" class=""><span>Síntiúis</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=Speisialta:CreateAccount&returnto=Module%3AWikidades" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Cruthaigh cuntas</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=Speisialta:UserLogin&returnto=Module%3AWikidades" title="Moltar duit logáil isteach, ach níl sé riachtanach. [o]" accesskey="o" class=""><span>Logáil isteach</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="More options" > <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="Do chuid uirlisí" > <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">Do chuid uirlisí</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <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_ga.wikipedia.org&uselang=ga"><span>Síntiúis</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Speisialta:CreateAccount&returnto=Module%3AWikidades" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Cruthaigh cuntas</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Speisialta:UserLogin&returnto=Module%3AWikidades" title="Moltar duit logáil isteach, ach níl sé riachtanach. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Logáil isteach</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"> Pages for logged out editors <a href="/wiki/Cabhair:Introduction" aria-label="Learn more about editing"><span>learn more</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/Speisialta:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Dréachtaí</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Speisialta:MyTalk" title="Plé maidir le na hathruithe a dhéantar ón seoladh IP seo [n]" accesskey="n"><span>Plé</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="Site"> <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="Clár ábhair" 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">Clár ábhair</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">folaigh</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">Tús</div> </a> </li> <li id="toc-Functions" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Functions"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Functions</span> </div> </a> <ul id="toc-Functions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Function_claim" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Function_claim"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Function claim</span> </div> </a> <button aria-controls="toc-Function_claim-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Function claim subsection</span> </button> <ul id="toc-Function_claim-sublist" class="vector-toc-list"> <li id="toc-General_parameters" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#General_parameters"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>General parameters</span> </div> </a> <ul id="toc-General_parameters-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Parameters_for_formatting" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Parameters_for_formatting"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Parameters for formatting</span> </div> </a> <ul id="toc-Parameters_for_formatting-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Parameters_of_table_with_propiety_and_qualifiers" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Parameters_of_table_with_propiety_and_qualifiers"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>Parameters of table with propiety and qualifiers</span> </div> </a> <ul id="toc-Parameters_of_table_with_propiety_and_qualifiers-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Function_getLabel" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Function_getLabel"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Function getLabel</span> </div> </a> <ul id="toc-Function_getLabel-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Function_getParentValues" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Function_getParentValues"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Function getParentValues</span> </div> </a> <ul id="toc-Function_getParentValues-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Function_linkWithParentLabel" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Function_linkWithParentLabel"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Function linkWithParentLabel</span> </div> </a> <ul id="toc-Function_linkWithParentLabel-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Function_yearsOld" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Function_yearsOld"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Function yearsOld</span> </div> </a> <ul id="toc-Function_yearsOld-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Function_editAtWikidata" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Function_editAtWikidata"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Function editAtWikidata</span> </div> </a> <ul id="toc-Function_editAtWikidata-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Utility_functions" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Utility_functions"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Utility functions</span> </div> </a> <ul id="toc-Utility_functions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Wikidata_redirects" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Wikidata_redirects"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>Wikidata redirects</span> </div> </a> <ul id="toc-Wikidata_redirects-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Using_from_another_module" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Using_from_another_module"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>Using from another module</span> </div> </a> <ul id="toc-Using_from_another_module-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Dependencies" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Dependencies"> <div class="vector-toc-text"> <span class="vector-toc-numb">11</span> <span>Dependencies</span> </div> </a> <ul id="toc-Dependencies-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">12</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Clár ábhair" 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="Toggle the table of contents" > <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">Toggle the table of contents</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">Module</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="Go to an article in another language. Available in 31 languages" > <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 languages</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 – Araibis" lang="ar" hreflang="ar" data-title="وحدة:Wikidata.Ca" data-language-autonym="العربية" data-language-local-name="Araibis" 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 – Astúiris" lang="ast" hreflang="ast" data-title="Módulu:Wikidata" data-language-autonym="Asturianu" data-language-local-name="Astúiris" 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 – Atikamekw" lang="atj" hreflang="atj" data-title="Aitapihikewin:Wikidata" data-language-autonym="Atikamekw" data-language-local-name="Atikamekw" 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 – Bailís" lang="ban" hreflang="ban" data-title="Modul:Wikidata" data-language-autonym="Basa Bali" data-language-local-name="Bailí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-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/M%C3%B2dul:Wikidades" title="Mòdul:Wikidades – Catalóinis" lang="ca" hreflang="ca" data-title="Mòdul:Wikidades" data-language-autonym="Català" data-language-local-name="Catalóinis" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-ckb mw-list-item"><a href="https://ckb.wikipedia.org/wiki/%D9%85%DB%86%D8%AF%DB%8C%D9%88%D9%88%D9%84:Wikidata.Ca" title="مۆدیوول:Wikidata.Ca – Coirdis Lárnach" lang="ckb" hreflang="ckb" data-title="مۆدیوول:Wikidata.Ca" data-language-autonym="کوردی" data-language-local-name="Coirdis Lárnach" 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 – Bascais" lang="eu" hreflang="eu" data-title="Modulu:Wikidata" data-language-autonym="Euskara" data-language-local-name="Bascais" class="interlanguage-link-target"><span>Euskara</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 – Gaeilge na hAlban" lang="gd" hreflang="gd" data-title="Mòideal:Wikidata" data-language-autonym="Gàidhlig" data-language-local-name="Gaeilge na hAlban" 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 – Gailísis" lang="gl" hreflang="gl" data-title="Módulo:Wikidades" data-language-autonym="Galego" data-language-local-name="Gailísis" 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 – Uaúis" lang="guc" hreflang="guc" data-title="Módulo:Wikidata" data-language-autonym="Wayuunaiki" data-language-local-name="Uaúis" 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 – Hásais" lang="ha" hreflang="ha" data-title="Module:Wikidata" data-language-autonym="Hausa" data-language-local-name="Hásais" 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 – Indinéisis" lang="id" hreflang="id" data-title="Modul:Wikidata" data-language-autonym="Bahasa Indonesia" data-language-local-name="Indinéisis" 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 – Caibílis" lang="kab" hreflang="kab" data-title="Module:Wikidata" data-language-autonym="Taqbaylit" data-language-local-name="Caibílis" 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 – Maidiúiris" lang="mad" hreflang="mad" data-title="Modul:Wikidata" data-language-autonym="Madhurâ" data-language-local-name="Maidiúiris" 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 – Míneangcababhais" lang="min" hreflang="min" data-title="Modul:Wikidata" data-language-autonym="Minangkabau" data-language-local-name="Míneangcababhais" 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 – Malaeis" lang="ms" hreflang="ms" data-title="Modul:Wikidata.Ca" data-language-autonym="Bahasa Melayu" data-language-local-name="Malaeis" 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 – Máltais" lang="mt" hreflang="mt" data-title="Module:Wikidata" data-language-autonym="Malti" data-language-local-name="Máltais" 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 – Mázandaráinis" lang="mzn" hreflang="mzn" data-title="ماژول:Wikidata.Ca" data-language-autonym="مازِرونی" data-language-local-name="Mázandaráinis" 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 – Bocmál" lang="nb" hreflang="nb" data-title="Modul:Wikidades" data-language-autonym="Norsk bokmål" data-language-local-name="Bocmá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 – Ocsatáinis" lang="oc" hreflang="oc" data-title="Mòdul:Wikidadas" data-language-autonym="Occitan" data-language-local-name="Ocsatáinis" 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 – Ceatsuais" lang="qu" hreflang="qu" data-title="Módulo:Wikidata2" data-language-autonym="Runa Simi" data-language-local-name="Ceatsuais" 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 – Sáimis an Tuaiscirt" lang="se" hreflang="se" data-title="Modula:Ca:Wikidata" data-language-autonym="Davvisámegiella" data-language-local-name="Sáimis an Tuaiscirt" 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 – Suaisis" lang="ss" hreflang="ss" data-title="Module:Wikidata" data-language-autonym="SiSwati" data-language-local-name="Suaisis" 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 – Songais" lang="ts" hreflang="ts" data-title="Module:Wikidata" data-language-autonym="Xitsonga" data-language-local-name="Songais" 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úis" lang="ur" hreflang="ur" data-title="ماڈیول:Wikidata.Ca" data-language-autonym="اردو" data-language-local-name="Urdúis" 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 – Veinéisis" lang="vec" hreflang="vec" data-title="Modulo:Wikidades" data-language-autonym="Vèneto" data-language-local-name="Veinéisis" 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="Athraigh na naisc idirtheanga" class="wbc-editpage">Athraigh naisc</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="Ainmspásanna"> <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/Module:Wikidades" title="View the module page [c]" accesskey="c"><span>Module</span></a></li><li id="ca-talk" class="new vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module_talk:Wikidades&action=edit&redlink=1" rel="discussion" class="new" title="Plé mar gheall ar an leathanach inneachair (níl an leathanach ann) [t]" accesskey="t"><span>Plé</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="Change language variant" > <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="Radhairc"> <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/Module:Wikidades"><span>Léigh</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Wikidades&action=edit" title="Edit the source code of this page [e]" accesskey="e"><span>Cuir foinse in eagar</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Wikidades&action=history" title="Leagain stairiúla den leathanach seo. [h]" accesskey="h"><span>Féach ar stair</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <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="Uirlisí" > <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">Uirlisí</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">Uirlisí</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">folaigh</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Gníomhartha </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/Module:Wikidades"><span>Léigh</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Module:Wikidades&action=edit" title="Edit the source code of this page [e]" accesskey="e"><span>Cuir foinse in eagar</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Module:Wikidades&action=history"><span>Féach ar stair</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> Ginearálta </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Speisialta:WhatLinksHere/Module:Wikidades" title="Liosta de gach leathanach sa vicí ina bhfuil nasc chuig an leathanach seo [j]" accesskey="j"><span>Cad a nascann anseo</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Speisialta:RecentChangesLinked/Module:Wikidades" rel="nofollow" title="Na hathruithe is déanaí ar leathanaigh a nascaíonn chuig an leathanach seo [k]" accesskey="k"><span>Athruithe gaolmhara</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Speisialta:SpecialPages" title="Liosta de gach leathanach speisialta [q]" accesskey="q"><span>Leathanaigh speisialta</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Module:Wikidades&oldid=1229700" title="Nasc buan leis an leagan seo den leathanach seo"><span>Nasc buan</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Module:Wikidades&action=info" title="More information about this page"><span>Eolas faoin leathanach</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Speisialta:UrlShortener&url=https%3A%2F%2Fga.wikipedia.org%2Fwiki%2FModule%3AWikidades"><span>Faigh URL giorraithe</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Speisialta:QrCode&url=https%3A%2F%2Fga.wikipedia.org%2Fwiki%2FModule%3AWikidades"><span>Íoslódáil cód 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"> Print/export </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=Speisialta:DownloadAsPdf&page=Module%3AWikidades&action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Leagan inphriontáilte an leathanaigh seo [p]" accesskey="p"><span>Leagan inphriontáilte</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"> I dtionscadail eile </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-wikidata mw-list-item"><a href="https://www.wikidata.org/wiki/Module:Wikidades" hreflang="en"><span>Wikidata</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q86580938" title="Link to connected data repository item [g]" accesskey="g"><span>Mír 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="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Cuma"> <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">Cuma</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">folaigh</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">Ón Vicipéid, an chiclipéid shaor.</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="ga" dir="ltr"><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>This is the documentation of <a class="mw-selflink selflink">Module:Wikidades</a> in English. </p><p>This module fetches formatted data from Wikidata. It works in local language and it has options for internationalization. </p><p>Wondering what does Wikidades mean? See <a href="https://ga.wiktionary.org/wiki/en:dada#Catalan" class="extiw" title="wikt:en:dada">wikt:en:dada#Catalan</a>. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Functions">Functions</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-1" title="Edit section's source code: Functions"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Basic function: </p> <ul><li><code><a href="#Function_claim">claim</a></code>: returns the value (or values) of a statement or a qualifier formatted with parameters or using a default format depending on the data type.</li></ul> <p>Other functions: </p> <ul><li><code><a href="#Function_getLabel">getLabel</a></code>: returns the label of an item, with some optional parameters.</li> <li><code><a href="#Function_getParentValues">getParentValues</a></code>: returns labels and parent values of a property, recursively.</li> <li><code><a href="#Function_linkWithParentLabel">linkWithParentLabel</a></code>: creates a link with the label of a parent property. For example to link <a href="https://www.wikidata.org/wiki/Property:P405" class="extiw" title="d:Property:P405">Údar an tacsóin <small>(P405)</small></a> with the label <a href="https://www.wikidata.org/wiki/Property:P835" class="extiw" title="d:Property:P835">Lua an údair (zó-eolaíocht) <small>(P835)</small></a> from the parent item.</li> <li><code><a href="#Function_yearsOld">yearsOld</a></code>: returns the age of a person: difference between <a href="https://www.wikidata.org/wiki/Property:P569" class="extiw" title="d:Property:P569">Dáta breithe <small>(P569)</small></a> and <a href="https://www.wikidata.org/wiki/Property:P570" class="extiw" title="d:Property:P570">Dáta báis <small>(P570)</small></a>, when the two properties exist; or difference between <a href="https://www.wikidata.org/wiki/Property:P569" class="extiw" title="d:Property:P569">Dáta breithe <small>(P569)</small></a> and current date, if there is no P570. Returns the completed years (nn) or range of years (nn/mm) depending on the precision of the dates.</li> <li><code><a href="#Function_editAtWikidata">editAtWikidata</a></code>: returns a pencil icon linked to a declaration on Wikidata. Planned to pop-up an editing interace by <a href="https://www.mediawiki.org/wiki/Wikidata_Bridge" class="extiw" title="mw:Wikidata Bridge">mw:Wikidata Bridge</a>.</li></ul> <p>Other <a href="#Utility_functions">utility functions</a>: getSiteLink, lang, numStatements, validProperty, formatNum. </p> <div class="mw-heading mw-heading2"><h2 id="Function_claim">Function claim</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-2" title="Edit section's source code: Function claim"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Returns the value (or values) of a statement or a qualifier formatted with parameters or using a default format depending on the data type. By default, it refers to the Wikidata item (Qid) associated to the current page. </p><p>Full syntax: </p> <dl><dd><code>{{#invoke:Wikidades|claim|item= |lang= |property= |qualifier= |value= |list= |tablesort= |formatting= |separator= |conjunction= |editicon= |showerrors= |default= }}</code></dd></dl> <p>Additional syntax for table format: </p> <dl><dd><code>{{#invoke:Wikidades|claim|item= |lang= |property= |qualifier= |qualifier2= |...|qualifier<i>x</i>= |formatting=table |tablesort= |sorting= |rowformat= |rowsubformat1= |...|rowsubformat<i>x</i>= |colformat0= |...|colformat<i>x</i>= |case0= |...|case<i>x</i>= |separator= |conjunction= |editicon= |showerrors= |default= |references= }}</code></dd></dl> <div class="mw-heading mw-heading3"><h3 id="General_parameters">General parameters</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-3" title="Edit section's source code: General parameters"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><code>item=</code> (optional) Specifies an item (Qid) other than the associated to current page. Use it with moderation as arbitrary access to Wikidata is expensive. It can be defined in the parent frame of the template. Alias <code>from</code>.</li></ul> <ul><li><code>lang=</code> (optional) Indicates the code of a given language. It can be defined in the parent frame of the template. By default, it uses the local language of the wiki. If there is no label in this language then it tries in the fall back languages defined in MediaWiki. On the debug console type =mw.dumpObject(mw.language.getFallbacksFor(mw.getContentLanguage():getCode())) to see the fallback languages of your wiki. If the label has not been found in the preferred language, it adds the language code and a label icon to translate it on Wikidata. <span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q12069631#P31" title="Edit the value on Wikidata"><img alt="Edit the value on Wikidata" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/63/Arbcom_ru_editing.svg/10px-Arbcom_ru_editing.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/63/Arbcom_ru_editing.svg/15px-Arbcom_ru_editing.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/63/Arbcom_ru_editing.svg/20px-Arbcom_ru_editing.svg.png 2x" data-file-width="600" data-file-height="600" /></a></span> to translate it on Wikidata.</li></ul> <ul><li><code>property=</code> (required) Property id of the statement (Pid). It is possible to define alternative properties with any separator, for example "P17 or P131", and it gets the first one found. It also accepts a minuscule p, but it is not recommended. It also accepts the property label, for example "property=country" is equivalent to "property=P17" for <a href="https://www.wikidata.org/wiki/Property:P17" class="extiw" title="d:Property:P17">Tír <small>(P17)</small></a>.</li></ul> <ul><li><code>qualifier=</code> (optional) Qualifier (Pid) of a property value.</li></ul> <ul><li><code>value=</code> (optional) Value preferred to Wikidata one. It can be an optional parameter in a template with format {{{parameter|}}}, so if it exists then it takes the value of the parameter, if it is void then it gets the value of Wikidata. <ul><li><code>value=NONE</code> With this special value, it returns a void string. This allows to set a parameter that does not fetch anything from Wikidata, or to show only values provided in the template with <code>{{{parameter|NONE}}}</code>. It is equivalent to wiki syntax: <code>{{#ifeq:{{{parameter|}}}|NONE|<!-- do nothing -->}}</code>.</li></ul></li></ul> <ul><li><code>references=</code> (optional) With any value, recommended <code>yes</code> for readability, it shows the references of the value. If exist <a href="https://www.wikidata.org/wiki/Property:P854" class="extiw" title="d:Property:P854">URL tagartha <small>(P854)</small></a>, and either <a href="https://www.wikidata.org/wiki/Property:P1476" class="extiw" title="d:Property:P1476">Teideal <small>(P1476)</small></a> or <a href="https://www.wikidata.org/wiki/Property:P248" class="extiw" title="d:Property:P248">Ráite i <small>(P248)</small></a>, then it is formatted with <a href="https://www.wikidata.org/wiki/Special:EntityPage/Q5637226" class="extiw" title="d:Special:EntityPage/Q5637226">Teimpléad:Cite web-en <small>(Q5637226)</small></a> using the local parameters defined in table i18n["cite"] at <a href="/wiki/Module:Wikidades/i18n" title="Module:Wikidades/i18n">Module:Wikidades/i18n</a>. If exist <a href="https://www.wikidata.org/wiki/Property:P1433" class="extiw" title="d:Property:P1433">Foilsithe i <small>(P1433)</small></a>, and title or stated in, then it is formatted with <a href="https://www.wikidata.org/wiki/Special:EntityPage/Q5624899" class="extiw" title="d:Special:EntityPage/Q5624899">Teimpléad:Luaigh foilseachán <small>(Q5624899)</small></a>. Otherwise it is formatted as text. <dl><dd>If used with formatting=table (see <a href="#Parameters_of_table_with_propiety_and_qualifiers">below</a>) you must include a placeholder for references.</dd> <dd>For references defined with <a href="https://www.wikidata.org/wiki/Property:P248" class="extiw" title="d:Property:P248">Ráite i <small>(P248)</small></a> it adds argument name for grouping identical references. These references may be different using <a href="https://www.wikidata.org/wiki/Property:P1476" class="extiw" title="d:Property:P1476">Teideal <small>(P1476)</small></a>, <a href="https://www.wikidata.org/wiki/Property:P813" class="extiw" title="d:Property:P813">Dáta rochtana <small>(P813)</small></a> o <a href="https://www.wikidata.org/wiki/Property:P304" class="extiw" title="d:Property:P304">Leathanach <small>(P304)</small></a>. Other qualifiers must be coherent in order to avoid error "Invalid <ref> tag; name defined multiple times with different content".</dd></dl></li></ul> <ul><li><code>list=</code> (optional): <ul><li><code>list=true</code> (default) shows a list of all preferred and normal values (see separator and conjuction below). It never fetches deprecated values.</li> <li><code>list=false</code> or <code>list=no</code> shows only one value, the best ranked (preferred or normal) or the oldest of those with the best rank.</li> <li><code>list=bestrank</code> shows a list of the best ranked values. It is equivalent to list=true if all values have the same rank. It is equivalent to list=false if only one value is best ranked. Definition <code>list=firstrank</code> is an alias.</li> <li><code>list=lang</code> for monolingual values, shows values corresponding to the language of the lang parameter. See parameters lang and formatting for monolingualtext.</li> <li><code>list=notlang</code> for monolingual values, it does not show values corresponding to the language of the lang parameter.</li> <li><code>list=<i><number></i></code> Sets the maximum number of values to be returned. Setting it to list=1 is equal to list=false. Setting it to list=0 is equal to list=true.</li> <li><code>tablesort=0</code> (optional) sorts the list in ascending order. By default, sorting is by rank (preferred, normal), and by order in Wikidata.</li></ul></li></ul> <ul><li><code>separator=</code> (optional) Separator to use in lists or tables. For lists the default is <a href="/wiki/MediaWiki:Comma-separator" title="MediaWiki:Comma-separator">MediaWiki:Comma-separator</a> (in English a comma and a blank space ',%nbsp;'). For tables the default is a line break <br />. In some specials cases, a <br /> may not work if it is included with <a href="https://www.mediawiki.org/wiki/Strip_marker" class="extiw" title="mw:Strip marker">strip markers</a>. The alternative is to use the mark of a line feed control character: separator=LF.</li></ul> <ul><li><code>conjunction=</code> (optional) Conjunction to use as a separator between the last two elements of a list. By default it is equal to 'separator' if it is defined, otherwise it is <a href="/wiki/MediaWiki:And" title="MediaWiki:And">MediaWiki:And</a> plus <a href="/wiki/MediaWiki:Word-separator" title="MediaWiki:Word-separator">MediaWiki:Word-separator</a> (in English ' and '). For tables the default is a line break <br />.</li></ul> <ul><li><code>case=</code> (optional) Grammatical case to be used. As a general case handled by the module: <ul><li>case=gender: according to <a href="https://www.wikidata.org/wiki/Property:P21" class="extiw" title="d:Property:P21">Gnéas nó inscne <small>(P21)</small></a> of the element it shows the label <a href="https://www.wikidata.org/wiki/Property:P2521" class="extiw" title="d:Property:P2521">Foirm bhaininscneach an lipéid <small>(P2521)</small></a> of the value.</li> <li>For other particular cases of the local wiki, see the documentation of <a href="/wiki/Module:Wikidades/i18n" title="Module:Wikidades/i18n">Module:Wikidades/i18n</a>.</li></ul></li></ul> <ul><li><code>itemgender=</code> (optional) Item where to check <a href="https://www.wikidata.org/wiki/Property:P21" class="extiw" title="d:Property:P21">Gnéas nó inscne <small>(P21)</small></a> for using the feminine form if necessary. By default it is <code>item</code>. It is used in combination with case=gender.</li></ul> <ul><li><code>editicon=</code> (optional) Definition of the pencil icon <span class="mw-valign-baseline" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q12069631#P31" title="Edit the value on Wikidata"><img alt="Edit the value on Wikidata" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/63/Arbcom_ru_editing.svg/10px-Arbcom_ru_editing.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/63/Arbcom_ru_editing.svg/15px-Arbcom_ru_editing.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/63/Arbcom_ru_editing.svg/20px-Arbcom_ru_editing.svg.png 2x" data-file-width="600" data-file-height="600" /></a></span> to show and edit the statement fetched from Wikitada (planned to pop-up an editing interace by <a href="https://www.mediawiki.org/wiki/Wikidata_Bridge" class="extiw" title="mw:Wikidata Bridge">mw:Wikidata Bridge</a>). Value of editicion is get from invoke call, or from parent frame of the template, or by default from definition of value addpencil in <a href="/wiki/Module:Wikidades/i18n" title="Module:Wikidades/i18n">Module:Wikidades/i18n</a> as wiki setting. <ul><li>editicon=true: show the icon. It will not be necessary if this is the default value of the wiki.</li> <li>editicon=false or editicon=no: do not show the icon.</li> <li>editicon=right: show the icon and align it to the right.</li></ul></li></ul> <ul><li><code>shownovalue=</code> (optional) Flag for ignoring statemets defined as "no value". By default it is shownovalue=true showing message <a href="/wiki/MediaWiki:Wikibase-snakview-snaktypeselector-novalue" title="MediaWiki:Wikibase-snakview-snaktypeselector-novalue">MediaWiki:Wikibase-snakview-snaktypeselector-novalue</a>. With values shownovalue=false or shownovalue=no then the statement is ignored.</li></ul> <ul><li><code>showerrors=</code> (optional) With any value, typically 'yes', it shows error messages, if any. By default it shows the 'default' parameter.</li></ul> <ul><li><code>default=</code> (optional) Text to show for any error if 'showerrors' parameter is not defined.</li></ul> <ul><li><code>sandbox=</code> (opcional) With any value, typically 'yes', it redirects the invokes to <a href="/w/index.php?title=Module:Wikidades/sandbox&action=edit&redlink=1" class="new" title="Module:Wikidades/sandbox (níl an leathanach ann)">Module:Wikidades/sandbox</a>. The title of the subpage is retrived from <a href="/wiki/MediaWiki:Sandboxlink-subpage-name" title="MediaWiki:Sandboxlink-subpage-name">MediaWiki:Sandboxlink-subpage-name</a>, "sandbox" in English, check it in the wiki language if necessary. This parameter can be used as parent from a template. It makes no sense used directly in an invoke or require for testing purpouses. To be used only in preview or temporaly as the sandbox module sould not have any permanent link.</li></ul> <div class="mw-heading mw-heading3"><h3 id="Parameters_for_formatting">Parameters for formatting</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-4" title="Edit section's source code: Parameters for formatting"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><code>formatting=</code> (optional). Options for formatting depending on the data value and type: </p><p>Data value entity: </p> <ul><li><code>formatting=raw</code> Wikidata id (Qid or Pid) of the value.</li> <li><code>formatting=label</code> Label of the value in local language, its fall backs or as <i>raw</i>.</li> <li><code>formatting=sitelink</code> Title of the local site page, not linked. If there is no local page then it returns the format raw preffixed with interwiki link "d:".</li> <li><code>formatting=internallink</code> Internal link whenever possibe: 1) to local wiki page (sitelink), 2) red link to the label if it does not exist as sitelink in another Wikidata item, 3) to Wikidata as last option.</li> <li><code>formatting=<i>pattern</i></code> Format using a pattern with $1 as a parameter to replace. It can include templates or parser functions with a non expanded format: {{<a href="/wiki/Teimpl%C3%A9ad:((" title="Teimpléad:((">((</a>}}template{{!}}$1{{<a href="/wiki/Teimpl%C3%A9ad:))" title="Teimpléad:))">))</a>}} or {{<a href="/wiki/Teimpl%C3%A9ad:((" title="Teimpléad:((">((</a>}}template{{!}}parameter name{{<a href="/wiki/Teimpl%C3%A9ad:%3D" title="Teimpléad:=">=</a>}}$1{{<a href="/wiki/Teimpl%C3%A9ad:))" title="Teimpléad:))">))</a>}}, or alike.</li></ul> <dl><dd>The default format is a <a href="https://meta.wikimedia.org/wiki/Help:Piped_link" class="extiw" title="m:Help:Piped link">piped link</a> with link target as <i>sitelink</i> and link label as <i>label</i>. A link to Wikidata is formatted with <span style="color:#5f9cbb;">light blue color</span> different than the <span style="color:#0645AD;">internal blue link</span>. <ul><li><code>formatting=ucfirst</code> Variant of the default piped link with uppercase in first letter of label. In a list, it is used only for the first value.</li> <li><code>formatting=ucinternallink</code> Both "ucfirst" and "internallink".</li></ul></dd></dl> <p>Data value string: </p> <dl><dd>General: <ul><li><code>formatting=<i>pattern</i></code> Format using a pattern with $1 as a parameter to replace, for example: <code>formatting=[http://whc.unesco.org/en/list/$1 $1]</code>. For identifiers statements with an autogenerated link, the pattern can be found in the talk page of the property. It can include templates or parser functions with a non expanded format (see above for entity).</li></ul></dd> <dd>Type URL: <ul><li><code>formatting=weblink</code> Format as external link with the website as label: [http://www.example.com example.com], [http://example.com/en/page example.com…].</li></ul></dd> <dd>Type external-id: <ul><li><code>formatting=externalid</code> Format as external link with the URL pattern from <a href="https://www.wikidata.org/wiki/Property:P1630" class="extiw" title="d:Property:P1630">Formatter URL <small>(P1630)</small></a> in entity Pid of <code>property</code>.</li></ul></dd> <dd>Type math formula: <dl><dd>Returns the content wrapped with tag <math> that generates an image of the formua. See <a href="https://www.mediawiki.org/wiki/Extension:Math" class="extiw" title="mw:Extension:Math">mw:Extension:Math</a> and examples in <a href="https://www.wikidata.org/wiki/Property:P2534" class="extiw" title="d:Property:P2534">Foirmle <small>(P2534)</small></a>.</dd></dl></dd> <dd>Type musical notation <dl><dd>Returns the content wrapped with tag <score> that generates an image of the score. See <a href="https://www.mediawiki.org/wiki/Extension:Score" class="extiw" title="mw:Extension:Score">mw:Extension:Score</a> and examples in <a href="https://www.wikidata.org/wiki/Property:P6686" class="extiw" title="d:Property:P6686">Musical motif <small>(P6686)</small></a>. Format options:</dd></dl> <ul><li><code>formatting=sound</code> (optional) Adds the attribute sound="1" to the tag embeding an audio player after the score image.</li></ul></dd></dl> <p>Data value quantity: </p> <dl><dd>By default it show the quantity.</dd></dl> <ul><li><code>formatting=unit</code> Shows the quantity and the unit. It can show plural units if it is defined at <a href="/wiki/Module:Wikidades/Units" title="Module:Wikidades/Units">Module:Wikidades/Units</a>.</li> <li><code>formatting=unitcode</code> Shows the quantity and the code or abbreviation of the unit defined in <a href="https://www.wikidata.org/wiki/Property:P5061" class="extiw" title="d:Property:P5061">Siombail <small>(P5061)</small></a>. It can be changed locally at <a href="/wiki/Module:Wikidades/Units" title="Module:Wikidades/Units">Module:Wikidades/Units</a>. If not found it shows the unit name.</li> <li><code>formatting=duration</code> Shows a duration quantity broken into human-readable units: millennia, centuries, decades, years, days, hours, minutes, and seconds. For example 123456 seconds: 1 day, 10 hours, 17 minutes and 36 seconds. Previously it tries to convert the unit to seconds (using convert=Q11574), otherwise it assumes the quantity is expressed in seconds. <ul><li><code>formatting=durationhms</code> Shows the duration abbreviated in hours, minutes and seconds. For example 12345 seconds: 3h 25m 45s. Format of local abbreviations can be defined at <a href="/wiki/Module:Wikidades/i18n" title="Module:Wikidades/i18n">Module:Wikidades/i18n</a> in table "hms".</li> <li><code>formatting=durationh:m:s</code> Show the duration hms simplified, as in 3:25:45, or minutes and seconds as in 01:23 or 45:00.</li></ul></li> <li><code>formatting=raw</code> Shows the quantity without any language format, that is with decimal point and no thousand separators. It is the appropriate format for numerical calculations. See also the <a href="#Utility_functions">function formatNum</a> for applying the format to the final result according to language definitions.</li> <li><code>formatting=<i>pattern</i></code> Format using a pattern with $1 as a parameter to replace.</li> <li><code>convert=<i>Qid</i></code> (optional) Convert the quantity to the unit requested by its Qid. Conversions are made according to factors indicated in Qid for properties <a href="https://www.wikidata.org/wiki/Property:P2370" class="extiw" title="d:Property:P2370">Conversion to SI unit <small>(P2370)</small></a> or <a href="https://www.wikidata.org/wiki/Property:P2442" class="extiw" title="d:Property:P2442">Conversion to standard unit <small>(P2442)</small></a>, except for temperatures defined with conversion formulas between ºC, ºF and ºK. For example, a value of "74 inch" with convert=Q174728 (<a href="https://www.wikidata.org/wiki/Special:EntityPage/Q174728" class="extiw" title="d:Special:EntityPage/Q174728">ceintiméadar <small>(Q174728)</small></a>) gives "188 centimeters" according to the conversion "2.54 centimeter" indicated in <a href="https://www.wikidata.org/wiki/Special:EntityPage/Q218593" class="extiw" title="d:Special:EntityPage/Q218593">orlach <small>(Q218593)</small></a>. It is rounded keeping the default precision of the original value according to the number of significant figures. It can be combined with formatting=unitcode. It can also be used with formatting=table, see below.</li> <li><code>convert=default</code> (optional) Convertion of units defined in table convert_default at <a href="/wiki/Module:Wikidades/Units" title="Module:Wikidades/Units">Module:Wikidades/Units</a>.</li> <li><code>convert=default2</code> (optional) Variant that shows two values: the converted quantity and the original quantity in brackets.</li> <li><code>convert=M</code> Converts to millions, rounding with no decimals, if the quantity is greater than 100,000,000. Adds M before the unit name or code, for example Meuro, M$.</li></ul> <p>Data value monolingual (monolingualtext): </p> <ul><li><code>formatting=language</code> Returns the language code of a monolingual value, for example used in <a href="https://www.wikidata.org/wiki/Property:P1448" class="extiw" title="d:Property:P1448">Ainm oifigiúil <small>(P1448)</small></a>.</li> <li><code>formatting=text</code> Returns the text wrapped in a span with lang attribute, if it's different from the local language: <code><span lang="xx">foreign text</span></code>.</li> <li><code>formatting=<i>pattern</i></code> Format using a pattern with $language and $text as parameters to be replaced, for exemple "formatting=($language) $text".</li> <li><code>list=lang</code> Shows the values corresponding to the defined language or the default language. See lang parameter above.</li> <li><code>list=notlang</code> Does not show the values corresponding to the defined language or the default language. For example, it may be useful for <a href="https://www.wikidata.org/wiki/Property:P1559" class="extiw" title="d:Property:P1559">Ainm sa teanga dhúchais <small>(P1559)</small></a> avoiding redundancy in wiki local language.</li></ul> <p>Data value coordinates (globecoordinate): </p> <ul><li><code>formatting=latitude</code> Returns the latitude in decimal format.</li> <li><code>formatting=longitude</code> Returns the longitude in decimal format.</li> <li><code>formatting=globe</code> (default) Returns the globe parameter recognized by <a href="https://en.wikipedia.org/wiki/Template:Coord#globe:G" class="extiw" title="en:Template:Coord">Template:Coord</a>. It is requested for coordinates of globes other than Earth.</li> <li><code>formatting=$lat...$lon...$globe</code> Format using a pattern with $lat, $lon and optionally $globe as parameters to be replaced. It can include templates with non expanded format, i.ex. {{<a href="/wiki/Teimpl%C3%A9ad:((" title="Teimpléad:((">((</a>}}coord{{!}}$lat{{!}}$lon{{<a href="/wiki/Teimpl%C3%A9ad:))" title="Teimpléad:))">))</a>}}.</li> <li><code>formatting=dimension</code> Returns the dimension in meters equivalent to <a href="https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Geographical_coordinates#dim:D" class="extiw" title="en:Wikipedia:WikiProject Geographical coordinates">dim parameter of GeoHack</a>.</li></ul> <p>Data value datetime (labeled time): </p> <dl><dd>By default it uses the format defined <a href="/wiki/Module:Wikidades/i18n" title="Module:Wikidades/i18n">Module:Wikidades/i18n</a>, in datetime table, depending on the precision. Optionally, for precision of day:</dd></dl> <ul><li><code>formatting= <i>#time syntax</i></code> Accepts any valid format of <a href="https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions#.23time" class="extiw" title="mw:Help:Extension:ParserFunctions">#time parser function</a>. For example: formatting=d-m-Y (24-11-2024), formatting=[[j xg]] (<a href="/wiki/24_Samhain" title="24 Samhain">24 Samhain</a>), formatting=Y (2024).</li></ul> <dl><dd>Adds the calendar when it may be ambiguous: if the date is before 1582-10-15 and it is set to Gregorian, or if it is later than 1582-10-04 and it is set to Julian. See <a href="https://en.wikipedia.org/wiki/Adoption_of_the_Gregorian_calendar" class="extiw" title="en:Adoption of the Gregorian calendar">en:Adoption of the Gregorian calendar</a> for further reading.</dd></dl> <div class="mw-heading mw-heading3"><h3 id="Parameters_of_table_with_propiety_and_qualifiers">Parameters of table with propiety and qualifiers</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-5" title="Edit section's source code: Parameters of table with propiety and qualifiers"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <table class="wikitable" style="float:right;"> <tbody><tr> <th></th> <th>property</th> <th>qualifier1</th> <th>qualifier2 etc. </th></tr> <tr> <th>values 1st statement </th> <td>$0</td> <td>$1</td> <td>$2, etc. </td></tr> <tr> <th>2nd, etc. </th> <td>$0</td> <td>$1</td> <td>$2, etc. </td></tr></tbody></table> <p><code>formatting=table</code> A statement with qualifiers is considered as a table of values shown at right. You can define the format of the rows and each column in the table. Separators for rows by default are line breaks (see separator and conjunction above). If you really want the output in a wikitable you can use separator=</tr><tr> and the corresponding opening and closing tags before and after the invoke. Specific parameters for this format: </p><p>Columns: </p> <ul><li><code>qualifier1 ... qualifier<i>x</i>=</code> Qualifiers with consecutive numbers without any limitation. General parameter <code>qualifier</code> is an alias for qualifier1. <ul><li><code>qualifier<i>x</i> = P<i>id1</i> OR P<i>id2</i></code> Alternatives values for a qualifier, without limitation of successive ORs. It takes the first one found. A tyical example is <a href="https://www.wikidata.org/wiki/Property:P585" class="extiw" title="d:Property:P585">Am <small>(P585)</small></a> OR <a href="https://www.wikidata.org/wiki/Property:P580" class="extiw" title="d:Property:P580">Am tosaigh <small>(P580)</small></a>.</li> <li><code>qualifier<i>x</i> = P<i>id1</i>/P<i>id2</i></code> From the entity value of property P<i>id1</i> it gets the parent value P<i>id2</i>. This allows to obtain additional data in the table even though defined in a parent element. For example, to get railway lines with its icon: qualifier=P81/P154. It can be combined with the OR option taking priority the OR.</li> <li><code>qualifier<i>x</i> = /P<i>id</i></code> Equivalent to previous one but without P<i>id1</i>, it gets another propiety of same entity. This allows to obtain values defined either in a qualifier or in a property.</li></ul></li> <li><code>colformat0 ... colformat<i>x</i>=</code> Format to apply to each column, using 0 for the property and 1-x for every qualifier. It accepts the same syntax as <code>formatting</code> for each data type. See above <a href="#Parameters_for_formatting">#Parameters for formatting</a>.</li> <li><code>case0 ... case<i>x</i>=</code> Grammatical case to apply to each column. Parameter <code>case</code>, without numbering, applies to all values. See above <a href="#General_parameters">#General parameters</a>.</li> <li><code>convert0 ... convert<i>x</i>=</code> Conversion of units to apply to each column. See above <a href="#Parameters_for_formatting">#Parameters for formatting</a>, data type quantity.</li> <li><code>whitelist0 ... whitelist<i>x</i>=</code> List raw values, usually Qids, in a column to show the statement, with any separator.</li> <li><code>blacklist0 ... blacklist<i>x</i>=</code> List raw values, usually Qids, in a column to do not show the statement, with any separator. If a whitelist is used in a column and a blacklist in another column then results may be inexpected (vegeu un <a class="external text" href="https://ca.wikipedia.org/w/index.php?title=Tema:Ujnttzn0w9k1x0vq&topic_showPostId=ujsb7o283btc0pix#flow-post-ujsb7o283btc0pix">see a comment, in Catalan</a>).</li> <li><code>selectvalue1 ... selectvalue<i>x</i>=</code> List raw values, usually Qids, in a column to show its value.</li> <li><code>ignorevalue1 ... ignorevalue<i>x</i>=</code> List raw values, usually Qids, in a column to do not show its value.</li></ul> <p>Rows: </p> <ul><li><code>rowformat=</code> Format of the rows of values for property and qualifiers. The property uses the placeholder $0 and the qualifiers $1 to $x. By default it is <code>rowformat=$0 ($1, ... $x)</code>. You can include list tags * or # and also templates or parser functions not expanded: {{<a href="/wiki/Teimpl%C3%A9ad:((" title="Teimpléad:((">((</a>}}template{{!}}unnamed parameter{{!}}name{{<a href="/wiki/Teimpl%C3%A9ad:%3D" title="Teimpléad:=">=</a>}}named parameter{{<a href="/wiki/Teimpl%C3%A9ad:))" title="Teimpléad:))">))</a>}}. If used with parameter "references" (see <a href="#General_parameters">above</a>) you must include the placeholder $R0 for references.</li> <li><code>rowsubformat1 ... rowsubformat<i>x</i>=</code> Previous format to apply to $1-$x defined in rowformat, only if there is any value. For example "rowformat=$0 $1" and "rowsubformat1=($1)" gives "$0 ($1)" or "$0" if $1 is void, avoiding empty parenthesis. A rowsubformat may have several variables $1-$x. Note that substitutions are made consecutively in numeric order, so it may include a posterior $x but not an anterior one as it has been already handled.</li> <li><code>tablesort=</code> with values 0 to x, it sorts the table per property (0) or per qualifier (1 to x). Sorting is in ascending order alphabetically, numerically or by date. It accepts multiple sorting keys with any separator, i.e. <code>tablesort=0/2/1</code>. By default it sorts the property by rank (preferred, normal), and by order in Wikidata.</li> <li><code>sorting=-1</code> sorts in descending order. With any other value, or by default, it sorts in ascending order. If tablesort is used with multiple keys, the sorting order is applied to all the keys.</li> <li><code>list=false</code> shows only the first row of the table, according to the order indicated or by default.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Function_getLabel">Function getLabel</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-6" title="Edit section's source code: Function getLabel"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Returns the label of an item. </p> <ul><li><code>1=</code> (first positional parameter, required) Wikitada id of the item (Qid or Pid). Alias: <code>item</code>, <code>from</code>.</li> <li><code>lang=</code> (optional) Language code, as in function claim. See above <a href="#General_parameters">#General parameters</a>.</li> <li><code>itemgender=</code> (optional) Qid to determine the gender form to use for the label, as in function claim. See above <a href="#General_parameters">#General parameters</a>.</li> <li><code>linked=</code> (optional) With any value, except 'no', it returns the label linked either to sitelink page or to Wikidata.</li> <li><code>label=</code> (optional) Shows this label instead of one fetched from Wikidata. It makes sense if used with linked=yes.</li> <li><code>editicon=</code> (optional) allows to remove the pencil edit icon, as in function claim. See above <a href="#General_parameters">#General parameters</a>.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Function_getParentValues">Function getParentValues</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-7" title="Edit section's source code: Function getParentValues"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Returns recursively values of a property labeled with a parent value. </p> <ul><li><code>item=</code> (optional) Specifies an item (Qid) other than the associated to current page. Use it with moderation as arbitrary access to Wikidata is expensive.</li> <li><code>property=</code> (optional) Property id of the statement (Pid). By default it is <a href="https://www.wikidata.org/wiki/Property:P131" class="extiw" title="d:Property:P131">Lonnaithe sa limistéar riaracháin <small>(P131)</small></a>. Supports a list of alternative values with any separator.</li> <li><code>label=</code> (optional) Parent property id to use as label. By defaut it is <a href="https://www.wikidata.org/wiki/Property:P31" class="extiw" title="d:Property:P31">Sampla de <small>(P31)</small></a>.</li> <li><code>upto=</code> (optional) Last iteration to fetch, if previously there is not any 'property' not found. Possible values: <ul><li>upto=<i>label</i>: last 'label' to fetch, for example "upto=country".</li> <li>upto=<i>quantity</i>: maximum number of iterations. By default it is 10 as a protection, large enough for commons cases.</li></ul></li> <li><code>uptolabelid=</code> (optional) Alternative to <code>upto=<i>label</i></code> using Qid instead.</li> <li><code>uptovalueid=</code> (optional) Alternative to <code>uptolabelid</code> using Qid of values instead of labels. It supports multiple values with any separator. Alias uptolinkid provisionally for backwards compatibility.</li> <li><code>labelshow=</code> (optional) White list of labels to show with a slash as a separator.</li> <li><code>showlabelid=</code> (optional) Alternative to <code>labelshow</code> using Qid instead.</li> <li><code>include_self=true</code> (optional) Includes current page on the output list.</li> <li><code>sorting=-1</code> (optional) Sorts the list of paired values in descending order.</li> <li><code>last_only=true</code> (optional) Only shows the last value fetched. For example with uptolinkid=Qid and last_only=true it will show the value correspondig to label Qid.</li> <li><code>formatting=</code> (optional) Format for the property value. By default it is a piped link to local page or Wikidata (see above <a href="#Parameters_for_formatting">formatting</a> for data value entity).</li> <li><code>valuetext=</code> (optional) Property to use as link label with 'property' value as link target.</li> <li><code>labelformat=</code> (optional) Format for the label. By default it is "label" (see above <a href="#Parameters_for_formatting">formatting</a> for data value entity).</li> <li><code>rowformat=</code> (optional) Output format for each pair of values, with placeholder $0 for the label and $1 for the value. By default it is "rowformat=$0 = $1", for example "country = [[France]]"</li> <li><code>separator=</code> (optional) Separator for each pair of label-value, by default <br />.</li> <li><code>cascade=true</code> (optional) Output with indentation. It may be useful if rowformat only uses $1.</li></ul> <p>Note: labels can be fixed for needs of an infobox in <a href="/wiki/Module:Wikidades/labels" title="Module:Wikidades/labels">Module:Wikidades/labels</a>. For example, in Catalan "Municipi del Brasil" is modified to "Municipi" removing the determiner introduced by a preposition. </p> <div class="mw-heading mw-heading2"><h2 id="Function_linkWithParentLabel">Function linkWithParentLabel</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-8" title="Edit section's source code: Function linkWithParentLabel"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Creates a link with the label of a parent property. </p><p>It accepts most parameters of <a href="#Function_claim">function claim</a>, except "formatting" that uses the default "internallink". Additionally: </p> <ul><li><code>parent=</code> the parent property id to use as a link label. It accepts alternative values with any separator, as it does the parameter "property" of function claim.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Function_yearsOld">Function yearsOld</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-9" title="Edit section's source code: Function yearsOld"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Returns the age of a person calculating the completed years between birth date and death date or current date. If both dates do not have presicion of day then it show a range of years, maximum a decade. </p><p>The syntax is: <code>{{#invoke:Wikidades|yearsOld|formatting= |item= }}</code>. Parameters <code>item</code> and <code>formatting</code> are optionals. By default it show the quantity. </p> <ul><li><code>formatting=unit</code> (optional) Gets the unit from table i18n["years-old"] at <a href="/wiki/Module:Wikidades/i18n" title="Module:Wikidades/i18n">Module:Wikidades/i18n</a> for singular or plural, in addition to paucal used in Slavic languages as Russian. See parser function PLURAL at <a href="https://www.mediawiki.org/wiki/Help:Magic_words#Localization" class="extiw" title="mw:Help:Magic words">mw:Help:Magic words#Localization</a>.</li> <li><code>formatting=<i>pattern</i></code> (optional) Format using a pattern with $1 as a placeholder for the quantity. A common use case is " ($1 years old)". It does not evaluate the expression in singular, plural or paucal amb fetches the unit from <a href="https://www.wikidata.org/wiki/Special:EntityPage/Q24564698" class="extiw" title="d:Special:EntityPage/Q24564698"> <small>(Q24564698)</small></a>. As an alternative you can define a global pattern in table i18n["years-old"] that allows the parameter $1.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Function_editAtWikidata">Function editAtWikidata</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-10" title="Edit section's source code: Function editAtWikidata"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Returns the pencil icon to edit a declaration on Wikidata. </p><p>Ssyntax: <code>{{#invoke:Wikidades|editAtWikidata|<value>|item= |property= |lang= |editicon= }}</code> </p> <ul><li><code>1</code> (opcional), first unnamed parameter. If it exists it will not show any icon. For example if a parameter is informed locally then it has not been fetched from Wikidata and the icon is not needed.</li> <li><code>property=<i>Pid</i></code> (required). Id of the property to link with anchor. It does not check the Pid, other anchors can be used, for example property=identifiers to link to the identifiers section.</li> <li><code>item=<i>Qid</i></code> (optional). Id of the item. It will not be necessary if it is the same as the associated page.</li> <li><code>lang=<i>code</i></code> (optional). Language code. Opening the link to Wikidata will display the page in this language. By default it uses the local wiki language for the main article space or the user language defined in the preferences for other namespaces.</li> <li><code>editicon=<right/true></code> (optional). With value right it aligns to the right. Value true only makes sense if the wiki is set with ["addpencil"]=false at <a href="/wiki/Module:Wikidades/i18n" title="Module:Wikidades/i18n">Module:Wikidades/i18n</a>.</li></ul> <p>See above <a href="#General_parameters">#General parameters</a> for more reading about these parameters. </p> <div class="mw-heading mw-heading2"><h2 id="Utility_functions">Utility functions</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-11" title="Edit section's source code: Utility functions"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><code>getSiteLink</code> Returns the title of local page for a given item. Syntax: <dl><dd><code>{{#invoke:Wikidades|getSiteLink|<Qid>|<wiki>}}</code></dd> <dd>Without any parameter it return the current page. With a Qid it returns the local page linked in the Qid item. It returns a void string if there is no local page linked. A second parameter with the wiki code it return the page linked for this wiki (enwiki, frwiki,... cawiktionary, etc.)</dd></dl></li></ul> <ul><li><code>lang</code> Returns the language code as managed by function claim. See <a href="#General_parameters">#General parameters</a> above. Syntax: <dl><dd><code>{{#invoke:Wikidades|lang|{{{lang|}}}}}</code></dd> <dd>Parameter lang is optional.</dd></dl></li></ul> <ul><li><code>numStatements</code> Returns the number of statements of a multivalue property considering only best ranked values. It allows the decide how to handle long lists. With a second unnamed parameter it counts the number of values of a qualifier. Syntax: <dl><dd><code>{{#invoke:Wikidades|numStatements|<Pid>|item={{{item|}}} }}</code></dd> <dd><code>{{#invoke:Wikidades|numStatements|<Pid>|<Qual_id>|item={{{item|}}} }}</code></dd> <dd>Example: {{#invoke:Wikidades|numStatements|P47|item=Q1861}} → 6</dd> <dd>For more complex queries, for example with list=true for preferred and normal ranking or with filters as whitelist, it can be used with the same syntax as <a href="#Function_claim">function claim</a>, without positional parameters.</dd></dl></li></ul> <ul><li><code>validProperty</code> Returns "void" if the property is not found, or it has only statements with values "no value" or "some value" or with deprecated rank. Syntax: <dl><dd><code>{{#invoke:Wikidades|validProperty|<Pid>|item={{{item|}}}</code></dd> <dd>It can be used as an alternative to #property. It accepts the same parameter used by this parser function: <code>from</code> is a alias for <code>item</code>.</dd></dl></li></ul> <ul><li><code>formatNum</code> Formats a quantity according to language definitions. It is equivalent to magic word <a href="https://www.mediawiki.org/wiki/Help:Magic_words#Formatting" class="extiw" title="mw:Help:Magic words">formatnum</a> with the option to specify a language other than the wiki default. Syntax: <dl><dd><code>{{#invoke:Wikidades|formatNum|<num>|<lang>}}</code></dd> <dd>First requested parameter is the number to format. Second optional parameter is the language code (see parameter lang of <a href="#General_parameters">function claim</a>).</dd></dl></li></ul> <ul><li><code><s>getTAValue</s></code> Old function retrieving values of <a href="https://www.wikidata.org/wiki/Property:P1323" class="extiw" title="d:Property:P1323">Terminologia Anatomica 98 ID <small>(P1323)</small></a>. Removed and replaced with a simple call {{#invoke:Wikidades | claim | property=P1323 | formatting=externalid | separator=<br />}}.</li></ul> <ul><li>For debugging functions see <a href="/wiki/Module:Wikidades/debug" title="Module:Wikidades/debug">Module:Wikidades/debug</a>.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Wikidata_redirects">Wikidata redirects</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-12" title="Edit section's source code: Wikidata redirects"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A Wikidata element can be a redirect to another element, often as a result of a merge. The values of a property can be provisionally a redirect, usually fixed by bot after a week. The treatment of redirects is as follows: </p> <ul><li>Function claim <ul><li>With formatting=raw it returns the target of the redirect.</li> <li>With parameters whitelist or blacklist, if the list of values includes any redirect, it considers both the redirected Qid and the target Qid.</li></ul></li> <li>Function getLabel <ul><li>It follows the redirected Qid to fetch the label from the target Qid.</li></ul></li></ul> <p>All redirected Qids should be fixed in templates. There is a tracking in place to find them at <a href="/wiki/Speisialta:WhatLinksHere/Template:Track/wikidata/redirect" title="Speisialta:WhatLinksHere/Template:Track/wikidata/redirect">Special:WhatLinksHere/Template:Track/wikidata/redirect</a>. </p><p>The provisional tracking <a href="/wiki/Speisialta:WhatLinksHere/Template:Track/wikidata/redirect" title="Speisialta:WhatLinksHere/Template:Track/wikidata/redirect">Special:WhatLinksHere/Template:Track/wikidata/redirect</a> identifies redirected Qid to be fixed in templates. </p><p>Resolving redirects is pending of <a href="https://phabricator.wikimedia.org/T157868" class="extiw" title="phab:T157868">phab:T157868</a>. Current technical solution may be expensive if there is no label in local language nor in fall back languages. It is recommanded to check the provisional tracking <a href="/wiki/Speisialta:WhatLinksHere/Template:Track/wikidata/label" title="Speisialta:WhatLinksHere/Template:Track/wikidata/label">Special:WhatLinksHere/Template:Track/wikidata/label</a> and add missing labels. </p> <div class="mw-heading mw-heading2"><h2 id="Using_from_another_module">Using from another module</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-13" title="Edit section's source code: Using from another module"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>All functions (claim, getLabel, getParentValues, linkWithParentLabel, yearsOld, lang) can be used from other modules via <code>require</code> with the same parameters provided in a table, for example: </p> <dl><dd>require("Module:Wikidades").claim{item="Q...", property="P...", ...}</dd> <dd>require("Module:Wikidades").getLabel({"Q...", ['lang']="en"})</dd></dl> <p>Function claim can return a second value depending of parameter query that may be used on infobox modules for specific treatment. With query=untranslated it returns nil or true for values not translated in requested language. With query=num it returns the number of statements as <a href="#Utility_functions">function numStatements</a> does. </p><p>Parameters that accept "true" or "false" values can be defined as boolean type. </p> <div class="mw-heading mw-heading2"><h2 id="Dependencies">Dependencies</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-14" title="Edit section's source code: Dependencies"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Subpages relative to the main module. <ul><li><a href="/wiki/Module:Wikidades/i18n" title="Module:Wikidades/i18n">../i18n</a> (optional): translations of messages and local formats. If <code>lang</code> has a value other than local language then it searches the corresponding subpage, for example <a href="/w/index.php?title=Module:Wikidades/i18n/eu&action=edit&redlink=1" class="new" title="Module:Wikidades/i18n/eu (níl an leathanach ann)">../i18n/eu</a>. If it does not exist then defaults to English.</li> <li><a href="/wiki/Module:Wikidades/Units" title="Module:Wikidades/Units">../Units</a> (optional): definition of plurals and codes for units. If it does not exist or the unit is not found then it uses the unit name.</li> <li><a href="/wiki/Module:Wikidades/labels" title="Module:Wikidades/labels">../labels</a> (optional): exceptions and fixes of labels for a infobox.</li> <li><a href="/wiki/Module:Wikidades/debug" title="Module:Wikidades/debug">../debug</a>: may appear occasionally for the track function.</li></ul></li> <li>Mediawiki messages used in requested or default language: <ul><li><a href="/wiki/MediaWiki:Comma-separator" title="MediaWiki:Comma-separator">Mediawiki:Comma-separator</a>, <a href="/wiki/MediaWiki:And" title="MediaWiki:And">Mediawiki:And</a>, <a href="/wiki/MediaWiki:Word-separator" title="MediaWiki:Word-separator">Mediawiki:Word-separator</a></li> <li><a href="/wiki/MediaWiki:Wikibase-snakview-snaktypeselector-novalue" title="MediaWiki:Wikibase-snakview-snaktypeselector-novalue">Mediawiki:Wikibase-snakview-snaktypeselector-novalue</a>, <a href="/wiki/MediaWiki:Wikibase-snakview-snaktypeselector-somevalue" title="MediaWiki:Wikibase-snakview-snaktypeselector-somevalue">Mediawiki:Wikibase-snakview-snaktypeselector-somevalue</a></li> <li><a href="/wiki/MediaWiki:Wikibase-time-calendar-gregorian" title="MediaWiki:Wikibase-time-calendar-gregorian">Mediawiki:Wikibase-time-calendar-gregorian</a>, <a href="/wiki/MediaWiki:Wikibase-time-calendar-julian" title="MediaWiki:Wikibase-time-calendar-julian">Mediawiki:Wikibase-time-calendar-julian</a></li> <li><a href="/wiki/MediaWiki:Translate-taction-translate" title="MediaWiki:Translate-taction-translate">Mediawiki:Translate-taction-translate</a></li> <li><a href="/wiki/MediaWiki:Wikibase-client-data-bridge-bailout-suggestion-go-to-repo-button" title="MediaWiki:Wikibase-client-data-bridge-bailout-suggestion-go-to-repo-button">Mediawiki:Wikibase-client-data-bridge-bailout-suggestion-go-to-repo-button</a></li> <li><a href="/wiki/MediaWiki:Sandboxlink-subpage-name" title="MediaWiki:Sandboxlink-subpage-name">MediaWiki:Sandboxlink-subpage-name</a></li></ul> <dl><dd>If necessary, they can be created in <a href="https://meta.wikimedia.org/wiki/translatewiki.net" class="extiw" title="m:translatewiki.net">Translatewiki</a>. If you have an account in Translatewiki, you can access directly to it activating the following link with the title of the message and the language code: <code>[[translatewiki:MediaWiki:<i><message></i>/<i><lang></i>]]</code>.</dd></dl></li></ul> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Wikidades/doc&action=edit&section=T-15" title="Edit section's source code: See also"><span>athraigh foinse</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua" class="extiw" title="mw:Extension:Wikibase Client/Lua">Wikibase Lua functions</a>. They are the basic functions that can be found in <a href="/wiki/Module:Wikibase" title="Module:Wikibase">Module:Wikibase</a>.</li></ul> <hr /><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos" data-line="1"></span></a><span class="c1">-- version 20220818 from master @cawiki</span> </span><span id="L-2"><a href="#L-2"><span class="linenos" data-line="2"></span></a> </span><span id="L-3"><a href="#L-3"><span class="linenos" data-line="3"></span></a><span class="kd">local</span> <span class="n">p</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-4"><a href="#L-4"><span class="linenos" data-line="4"></span></a> </span><span id="L-5"><a href="#L-5"><span class="linenos" data-line="5"></span></a><span class="c1">-- Initialization of variables --------------------</span> </span><span id="L-6"><a href="#L-6"><span class="linenos" data-line="6"></span></a> </span><span id="L-7"><a href="#L-7"><span class="linenos" data-line="7"></span></a><span class="kd">local</span> <span class="n">i18n</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">-- internationalisation at [[Module:Wikidata/i18n]]</span> </span><span id="L-8"><a href="#L-8"><span class="linenos" data-line="8"></span></a> <span class="p">[</span><span class="s2">"errors"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-9"><a href="#L-9"><span class="linenos" data-line="9"></span></a> <span class="p">[</span><span class="s2">"property-not-found"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Maoin gan aimsiú."</span><span class="p">,</span> </span><span id="L-10"><a href="#L-10"><span class="linenos" data-line="10"></span></a> <span class="p">[</span><span class="s2">"qualifier-not-found"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Cáilitheoir gan aimsiú."</span><span class="p">,</span> </span><span id="L-11"><a href="#L-11"><span class="linenos" data-line="11"></span></a> <span class="p">},</span> </span><span id="L-12"><a href="#L-12"><span class="linenos" data-line="12"></span></a> </span><span id="L-13"><a href="#L-13"><span class="linenos" data-line="13"></span></a> <span class="p">[</span><span class="s2">"datetime"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-14"><a href="#L-14"><span class="linenos" data-line="14"></span></a> <span class="c1">-- $1 is a placeholder for the actual number</span> </span><span id="L-15"><a href="#L-15"><span class="linenos" data-line="15"></span></a> <span class="p">[</span><span class="s2">"beforenow"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 RCh"</span><span class="p">,</span> <span class="c1">-- how to format negative numbers for precisions 0 to 5</span> </span><span id="L-16"><a href="#L-16"><span class="linenos" data-line="16"></span></a> <span class="p">[</span><span class="s2">"afternow"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 IC"</span><span class="p">,</span> <span class="c1">-- how to format positive numbers for precisions 0 to 5</span> </span><span id="L-17"><a href="#L-17"><span class="linenos" data-line="17"></span></a> <span class="p">[</span><span class="s2">"bc"</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'$1 "RCh"'</span><span class="p">,</span> <span class="c1">-- how print negative years</span> </span><span id="L-18"><a href="#L-18"><span class="linenos" data-line="18"></span></a> <span class="p">[</span><span class="s2">"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-19"><a href="#L-19"><span class="linenos" data-line="19"></span></a> </span><span id="L-20"><a href="#L-20"><span class="linenos" data-line="20"></span></a> <span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 billiún bliain"</span><span class="p">,</span> <span class="c1">-- precision: billion years</span> </span><span id="L-21"><a href="#L-21"><span class="linenos" data-line="21"></span></a> <span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$100 milliún bliain"</span><span class="p">,</span> <span class="c1">-- precision: hundred million years</span> </span><span id="L-22"><a href="#L-22"><span class="linenos" data-line="22"></span></a> <span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$10 milliún bliain"</span><span class="p">,</span> <span class="c1">-- precision: ten million years</span> </span><span id="L-23"><a href="#L-23"><span class="linenos" data-line="23"></span></a> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 milliún bliain"</span><span class="p">,</span> <span class="c1">-- precision: million years</span> </span><span id="L-24"><a href="#L-24"><span class="linenos" data-line="24"></span></a> <span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$100000 bliain"</span><span class="p">,</span> <span class="c1">-- precision: hundred thousand years; thousand separators added afterwards</span> </span><span id="L-25"><a href="#L-25"><span class="linenos" data-line="25"></span></a> <span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$10000 bliain"</span><span class="p">,</span> <span class="c1">-- precision: ten thousand years; thousand separators added afterwards</span> </span><span id="L-26"><a href="#L-26"><span class="linenos" data-line="26"></span></a> <span class="p">[</span><span class="mi">6</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 míle bliain"</span><span class="p">,</span> <span class="c1">-- precision: millennium</span> </span><span id="L-27"><a href="#L-27"><span class="linenos" data-line="27"></span></a> <span class="p">[</span><span class="mi">7</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1 aois"</span><span class="p">,</span> <span class="c1">-- precision: century</span> </span><span id="L-28"><a href="#L-28"><span class="linenos" data-line="28"></span></a> <span class="p">[</span><span class="mi">8</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"$1í"</span><span class="p">,</span> <span class="c1">-- precision: decade</span> </span><span id="L-29"><a href="#L-29"><span class="linenos" data-line="29"></span></a> <span class="c1">-- the following use the format of #time parser function</span> </span><span id="L-30"><a href="#L-30"><span class="linenos" data-line="30"></span></a> <span class="p">[</span><span class="mi">9</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Y"</span><span class="p">,</span> <span class="c1">-- precision: year, </span> </span><span id="L-31"><a href="#L-31"><span class="linenos" data-line="31"></span></a> <span class="p">[</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"F Y"</span><span class="p">,</span> <span class="c1">-- precision: month</span> </span><span id="L-32"><a href="#L-32"><span class="linenos" data-line="32"></span></a> <span class="p">[</span><span class="mi">11</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"j F Y"</span><span class="p">,</span> <span class="c1">-- precision: day</span> </span><span id="L-33"><a href="#L-33"><span class="linenos" data-line="33"></span></a> </span><span id="L-34"><a href="#L-34"><span class="linenos" data-line="34"></span></a> <span class="p">[</span><span class="s2">"hms"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{[</span><span class="s2">"uair"</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">"nóiméad"</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">"soicind"</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-35"><a href="#L-35"><span class="linenos" data-line="35"></span></a> <span class="p">},</span> </span><span id="L-36"><a href="#L-36"><span class="linenos" data-line="36"></span></a> </span><span id="L-37"><a href="#L-37"><span class="linenos" data-line="37"></span></a> <span class="p">[</span><span class="s2">"years-old"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-38"><a href="#L-38"><span class="linenos" data-line="38"></span></a> <span class="p">[</span><span class="s2">"singular"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"blian d'aois"</span><span class="p">,</span> <span class="c1">-- year old, as in {{PLURAL:$1|singular|plural}}</span> </span><span id="L-39"><a href="#L-39"><span class="linenos" data-line="39"></span></a> <span class="p">[</span><span class="s2">"plural"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"bliana d'aois"</span><span class="p">,</span> <span class="c1">-- years old</span> </span><span id="L-40"><a href="#L-40"><span class="linenos" data-line="40"></span></a> <span class="p">[</span><span class="s2">"paucal"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> <span class="c1">-- for languages with 3 plural forms as in {{PLURAL:$1|singular|paucal|plural}}</span> </span><span id="L-41"><a href="#L-41"><span class="linenos" data-line="41"></span></a> <span class="p">},</span> </span><span id="L-42"><a href="#L-42"><span class="linenos" data-line="42"></span></a> </span><span id="L-43"><a href="#L-43"><span class="linenos" data-line="43"></span></a> <span class="c1">-- two values for most languages, up to six values for some languages</span> </span><span id="L-44"><a href="#L-44"><span class="linenos" data-line="44"></span></a> <span class="c1">-- see documentation of PLURAL magic word in your language, examples:</span> </span><span id="L-45"><a href="#L-45"><span class="linenos" data-line="45"></span></a> <span class="c1">-- ["years-old"] = {"singular", "paucal", "plural"} in Russian and other Slavic languages</span> </span><span id="L-46"><a href="#L-46"><span class="linenos" data-line="46"></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-47"><a href="#L-47"><span class="linenos" data-line="47"></span></a> </span><span id="L-48"><a href="#L-48"><span class="linenos" data-line="48"></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-49"><a href="#L-49"><span class="linenos" data-line="49"></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-50"><a href="#L-50"><span class="linenos" data-line="50"></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-51"><a href="#L-51"><span class="linenos" data-line="51"></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-52"><a href="#L-52"><span class="linenos" data-line="52"></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-53"><a href="#L-53"><span class="linenos" data-line="53"></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-54"><a href="#L-54"><span class="linenos" data-line="54"></span></a> <span class="c1">-- cite web parameters</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">"url"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"url"</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">"website"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"website"</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">"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-58"><a href="#L-58"><span class="linenos" data-line="58"></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-59"><a href="#L-59"><span class="linenos" data-line="59"></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-60"><a href="#L-60"><span class="linenos" data-line="60"></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-61"><a href="#L-61"><span class="linenos" data-line="61"></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-62"><a href="#L-62"><span class="linenos" data-line="62"></span></a> <span class="c1">-- cite journal parameters</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">"work"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"work"</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">"issue"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"issue"</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">"issn"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"issn"</span><span class="p">,</span> </span><span id="L-66"><a href="#L-66"><span class="linenos" data-line="66"></span></a> <span class="p">[</span><span class="s2">"doi"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"doi"</span> </span><span id="L-67"><a href="#L-67"><span class="linenos" data-line="67"></span></a> <span class="p">},</span> </span><span id="L-68"><a href="#L-68"><span class="linenos" data-line="68"></span></a> </span><span id="L-69"><a href="#L-69"><span class="linenos" data-line="69"></span></a> <span class="c1">-- default local wiki settings</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">"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-71"><a href="#L-71"><span class="linenos" data-line="71"></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-72"><a href="#L-72"><span class="linenos" data-line="72"></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-73"><a href="#L-73"><span class="linenos" data-line="73"></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-74"><a href="#L-74"><span class="linenos" data-line="74"></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-75"><a href="#L-75"><span class="linenos" data-line="75"></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-76"><a href="#L-76"><span class="linenos" data-line="76"></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-77"><a href="#L-77"><span class="linenos" data-line="77"></span></a><span class="p">}</span> </span><span id="L-78"><a href="#L-78"><span class="linenos" data-line="78"></span></a> </span><span id="L-79"><a href="#L-79"><span class="linenos" data-line="79"></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-80"><a href="#L-80"><span class="linenos" data-line="80"></span></a> </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">required</span> <span class="o">=</span> <span class="p">...</span> <span class="c1">-- variadic arguments from require function</span> </span><span id="L-82"><a href="#L-82"><span class="linenos" data-line="82"></span></a><span class="kd">local</span> <span class="n">wiki</span> <span class="o">=</span> </span><span id="L-83"><a href="#L-83"><span class="linenos" data-line="83"></span></a><span class="p">{</span> </span><span id="L-84"><a href="#L-84"><span class="linenos" data-line="84"></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-85"><a href="#L-85"><span class="linenos" data-line="85"></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-86"><a href="#L-86"><span class="linenos" data-line="86"></span></a><span class="p">}</span> </span><span id="L-87"><a href="#L-87"><span class="linenos" data-line="87"></span></a> </span><span id="L-88"><a href="#L-88"><span class="linenos" data-line="88"></span></a><span class="kd">local</span> <span class="n">untranslated</span> <span class="c1">-- used in infobox modules: nil or true</span> </span><span id="L-89"><a href="#L-89"><span class="linenos" data-line="89"></span></a><span class="kd">local</span> <span class="n">_</span> <span class="c1">-- variable for unused returned values, avoiding globals</span> </span><span id="L-90"><a href="#L-90"><span class="linenos" data-line="90"></span></a> </span><span id="L-91"><a href="#L-91"><span class="linenos" data-line="91"></span></a><span class="c1">-- Module local functions --------------------------------------------</span> </span><span id="L-92"><a href="#L-92"><span class="linenos" data-line="92"></span></a> </span><span id="L-93"><a href="#L-93"><span class="linenos" data-line="93"></span></a><span class="c1">-- Credit to http://stackoverflow.com/a/1283608/2644759, cc-by-sa 3.0</span> </span><span id="L-94"><a href="#L-94"><span class="linenos" data-line="94"></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-95"><a href="#L-95"><span class="linenos" data-line="95"></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-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">v</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="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-98"><a href="#L-98"><span class="linenos" data-line="98"></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-99"><a href="#L-99"><span class="linenos" data-line="99"></span></a> <span class="kr">else</span> </span><span id="L-100"><a href="#L-100"><span class="linenos" data-line="100"></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-101"><a href="#L-101"><span class="linenos" data-line="101"></span></a> <span class="kr">end</span> </span><span id="L-102"><a href="#L-102"><span class="linenos" data-line="102"></span></a> <span class="kr">else</span> </span><span id="L-103"><a href="#L-103"><span class="linenos" data-line="103"></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-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">end</span> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a> <span class="kr">return</span> <span class="n">t1</span> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></span></a><span class="kr">end</span> </span><span id="L-108"><a href="#L-108"><span class="linenos" data-line="108"></span></a> </span><span id="L-109"><a href="#L-109"><span class="linenos" data-line="109"></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-110"><a href="#L-110"><span class="linenos" data-line="110"></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-111"><a href="#L-111"><span class="linenos" data-line="111"></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-112"><a href="#L-112"><span class="linenos" data-line="112"></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-113"><a href="#L-113"><span class="linenos" data-line="113"></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-114"><a href="#L-114"><span class="linenos" data-line="114"></span></a> <span class="kr">end</span> </span><span id="L-115"><a href="#L-115"><span class="linenos" data-line="115"></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-116"><a href="#L-116"><span class="linenos" data-line="116"></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-117"><a href="#L-117"><span class="linenos" data-line="117"></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-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">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-119"><a href="#L-119"><span class="linenos" data-line="119"></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-120"><a href="#L-120"><span class="linenos" data-line="120"></span></a> <span class="kr">end</span> </span><span id="L-121"><a href="#L-121"><span class="linenos" data-line="121"></span></a> <span class="kr">end</span> </span><span id="L-122"><a href="#L-122"><span class="linenos" data-line="122"></span></a> <span 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-123"><a href="#L-123"><span class="linenos" data-line="123"></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-124"><a href="#L-124"><span class="linenos" data-line="124"></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-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 class="kr">end</span> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a> </span><span id="L-128"><a href="#L-128"><span class="linenos" data-line="128"></span></a><span class="c1">-- Table of language codes: requested or default and its fallbacks</span> </span><span id="L-129"><a href="#L-129"><span class="linenos" data-line="129"></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-130"><a href="#L-130"><span class="linenos" data-line="130"></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-131"><a href="#L-131"><span class="linenos" data-line="131"></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-132"><a href="#L-132"><span class="linenos" data-line="132"></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-133"><a href="#L-133"><span class="linenos" data-line="133"></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-134"><a href="#L-134"><span class="linenos" data-line="134"></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-135"><a href="#L-135"><span class="linenos" data-line="135"></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-136"><a href="#L-136"><span class="linenos" data-line="136"></span></a> <span class="n">langcode</span> <span class="o">=</span> <span class="n">cframe</span><span class="p">:</span><span class="n">preprocess</span><span class="p">(</span><span class="s1">'{{int:lang}}'</span><span class="p">)</span> </span><span id="L-137"><a href="#L-137"><span class="linenos" data-line="137"></span></a> <span class="kr">end</span> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></span></a> <span 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-139"><a href="#L-139"><span class="linenos" data-line="139"></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-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 class="kr">end</span> </span><span id="L-143"><a href="#L-143"><span class="linenos" data-line="143"></span></a> </span><span id="L-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a> <span class="n">loadI18n</span><span class="p">(</span><span class="n">langcode</span><span class="p">)</span> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></span></a> </span><span id="L-146"><a href="#L-146"><span class="linenos" data-line="146"></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-147"><a href="#L-147"><span class="linenos" data-line="147"></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-148"><a href="#L-148"><span class="linenos" data-line="148"></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-149"><a href="#L-149"><span class="linenos" data-line="149"></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-150"><a href="#L-150"><span class="linenos" data-line="150"></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-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 class="kr">end</span> </span><span id="L-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a> </span><span id="L-154"><a href="#L-154"><span class="linenos" data-line="154"></span></a> <span class="kr">return</span> <span class="n">languages</span> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a><span class="kr">end</span> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></span></a><span class="c1">-- Argument is 'set' when it exists (not nil) or when it is not an empty string.</span> </span><span id="L-158"><a href="#L-158"><span class="linenos" data-line="158"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">isSet</span><span class="p">(</span><span class="n">var</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">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-160"><a href="#L-160"><span class="linenos" data-line="160"></span></a><span class="kr">end</span> </span><span id="L-161"><a href="#L-161"><span class="linenos" data-line="161"></span></a> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></span></a><span class="c1">-- Set local case to a label</span> </span><span id="L-163"><a href="#L-163"><span class="linenos" data-line="163"></span></a><span class="kd">local</span> <span class="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-164"><a href="#L-164"><span class="linenos" data-line="164"></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-165"><a href="#L-165"><span class="linenos" data-line="165"></span></a> </span><span id="L-166"><a href="#L-166"><span class="linenos" data-line="166"></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-167"><a href="#L-167"><span class="linenos" data-line="167"></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-168"><a href="#L-168"><span class="linenos" data-line="168"></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-169"><a href="#L-169"><span class="linenos" data-line="169"></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-170"><a href="#L-170"><span class="linenos" data-line="170"></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-171"><a href="#L-171"><span class="linenos" data-line="171"></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-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a> <span class="kr">end</span> </span><span id="L-173"><a href="#L-173"><span class="linenos" data-line="173"></span></a> </span><span id="L-174"><a href="#L-174"><span class="linenos" data-line="174"></span></a> <span class="kr">return</span> <span class="n">label</span> </span><span id="L-175"><a href="#L-175"><span class="linenos" data-line="175"></span></a><span class="kr">end</span> </span><span id="L-176"><a href="#L-176"><span class="linenos" data-line="176"></span></a> </span><span id="L-177"><a href="#L-177"><span class="linenos" data-line="177"></span></a><span class="c1">-- get safely a serialized snak</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="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-179"><a href="#L-179"><span class="linenos" data-line="179"></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-180"><a href="#L-180"><span class="linenos" data-line="180"></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-181"><a href="#L-181"><span class="linenos" data-line="181"></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-182"><a href="#L-182"><span class="linenos" data-line="182"></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-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a> <span class="kr">end</span> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a> <span class="kr">return</span> <span class="n">ret</span> </span><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a><span class="kr">end</span> </span><span id="L-186"><a href="#L-186"><span class="linenos" data-line="186"></span></a> </span><span id="L-187"><a href="#L-187"><span class="linenos" data-line="187"></span></a><span class="c1">-- mw.wikibase.getLabelWithLang or getLabelByLang with a table of languages</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="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-189"><a href="#L-189"><span class="linenos" data-line="189"></span></a> <span class="kd">local</span> <span class="n">label</span> </span><span id="L-190"><a href="#L-190"><span class="linenos" data-line="190"></span></a> <span class="kd">local</span> <span class="n">lang</span> </span><span id="L-191"><a href="#L-191"><span class="linenos" data-line="191"></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-192"><a href="#L-192"><span class="linenos" data-line="192"></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-193"><a href="#L-193"><span class="linenos" data-line="193"></span></a> <span class="c1">-- using getLabelWithLang when possible instead of getLabelByLang</span> </span><span id="L-194"><a href="#L-194"><span class="linenos" data-line="194"></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-195"><a href="#L-195"><span class="linenos" data-line="195"></span></a> <span class="kr">else</span> </span><span id="L-196"><a href="#L-196"><span class="linenos" data-line="196"></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-197"><a href="#L-197"><span class="linenos" data-line="197"></span></a> <span class="kr">end</span> </span><span id="L-198"><a href="#L-198"><span class="linenos" data-line="198"></span></a> <span class="kr">if</span> <span class="n">label</span> <span class="kr">then</span> </span><span id="L-199"><a href="#L-199"><span class="linenos" data-line="199"></span></a> <span class="n">lang</span> <span class="o">=</span> <span class="n">l</span> </span><span id="L-200"><a href="#L-200"><span class="linenos" data-line="200"></span></a> <span class="kr">break</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">end</span> </span><span id="L-203"><a href="#L-203"><span class="linenos" data-line="203"></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-204"><a href="#L-204"><span class="linenos" data-line="204"></span></a><span class="kr">end</span> </span><span id="L-205"><a href="#L-205"><span class="linenos" data-line="205"></span></a> </span><span id="L-206"><a href="#L-206"><span class="linenos" data-line="206"></span></a><span class="c1">-- getBestStatements if bestrank=true, else getAllStatements with no deprecated</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="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-208"><a href="#L-208"><span class="linenos" data-line="208"></span></a> <span class="kd">local</span> <span class="n">claims</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-209"><a href="#L-209"><span class="linenos" data-line="209"></span></a> <span class="kr">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-210"><a href="#L-210"><span class="linenos" data-line="210"></span></a> <span class="kr">if</span> <span class="n">bestrank</span> <span class="kr">then</span> </span><span id="L-211"><a href="#L-211"><span class="linenos" data-line="211"></span></a> <span class="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-212"><a href="#L-212"><span class="linenos" data-line="212"></span></a> <span class="kr">else</span> </span><span id="L-213"><a href="#L-213"><span class="linenos" data-line="213"></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-214"><a href="#L-214"><span class="linenos" data-line="214"></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-215"><a href="#L-215"><span class="linenos" data-line="215"></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-216"><a href="#L-216"><span class="linenos" data-line="216"></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-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">end</span> </span><span id="L-220"><a href="#L-220"><span class="linenos" data-line="220"></span></a> <span class="kr">return</span> <span class="n">claims</span> </span><span id="L-221"><a href="#L-221"><span class="linenos" data-line="221"></span></a><span class="kr">end</span> </span><span id="L-222"><a href="#L-222"><span class="linenos" data-line="222"></span></a> </span><span id="L-223"><a href="#L-223"><span class="linenos" data-line="223"></span></a><span class="c1">-- Is gender femenine? true or false</span> </span><span id="L-224"><a href="#L-224"><span class="linenos" data-line="224"></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-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">id</span> <span class="ow">or</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">getEntityIdForCurrentPage</span><span class="p">(),</span><span class="s1">'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="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="kr">then</span> <span class="c1">-- female, transgender female, female organism</span> </span><span id="L-228"><a href="#L-228"><span class="linenos" data-line="228"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-229"><a href="#L-229"><span class="linenos" data-line="229"></span></a> <span class="kr">end</span> </span><span id="L-230"><a href="#L-230"><span class="linenos" data-line="230"></span></a> <span class="kr">return</span> <span class="kc">false</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><span id="L-233"><a href="#L-233"><span class="linenos" data-line="233"></span></a><span class="c1">-- Fetch female form of label</span> </span><span id="L-234"><a href="#L-234"><span class="linenos" data-line="234"></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-235"><a href="#L-235"><span class="linenos" data-line="235"></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-236"><a href="#L-236"><span class="linenos" data-line="236"></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-237"><a href="#L-237"><span class="linenos" data-line="237"></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-238"><a href="#L-238"><span class="linenos" data-line="238"></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-239"><a href="#L-239"><span class="linenos" data-line="239"></span></a> <span class="kr">end</span> </span><span id="L-240"><a href="#L-240"><span class="linenos" data-line="240"></span></a> <span class="kr">end</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><span id="L-243"><a href="#L-243"><span class="linenos" data-line="243"></span></a><span class="c1">-- Add an icon for no label in requested language</span> </span><span id="L-244"><a href="#L-244"><span class="linenos" data-line="244"></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-245"><a href="#L-245"><span class="linenos" data-line="245"></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-246"><a href="#L-246"><span class="linenos" data-line="246"></span></a> <span class="kr">if</span> <span class="n">icon</span> <span class="kr">then</span> </span><span id="L-247"><a href="#L-247"><span class="linenos" data-line="247"></span></a> <span class="kr">if</span> <span class="n">lang</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">lang</span> <span class="o">~=</span> <span class="s1">'mul'</span> <span class="kr">then</span> </span><span id="L-248"><a href="#L-248"><span class="linenos" data-line="248"></span></a> <span class="n">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-249"><a href="#L-249"><span class="linenos" data-line="249"></span></a> <span class="kr">end</span> </span><span id="L-250"><a href="#L-250"><span class="linenos" data-line="250"></span></a> <span class="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="p">(</span><span class="n">lang</span> <span class="o">~=</span> <span class="n">uselang</span> <span class="ow">and</span> <span class="n">lang</span> <span class="o">~=</span> <span class="s1">'mul'</span><span class="p">))</span> <span class="kr">then</span> </span><span id="L-251"><a href="#L-251"><span class="linenos" data-line="251"></span></a> <span class="kd">local</span> <span class="n">namespace</span> <span class="o">=</span> <span class="s1">''</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="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-253"><a href="#L-253"><span class="linenos" data-line="253"></span></a> <span class="n">namespace</span> <span class="o">=</span> <span class="s1">'Property:'</span> </span><span id="L-254"><a href="#L-254"><span class="linenos" data-line="254"></span></a> <span class="kr">end</span> </span><span id="L-255"><a href="#L-255"><span class="linenos" data-line="255"></span></a> <span class="n">ret_icon</span> <span class="o">=</span> <span class="s2">" [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|"</span> </span><span id="L-256"><a href="#L-256"><span class="linenos" data-line="256"></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-257"><a href="#L-257"><span class="linenos" data-line="257"></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-258"><a href="#L-258"><span class="linenos" data-line="258"></span></a> <span class="n">untranslated</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-259"><a href="#L-259"><span class="linenos" data-line="259"></span></a> <span class="kr">end</span> </span><span id="L-260"><a href="#L-260"><span class="linenos" data-line="260"></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">lang</span> <span class="o">~=</span> <span class="s1">'mul'</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-261"><a href="#L-261"><span class="linenos" data-line="261"></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-262"><a href="#L-262"><span class="linenos" data-line="262"></span></a> <span class="kr">end</span> </span><span id="L-263"><a href="#L-263"><span class="linenos" data-line="263"></span></a> <span class="kr">end</span> </span><span id="L-264"><a href="#L-264"><span class="linenos" data-line="264"></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-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><span id="L-267"><a href="#L-267"><span class="linenos" data-line="267"></span></a><span class="c1">-- editicon values: true/false (no=false), right, void defaults to i18n.addpencil</span> </span><span id="L-268"><a href="#L-268"><span class="linenos" data-line="268"></span></a><span class="c1">-- labelicon only by parameter</span> </span><span id="L-269"><a href="#L-269"><span class="linenos" data-line="269"></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-270"><a href="#L-270"><span class="linenos" data-line="270"></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-271"><a href="#L-271"><span class="linenos" data-line="271"></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-272"><a href="#L-272"><span class="linenos" data-line="272"></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-273"><a href="#L-273"><span class="linenos" data-line="273"></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-274"><a href="#L-274"><span class="linenos" data-line="274"></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-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="kc">false</span><span class="p">,</span> <span class="kc">false</span> </span><span id="L-276"><a href="#L-276"><span class="linenos" data-line="276"></span></a> <span class="kr">else</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="n">val</span><span class="p">,</span> <span class="kc">true</span> </span><span id="L-278"><a href="#L-278"><span class="linenos" data-line="278"></span></a> <span class="kr">end</span> </span><span id="L-279"><a href="#L-279"><span class="linenos" data-line="279"></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-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><span id="L-282"><a href="#L-282"><span class="linenos" data-line="282"></span></a><span class="c1">-- Add an icon for editing a statement with requirements for Wikidata Bridge</span> </span><span id="L-283"><a href="#L-283"><span class="linenos" data-line="283"></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-284"><a href="#L-284"><span class="linenos" data-line="284"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="s1">''</span> </span><span id="L-285"><a href="#L-285"><span class="linenos" data-line="285"></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-286"><a href="#L-286"><span class="linenos" data-line="286"></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-287"><a href="#L-287"><span class="linenos" data-line="287"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="s1">' <span class="penicon" data-bridge-edit-flow="single-best-value"'</span> <span class="o">..</span> <span class="n">icon_style</span> <span class="o">..</span> <span class="s1">'>'</span> </span><span id="L-288"><a href="#L-288"><span class="linenos" data-line="288"></span></a> <span class="o">..</span> <span class="s2">"[[File:Arbcom ru editing.svg|10px|baseline|"</span> </span><span id="L-289"><a href="#L-289"><span class="linenos" data-line="289"></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-290"><a href="#L-290"><span class="linenos" data-line="290"></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-291"><a href="#L-291"><span class="linenos" data-line="291"></span></a> <span class="o">..</span> <span class="s2">"</span>"</span> </span><span id="L-292"><a href="#L-292"><span class="linenos" data-line="292"></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-293"><a href="#L-293"><span class="linenos" data-line="293"></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-294"><a href="#L-294"><span class="linenos" data-line="294"></span></a> <span class="kr">end</span> </span><span id="L-295"><a href="#L-295"><span class="linenos" data-line="295"></span></a> <span class="kr">end</span> </span><span id="L-296"><a href="#L-296"><span class="linenos" data-line="296"></span></a> <span class="kr">return</span> <span class="n">ret</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="c1">-- add edit icon to the last element of a table</span> </span><span id="L-299"><a href="#L-299"><span class="linenos" data-line="299"></span></a><span class="kd">local</span> <span class="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-300"><a href="#L-300"><span class="linenos" data-line="300"></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-301"><a href="#L-301"><span class="linenos" data-line="301"></span></a> <span class="kr">return</span> <span class="n">thetable</span> </span><span id="L-302"><a href="#L-302"><span class="linenos" data-line="302"></span></a> <span class="kr">end</span> </span><span id="L-303"><a href="#L-303"><span class="linenos" data-line="303"></span></a> <span class="kd">local</span> <span class="n">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-304"><a href="#L-304"><span class="linenos" data-line="304"></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-305"><a href="#L-305"><span class="linenos" data-line="305"></span></a> <span class="c1">-- add it before last html closing tags</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">tags</span> <span class="o">=</span> <span class="s1">''</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">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-308"><a href="#L-308"><span class="linenos" data-line="308"></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-309"><a href="#L-309"><span class="linenos" data-line="309"></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-310"><a href="#L-310"><span class="linenos" data-line="310"></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-311"><a href="#L-311"><span class="linenos" data-line="311"></span></a> <span class="kr">else</span> </span><span id="L-312"><a href="#L-312"><span class="linenos" data-line="312"></span></a> <span class="kr">break</span> </span><span id="L-313"><a href="#L-313"><span class="linenos" data-line="313"></span></a> <span class="kr">end</span> </span><span id="L-314"><a href="#L-314"><span class="linenos" data-line="314"></span></a> <span class="kr">end</span> </span><span id="L-315"><a href="#L-315"><span class="linenos" data-line="315"></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-316"><a href="#L-316"><span class="linenos" data-line="316"></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-317"><a href="#L-317"><span class="linenos" data-line="317"></span></a> <span class="kr">if</span> <span class="n">offset</span> <span class="kr">then</span> </span><span id="L-318"><a href="#L-318"><span class="linenos" data-line="318"></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-319"><a href="#L-319"><span class="linenos" data-line="319"></span></a> <span class="kr">else</span> </span><span id="L-320"><a href="#L-320"><span class="linenos" data-line="320"></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-321"><a href="#L-321"><span class="linenos" data-line="321"></span></a> <span class="kr">end</span> </span><span id="L-322"><a href="#L-322"><span class="linenos" data-line="322"></span></a> <span class="kr">return</span> <span class="n">thetable</span> </span><span id="L-323"><a href="#L-323"><span class="linenos" data-line="323"></span></a><span class="kr">end</span> </span><span id="L-324"><a href="#L-324"><span class="linenos" data-line="324"></span></a> </span><span id="L-325"><a href="#L-325"><span class="linenos" data-line="325"></span></a><span class="c1">-- Escape Lua captures</span> </span><span id="L-326"><a href="#L-326"><span class="linenos" data-line="326"></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-327"><a href="#L-327"><span class="linenos" data-line="327"></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-328"><a href="#L-328"><span class="linenos" data-line="328"></span></a><span class="kr">end</span> </span><span id="L-329"><a href="#L-329"><span class="linenos" data-line="329"></span></a> </span><span id="L-330"><a href="#L-330"><span class="linenos" data-line="330"></span></a><span class="c1">-- expandTemplate or callParserFunction</span> </span><span id="L-331"><a href="#L-331"><span class="linenos" data-line="331"></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-332"><a href="#L-332"><span class="linenos" data-line="332"></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-333"><a href="#L-333"><span class="linenos" data-line="333"></span></a> <span class="c1">-- only expand braces if provided in argument, not included in value as in Q1164668</span> </span><span id="L-334"><a href="#L-334"><span class="linenos" data-line="334"></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-335"><a href="#L-335"><span class="linenos" data-line="335"></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-336"><a href="#L-336"><span class="linenos" data-line="336"></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-337"><a href="#L-337"><span class="linenos" data-line="337"></span></a> <span class="kr">end</span> </span><span id="L-338"><a href="#L-338"><span class="linenos" data-line="338"></span></a> </span><span id="L-339"><a href="#L-339"><span class="linenos" data-line="339"></span></a> <span class="kr">for</span> <span class="n">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-340"><a href="#L-340"><span class="linenos" data-line="340"></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-341"><a href="#L-341"><span class="linenos" data-line="341"></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-342"><a href="#L-342"><span class="linenos" data-line="342"></span></a> <span class="kd">local</span> <span class="n">parameters</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-343"><a href="#L-343"><span class="linenos" data-line="343"></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-344"><a href="#L-344"><span class="linenos" data-line="344"></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-345"><a href="#L-345"><span class="linenos" data-line="345"></span></a> <span class="kr">if</span> <span class="n">subparts</span> <span class="kr">then</span> </span><span id="L-346"><a href="#L-346"><span class="linenos" data-line="346"></span></a> <span class="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-347"><a href="#L-347"><span class="linenos" data-line="347"></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-348"><a href="#L-348"><span class="linenos" data-line="348"></span></a> <span class="c1">-- reconstruct broken links by parts</span> </span><span id="L-349"><a href="#L-349"><span class="linenos" data-line="349"></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-350"><a href="#L-350"><span class="linenos" data-line="350"></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-351"><a href="#L-351"><span class="linenos" data-line="351"></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-352"><a href="#L-352"><span class="linenos" data-line="352"></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-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">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-354"><a href="#L-354"><span class="linenos" data-line="354"></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-355"><a href="#L-355"><span class="linenos" data-line="355"></span></a> <span class="kr">end</span> </span><span id="L-356"><a href="#L-356"><span class="linenos" data-line="356"></span></a> <span class="kr">else</span> </span><span id="L-357"><a href="#L-357"><span class="linenos" data-line="357"></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-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">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-360"><a href="#L-360"><span class="linenos" data-line="360"></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-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">end</span> </span><span id="L-363"><a href="#L-363"><span class="linenos" data-line="363"></span></a> </span><span id="L-364"><a href="#L-364"><span class="linenos" data-line="364"></span></a> <span class="kd">local</span> <span class="n">braces_expanded</span> </span><span id="L-365"><a href="#L-365"><span class="linenos" data-line="365"></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-366"><a href="#L-366"><span class="linenos" data-line="366"></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-367"><a href="#L-367"><span class="linenos" data-line="367"></span></a> <span class="kr">then</span> </span><span id="L-368"><a href="#L-368"><span class="linenos" data-line="368"></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-369"><a href="#L-369"><span class="linenos" data-line="369"></span></a> <span class="kr">else</span> </span><span id="L-370"><a href="#L-370"><span class="linenos" data-line="370"></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-371"><a href="#L-371"><span class="linenos" data-line="371"></span></a> <span class="kr">end</span> </span><span id="L-372"><a href="#L-372"><span class="linenos" data-line="372"></span></a> <span 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-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">captureEscapes</span><span class="p">(</span><span class="n">braces_expanded</span><span class="p">)</span> </span><span id="L-374"><a href="#L-374"><span class="linenos" data-line="374"></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-375"><a href="#L-375"><span class="linenos" data-line="375"></span></a> <span class="kr">end</span> </span><span id="L-376"><a href="#L-376"><span class="linenos" data-line="376"></span></a> </span><span id="L-377"><a href="#L-377"><span class="linenos" data-line="377"></span></a> <span class="kr">return</span> <span class="n">text</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="c1">-- format data type math</span> </span><span id="L-381"><a href="#L-381"><span class="linenos" data-line="381"></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-382"><a href="#L-382"><span class="linenos" data-line="382"></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-383"><a href="#L-383"><span class="linenos" data-line="383"></span></a><span class="kr">end</span> </span><span id="L-384"><a href="#L-384"><span class="linenos" data-line="384"></span></a> </span><span id="L-385"><a href="#L-385"><span class="linenos" data-line="385"></span></a><span class="c1">-- format data type musical-notation</span> </span><span id="L-386"><a href="#L-386"><span class="linenos" data-line="386"></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-387"><a href="#L-387"><span class="linenos" data-line="387"></span></a> <span class="kd">local</span> <span class="n">attr</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-388"><a href="#L-388"><span class="linenos" data-line="388"></span></a> <span class="kr">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-389"><a href="#L-389"><span class="linenos" data-line="389"></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-390"><a href="#L-390"><span class="linenos" data-line="390"></span></a> <span class="kr">end</span> </span><span id="L-391"><a href="#L-391"><span class="linenos" data-line="391"></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-392"><a href="#L-392"><span class="linenos" data-line="392"></span></a><span class="kr">end</span> </span><span id="L-393"><a href="#L-393"><span class="linenos" data-line="393"></span></a> </span><span id="L-394"><a href="#L-394"><span class="linenos" data-line="394"></span></a><span class="c1">-- format data type string</span> </span><span id="L-395"><a href="#L-395"><span class="linenos" data-line="395"></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-396"><a href="#L-396"><span class="linenos" data-line="396"></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-397"><a href="#L-397"><span class="linenos" data-line="397"></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-398"><a href="#L-398"><span class="linenos" data-line="398"></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-399"><a href="#L-399"><span class="linenos" data-line="399"></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-400"><a href="#L-400"><span class="linenos" data-line="400"></span></a> <span class="kr">end</span> </span><span id="L-401"><a href="#L-401"><span class="linenos" data-line="401"></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-402"><a href="#L-402"><span class="linenos" data-line="402"></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-403"><a href="#L-403"><span class="linenos" data-line="403"></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-404"><a href="#L-404"><span class="linenos" data-line="404"></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-405"><a href="#L-405"><span class="linenos" data-line="405"></span></a> <span class="kr">end</span> </span><span id="L-406"><a href="#L-406"><span class="linenos" data-line="406"></span></a> <span class="kr">return</span> <span class="n">data</span> </span><span id="L-407"><a href="#L-407"><span class="linenos" data-line="407"></span></a><span class="kr">end</span> </span><span id="L-408"><a href="#L-408"><span class="linenos" data-line="408"></span></a> </span><span id="L-409"><a href="#L-409"><span class="linenos" data-line="409"></span></a><span class="c1">-- format data type tabular-data</span> </span><span id="L-410"><a href="#L-410"><span class="linenos" data-line="410"></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-411"><a href="#L-411"><span class="linenos" data-line="411"></span></a> <span class="kd">local</span> <span class="n">icon</span> </span><span id="L-412"><a href="#L-412"><span class="linenos" data-line="412"></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-413"><a href="#L-413"><span class="linenos" data-line="413"></span></a> <span class="n">icon</span> <span class="o">=</span> <span class="s2">"no-icon"</span> </span><span id="L-414"><a href="#L-414"><span class="linenos" data-line="414"></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-415"><a href="#L-415"><span class="linenos" data-line="415"></span></a> <span class="kr">end</span> </span><span id="L-416"><a href="#L-416"><span class="linenos" data-line="416"></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-417"><a href="#L-417"><span class="linenos" data-line="417"></span></a><span class="kr">end</span> </span><span id="L-418"><a href="#L-418"><span class="linenos" data-line="418"></span></a> </span><span id="L-419"><a href="#L-419"><span class="linenos" data-line="419"></span></a><span class="c1">-- format data type url</span> </span><span id="L-420"><a href="#L-420"><span class="linenos" data-line="420"></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-421"><a href="#L-421"><span class="linenos" data-line="421"></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-422"><a href="#L-422"><span class="linenos" data-line="422"></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-423"><a href="#L-423"><span class="linenos" data-line="423"></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-424"><a href="#L-424"><span class="linenos" data-line="424"></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-425"><a href="#L-425"><span class="linenos" data-line="425"></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-426"><a href="#L-426"><span class="linenos" data-line="426"></span></a> <span class="kr">end</span> </span><span id="L-427"><a href="#L-427"><span class="linenos" data-line="427"></span></a> <span 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-428"><a href="#L-428"><span class="linenos" data-line="428"></span></a> <span class="kr">end</span> </span><span id="L-429"><a href="#L-429"><span class="linenos" data-line="429"></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-430"><a href="#L-430"><span class="linenos" data-line="430"></span></a><span class="kr">end</span> </span><span id="L-431"><a href="#L-431"><span class="linenos" data-line="431"></span></a> </span><span id="L-432"><a href="#L-432"><span class="linenos" data-line="432"></span></a><span class="c1">-- format data type external-id</span> </span><span id="L-433"><a href="#L-433"><span class="linenos" data-line="433"></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-434"><a href="#L-434"><span class="linenos" data-line="434"></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-435"><a href="#L-435"><span class="linenos" data-line="435"></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-436"><a href="#L-436"><span class="linenos" data-line="436"></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-437"><a href="#L-437"><span class="linenos" data-line="437"></span></a> <span class="kr">if</span> <span class="n">p_link_pattern</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_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-439"><a href="#L-439"><span class="linenos" data-line="439"></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-440"><a href="#L-440"><span class="linenos" data-line="440"></span></a> <span class="kr">end</span> </span><span id="L-441"><a href="#L-441"><span class="linenos" data-line="441"></span></a> <span class="kr">end</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="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-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><span id="L-445"><a href="#L-445"><span class="linenos" data-line="445"></span></a><span class="c1">-- format data type commonsMedia and geo-shape</span> </span><span id="L-446"><a href="#L-446"><span class="linenos" data-line="446"></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-447"><a href="#L-447"><span class="linenos" data-line="447"></span></a> <span class="kd">local</span> <span class="n">icon</span> </span><span id="L-448"><a href="#L-448"><span class="linenos" data-line="448"></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-449"><a href="#L-449"><span class="linenos" data-line="449"></span></a> <span class="n">icon</span> <span class="o">=</span> <span class="s2">"no-icon"</span> </span><span id="L-450"><a href="#L-450"><span class="linenos" data-line="450"></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-451"><a href="#L-451"><span class="linenos" data-line="451"></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-452"><a href="#L-452"><span class="linenos" data-line="452"></span></a> <span class="kr">end</span> </span><span id="L-453"><a href="#L-453"><span class="linenos" data-line="453"></span></a> <span class="kr">end</span> </span><span id="L-454"><a href="#L-454"><span class="linenos" data-line="454"></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-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><span id="L-457"><a href="#L-457"><span class="linenos" data-line="457"></span></a><span class="c1">-- format data type globe-coordinate</span> </span><span id="L-458"><a href="#L-458"><span class="linenos" data-line="458"></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-459"><a href="#L-459"><span class="linenos" data-line="459"></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-460"><a href="#L-460"><span class="linenos" data-line="460"></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-461"><a href="#L-461"><span class="linenos" data-line="461"></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-462"><a href="#L-462"><span class="linenos" data-line="462"></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-463"><a href="#L-463"><span class="linenos" data-line="463"></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-464"><a href="#L-464"><span class="linenos" data-line="464"></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-465"><a href="#L-465"><span class="linenos" data-line="465"></span></a> <span class="kr">end</span> </span><span id="L-466"><a href="#L-466"><span class="linenos" data-line="466"></span></a> </span><span id="L-467"><a href="#L-467"><span class="linenos" data-line="467"></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-468"><a href="#L-468"><span class="linenos" data-line="468"></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-469"><a href="#L-469"><span class="linenos" data-line="469"></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-470"><a href="#L-470"><span class="linenos" data-line="470"></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-471"><a href="#L-471"><span class="linenos" data-line="471"></span></a> <span class="kr">end</span> </span><span id="L-472"><a href="#L-472"><span class="linenos" data-line="472"></span></a> </span><span id="L-473"><a href="#L-473"><span class="linenos" data-line="473"></span></a> <span class="kd">local</span> <span class="n">precision</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">precision</span> </span><span id="L-474"><a href="#L-474"><span class="linenos" data-line="474"></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-475"><a href="#L-475"><span class="linenos" data-line="475"></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-476"><a href="#L-476"><span class="linenos" data-line="476"></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-477"><a href="#L-477"><span class="linenos" data-line="477"></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-478"><a href="#L-478"><span class="linenos" data-line="478"></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-479"><a href="#L-479"><span class="linenos" data-line="479"></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-480"><a href="#L-480"><span class="linenos" data-line="480"></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-481"><a href="#L-481"><span class="linenos" data-line="481"></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-482"><a href="#L-482"><span class="linenos" data-line="482"></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-483"><a href="#L-483"><span class="linenos" data-line="483"></span></a> <span class="kr">end</span> </span><span id="L-484"><a href="#L-484"><span class="linenos" data-line="484"></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-485"><a href="#L-485"><span class="linenos" data-line="485"></span></a> <span class="kr">end</span> </span><span id="L-486"><a href="#L-486"><span class="linenos" data-line="486"></span></a> <span class="kr">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-487"><a href="#L-487"><span class="linenos" data-line="487"></span></a> <span class="kr">elseif</span> <span class="n">formatting</span> <span class="o">==</span> <span class="s1">'latitude'</span> <span class="kr">then</span> </span><span id="L-488"><a href="#L-488"><span class="linenos" data-line="488"></span></a> <span class="kr">return</span> <span class="n">latitude</span><span class="p">,</span> <span class="s2">"no-icon"</span> </span><span id="L-489"><a href="#L-489"><span class="linenos" data-line="489"></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-490"><a href="#L-490"><span class="linenos" data-line="490"></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-491"><a href="#L-491"><span class="linenos" data-line="491"></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-492"><a href="#L-492"><span class="linenos" data-line="492"></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-493"><a href="#L-493"><span class="linenos" data-line="493"></span></a> <span class="kr">else</span> <span class="c1">--default formatting='globe'</span> </span><span id="L-494"><a href="#L-494"><span class="linenos" data-line="494"></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-495"><a href="#L-495"><span class="linenos" data-line="495"></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-496"><a href="#L-496"><span class="linenos" data-line="496"></span></a> <span class="kr">else</span> </span><span id="L-497"><a href="#L-497"><span class="linenos" data-line="497"></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-498"><a href="#L-498"><span class="linenos" data-line="498"></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-499"><a href="#L-499"><span class="linenos" data-line="499"></span></a> <span class="kr">end</span> </span><span id="L-500"><a href="#L-500"><span class="linenos" data-line="500"></span></a> <span class="kr">end</span> </span><span id="L-501"><a href="#L-501"><span class="linenos" data-line="501"></span></a><span class="kr">end</span> </span><span id="L-502"><a href="#L-502"><span class="linenos" data-line="502"></span></a> </span><span id="L-503"><a href="#L-503"><span class="linenos" data-line="503"></span></a><span class="c1">-- Local functions for data value quantity</span> </span><span id="L-504"><a href="#L-504"><span class="linenos" data-line="504"></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-505"><a href="#L-505"><span class="linenos" data-line="505"></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-506"><a href="#L-506"><span class="linenos" data-line="506"></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="s2">"Module:Wikidata/Units"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-507"><a href="#L-507"><span class="linenos" data-line="507"></span></a> <span class="n">unit_symbol</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="s2">"Module:Wikidata/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-508"><a href="#L-508"><span class="linenos" data-line="508"></span></a> <span class="kr">end</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">unit_symbol</span> <span class="o">==</span> <span class="s1">''</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="c1">-- fetch it</span> </span><span id="L-511"><a href="#L-511"><span class="linenos" data-line="511"></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-512"><a href="#L-512"><span class="linenos" data-line="512"></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-513"><a href="#L-513"><span class="linenos" data-line="513"></span></a> <span class="kd">local</span> <span class="n">langclaims</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-514"><a href="#L-514"><span class="linenos" data-line="514"></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-515"><a href="#L-515"><span class="linenos" data-line="515"></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-516"><a href="#L-516"><span class="linenos" data-line="516"></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-517"><a href="#L-517"><span class="linenos" data-line="517"></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-518"><a href="#L-518"><span class="linenos" data-line="518"></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-519"><a href="#L-519"><span class="linenos" data-line="519"></span></a> <span class="kr">end</span> </span><span id="L-520"><a href="#L-520"><span class="linenos" data-line="520"></span></a> <span class="kr">end</span> </span><span id="L-521"><a href="#L-521"><span class="linenos" data-line="521"></span></a> <span class="kr">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-522"><a href="#L-522"><span class="linenos" data-line="522"></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-523"><a href="#L-523"><span class="linenos" data-line="523"></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-524"><a href="#L-524"><span class="linenos" data-line="524"></span></a> <span class="kr">end</span> </span><span id="L-525"><a href="#L-525"><span class="linenos" data-line="525"></span></a> <span class="kr">end</span> </span><span id="L-526"><a href="#L-526"><span class="linenos" data-line="526"></span></a> <span class="kr">end</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">return</span> <span class="n">unit_symbol</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><span id="L-531"><a href="#L-531"><span class="linenos" data-line="531"></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-532"><a href="#L-532"><span class="linenos" data-line="532"></span></a> <span class="kd">local</span> <span class="n">suffix</span> <span class="o">=</span> <span class="s1">''</span> </span><span id="L-533"><a href="#L-533"><span class="linenos" data-line="533"></span></a> <span class="kr">if</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="ow">or</span> <span class="s1">''</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-534"><a href="#L-534"><span class="linenos" data-line="534"></span></a> <span class="c1">-- get unit symbol</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">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-536"><a href="#L-536"><span class="linenos" data-line="536"></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-537"><a href="#L-537"><span class="linenos" data-line="537"></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-538"><a href="#L-538"><span class="linenos" data-line="538"></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-539"><a href="#L-539"><span class="linenos" data-line="539"></span></a> <span class="kr">else</span> </span><span id="L-540"><a href="#L-540"><span class="linenos" data-line="540"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">unit_symbol</span> </span><span id="L-541"><a href="#L-541"><span class="linenos" data-line="541"></span></a> <span class="kr">end</span> </span><span id="L-542"><a href="#L-542"><span class="linenos" data-line="542"></span></a> <span class="kr">end</span> </span><span id="L-543"><a href="#L-543"><span class="linenos" data-line="543"></span></a> <span class="kr">end</span> </span><span id="L-544"><a href="#L-544"><span class="linenos" data-line="544"></span></a> <span class="kr">if</span> <span class="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-545"><a href="#L-545"><span class="linenos" data-line="545"></span></a> <span class="c1">-- get unit label</span> </span><span id="L-546"><a href="#L-546"><span class="linenos" data-line="546"></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-547"><a href="#L-547"><span class="linenos" data-line="547"></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="s2">"Module:Wikidata/Units"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-548"><a href="#L-548"><span class="linenos" data-line="548"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="s2">"Module:Wikidata/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-549"><a href="#L-549"><span class="linenos" data-line="549"></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-550"><a href="#L-550"><span class="linenos" data-line="550"></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-551"><a href="#L-551"><span class="linenos" data-line="551"></span></a> <span class="kr">end</span> </span><span id="L-552"><a href="#L-552"><span class="linenos" data-line="552"></span></a> <span class="kr">else</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="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-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">end</span> </span><span id="L-556"><a href="#L-556"><span class="linenos" data-line="556"></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-557"><a href="#L-557"><span class="linenos" data-line="557"></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-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">return</span> <span class="n">suffix</span> </span><span id="L-560"><a href="#L-560"><span class="linenos" data-line="560"></span></a><span class="kr">end</span> </span><span id="L-561"><a href="#L-561"><span class="linenos" data-line="561"></span></a> </span><span id="L-562"><a href="#L-562"><span class="linenos" data-line="562"></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-563"><a href="#L-563"><span class="linenos" data-line="563"></span></a> <span class="c1">-- rounds out_num with significant figures of in_num (default precision)</span> </span><span id="L-564"><a href="#L-564"><span class="linenos" data-line="564"></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-565"><a href="#L-565"><span class="linenos" data-line="565"></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-566"><a href="#L-566"><span class="linenos" data-line="566"></span></a> <span class="kr">return</span> <span class="n">out_num</span> </span><span id="L-567"><a href="#L-567"><span class="linenos" data-line="567"></span></a> <span class="kr">end</span> </span><span id="L-568"><a href="#L-568"><span class="linenos" data-line="568"></span></a> <span class="c1">-- first, count digits after decimal mark, handling cases like '12.345e6'</span> </span><span id="L-569"><a href="#L-569"><span class="linenos" data-line="569"></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-570"><a href="#L-570"><span class="linenos" data-line="570"></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-571"><a href="#L-571"><span class="linenos" data-line="571"></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-572"><a href="#L-572"><span class="linenos" data-line="572"></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-573"><a href="#L-573"><span class="linenos" data-line="573"></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-574"><a href="#L-574"><span class="linenos" data-line="574"></span></a> <span class="kr">end</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">dot</span> <span class="o">==</span> <span class="s1">''</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">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-577"><a href="#L-577"><span class="linenos" data-line="577"></span></a> <span class="kr">else</span> </span><span id="L-578"><a href="#L-578"><span class="linenos" data-line="578"></span></a> <span class="n">prec</span> <span class="o">=</span> <span class="o">#</span><span class="n">decimals</span> </span><span id="L-579"><a href="#L-579"><span class="linenos" data-line="579"></span></a> <span class="kr">end</span> </span><span id="L-580"><a href="#L-580"><span class="linenos" data-line="580"></span></a> <span class="kr">if</span> <span class="n">exponent</span> <span class="kr">then</span> </span><span id="L-581"><a href="#L-581"><span class="linenos" data-line="581"></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-582"><a href="#L-582"><span class="linenos" data-line="582"></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-583"><a href="#L-583"><span class="linenos" data-line="583"></span></a> <span class="kr">end</span> </span><span id="L-584"><a href="#L-584"><span class="linenos" data-line="584"></span></a> <span class="c1">-- significant figures</span> </span><span id="L-585"><a href="#L-585"><span class="linenos" data-line="585"></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-586"><a href="#L-586"><span class="linenos" data-line="586"></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-587"><a href="#L-587"><span class="linenos" data-line="587"></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-588"><a href="#L-588"><span class="linenos" data-line="588"></span></a> <span class="c1">-- round it (credit to Luc Bloom from http://lua-users.org/wiki/SimpleRound)</span> </span><span id="L-589"><a href="#L-589"><span class="linenos" data-line="589"></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-590"><a href="#L-590"><span class="linenos" data-line="590"></span></a><span class="kr">end</span> </span><span id="L-591"><a href="#L-591"><span class="linenos" data-line="591"></span></a> </span><span id="L-592"><a href="#L-592"><span class="linenos" data-line="592"></span></a><span class="c1">-- format data type quantity</span> </span><span id="L-593"><a href="#L-593"><span class="linenos" data-line="593"></span></a><span class="kd">local</span> <span class="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-594"><a href="#L-594"><span class="linenos" data-line="594"></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-595"><a href="#L-595"><span class="linenos" data-line="595"></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-596"><a href="#L-596"><span class="linenos" data-line="596"></span></a> <span class="kd">local</span> <span class="n">suffix</span> <span class="o">=</span> <span class="s2">""</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">conv_amount</span><span class="p">,</span> <span class="n">conv_suffix</span> </span><span id="L-598"><a href="#L-598"><span class="linenos" data-line="598"></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-599"><a href="#L-599"><span class="linenos" data-line="599"></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-600"><a href="#L-600"><span class="linenos" data-line="600"></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-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">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-602"><a href="#L-602"><span class="linenos" data-line="602"></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-603"><a href="#L-603"><span class="linenos" data-line="603"></span></a> <span class="kd">local</span> <span class="n">convert_to</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="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-605"><a href="#L-605"><span class="linenos" data-line="605"></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="s2">"Module:Wikidata/Units"</span><span class="p">)</span> </span><span id="L-606"><a href="#L-606"><span class="linenos" data-line="606"></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-607"><a href="#L-607"><span class="linenos" data-line="607"></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-608"><a href="#L-608"><span class="linenos" data-line="608"></span></a> <span class="kr">end</span> </span><span id="L-609"><a href="#L-609"><span class="linenos" data-line="609"></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-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">parameters</span><span class="p">.</span><span class="n">convert</span> </span><span id="L-611"><a href="#L-611"><span class="linenos" data-line="611"></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-612"><a href="#L-612"><span class="linenos" data-line="612"></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-613"><a href="#L-613"><span class="linenos" data-line="613"></span></a> <span class="kr">end</span> </span><span id="L-614"><a href="#L-614"><span class="linenos" data-line="614"></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-615"><a href="#L-615"><span class="linenos" data-line="615"></span></a> <span class="c1">-- convert units</span> </span><span id="L-616"><a href="#L-616"><span class="linenos" data-line="616"></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-617"><a href="#L-617"><span class="linenos" data-line="617"></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-618"><a href="#L-618"><span class="linenos" data-line="618"></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-619"><a href="#L-619"><span class="linenos" data-line="619"></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-620"><a href="#L-620"><span class="linenos" data-line="620"></span></a> <span class="p">}</span> </span><span id="L-621"><a href="#L-621"><span class="linenos" data-line="621"></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-622"><a href="#L-622"><span class="linenos" data-line="622"></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-623"><a href="#L-623"><span class="linenos" data-line="623"></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-624"><a href="#L-624"><span class="linenos" data-line="624"></span></a> <span class="kr">else</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">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-626"><a href="#L-626"><span class="linenos" data-line="626"></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-627"><a href="#L-627"><span class="linenos" data-line="627"></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-628"><a href="#L-628"><span class="linenos" data-line="628"></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-629"><a href="#L-629"><span class="linenos" data-line="629"></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-630"><a href="#L-630"><span class="linenos" data-line="630"></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-631"><a href="#L-631"><span class="linenos" data-line="631"></span></a> <span class="kr">break</span> </span><span id="L-632"><a href="#L-632"><span class="linenos" data-line="632"></span></a> <span class="kr">end</span> </span><span id="L-633"><a href="#L-633"><span class="linenos" data-line="633"></span></a> <span class="kr">end</span> </span><span id="L-634"><a href="#L-634"><span class="linenos" data-line="634"></span></a> <span class="kr">end</span> </span><span id="L-635"><a href="#L-635"><span class="linenos" data-line="635"></span></a> <span class="kr">end</span> </span><span id="L-636"><a href="#L-636"><span class="linenos" data-line="636"></span></a> <span class="kr">if</span> <span class="n">conv_amount</span> <span class="kr">then</span> </span><span id="L-637"><a href="#L-637"><span class="linenos" data-line="637"></span></a> <span class="n">conv_suffix</span> <span class="o">=</span> <span class="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-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">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="ow">and</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-640"><a href="#L-640"><span class="linenos" data-line="640"></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-641"><a href="#L-641"><span class="linenos" data-line="641"></span></a> <span class="n">conv_suffix</span> <span class="o">=</span> <span class="s1">' M'</span> <span class="o">..</span> <span class="nb">string.sub</span><span class="p">(</span><span class="n">suffix</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-642"><a href="#L-642"><span class="linenos" data-line="642"></span></a> <span class="kr">end</span> </span><span id="L-643"><a href="#L-643"><span class="linenos" data-line="643"></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-644"><a href="#L-644"><span class="linenos" data-line="644"></span></a> <span class="n">amount</span> <span class="o">=</span> <span class="n">conv_amount</span> </span><span id="L-645"><a href="#L-645"><span class="linenos" data-line="645"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-646"><a href="#L-646"><span class="linenos" data-line="646"></span></a> <span class="n">conv_amount</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-647"><a href="#L-647"><span class="linenos" data-line="647"></span></a> <span class="kr">end</span> </span><span id="L-648"><a href="#L-648"><span class="linenos" data-line="648"></span></a> <span class="kr">end</span> </span><span id="L-649"><a href="#L-649"><span class="linenos" data-line="649"></span></a> <span class="kr">end</span> </span><span id="L-650"><a href="#L-650"><span class="linenos" data-line="650"></span></a> <span class="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-651"><a href="#L-651"><span class="linenos" data-line="651"></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-652"><a href="#L-652"><span class="linenos" data-line="652"></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-653"><a href="#L-653"><span class="linenos" data-line="653"></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-654"><a href="#L-654"><span class="linenos" data-line="654"></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-655"><a href="#L-655"><span class="linenos" data-line="655"></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-656"><a href="#L-656"><span class="linenos" data-line="656"></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-657"><a href="#L-657"><span class="linenos" data-line="657"></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-658"><a href="#L-658"><span class="linenos" data-line="658"></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-659"><a href="#L-659"><span class="linenos" data-line="659"></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-660"><a href="#L-660"><span class="linenos" data-line="660"></span></a> <span class="kr">else</span> <span class="c1">-- durationhms or durationh:m:s</span> </span><span id="L-661"><a href="#L-661"><span class="linenos" data-line="661"></span></a> <span class="kd">local</span> <span class="n">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-662"><a href="#L-662"><span class="linenos" data-line="662"></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-663"><a href="#L-663"><span class="linenos" data-line="663"></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-664"><a href="#L-664"><span class="linenos" data-line="664"></span></a> <span class="kd">local</span> <span class="n">duration</span> <span class="o">=</span> <span class="s1">''</span> </span><span id="L-665"><a href="#L-665"><span class="linenos" data-line="665"></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-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">'durationh:m:s'</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">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-668"><a href="#L-668"><span class="linenos" data-line="668"></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-669"><a href="#L-669"><span class="linenos" data-line="669"></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-670"><a href="#L-670"><span class="linenos" data-line="670"></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-671"><a href="#L-671"><span class="linenos" data-line="671"></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-672"><a href="#L-672"><span class="linenos" data-line="672"></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-673"><a href="#L-673"><span class="linenos" data-line="673"></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-674"><a href="#L-674"><span class="linenos" data-line="674"></span></a> <span class="kr">end</span> </span><span id="L-675"><a href="#L-675"><span class="linenos" data-line="675"></span></a> <span class="kr">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-676"><a href="#L-676"><span class="linenos" data-line="676"></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-677"><a href="#L-677"><span class="linenos" data-line="677"></span></a> <span class="kr">end</span> </span><span id="L-678"><a href="#L-678"><span class="linenos" data-line="678"></span></a> <span class="kr">end</span> </span><span id="L-679"><a href="#L-679"><span class="linenos" data-line="679"></span></a> <span class="kr">return</span> <span class="n">duration</span> </span><span id="L-680"><a href="#L-680"><span class="linenos" data-line="680"></span></a> <span class="kr">end</span> </span><span id="L-681"><a href="#L-681"><span class="linenos" data-line="681"></span></a> <span class="kr">end</span> </span><span id="L-682"><a href="#L-682"><span class="linenos" data-line="682"></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-683"><a href="#L-683"><span class="linenos" data-line="683"></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-684"><a href="#L-684"><span class="linenos" data-line="684"></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-685"><a href="#L-685"><span class="linenos" data-line="685"></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-686"><a href="#L-686"><span class="linenos" data-line="686"></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-687"><a href="#L-687"><span class="linenos" data-line="687"></span></a> <span class="kr">else</span> </span><span id="L-688"><a href="#L-688"><span class="linenos" data-line="688"></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-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">if</span> <span class="n">conv_amount</span> <span class="kr">then</span> </span><span id="L-692"><a href="#L-692"><span class="linenos" data-line="692"></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-693"><a href="#L-693"><span class="linenos" data-line="693"></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-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">convert</span> <span class="o">==</span> <span class="s1">'default2'</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="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-696"><a href="#L-696"><span class="linenos" data-line="696"></span></a> <span class="kr">else</span> </span><span id="L-697"><a href="#L-697"><span class="linenos" data-line="697"></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-698"><a href="#L-698"><span class="linenos" data-line="698"></span></a> <span class="kr">end</span> </span><span id="L-699"><a href="#L-699"><span class="linenos" data-line="699"></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-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">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-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">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-703"><a href="#L-703"><span class="linenos" data-line="703"></span></a><span class="kr">end</span> </span><span id="L-704"><a href="#L-704"><span class="linenos" data-line="704"></span></a> </span><span id="L-705"><a href="#L-705"><span class="linenos" data-line="705"></span></a><span class="c1">-- format data type time</span> </span><span id="L-706"><a href="#L-706"><span class="linenos" data-line="706"></span></a><span class="kd">local</span> <span class="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-707"><a href="#L-707"><span class="linenos" data-line="707"></span></a> <span class="c1">-- Dates and times are stored in ISO 8601 format</span> </span><span id="L-708"><a href="#L-708"><span class="linenos" data-line="708"></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-709"><a href="#L-709"><span class="linenos" data-line="709"></span></a> <span class="kd">local</span> <span class="n">post_format</span> </span><span id="L-710"><a href="#L-710"><span class="linenos" data-line="710"></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-711"><a href="#L-711"><span class="linenos" data-line="711"></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-712"><a href="#L-712"><span class="linenos" data-line="712"></span></a> </span><span id="L-713"><a href="#L-713"><span class="linenos" data-line="713"></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-714"><a href="#L-714"><span class="linenos" data-line="714"></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-715"><a href="#L-715"><span class="linenos" data-line="715"></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-716"><a href="#L-716"><span class="linenos" data-line="716"></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-717"><a href="#L-717"><span class="linenos" data-line="717"></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-718"><a href="#L-718"><span class="linenos" data-line="718"></span></a> <span class="c1">-- calendar model</span> </span><span id="L-719"><a href="#L-719"><span class="linenos" data-line="719"></span></a> <span class="kd">local</span> <span class="n">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-720"><a href="#L-720"><span class="linenos" data-line="720"></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-721"><a href="#L-721"><span class="linenos" data-line="721"></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-722"><a href="#L-722"><span class="linenos" data-line="722"></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-723"><a href="#L-723"><span class="linenos" data-line="723"></span></a> <span class="kr">then</span> </span><span id="L-724"><a href="#L-724"><span class="linenos" data-line="724"></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-725"><a href="#L-725"><span class="linenos" data-line="725"></span></a> <span class="kr">end</span> </span><span id="L-726"><a href="#L-726"><span class="linenos" data-line="726"></span></a> <span class="kr">end</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="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-729"><a href="#L-729"><span class="linenos" data-line="729"></span></a> <span class="kd">local</span> <span class="n">pattern</span> </span><span id="L-730"><a href="#L-730"><span class="linenos" data-line="730"></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-731"><a href="#L-731"><span class="linenos" data-line="731"></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-732"><a href="#L-732"><span class="linenos" data-line="732"></span></a> <span class="kr">else</span> </span><span id="L-733"><a href="#L-733"><span class="linenos" data-line="733"></span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">form</span> </span><span id="L-734"><a href="#L-734"><span class="linenos" data-line="734"></span></a> <span class="kr">end</span> </span><span id="L-735"><a href="#L-735"><span class="linenos" data-line="735"></span></a> <span class="n">stamp</span> <span class="o">=</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">stamp</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="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-737"><a href="#L-737"><span class="linenos" data-line="737"></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-738"><a href="#L-738"><span class="linenos" data-line="738"></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-739"><a href="#L-739"><span class="linenos" data-line="739"></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-740"><a href="#L-740"><span class="linenos" data-line="740"></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-741"><a href="#L-741"><span class="linenos" data-line="741"></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-742"><a href="#L-742"><span class="linenos" data-line="742"></span></a> <span class="kr">end</span> </span><span id="L-743"><a href="#L-743"><span class="linenos" data-line="743"></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-744"><a href="#L-744"><span class="linenos" data-line="744"></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-745"><a href="#L-745"><span class="linenos" data-line="745"></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-746"><a href="#L-746"><span class="linenos" data-line="746"></span></a> <span class="kr">return</span> <span class="n">ret</span> </span><span id="L-747"><a href="#L-747"><span class="linenos" data-line="747"></span></a> <span class="kr">end</span> </span><span id="L-748"><a href="#L-748"><span class="linenos" data-line="748"></span></a> </span><span id="L-749"><a href="#L-749"><span class="linenos" data-line="749"></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-750"><a href="#L-750"><span class="linenos" data-line="750"></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-751"><a href="#L-751"><span class="linenos" data-line="751"></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-752"><a href="#L-752"><span class="linenos" data-line="752"></span></a> <span class="kr">end</span> </span><span id="L-753"><a href="#L-753"><span class="linenos" data-line="753"></span></a> <span class="kr">return</span> <span class="n">t</span> </span><span id="L-754"><a href="#L-754"><span class="linenos" data-line="754"></span></a> <span class="kr">end</span> </span><span id="L-755"><a href="#L-755"><span class="linenos" data-line="755"></span></a> </span><span id="L-756"><a href="#L-756"><span class="linenos" data-line="756"></span></a> <span class="kd">local</span> <span class="n">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-757"><a href="#L-757"><span class="linenos" data-line="757"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-758"><a href="#L-758"><span class="linenos" data-line="758"></span></a> </span><span id="L-759"><a href="#L-759"><span class="linenos" data-line="759"></span></a> <span class="kr">if</span> <span class="n">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-760"><a href="#L-760"><span class="linenos" data-line="760"></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-761"><a href="#L-761"><span class="linenos" data-line="761"></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-762"><a href="#L-762"><span class="linenos" data-line="762"></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-763"><a href="#L-763"><span class="linenos" data-line="763"></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-764"><a href="#L-764"><span class="linenos" data-line="764"></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-765"><a href="#L-765"><span class="linenos" data-line="765"></span></a> <span class="kr">else</span> </span><span id="L-766"><a href="#L-766"><span class="linenos" data-line="766"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">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-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="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-769"><a href="#L-769"><span class="linenos" data-line="769"></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-770"><a href="#L-770"><span class="linenos" data-line="770"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">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-771"><a href="#L-771"><span class="linenos" data-line="771"></span></a> <span class="kr">end</span> </span><span id="L-772"><a href="#L-772"><span class="linenos" data-line="772"></span></a> <span class="kr">elseif</span> <span class="n">precision</span> <span class="o">==</span> <span class="mi">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-773"><a href="#L-773"><span class="linenos" data-line="773"></span></a> <span class="kd">local</span> <span class="n">card</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">((</span><span class="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-774"><a href="#L-774"><span class="linenos" data-line="774"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">formatTime</span><span class="p">(</span><span class="n">i18n</span><span class="p">.</span><span class="n">datetime</span><span class="p">[</span><span class="n">precision</span><span class="p">],</span> <span class="n">card</span><span class="p">)</span> </span><span id="L-775"><a href="#L-775"><span class="linenos" data-line="775"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">postFormat</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span> </span><span id="L-776"><a href="#L-776"><span class="linenos" data-line="776"></span></a> <span class="kr">elseif</span> <span class="n">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-777"><a href="#L-777"><span class="linenos" data-line="777"></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-778"><a href="#L-778"><span class="linenos" data-line="778"></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-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">postFormat</span><span class="p">(</span><span class="n">ret</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">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-781"><a href="#L-781"><span class="linenos" data-line="781"></span></a> <span class="kr">return</span> </span><span id="L-782"><a href="#L-782"><span class="linenos" data-line="782"></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-783"><a href="#L-783"><span class="linenos" data-line="783"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">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-784"><a href="#L-784"><span class="linenos" data-line="784"></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-785"><a href="#L-785"><span class="linenos" data-line="785"></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-786"><a href="#L-786"><span class="linenos" data-line="786"></span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">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-787"><a href="#L-787"><span class="linenos" data-line="787"></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-788"><a href="#L-788"><span class="linenos" data-line="788"></span></a> <span class="kr">else</span> <span class="c1">-- precision 11, day</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">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-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 class="o">..</span> <span class="n">calendar_add</span> </span><span id="L-791"><a href="#L-791"><span class="linenos" data-line="791"></span></a> <span class="kr">end</span> </span><span id="L-792"><a href="#L-792"><span class="linenos" data-line="792"></span></a> <span class="kr">return</span> <span class="n">ret</span><span class="p">,</span> <span class="n">timestamp</span> </span><span id="L-793"><a href="#L-793"><span class="linenos" data-line="793"></span></a><span class="kr">end</span> </span><span id="L-794"><a href="#L-794"><span class="linenos" data-line="794"></span></a> </span><span id="L-795"><a href="#L-795"><span class="linenos" data-line="795"></span></a><span class="c1">-- format data value wikibase-entityid with data types wikibase-item or wikibase-property</span> </span><span id="L-796"><a href="#L-796"><span class="linenos" data-line="796"></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-797"><a href="#L-797"><span class="linenos" data-line="797"></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-798"><a href="#L-798"><span class="linenos" data-line="798"></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-799"><a href="#L-799"><span class="linenos" data-line="799"></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-800"><a href="#L-800"><span class="linenos" data-line="800"></span></a> <span class="kr">end</span> </span><span id="L-801"><a href="#L-801"><span class="linenos" data-line="801"></span></a> <span class="kd">local</span> <span class="n">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-802"><a href="#L-802"><span class="linenos" data-line="802"></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-803"><a href="#L-803"><span class="linenos" data-line="803"></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-804"><a href="#L-804"><span class="linenos" data-line="804"></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-805"><a href="#L-805"><span class="linenos" data-line="805"></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-806"><a href="#L-806"><span class="linenos" data-line="806"></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-807"><a href="#L-807"><span class="linenos" data-line="807"></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-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 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-810"><a href="#L-810"><span class="linenos" data-line="810"></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-811"><a href="#L-811"><span class="linenos" data-line="811"></span></a> <span class="kr">end</span> </span><span id="L-812"><a href="#L-812"><span class="linenos" data-line="812"></span></a> <span class="kr">if</span> <span class="n">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-813"><a href="#L-813"><span class="linenos" data-line="813"></span></a> <span class="kr">return</span> </span><span id="L-814"><a href="#L-814"><span class="linenos" data-line="814"></span></a> <span class="kr">end</span> </span><span id="L-815"><a href="#L-815"><span class="linenos" data-line="815"></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-816"><a href="#L-816"><span class="linenos" data-line="816"></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-817"><a href="#L-817"><span class="linenos" data-line="817"></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-818"><a href="#L-818"><span class="linenos" data-line="818"></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-819"><a href="#L-819"><span class="linenos" data-line="819"></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-820"><a href="#L-820"><span class="linenos" data-line="820"></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-821"><a href="#L-821"><span class="linenos" data-line="821"></span></a> <span class="n">ret2</span> <span class="o">=</span> <span class="n">sitelink</span> <span class="ow">or</span> <span class="n">entity_id</span> </span><span id="L-822"><a href="#L-822"><span class="linenos" data-line="822"></span></a> <span class="kr">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-823"><a href="#L-823"><span class="linenos" data-line="823"></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-824"><a href="#L-824"><span class="linenos" data-line="824"></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-825"><a href="#L-825"><span class="linenos" data-line="825"></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-826"><a href="#L-826"><span class="linenos" data-line="826"></span></a> <span class="kr">else</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">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-828"><a href="#L-828"><span class="linenos" data-line="828"></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-829"><a href="#L-829"><span class="linenos" data-line="829"></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-830"><a href="#L-830"><span class="linenos" data-line="830"></span></a> <span class="kr">end</span> </span><span id="L-831"><a href="#L-831"><span class="linenos" data-line="831"></span></a> <span class="c1">-- only first of a list, reset formatting for next ones</span> </span><span id="L-832"><a href="#L-832"><span class="linenos" data-line="832"></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-833"><a href="#L-833"><span class="linenos" data-line="833"></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-834"><a href="#L-834"><span class="linenos" data-line="834"></span></a> <span class="kr">else</span> </span><span id="L-835"><a href="#L-835"><span class="linenos" data-line="835"></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-836"><a href="#L-836"><span class="linenos" data-line="836"></span></a> <span class="kr">end</span> </span><span id="L-837"><a href="#L-837"><span class="linenos" data-line="837"></span></a> <span class="kr">end</span> </span><span id="L-838"><a href="#L-838"><span class="linenos" data-line="838"></span></a> </span><span id="L-839"><a href="#L-839"><span class="linenos" data-line="839"></span></a> <span class="kr">if</span> <span class="n">sitelink</span> <span class="kr">then</span> </span><span id="L-840"><a href="#L-840"><span class="linenos" data-line="840"></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-841"><a href="#L-841"><span class="linenos" data-line="841"></span></a> <span class="n">ret2</span> <span class="o">=</span> <span class="n">labelcase</span> </span><span id="L-842"><a href="#L-842"><span class="linenos" data-line="842"></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-843"><a href="#L-843"><span class="linenos" data-line="843"></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-844"><a href="#L-844"><span class="linenos" data-line="844"></span></a> <span class="n">ret2</span> <span class="o">=</span> <span class="n">labelcase</span> </span><span id="L-845"><a href="#L-845"><span class="linenos" data-line="845"></span></a> <span class="kr">else</span> </span><span id="L-846"><a href="#L-846"><span class="linenos" data-line="846"></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 style="color:#5f9cbb;">'</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><span id="L-847"><a href="#L-847"><span class="linenos" data-line="847"></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-848"><a href="#L-848"><span class="linenos" data-line="848"></span></a> <span class="kr">end</span> </span><span id="L-849"><a href="#L-849"><span class="linenos" data-line="849"></span></a> <span class="kr">end</span> </span><span id="L-850"><a href="#L-850"><span class="linenos" data-line="850"></span></a> </span><span id="L-851"><a href="#L-851"><span class="linenos" data-line="851"></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-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="c1">-- format data type wikibase-lexeme</span> </span><span id="L-855"><a href="#L-855"><span class="linenos" data-line="855"></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-856"><a href="#L-856"><span class="linenos" data-line="856"></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-857"><a href="#L-857"><span class="linenos" data-line="857"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">formatting</span> <span class="o">==</span> <span class="s1">'raw'</span> <span class="kr">then</span> </span><span id="L-858"><a href="#L-858"><span class="linenos" data-line="858"></span></a> <span class="kr">return</span> <span class="n">entity_id</span><span class="p">,</span> <span class="n">entity_id</span> </span><span id="L-859"><a href="#L-859"><span class="linenos" data-line="859"></span></a> <span class="kr">end</span> </span><span id="L-860"><a href="#L-860"><span class="linenos" data-line="860"></span></a> <span class="kd">local</span> <span class="n">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-861"><a href="#L-861"><span class="linenos" data-line="861"></span></a> <span class="kr">if</span> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">==</span> <span class="s1">'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-862"><a href="#L-862"><span class="linenos" data-line="862"></span></a> <span class="kr">return</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="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 style="color:#5f9cbb;">'</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><span id="L-865"><a href="#L-865"><span class="linenos" data-line="865"></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-866"><a href="#L-866"><span class="linenos" data-line="866"></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-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 class="kr">return</span> <span class="n">ret</span><span class="p">,</span> <span class="n">entity_id</span> </span><span id="L-869"><a href="#L-869"><span class="linenos" data-line="869"></span></a><span class="kr">end</span> </span><span id="L-870"><a href="#L-870"><span class="linenos" data-line="870"></span></a> </span><span id="L-871"><a href="#L-871"><span class="linenos" data-line="871"></span></a><span class="c1">-- format data type monolingualtext</span> </span><span id="L-872"><a href="#L-872"><span class="linenos" data-line="872"></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-873"><a href="#L-873"><span class="linenos" data-line="873"></span></a> <span class="c1">-- data fields: language [string], text [string]</span> </span><span id="L-874"><a href="#L-874"><span class="linenos" data-line="874"></span></a> </span><span id="L-875"><a href="#L-875"><span class="linenos" data-line="875"></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-876"><a href="#L-876"><span class="linenos" data-line="876"></span></a> <span class="kr">return</span> </span><span id="L-877"><a href="#L-877"><span class="linenos" data-line="877"></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-878"><a href="#L-878"><span class="linenos" data-line="878"></span></a> <span class="kr">return</span> </span><span id="L-879"><a href="#L-879"><span class="linenos" data-line="879"></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-880"><a href="#L-880"><span class="linenos" data-line="880"></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-881"><a href="#L-881"><span class="linenos" data-line="881"></span></a> <span class="kr">end</span> </span><span id="L-882"><a href="#L-882"><span class="linenos" data-line="882"></span></a> <span class="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-883"><a href="#L-883"><span class="linenos" data-line="883"></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-884"><a href="#L-884"><span class="linenos" data-line="884"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="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-885"><a href="#L-885"><span class="linenos" data-line="885"></span></a> <span class="kr">end</span> </span><span id="L-886"><a href="#L-886"><span class="linenos" data-line="886"></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-887"><a href="#L-887"><span class="linenos" data-line="887"></span></a> <span class="c1">-- output format defined with $text, $language</span> </span><span id="L-888"><a href="#L-888"><span class="linenos" data-line="888"></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-889"><a href="#L-889"><span class="linenos" data-line="889"></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-890"><a href="#L-890"><span class="linenos" data-line="890"></span></a> <span class="kr">end</span> </span><span id="L-891"><a href="#L-891"><span class="linenos" data-line="891"></span></a> <span class="kr">return</span> <span class="n">result</span> </span><span id="L-892"><a href="#L-892"><span class="linenos" data-line="892"></span></a><span class="kr">end</span> </span><span id="L-893"><a href="#L-893"><span class="linenos" data-line="893"></span></a> </span><span id="L-894"><a href="#L-894"><span class="linenos" data-line="894"></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-895"><a href="#L-895"><span class="linenos" data-line="895"></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-896"><a href="#L-896"><span class="linenos" data-line="896"></span></a> <span class="c1">-- data value string</span> </span><span id="L-897"><a href="#L-897"><span class="linenos" data-line="897"></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-898"><a href="#L-898"><span class="linenos" data-line="898"></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-899"><a href="#L-899"><span class="linenos" data-line="899"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">"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-900"><a href="#L-900"><span class="linenos" data-line="900"></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-901"><a href="#L-901"><span class="linenos" data-line="901"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">"tabular-data"</span> <span class="kr">then</span> </span><span id="L-902"><a href="#L-902"><span class="linenos" data-line="902"></span></a> <span class="kr">return</span> <span class="n">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-903"><a href="#L-903"><span class="linenos" data-line="903"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">"url"</span> <span class="kr">then</span> </span><span id="L-904"><a href="#L-904"><span class="linenos" data-line="904"></span></a> <span class="kr">return</span> <span class="n">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-905"><a href="#L-905"><span class="linenos" data-line="905"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">"external-id"</span> <span class="kr">then</span> </span><span id="L-906"><a href="#L-906"><span class="linenos" data-line="906"></span></a> <span class="kr">return</span> <span class="n">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-907"><a href="#L-907"><span class="linenos" data-line="907"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s1">'math'</span> <span class="kr">then</span> </span><span id="L-908"><a href="#L-908"><span class="linenos" data-line="908"></span></a> <span class="kr">return</span> <span class="n">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-909"><a href="#L-909"><span class="linenos" data-line="909"></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-910"><a href="#L-910"><span class="linenos" data-line="910"></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-911"><a href="#L-911"><span class="linenos" data-line="911"></span></a> <span class="c1">-- data types other than string value</span> </span><span id="L-912"><a href="#L-912"><span class="linenos" data-line="912"></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-913"><a href="#L-913"><span class="linenos" data-line="913"></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-914"><a href="#L-914"><span class="linenos" data-line="914"></span></a> <span class="kr">return</span> </span><span id="L-915"><a href="#L-915"><span class="linenos" data-line="915"></span></a> <span class="kr">end</span> </span><span id="L-916"><a href="#L-916"><span class="linenos" data-line="916"></span></a> <span class="kr">return</span> <span class="n">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-917"><a href="#L-917"><span class="linenos" data-line="917"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s1">'wikibase-lexeme'</span> <span class="kr">then</span> </span><span id="L-918"><a href="#L-918"><span class="linenos" data-line="918"></span></a> <span class="kr">return</span> <span class="n">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-919"><a href="#L-919"><span class="linenos" data-line="919"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s1">'monolingualtext'</span> <span class="kr">then</span> </span><span id="L-920"><a href="#L-920"><span class="linenos" data-line="920"></span></a> <span class="kr">return</span> <span class="n">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-921"><a href="#L-921"><span class="linenos" data-line="921"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">"globe-coordinate"</span> <span class="kr">then</span> </span><span id="L-922"><a href="#L-922"><span class="linenos" data-line="922"></span></a> <span class="kr">return</span> <span class="n">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-923"><a href="#L-923"><span class="linenos" data-line="923"></span></a> <span class="kr">elseif</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> <span class="o">==</span> <span class="s2">"quantity"</span> <span class="kr">then</span> </span><span id="L-924"><a href="#L-924"><span class="linenos" data-line="924"></span></a> <span class="kr">return</span> <span class="n">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-925"><a href="#L-925"><span class="linenos" data-line="925"></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-926"><a href="#L-926"><span class="linenos" data-line="926"></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-927"><a href="#L-927"><span class="linenos" data-line="927"></span></a> <span class="kr">end</span> </span><span id="L-928"><a href="#L-928"><span class="linenos" data-line="928"></span></a> <span class="kr">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-929"><a href="#L-929"><span class="linenos" data-line="929"></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-930"><a href="#L-930"><span class="linenos" data-line="930"></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-931"><a href="#L-931"><span class="linenos" data-line="931"></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-932"><a href="#L-932"><span class="linenos" data-line="932"></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 class="kr">return</span> <span class="kr">end</span> </span><span id="L-933"><a href="#L-933"><span class="linenos" data-line="933"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">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-934"><a href="#L-934"><span class="linenos" data-line="934"></span></a> <span class="kr">end</span> </span><span id="L-935"><a href="#L-935"><span class="linenos" data-line="935"></span></a> <span 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-936"><a href="#L-936"><span class="linenos" data-line="936"></span></a><span class="kr">end</span> </span><span id="L-937"><a href="#L-937"><span class="linenos" data-line="937"></span></a> </span><span id="L-938"><a href="#L-938"><span class="linenos" data-line="938"></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-939"><a href="#L-939"><span class="linenos" data-line="939"></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-940"><a href="#L-940"><span class="linenos" data-line="940"></span></a><span class="kr">end</span> </span><span id="L-941"><a href="#L-941"><span class="linenos" data-line="941"></span></a> </span><span id="L-942"><a href="#L-942"><span class="linenos" data-line="942"></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-943"><a href="#L-943"><span class="linenos" data-line="943"></span></a> <span class="c1">-- a "snak" is Wikidata terminology for a typed key/value pair</span> </span><span id="L-944"><a href="#L-944"><span class="linenos" data-line="944"></span></a> <span class="c1">-- a claim consists of a main snak holding the main information of this claim,</span> </span><span id="L-945"><a href="#L-945"><span class="linenos" data-line="945"></span></a> <span class="c1">-- as well as a list of attribute snaks and a list of references snaks</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">qualifierId</span> <span class="kr">then</span> </span><span id="L-947"><a href="#L-947"><span class="linenos" data-line="947"></span></a> <span class="c1">-- search the attribute snak with the given qualifier as key</span> </span><span id="L-948"><a href="#L-948"><span class="linenos" data-line="948"></span></a> <span class="kr">if</span> <span class="n">claim</span><span class="p">.</span><span class="n">qualifiers</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="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-950"><a href="#L-950"><span class="linenos" data-line="950"></span></a> <span class="kr">if</span> <span class="n">qualifier</span> <span class="kr">then</span> </span><span id="L-951"><a href="#L-951"><span class="linenos" data-line="951"></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-952"><a href="#L-952"><span class="linenos" data-line="952"></span></a> <span class="c1">-- iterate over monolingualtext qualifiers to get local language</span> </span><span id="L-953"><a href="#L-953"><span class="linenos" data-line="953"></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-954"><a href="#L-954"><span class="linenos" data-line="954"></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-955"><a href="#L-955"><span class="linenos" data-line="955"></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-956"><a href="#L-956"><span class="linenos" data-line="956"></span></a> <span class="kr">end</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 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-959"><a href="#L-959"><span class="linenos" data-line="959"></span></a> <span class="kr">return</span> <span class="n">qualifier</span> </span><span id="L-960"><a href="#L-960"><span class="linenos" data-line="960"></span></a> <span class="kr">else</span> </span><span id="L-961"><a href="#L-961"><span class="linenos" data-line="961"></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-962"><a href="#L-962"><span class="linenos" data-line="962"></span></a> <span class="kr">end</span> </span><span id="L-963"><a href="#L-963"><span class="linenos" data-line="963"></span></a> <span class="kr">end</span> </span><span id="L-964"><a href="#L-964"><span class="linenos" data-line="964"></span></a> <span class="kr">end</span> </span><span id="L-965"><a href="#L-965"><span class="linenos" data-line="965"></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-966"><a href="#L-966"><span class="linenos" data-line="966"></span></a> <span class="kr">else</span> </span><span id="L-967"><a href="#L-967"><span class="linenos" data-line="967"></span></a> <span class="c1">-- otherwise return the main snak</span> </span><span id="L-968"><a href="#L-968"><span class="linenos" data-line="968"></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-969"><a href="#L-969"><span class="linenos" data-line="969"></span></a> <span class="kr">end</span> </span><span id="L-970"><a href="#L-970"><span class="linenos" data-line="970"></span></a><span class="kr">end</span> </span><span id="L-971"><a href="#L-971"><span class="linenos" data-line="971"></span></a> </span><span id="L-972"><a href="#L-972"><span class="linenos" data-line="972"></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-973"><a href="#L-973"><span class="linenos" data-line="973"></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-974"><a href="#L-974"><span class="linenos" data-line="974"></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-975"><a href="#L-975"><span class="linenos" data-line="975"></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-976"><a href="#L-976"><span class="linenos" data-line="976"></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-977"><a href="#L-977"><span class="linenos" data-line="977"></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-978"><a href="#L-978"><span class="linenos" data-line="978"></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-979"><a href="#L-979"><span class="linenos" data-line="979"></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-980"><a href="#L-980"><span class="linenos" data-line="980"></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-981"><a href="#L-981"><span class="linenos" data-line="981"></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-982"><a href="#L-982"><span class="linenos" data-line="982"></span></a> <span class="kr">end</span> </span><span id="L-983"><a href="#L-983"><span class="linenos" data-line="983"></span></a> <span class="kr">return</span> <span class="n">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-984"><a href="#L-984"><span class="linenos" data-line="984"></span></a> <span class="kr">else</span> <span class="c1">-- a property or a qualifier</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">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-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">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-990"><a href="#L-990"><span class="linenos" data-line="990"></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-991"><a href="#L-991"><span class="linenos" data-line="991"></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-992"><a href="#L-992"><span class="linenos" data-line="992"></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-993"><a href="#L-993"><span class="linenos" data-line="993"></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-994"><a href="#L-994"><span class="linenos" data-line="994"></span></a> <span class="n">parent_raw</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">getValueOfClaim</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="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-995"><a href="#L-995"><span class="linenos" data-line="995"></span></a> <span class="kr">else</span> </span><span id="L-996"><a href="#L-996"><span class="linenos" data-line="996"></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-997"><a href="#L-997"><span class="linenos" data-line="997"></span></a> <span class="kr">end</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="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-999"><a href="#L-999"><span class="linenos" data-line="999"></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-1000"><a href="#L-1000"><span class="linenos" data-line="1000"></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-1001"><a href="#L-1001"><span class="linenos" data-line="1001"></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-1002"><a href="#L-1002"><span class="linenos" data-line="1002"></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-1003"><a href="#L-1003"><span class="linenos" data-line="1003"></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-1004"><a href="#L-1004"><span class="linenos" data-line="1004"></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-1005"><a href="#L-1005"><span class="linenos" data-line="1005"></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-1006"><a href="#L-1006"><span class="linenos" data-line="1006"></span></a> <span class="kr">end</span> </span><span id="L-1007"><a href="#L-1007"><span class="linenos" data-line="1007"></span></a> <span class="kr">end</span> </span><span id="L-1008"><a href="#L-1008"><span class="linenos" data-line="1008"></span></a> <span class="kr">end</span> </span><span id="L-1009"><a href="#L-1009"><span class="linenos" data-line="1009"></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-1010"><a href="#L-1010"><span class="linenos" data-line="1010"></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-1011"><a href="#L-1011"><span class="linenos" data-line="1011"></span></a> <span class="kr">end</span> </span><span id="L-1012"><a href="#L-1012"><span class="linenos" data-line="1012"></span></a> <span 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-1013"><a href="#L-1013"><span class="linenos" data-line="1013"></span></a><span class="kr">end</span> </span><span id="L-1014"><a href="#L-1014"><span class="linenos" data-line="1014"></span></a> </span><span id="L-1015"><a href="#L-1015"><span class="linenos" data-line="1015"></span></a><span class="c1">-- see d:Help:Sources</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="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-1017"><a href="#L-1017"><span class="linenos" data-line="1017"></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-1018"><a href="#L-1018"><span class="linenos" data-line="1018"></span></a> <span class="kr">return</span> <span class="s1">''</span><span class="p">,</span> <span class="kc">false</span> </span><span id="L-1019"><a href="#L-1019"><span class="linenos" data-line="1019"></span></a> <span class="kr">end</span> </span><span id="L-1020"><a href="#L-1020"><span class="linenos" data-line="1020"></span></a> <span class="kd">local</span> <span class="n">lang</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">lang</span> </span><span id="L-1021"><a href="#L-1021"><span class="linenos" data-line="1021"></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-1022"><a href="#L-1022"><span class="linenos" data-line="1022"></span></a> <span class="kd">local</span> <span class="n">notproperref</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-1023"><a href="#L-1023"><span class="linenos" data-line="1023"></span></a> <span class="p">[</span><span class="s2">"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-1024"><a href="#L-1024"><span class="linenos" data-line="1024"></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-1025"><a href="#L-1025"><span class="linenos" data-line="1025"></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-1026"><a href="#L-1026"><span class="linenos" data-line="1026"></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-1027"><a href="#L-1027"><span class="linenos" data-line="1027"></span></a> <span class="p">}</span> </span><span id="L-1028"><a href="#L-1028"><span class="linenos" data-line="1028"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1029"><a href="#L-1029"><span class="linenos" data-line="1029"></span></a> <span class="c1">-- traverse through all references</span> </span><span id="L-1030"><a href="#L-1030"><span class="linenos" data-line="1030"></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-1031"><a href="#L-1031"><span class="linenos" data-line="1031"></span></a> <span class="kd">local</span> <span class="n">refparts</span> </span><span id="L-1032"><a href="#L-1032"><span class="linenos" data-line="1032"></span></a> <span class="kd">local</span> <span class="n">refs</span> <span class="o">=</span> <span class="p">{}</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="n">validref</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1034"><a href="#L-1034"><span class="linenos" data-line="1034"></span></a> <span class="kd">local</span> <span class="n">ref_id</span> </span><span id="L-1035"><a href="#L-1035"><span class="linenos" data-line="1035"></span></a> <span class="c1">-- traverse through all parts of the current reference</span> </span><span id="L-1036"><a href="#L-1036"><span class="linenos" data-line="1036"></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-1037"><a href="#L-1037"><span class="linenos" data-line="1037"></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-1038"><a href="#L-1038"><span class="linenos" data-line="1038"></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-1039"><a href="#L-1039"><span class="linenos" data-line="1039"></span></a> <span class="n">validref</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1040"><a href="#L-1040"><span class="linenos" data-line="1040"></span></a> <span class="kr">break</span> </span><span id="L-1041"><a href="#L-1041"><span class="linenos" data-line="1041"></span></a> <span class="kr">end</span> </span><span id="L-1042"><a href="#L-1042"><span class="linenos" data-line="1042"></span></a> <span class="kr">end</span> </span><span id="L-1043"><a href="#L-1043"><span class="linenos" data-line="1043"></span></a> <span class="kr">if</span> <span class="n">validref</span> <span class="kr">then</span> </span><span id="L-1044"><a href="#L-1044"><span class="linenos" data-line="1044"></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-1045"><a href="#L-1045"><span class="linenos" data-line="1045"></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-1046"><a href="#L-1046"><span class="linenos" data-line="1046"></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-1047"><a href="#L-1047"><span class="linenos" data-line="1047"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="n">refparts</span> <span class="ow">or</span> <span class="s1">''</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-1048"><a href="#L-1048"><span class="linenos" data-line="1048"></span></a> <span class="kr">else</span> </span><span id="L-1049"><a href="#L-1049"><span class="linenos" data-line="1049"></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-1050"><a href="#L-1050"><span class="linenos" data-line="1050"></span></a> <span class="kr">end</span> </span><span id="L-1051"><a href="#L-1051"><span class="linenos" data-line="1051"></span></a> <span class="kr">end</span> </span><span id="L-1052"><a href="#L-1052"><span class="linenos" data-line="1052"></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-1053"><a href="#L-1053"><span class="linenos" data-line="1053"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1054"><a href="#L-1054"><span class="linenos" data-line="1054"></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-1055"><a href="#L-1055"><span class="linenos" data-line="1055"></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-1056"><a href="#L-1056"><span class="linenos" data-line="1056"></span></a> <span class="kr">end</span> </span><span id="L-1057"><a href="#L-1057"><span class="linenos" data-line="1057"></span></a> <span class="kr">end</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><span id="L-1060"><a href="#L-1060"><span class="linenos" data-line="1060"></span></a> <span class="c1">-- fill missing values with parent item</span> </span><span id="L-1061"><a href="#L-1061"><span class="linenos" data-line="1061"></span></a> <span class="kr">if</span> <span class="n">ref_id</span> <span class="kr">then</span> </span><span id="L-1062"><a href="#L-1062"><span class="linenos" data-line="1062"></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-1063"><a href="#L-1063"><span class="linenos" data-line="1063"></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-1064"><a href="#L-1064"><span class="linenos" data-line="1064"></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-1065"><a href="#L-1065"><span class="linenos" data-line="1065"></span></a> <span class="kr">end</span> </span><span id="L-1066"><a href="#L-1066"><span class="linenos" data-line="1066"></span></a> </span><span id="L-1067"><a href="#L-1067"><span class="linenos" data-line="1067"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'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-1068"><a href="#L-1068"><span class="linenos" data-line="1068"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'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-1069"><a href="#L-1069"><span class="linenos" data-line="1069"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'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-1070"><a href="#L-1070"><span class="linenos" data-line="1070"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'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-1071"><a href="#L-1071"><span class="linenos" data-line="1071"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'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-1072"><a href="#L-1072"><span class="linenos" data-line="1072"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'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-1073"><a href="#L-1073"><span class="linenos" data-line="1073"></span></a> <span class="n">refs</span><span class="p">[</span><span class="s1">'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-1074"><a href="#L-1074"><span class="linenos" data-line="1074"></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-1075"><a href="#L-1075"><span class="linenos" data-line="1075"></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-1076"><a href="#L-1076"><span class="linenos" data-line="1076"></span></a> <span class="kr">end</span> </span><span id="L-1077"><a href="#L-1077"><span class="linenos" data-line="1077"></span></a> </span><span id="L-1078"><a href="#L-1078"><span class="linenos" data-line="1078"></span></a> <span class="c1">-- get title of local templates for citing references</span> </span><span id="L-1079"><a href="#L-1079"><span class="linenos" data-line="1079"></span></a> <span class="kd">local</span> <span class="n">template_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-1080"><a href="#L-1080"><span class="linenos" data-line="1080"></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-1081"><a href="#L-1081"><span class="linenos" data-line="1081"></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-1082"><a href="#L-1082"><span class="linenos" data-line="1082"></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-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="kd">local</span> <span class="n">citeParams</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1085"><a href="#L-1085"><span class="linenos" data-line="1085"></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-1086"><a href="#L-1086"><span class="linenos" data-line="1086"></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-1087"><a href="#L-1087"><span class="linenos" data-line="1087"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'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-1088"><a href="#L-1088"><span class="linenos" data-line="1088"></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-1089"><a href="#L-1089"><span class="linenos" data-line="1089"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'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-1090"><a href="#L-1090"><span class="linenos" data-line="1090"></span></a> <span class="kr">else</span> </span><span id="L-1091"><a href="#L-1091"><span class="linenos" data-line="1091"></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-1092"><a href="#L-1092"><span class="linenos" data-line="1092"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'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-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 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-1095"><a href="#L-1095"><span class="linenos" data-line="1095"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'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-1096"><a href="#L-1096"><span class="linenos" data-line="1096"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'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-1097"><a href="#L-1097"><span class="linenos" data-line="1097"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'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-1098"><a href="#L-1098"><span class="linenos" data-line="1098"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'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-1099"><a href="#L-1099"><span class="linenos" data-line="1099"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'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-1100"><a href="#L-1100"><span class="linenos" data-line="1100"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'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-1101"><a href="#L-1101"><span class="linenos" data-line="1101"></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-1102"><a href="#L-1102"><span class="linenos" data-line="1102"></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-1103"><a href="#L-1103"><span class="linenos" data-line="1103"></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-1104"><a href="#L-1104"><span class="linenos" data-line="1104"></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-1105"><a href="#L-1105"><span class="linenos" data-line="1105"></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-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">'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-1107"><a href="#L-1107"><span class="linenos" data-line="1107"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'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-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">'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-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">'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-1110"><a href="#L-1110"><span class="linenos" data-line="1110"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'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-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">'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-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">'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-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">'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-1115"><a href="#L-1115"><span class="linenos" data-line="1115"></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-1116"><a href="#L-1116"><span class="linenos" data-line="1116"></span></a> <span class="kr">elseif</span> <span class="n">validref</span> <span class="kr">then</span> </span><span id="L-1117"><a href="#L-1117"><span class="linenos" data-line="1117"></span></a> <span class="c1">-- raw ouput</span> </span><span id="L-1118"><a href="#L-1118"><span class="linenos" data-line="1118"></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-1119"><a href="#L-1119"><span class="linenos" data-line="1119"></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-1120"><a href="#L-1120"><span class="linenos" data-line="1120"></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-1121"><a href="#L-1121"><span class="linenos" data-line="1121"></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-1122"><a href="#L-1122"><span class="linenos" data-line="1122"></span></a> <span class="kr">end</span> </span><span id="L-1123"><a href="#L-1123"><span class="linenos" data-line="1123"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-1124"><a href="#L-1124"><span class="linenos" data-line="1124"></span></a> <span class="kr">end</span> </span><span id="L-1125"><a href="#L-1125"><span class="linenos" data-line="1125"></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-1126"><a href="#L-1126"><span class="linenos" data-line="1126"></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-1127"><a href="#L-1127"><span class="linenos" data-line="1127"></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-1128"><a href="#L-1128"><span class="linenos" data-line="1128"></span></a> <span class="kr">end</span> </span><span id="L-1129"><a href="#L-1129"><span class="linenos" data-line="1129"></span></a> <span class="kr">end</span> </span><span id="L-1130"><a href="#L-1130"><span class="linenos" data-line="1130"></span></a> <span class="kd">local</span> <span class="n">italics</span> <span class="o">=</span> <span class="s2">"''"</span> </span><span id="L-1131"><a href="#L-1131"><span class="linenos" data-line="1131"></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-1132"><a href="#L-1132"><span class="linenos" data-line="1132"></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-1133"><a href="#L-1133"><span class="linenos" data-line="1133"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="n">refparts</span> <span class="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-1134"><a href="#L-1134"><span class="linenos" data-line="1134"></span></a> <span class="n">refparts</span> <span class="o">=</span> <span class="n">refparts</span> <span class="o">..</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">getLabelByLangs</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">lang</span><span class="p">),</span> <span class="s2">"^%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-1135"><a href="#L-1135"><span class="linenos" data-line="1135"></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-1136"><a href="#L-1136"><span class="linenos" data-line="1136"></span></a> <span class="n">italics</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-1137"><a href="#L-1137"><span class="linenos" data-line="1137"></span></a> <span class="kr">end</span> </span><span id="L-1138"><a href="#L-1138"><span class="linenos" data-line="1138"></span></a> <span 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><span id="L-1141"><a href="#L-1141"><span class="linenos" data-line="1141"></span></a> <span class="kr">if</span> <span class="n">refparts</span> <span class="kr">then</span> </span><span id="L-1142"><a href="#L-1142"><span class="linenos" data-line="1142"></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-1143"><a href="#L-1143"><span class="linenos" data-line="1143"></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-1144"><a href="#L-1144"><span class="linenos" data-line="1144"></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-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><span id="L-1148"><a href="#L-1148"><span class="linenos" data-line="1148"></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-1149"><a href="#L-1149"><span class="linenos" data-line="1149"></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-1150"><a href="#L-1150"><span class="linenos" data-line="1150"></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-1151"><a href="#L-1151"><span class="linenos" data-line="1151"></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-1152"><a href="#L-1152"><span class="linenos" data-line="1152"></span></a> <span class="kr">end</span> </span><span id="L-1153"><a href="#L-1153"><span class="linenos" data-line="1153"></span></a> <span class="kr">return</span> <span class="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-1154"><a href="#L-1154"><span class="linenos" data-line="1154"></span></a> <span class="kr">else</span> </span><span id="L-1155"><a href="#L-1155"><span class="linenos" data-line="1155"></span></a> <span class="kr">return</span> <span class="s1">''</span><span class="p">,</span> <span class="kc">true</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 class="kr">end</span> </span><span id="L-1158"><a href="#L-1158"><span class="linenos" data-line="1158"></span></a> <span class="kr">return</span> <span class="s1">''</span><span class="p">,</span> <span class="kc">false</span> </span><span id="L-1159"><a href="#L-1159"><span class="linenos" data-line="1159"></span></a><span class="kr">end</span> </span><span id="L-1160"><a href="#L-1160"><span class="linenos" data-line="1160"></span></a> </span><span id="L-1161"><a href="#L-1161"><span class="linenos" data-line="1161"></span></a><span class="c1">-- Set whitelist or blacklist values</span> </span><span id="L-1162"><a href="#L-1162"><span class="linenos" data-line="1162"></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-1163"><a href="#L-1163"><span class="linenos" data-line="1163"></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-1164"><a href="#L-1164"><span class="linenos" data-line="1164"></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-1165"><a href="#L-1165"><span class="linenos" data-line="1165"></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-1166"><a href="#L-1166"><span class="linenos" data-line="1166"></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-1167"><a href="#L-1167"><span class="linenos" data-line="1167"></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-1168"><a href="#L-1168"><span class="linenos" data-line="1168"></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-1169"><a href="#L-1169"><span class="linenos" data-line="1169"></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-1170"><a href="#L-1170"><span class="linenos" data-line="1170"></span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="s1">'[^%p%s]+'</span> </span><span id="L-1171"><a href="#L-1171"><span class="linenos" data-line="1171"></span></a> <span class="kr">end</span> </span><span id="L-1172"><a href="#L-1172"><span class="linenos" data-line="1172"></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-1173"><a href="#L-1173"><span class="linenos" data-line="1173"></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-1174"><a href="#L-1174"><span class="linenos" data-line="1174"></span></a> <span class="kr">end</span> </span><span id="L-1175"><a href="#L-1175"><span class="linenos" data-line="1175"></span></a> <span class="kr">end</span> </span><span id="L-1176"><a href="#L-1176"><span class="linenos" data-line="1176"></span></a> <span class="kr">end</span> </span><span id="L-1177"><a href="#L-1177"><span class="linenos" data-line="1177"></span></a> <span class="kr">end</span> </span><span id="L-1178"><a href="#L-1178"><span class="linenos" data-line="1178"></span></a> <span 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-1179"><a href="#L-1179"><span class="linenos" data-line="1179"></span></a><span class="kr">end</span> </span><span id="L-1180"><a href="#L-1180"><span class="linenos" data-line="1180"></span></a> </span><span id="L-1181"><a href="#L-1181"><span class="linenos" data-line="1181"></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-1182"><a href="#L-1182"><span class="linenos" data-line="1182"></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-1183"><a href="#L-1183"><span class="linenos" data-line="1183"></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-1184"><a href="#L-1184"><span class="linenos" data-line="1184"></span></a> <span class="n">column_params</span><span class="p">.</span><span class="n">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-1185"><a href="#L-1185"><span class="linenos" data-line="1185"></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-1186"><a href="#L-1186"><span class="linenos" data-line="1186"></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-1187"><a href="#L-1187"><span class="linenos" data-line="1187"></span></a> <span class="kr">end</span> </span><span id="L-1188"><a href="#L-1188"><span class="linenos" data-line="1188"></span></a> <span class="kr">return</span> <span class="n">column_params</span> </span><span id="L-1189"><a href="#L-1189"><span class="linenos" data-line="1189"></span></a><span class="kr">end</span> </span><span id="L-1190"><a href="#L-1190"><span class="linenos" data-line="1190"></span></a> </span><span id="L-1191"><a href="#L-1191"><span class="linenos" data-line="1191"></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-1192"><a href="#L-1192"><span class="linenos" data-line="1192"></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-1193"><a href="#L-1193"><span class="linenos" data-line="1193"></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-1194"><a href="#L-1194"><span class="linenos" data-line="1194"></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-1195"><a href="#L-1195"><span class="linenos" data-line="1195"></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-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 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-1198"><a href="#L-1198"><span class="linenos" data-line="1198"></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-1199"><a href="#L-1199"><span class="linenos" data-line="1199"></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-1200"><a href="#L-1200"><span class="linenos" data-line="1200"></span></a> <span class="kr">end</span> </span><span id="L-1201"><a href="#L-1201"><span class="linenos" data-line="1201"></span></a> <span class="kr">else</span> </span><span id="L-1202"><a href="#L-1202"><span class="linenos" data-line="1202"></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-1203"><a href="#L-1203"><span class="linenos" data-line="1203"></span></a> <span class="kr">end</span> </span><span id="L-1204"><a href="#L-1204"><span class="linenos" data-line="1204"></span></a> <span class="kr">return</span> <span class="n">id</span> </span><span id="L-1205"><a href="#L-1205"><span class="linenos" data-line="1205"></span></a><span class="kr">end</span> </span><span id="L-1206"><a href="#L-1206"><span class="linenos" data-line="1206"></span></a> </span><span id="L-1207"><a href="#L-1207"><span class="linenos" data-line="1207"></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-1208"><a href="#L-1208"><span class="linenos" data-line="1208"></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-1209"><a href="#L-1209"><span class="linenos" data-line="1209"></span></a> <span class="kr">elseif</span> <span class="n">value</span> <span class="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-1210"><a href="#L-1210"><span class="linenos" data-line="1210"></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-1211"><a href="#L-1211"><span class="linenos" data-line="1211"></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-1212"><a href="#L-1212"><span class="linenos" data-line="1212"></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-1213"><a href="#L-1213"><span class="linenos" data-line="1213"></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-1214"><a href="#L-1214"><span class="linenos" data-line="1214"></span></a> <span class="kr">else</span> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-1215"><a href="#L-1215"><span class="linenos" data-line="1215"></span></a> <span class="kr">end</span> </span><span id="L-1216"><a href="#L-1216"><span class="linenos" data-line="1216"></span></a><span class="kr">end</span> </span><span id="L-1217"><a href="#L-1217"><span class="linenos" data-line="1217"></span></a> </span><span id="L-1218"><a href="#L-1218"><span class="linenos" data-line="1218"></span></a><span class="c1">-- Main function claim ---------------------------------------------</span> </span><span id="L-1219"><a href="#L-1219"><span class="linenos" data-line="1219"></span></a><span class="c1">-- on debug console use: =p.claim{item="Q...", property="P...", ...}</span> </span><span id="L-1220"><a href="#L-1220"><span class="linenos" data-line="1220"></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-1221"><a href="#L-1221"><span class="linenos" data-line="1221"></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-1222"><a href="#L-1222"><span class="linenos" data-line="1222"></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-1223"><a href="#L-1223"><span class="linenos" data-line="1223"></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-1224"><a href="#L-1224"><span class="linenos" data-line="1224"></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-1225"><a href="#L-1225"><span class="linenos" data-line="1225"></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-1226"><a href="#L-1226"><span class="linenos" data-line="1226"></span></a> <span class="kr">end</span> </span><span id="L-1227"><a href="#L-1227"><span class="linenos" data-line="1227"></span></a> <span class="c1">--If a value is already set, use it</span> </span><span id="L-1228"><a href="#L-1228"><span class="linenos" data-line="1228"></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-1229"><a href="#L-1229"><span class="linenos" data-line="1229"></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-1230"><a href="#L-1230"><span class="linenos" data-line="1230"></span></a> <span class="kr">return</span> </span><span id="L-1231"><a href="#L-1231"><span class="linenos" data-line="1231"></span></a> <span class="kr">else</span> </span><span id="L-1232"><a href="#L-1232"><span class="linenos" data-line="1232"></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-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 class="kr">end</span> </span><span id="L-1235"><a href="#L-1235"><span class="linenos" data-line="1235"></span></a> </span><span id="L-1236"><a href="#L-1236"><span class="linenos" data-line="1236"></span></a> <span class="c1">-- arguments</span> </span><span id="L-1237"><a href="#L-1237"><span class="linenos" data-line="1237"></span></a> <span class="kd">local</span> <span class="n">parameters</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1238"><a href="#L-1238"><span class="linenos" data-line="1238"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1239"><a href="#L-1239"><span class="linenos" data-line="1239"></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-1240"><a href="#L-1240"><span class="linenos" data-line="1240"></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-1241"><a href="#L-1241"><span class="linenos" data-line="1241"></span></a> <span class="kd">local</span> <span class="n">qualifierId</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1242"><a href="#L-1242"><span class="linenos" data-line="1242"></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-1243"><a href="#L-1243"><span class="linenos" data-line="1243"></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-1244"><a href="#L-1244"><span class="linenos" data-line="1244"></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-1245"><a href="#L-1245"><span class="linenos" data-line="1245"></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-1246"><a href="#L-1246"><span class="linenos" data-line="1246"></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-1247"><a href="#L-1247"><span class="linenos" data-line="1247"></span></a> <span class="kr">end</span> </span><span id="L-1248"><a href="#L-1248"><span class="linenos" data-line="1248"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1249"><a href="#L-1249"><span class="linenos" data-line="1249"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1250"><a href="#L-1250"><span class="linenos" data-line="1250"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1251"><a href="#L-1251"><span class="linenos" data-line="1251"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">case</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">case</span> </span><span id="L-1252"><a href="#L-1252"><span class="linenos" data-line="1252"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1253"><a href="#L-1253"><span class="linenos" data-line="1253"></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-1254"><a href="#L-1254"><span class="linenos" data-line="1254"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1255"><a href="#L-1255"><span class="linenos" data-line="1255"></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-1256"><a href="#L-1256"><span class="linenos" data-line="1256"></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-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">list</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1258"><a href="#L-1258"><span class="linenos" data-line="1258"></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-1259"><a href="#L-1259"><span class="linenos" data-line="1259"></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-1260"><a href="#L-1260"><span class="linenos" data-line="1260"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">list</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1261"><a href="#L-1261"><span class="linenos" data-line="1261"></span></a> <span class="kr">end</span> </span><span id="L-1262"><a href="#L-1262"><span class="linenos" data-line="1262"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1263"><a href="#L-1263"><span class="linenos" data-line="1263"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1264"><a href="#L-1264"><span class="linenos" data-line="1264"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-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">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-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">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-1267"><a href="#L-1267"><span class="linenos" data-line="1267"></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-1268"><a href="#L-1268"><span class="linenos" data-line="1268"></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-1269"><a href="#L-1269"><span class="linenos" data-line="1269"></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-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">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-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">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-1272"><a href="#L-1272"><span class="linenos" data-line="1272"></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-1273"><a href="#L-1273"><span class="linenos" data-line="1273"></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-1274"><a href="#L-1274"><span class="linenos" data-line="1274"></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-1275"><a href="#L-1275"><span class="linenos" data-line="1275"></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-1276"><a href="#L-1276"><span class="linenos" data-line="1276"></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-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">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-1278"><a href="#L-1278"><span class="linenos" data-line="1278"></span></a> <span class="kr">else</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">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-1280"><a href="#L-1280"><span class="linenos" data-line="1280"></span></a> <span class="kr">end</span> </span><span id="L-1281"><a href="#L-1281"><span class="linenos" data-line="1281"></span></a> </span><span id="L-1282"><a href="#L-1282"><span class="linenos" data-line="1282"></span></a> <span class="c1">-- fetch property</span> </span><span id="L-1283"><a href="#L-1283"><span class="linenos" data-line="1283"></span></a> <span class="kd">local</span> <span class="n">claims</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1284"><a href="#L-1284"><span class="linenos" data-line="1284"></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-1285"><a href="#L-1285"><span class="linenos" data-line="1285"></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-1286"><a href="#L-1286"><span class="linenos" data-line="1286"></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-1287"><a href="#L-1287"><span class="linenos" data-line="1287"></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-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">property</span> <span class="o">=</span> <span class="n">p</span> </span><span id="L-1289"><a href="#L-1289"><span class="linenos" data-line="1289"></span></a> <span class="kr">break</span> </span><span id="L-1290"><a href="#L-1290"><span class="linenos" data-line="1290"></span></a> <span class="kr">end</span> </span><span id="L-1291"><a href="#L-1291"><span class="linenos" data-line="1291"></span></a> <span class="kr">end</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="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-1293"><a href="#L-1293"><span class="linenos" data-line="1293"></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-1294"><a href="#L-1294"><span class="linenos" data-line="1294"></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-1295"><a href="#L-1295"><span class="linenos" data-line="1295"></span></a> <span class="kr">end</span> </span><span id="L-1296"><a href="#L-1296"><span class="linenos" data-line="1296"></span></a> </span><span id="L-1297"><a href="#L-1297"><span class="linenos" data-line="1297"></span></a> <span class="c1">-- defaults for table</span> </span><span id="L-1298"><a href="#L-1298"><span class="linenos" data-line="1298"></span></a> <span class="kd">local</span> <span class="n">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-1299"><a href="#L-1299"><span class="linenos" data-line="1299"></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-1300"><a href="#L-1300"><span class="linenos" data-line="1300"></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-1301"><a href="#L-1301"><span class="linenos" data-line="1301"></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-1302"><a href="#L-1302"><span class="linenos" data-line="1302"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1303"><a href="#L-1303"><span class="linenos" data-line="1303"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1304"><a href="#L-1304"><span class="linenos" data-line="1304"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1305"><a href="#L-1305"><span class="linenos" data-line="1305"></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-1306"><a href="#L-1306"><span class="linenos" data-line="1306"></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-1307"><a href="#L-1307"><span class="linenos" data-line="1307"></span></a> <span class="n">rowformat</span> <span class="o">=</span> <span class="s2">"$0 ($1"</span> </span><span id="L-1308"><a href="#L-1308"><span class="linenos" data-line="1308"></span></a> <span class="n">i</span> <span class="o">=</span> <span class="mi">2</span> </span><span id="L-1309"><a href="#L-1309"><span class="linenos" data-line="1309"></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-1310"><a href="#L-1310"><span class="linenos" data-line="1310"></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-1311"><a href="#L-1311"><span class="linenos" data-line="1311"></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-1312"><a href="#L-1312"><span class="linenos" data-line="1312"></span></a> <span class="kr">end</span> </span><span id="L-1313"><a href="#L-1313"><span class="linenos" data-line="1313"></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-1314"><a href="#L-1314"><span class="linenos" data-line="1314"></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-1315"><a href="#L-1315"><span class="linenos" data-line="1315"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">separator</span> <span class="o">=</span> <span class="s2">"</li><li>"</span> </span><span id="L-1316"><a href="#L-1316"><span class="linenos" data-line="1316"></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-1317"><a href="#L-1317"><span class="linenos" data-line="1317"></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-1318"><a href="#L-1318"><span class="linenos" data-line="1318"></span></a> <span class="n">preformat</span> <span class="o">=</span> <span class="s2">"<ul><li>"</span> </span><span id="L-1319"><a href="#L-1319"><span class="linenos" data-line="1319"></span></a> <span class="n">postformat</span> <span class="o">=</span> <span class="s2">"</li></ul>"</span> </span><span id="L-1320"><a href="#L-1320"><span class="linenos" data-line="1320"></span></a> <span class="kr">else</span> </span><span id="L-1321"><a href="#L-1321"><span class="linenos" data-line="1321"></span></a> <span class="n">preformat</span> <span class="o">=</span> <span class="s2">"<ol><li>"</span> </span><span id="L-1322"><a href="#L-1322"><span class="linenos" data-line="1322"></span></a> <span class="n">postformat</span> <span class="o">=</span> <span class="s2">"</li></ol>"</span> </span><span id="L-1323"><a href="#L-1323"><span class="linenos" data-line="1323"></span></a> <span class="kr">end</span> </span><span id="L-1324"><a href="#L-1324"><span class="linenos" data-line="1324"></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-1325"><a href="#L-1325"><span class="linenos" data-line="1325"></span></a> <span class="kr">end</span> </span><span id="L-1326"><a href="#L-1326"><span class="linenos" data-line="1326"></span></a> </span><span id="L-1327"><a href="#L-1327"><span class="linenos" data-line="1327"></span></a> <span class="c1">-- set whitelist and blacklist values</span> </span><span id="L-1328"><a href="#L-1328"><span class="linenos" data-line="1328"></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-1329"><a href="#L-1329"><span class="linenos" data-line="1329"></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-1330"><a href="#L-1330"><span class="linenos" data-line="1330"></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-1331"><a href="#L-1331"><span class="linenos" data-line="1331"></span></a> <span class="kr">end</span> </span><span id="L-1332"><a href="#L-1332"><span class="linenos" data-line="1332"></span></a> </span><span id="L-1333"><a href="#L-1333"><span class="linenos" data-line="1333"></span></a> <span class="c1">-- set feminine case if gender is requested</span> </span><span id="L-1334"><a href="#L-1334"><span class="linenos" data-line="1334"></span></a> <span class="kd">local</span> <span class="n">itemgender</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">itemgender</span> </span><span id="L-1335"><a href="#L-1335"><span class="linenos" data-line="1335"></span></a> <span class="kd">local</span> <span class="n">idgender</span> </span><span id="L-1336"><a href="#L-1336"><span class="linenos" data-line="1336"></span></a> <span class="kr">if</span> <span class="n">itemgender</span> <span class="kr">then</span> </span><span id="L-1337"><a href="#L-1337"><span class="linenos" data-line="1337"></span></a> <span class="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-1338"><a href="#L-1338"><span class="linenos" data-line="1338"></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-1339"><a href="#L-1339"><span class="linenos" data-line="1339"></span></a> <span class="kr">if</span> <span class="n">snak_id</span> <span class="kr">then</span> </span><span id="L-1340"><a href="#L-1340"><span class="linenos" data-line="1340"></span></a> <span class="n">idgender</span> <span class="o">=</span> <span class="n">snak_id</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="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-1343"><a href="#L-1343"><span class="linenos" data-line="1343"></span></a> <span class="n">idgender</span> <span class="o">=</span> <span class="n">itemgender</span> </span><span id="L-1344"><a href="#L-1344"><span class="linenos" data-line="1344"></span></a> <span class="kr">end</span> </span><span id="L-1345"><a href="#L-1345"><span class="linenos" data-line="1345"></span></a> <span class="kr">end</span> </span><span id="L-1346"><a href="#L-1346"><span class="linenos" data-line="1346"></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-1347"><a href="#L-1347"><span class="linenos" data-line="1347"></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-1348"><a href="#L-1348"><span class="linenos" data-line="1348"></span></a> <span class="n">gender_requested</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1349"><a href="#L-1349"><span class="linenos" data-line="1349"></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-1350"><a href="#L-1350"><span class="linenos" data-line="1350"></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-1351"><a href="#L-1351"><span class="linenos" data-line="1351"></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-1352"><a href="#L-1352"><span class="linenos" data-line="1352"></span></a> <span class="n">gender_requested</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1353"><a href="#L-1353"><span class="linenos" data-line="1353"></span></a> <span class="kr">break</span> </span><span id="L-1354"><a href="#L-1354"><span class="linenos" data-line="1354"></span></a> <span class="kr">end</span> </span><span id="L-1355"><a href="#L-1355"><span class="linenos" data-line="1355"></span></a> <span class="kr">end</span> </span><span id="L-1356"><a href="#L-1356"><span class="linenos" data-line="1356"></span></a> <span class="kr">end</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">gender_requested</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="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-1359"><a href="#L-1359"><span class="linenos" data-line="1359"></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-1360"><a href="#L-1360"><span class="linenos" data-line="1360"></span></a> <span class="kr">end</span> </span><span id="L-1361"><a href="#L-1361"><span class="linenos" data-line="1361"></span></a> <span class="kr">end</span> </span><span id="L-1362"><a href="#L-1362"><span class="linenos" data-line="1362"></span></a> </span><span id="L-1363"><a href="#L-1363"><span class="linenos" data-line="1363"></span></a> <span class="c1">-- get initial sort indices</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">sortindices</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1365"><a href="#L-1365"><span class="linenos" data-line="1365"></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-1366"><a href="#L-1366"><span class="linenos" data-line="1366"></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-1367"><a href="#L-1367"><span class="linenos" data-line="1367"></span></a> <span class="kr">end</span> </span><span id="L-1368"><a href="#L-1368"><span class="linenos" data-line="1368"></span></a> <span class="c1">-- sort by claim rank</span> </span><span id="L-1369"><a href="#L-1369"><span class="linenos" data-line="1369"></span></a> <span class="kd">local</span> <span class="n">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-1370"><a href="#L-1370"><span class="linenos" data-line="1370"></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-1371"><a href="#L-1371"><span class="linenos" data-line="1371"></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-1372"><a href="#L-1372"><span class="linenos" data-line="1372"></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-1373"><a href="#L-1373"><span class="linenos" data-line="1373"></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-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="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-1376"><a href="#L-1376"><span class="linenos" data-line="1376"></span></a> </span><span id="L-1377"><a href="#L-1377"><span class="linenos" data-line="1377"></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-1378"><a href="#L-1378"><span class="linenos" data-line="1378"></span></a> <span class="kd">local</span> <span class="nb">error</span> </span><span id="L-1379"><a href="#L-1379"><span class="linenos" data-line="1379"></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-1380"><a href="#L-1380"><span class="linenos" data-line="1380"></span></a> <span class="c1">-- convert LF to line feed, <br /> may not work on some cases</span> </span><span id="L-1381"><a href="#L-1381"><span class="linenos" data-line="1381"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1382"><a href="#L-1382"><span class="linenos" data-line="1382"></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-1383"><a href="#L-1383"><span class="linenos" data-line="1383"></span></a> <span class="c1">-- i18n separators</span> </span><span id="L-1384"><a href="#L-1384"><span class="linenos" data-line="1384"></span></a> <span class="n">parameters</span><span class="p">.</span><span class="n">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-1385"><a href="#L-1385"><span class="linenos" data-line="1385"></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-1386"><a href="#L-1386"><span class="linenos" data-line="1386"></span></a> <span class="c1">-- iterate over all elements and return their value (if existing)</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">value</span><span class="p">,</span> <span class="n">valueq</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">sortkey</span><span class="p">,</span> <span class="n">sortkeyq</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">values</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1390"><a href="#L-1390"><span class="linenos" data-line="1390"></span></a> <span class="kd">local</span> <span class="n">sortkeys</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1391"><a href="#L-1391"><span class="linenos" data-line="1391"></span></a> <span class="kd">local</span> <span class="n">refs</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1392"><a href="#L-1392"><span class="linenos" data-line="1392"></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-1393"><a href="#L-1393"><span class="linenos" data-line="1393"></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-1394"><a href="#L-1394"><span class="linenos" data-line="1394"></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-1395"><a href="#L-1395"><span class="linenos" data-line="1395"></span></a> <span class="kd">local</span> <span class="n">reference</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1396"><a href="#L-1396"><span class="linenos" data-line="1396"></span></a> <span class="kr">if</span> <span class="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-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">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="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-1399"><a href="#L-1399"><span class="linenos" data-line="1399"></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-1400"><a href="#L-1400"><span class="linenos" data-line="1400"></span></a> <span class="kr">if</span> <span class="n">value</span> <span class="kr">then</span> </span><span id="L-1401"><a href="#L-1401"><span class="linenos" data-line="1401"></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-1402"><a href="#L-1402"><span class="linenos" data-line="1402"></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-1403"><a href="#L-1403"><span class="linenos" data-line="1403"></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-1404"><a href="#L-1404"><span class="linenos" data-line="1404"></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-1405"><a href="#L-1405"><span class="linenos" data-line="1405"></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-1406"><a href="#L-1406"><span class="linenos" data-line="1406"></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-1407"><a href="#L-1407"><span class="linenos" data-line="1407"></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-1408"><a href="#L-1408"><span class="linenos" data-line="1408"></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-1409"><a href="#L-1409"><span class="linenos" data-line="1409"></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-1410"><a href="#L-1410"><span class="linenos" data-line="1410"></span></a> <span class="kr">end</span> </span><span id="L-1411"><a href="#L-1411"><span class="linenos" data-line="1411"></span></a> <span class="kr">end</span> </span><span id="L-1412"><a href="#L-1412"><span class="linenos" data-line="1412"></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-1413"><a href="#L-1413"><span class="linenos" data-line="1413"></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-1414"><a href="#L-1414"><span class="linenos" data-line="1414"></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-1415"><a href="#L-1415"><span class="linenos" data-line="1415"></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-1416"><a href="#L-1416"><span class="linenos" data-line="1416"></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-1417"><a href="#L-1417"><span class="linenos" data-line="1417"></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-1418"><a href="#L-1418"><span class="linenos" data-line="1418"></span></a> <span class="kr">else</span> </span><span id="L-1419"><a href="#L-1419"><span class="linenos" data-line="1419"></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-1420"><a href="#L-1420"><span class="linenos" data-line="1420"></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-1421"><a href="#L-1421"><span class="linenos" data-line="1421"></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-1422"><a href="#L-1422"><span class="linenos" data-line="1422"></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-1423"><a href="#L-1423"><span class="linenos" data-line="1423"></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-1424"><a href="#L-1424"><span class="linenos" data-line="1424"></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-1425"><a href="#L-1425"><span class="linenos" data-line="1425"></span></a> <span class="c1">-- only first value of a property as alternative to a qualifier</span> </span><span id="L-1426"><a href="#L-1426"><span class="linenos" data-line="1426"></span></a> <span class="c1">-- multiple values may not be related to a given raw of the table</span> </span><span id="L-1427"><a href="#L-1427"><span class="linenos" data-line="1427"></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-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">else</span> </span><span id="L-1430"><a href="#L-1430"><span class="linenos" data-line="1430"></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-1431"><a href="#L-1431"><span class="linenos" data-line="1431"></span></a> <span class="kr">end</span> </span><span id="L-1432"><a href="#L-1432"><span class="linenos" data-line="1432"></span></a> <span class="kr">if</span> <span class="n">valueq</span> <span class="kr">then</span> </span><span id="L-1433"><a href="#L-1433"><span class="linenos" data-line="1433"></span></a> <span class="n">qual</span> <span class="o">=</span> <span class="n">q</span> </span><span id="L-1434"><a href="#L-1434"><span class="linenos" data-line="1434"></span></a> <span class="kr">break</span> </span><span id="L-1435"><a href="#L-1435"><span class="linenos" data-line="1435"></span></a> <span class="kr">end</span> </span><span id="L-1436"><a href="#L-1436"><span class="linenos" data-line="1436"></span></a> <span class="kr">end</span> </span><span id="L-1437"><a href="#L-1437"><span class="linenos" data-line="1437"></span></a> <span class="kr">end</span> </span><span id="L-1438"><a href="#L-1438"><span class="linenos" data-line="1438"></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-1439"><a href="#L-1439"><span class="linenos" data-line="1439"></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-1440"><a href="#L-1440"><span class="linenos" data-line="1440"></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-1441"><a href="#L-1441"><span class="linenos" data-line="1441"></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><span id="L-1442"><a href="#L-1442"><span class="linenos" data-line="1442"></span></a> <span class="kr">if</span> <span class="n">whitelist</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="ow">and</span> <span class="n">whitelist</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">valueq</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1443"><a href="#L-1443"><span class="linenos" data-line="1443"></span></a> <span class="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-1444"><a href="#L-1444"><span class="linenos" data-line="1444"></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="ow">and</span> <span class="n">blacklist</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">valueq</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1445"><a href="#L-1445"><span class="linenos" data-line="1445"></span></a> <span class="n">rowlist</span><span class="p">[</span><span class="o">#</span><span class="n">values</span><span class="p">]</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1446"><a href="#L-1446"><span class="linenos" data-line="1446"></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="ow">and</span> <span class="n">ignorevalue</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">valueq</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1447"><a href="#L-1447"><span class="linenos" data-line="1447"></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-1448"><a href="#L-1448"><span class="linenos" data-line="1448"></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="ow">and</span> <span class="ow">not</span> <span class="n">selectvalue</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">valueq</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1449"><a href="#L-1449"><span class="linenos" data-line="1449"></span></a> <span class="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-1450"><a href="#L-1450"><span class="linenos" data-line="1450"></span></a> <span class="kr">end</span> </span><span id="L-1451"><a href="#L-1451"><span class="linenos" data-line="1451"></span></a> <span class="kr">end</span> </span><span id="L-1452"><a href="#L-1452"><span class="linenos" data-line="1452"></span></a> <span class="kr">end</span> </span><span id="L-1453"><a href="#L-1453"><span class="linenos" data-line="1453"></span></a> <span class="kr">end</span> </span><span id="L-1454"><a href="#L-1454"><span class="linenos" data-line="1454"></span></a> <span class="kr">else</span> </span><span id="L-1455"><a href="#L-1455"><span class="linenos" data-line="1455"></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-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="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</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="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1458"><a href="#L-1458"><span class="linenos" data-line="1458"></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-1459"><a href="#L-1459"><span class="linenos" data-line="1459"></span></a> <span class="kr">end</span> </span><span id="L-1460"><a href="#L-1460"><span class="linenos" data-line="1460"></span></a> <span class="kr">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-1461"><a href="#L-1461"><span class="linenos" data-line="1461"></span></a> <span class="kr">if</span> <span class="n">value</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">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-1463"><a href="#L-1463"><span class="linenos" data-line="1463"></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-1464"><a href="#L-1464"><span class="linenos" data-line="1464"></span></a> <span class="kr">end</span> </span><span id="L-1465"><a href="#L-1465"><span class="linenos" data-line="1465"></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-1466"><a href="#L-1466"><span class="linenos" data-line="1466"></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-1467"><a href="#L-1467"><span class="linenos" data-line="1467"></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-1468"><a href="#L-1468"><span class="linenos" data-line="1468"></span></a> <span class="kr">end</span> </span><span id="L-1469"><a href="#L-1469"><span class="linenos" data-line="1469"></span></a> <span class="kr">end</span> </span><span id="L-1470"><a href="#L-1470"><span class="linenos" data-line="1470"></span></a> <span class="c1">-- sort and format results</span> </span><span id="L-1471"><a href="#L-1471"><span class="linenos" data-line="1471"></span></a> <span class="n">sortindices</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1472"><a href="#L-1472"><span class="linenos" data-line="1472"></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-1473"><a href="#L-1473"><span class="linenos" data-line="1473"></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-1474"><a href="#L-1474"><span class="linenos" data-line="1474"></span></a> <span class="kr">end</span> </span><span id="L-1475"><a href="#L-1475"><span class="linenos" data-line="1475"></span></a> <span class="kr">if</span> <span class="n">sorting_col</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="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-1477"><a href="#L-1477"><span class="linenos" data-line="1477"></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-1478"><a href="#L-1478"><span class="linenos" data-line="1478"></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-1479"><a href="#L-1479"><span class="linenos" data-line="1479"></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-1480"><a href="#L-1480"><span class="linenos" data-line="1480"></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-1481"><a href="#L-1481"><span class="linenos" data-line="1481"></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-1482"><a href="#L-1482"><span class="linenos" data-line="1482"></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-1483"><a href="#L-1483"><span class="linenos" data-line="1483"></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-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><span id="L-1486"><a href="#L-1486"><span class="linenos" data-line="1486"></span></a> <span class="kr">if</span> <span class="n">sorting_up</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="kr">return</span> <span class="n">valueb</span> <span class="o">></span> <span class="n">valuea</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">return</span> <span class="n">valueb</span> <span class="o"><</span> <span class="n">valuea</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="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-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="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-1494"><a href="#L-1494"><span class="linenos" data-line="1494"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1495"><a href="#L-1495"><span class="linenos" data-line="1495"></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-1496"><a href="#L-1496"><span class="linenos" data-line="1496"></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-1497"><a href="#L-1497"><span class="linenos" data-line="1497"></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-1498"><a href="#L-1498"><span class="linenos" data-line="1498"></span></a> </span><span id="L-1499"><a href="#L-1499"><span class="linenos" data-line="1499"></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-1500"><a href="#L-1500"><span class="linenos" data-line="1500"></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-1501"><a href="#L-1501"><span class="linenos" data-line="1501"></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-1502"><a href="#L-1502"><span class="linenos" data-line="1502"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1503"><a href="#L-1503"><span class="linenos" data-line="1503"></span></a> <span class="kr">else</span> </span><span id="L-1504"><a href="#L-1504"><span class="linenos" data-line="1504"></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-1505"><a href="#L-1505"><span class="linenos" data-line="1505"></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-1506"><a href="#L-1506"><span class="linenos" data-line="1506"></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-1507"><a href="#L-1507"><span class="linenos" data-line="1507"></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-1508"><a href="#L-1508"><span class="linenos" data-line="1508"></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-1509"><a href="#L-1509"><span class="linenos" data-line="1509"></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-1510"><a href="#L-1510"><span class="linenos" data-line="1510"></span></a> <span class="c1">-- add fake end character $</span> </span><span id="L-1511"><a href="#L-1511"><span class="linenos" data-line="1511"></span></a> <span class="c1">-- gsub $i not followed by a number so $1 doesn't match $10, $11...</span> </span><span id="L-1512"><a href="#L-1512"><span class="linenos" data-line="1512"></span></a> <span class="c1">-- remove fake end character</span> </span><span id="L-1513"><a href="#L-1513"><span class="linenos" data-line="1513"></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-1514"><a href="#L-1514"><span class="linenos" data-line="1514"></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-1515"><a href="#L-1515"><span class="linenos" data-line="1515"></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-1516"><a href="#L-1516"><span class="linenos" data-line="1516"></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-1517"><a href="#L-1517"><span class="linenos" data-line="1517"></span></a> <span class="kr">end</span> </span><span id="L-1518"><a href="#L-1518"><span class="linenos" data-line="1518"></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-1519"><a href="#L-1519"><span class="linenos" data-line="1519"></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-1520"><a href="#L-1520"><span class="linenos" data-line="1520"></span></a> <span class="kr">end</span> </span><span id="L-1521"><a href="#L-1521"><span class="linenos" data-line="1521"></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-1522"><a href="#L-1522"><span class="linenos" data-line="1522"></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-1523"><a href="#L-1523"><span class="linenos" data-line="1523"></span></a> <span class="kr">end</span> </span><span id="L-1524"><a href="#L-1524"><span class="linenos" data-line="1524"></span></a> <span class="kr">elseif</span> <span class="n">value</span> <span class="kr">then</span> </span><span id="L-1525"><a href="#L-1525"><span class="linenos" data-line="1525"></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-1526"><a href="#L-1526"><span class="linenos" data-line="1526"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span> <span class="o">..</span> <span class="n">reference</span> </span><span id="L-1527"><a href="#L-1527"><span class="linenos" data-line="1527"></span></a> <span class="kr">end</span> </span><span id="L-1528"><a href="#L-1528"><span class="linenos" data-line="1528"></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-1529"><a href="#L-1529"><span class="linenos" data-line="1529"></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-1530"><a href="#L-1530"><span class="linenos" data-line="1530"></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-1531"><a href="#L-1531"><span class="linenos" data-line="1531"></span></a> <span class="kr">break</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="kr">end</span> </span><span id="L-1534"><a href="#L-1534"><span class="linenos" data-line="1534"></span></a> <span class="kr">end</span> </span><span id="L-1535"><a href="#L-1535"><span class="linenos" data-line="1535"></span></a> </span><span id="L-1536"><a href="#L-1536"><span class="linenos" data-line="1536"></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-1537"><a href="#L-1537"><span class="linenos" data-line="1537"></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-1538"><a href="#L-1538"><span class="linenos" data-line="1538"></span></a> <span class="kr">end</span> </span><span id="L-1539"><a href="#L-1539"><span class="linenos" data-line="1539"></span></a> <span class="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-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="s1">'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="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-1542"><a href="#L-1542"><span class="linenos" data-line="1542"></span></a> <span class="kr">end</span> </span><span id="L-1543"><a href="#L-1543"><span class="linenos" data-line="1543"></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-1544"><a href="#L-1544"><span class="linenos" data-line="1544"></span></a> <span class="kr">else</span> </span><span id="L-1545"><a href="#L-1545"><span class="linenos" data-line="1545"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="s1">''</span> </span><span id="L-1546"><a href="#L-1546"><span class="linenos" data-line="1546"></span></a> <span class="kr">end</span> </span><span id="L-1547"><a href="#L-1547"><span class="linenos" data-line="1547"></span></a> <span class="kr">else</span> </span><span id="L-1548"><a href="#L-1548"><span class="linenos" data-line="1548"></span></a> <span class="c1">-- return first element</span> </span><span id="L-1549"><a href="#L-1549"><span class="linenos" data-line="1549"></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-1550"><a href="#L-1550"><span class="linenos" data-line="1550"></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-1551"><a href="#L-1551"><span class="linenos" data-line="1551"></span></a> <span class="kr">if</span> <span class="n">result</span> <span class="kr">then</span> </span><span id="L-1552"><a href="#L-1552"><span class="linenos" data-line="1552"></span></a> <span class="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-1553"><a href="#L-1553"><span class="linenos" data-line="1553"></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-1554"><a href="#L-1554"><span class="linenos" data-line="1554"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1555"><a href="#L-1555"><span class="linenos" data-line="1555"></span></a> <span class="kr">else</span> </span><span id="L-1556"><a href="#L-1556"><span class="linenos" data-line="1556"></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-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="kr">end</span> </span><span id="L-1559"><a href="#L-1559"><span class="linenos" data-line="1559"></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-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><span id="L-1562"><a href="#L-1562"><span class="linenos" data-line="1562"></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-1563"><a href="#L-1563"><span class="linenos" data-line="1563"></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-1564"><a href="#L-1564"><span class="linenos" data-line="1564"></span></a> <span class="c1">-- add edit icon, except table added previously and except explicit no-icon internal flag</span> </span><span id="L-1565"><a href="#L-1565"><span class="linenos" data-line="1565"></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-1566"><a href="#L-1566"><span class="linenos" data-line="1566"></span></a> <span class="kr">end</span> </span><span id="L-1567"><a href="#L-1567"><span class="linenos" data-line="1567"></span></a> <span class="kr">else</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">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-1569"><a href="#L-1569"><span class="linenos" data-line="1569"></span></a> <span class="kr">end</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="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-1571"><a href="#L-1571"><span class="linenos" data-line="1571"></span></a> <span class="n">result_query</span> <span class="o">=</span> <span class="n">untranslated</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">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-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="c1">-- Local functions for getParentValues -----------------------</span> </span><span id="L-1577"><a href="#L-1577"><span class="linenos" data-line="1577"></span></a> </span><span id="L-1578"><a href="#L-1578"><span class="linenos" data-line="1578"></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-1579"><a href="#L-1579"><span class="linenos" data-line="1579"></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-1580"><a href="#L-1580"><span class="linenos" data-line="1580"></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-1581"><a href="#L-1581"><span class="linenos" data-line="1581"></span></a><span class="kr">end</span> </span><span id="L-1582"><a href="#L-1582"><span class="linenos" data-line="1582"></span></a> </span><span id="L-1583"><a href="#L-1583"><span class="linenos" data-line="1583"></span></a><span class="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-1584"><a href="#L-1584"><span class="linenos" data-line="1584"></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-1585"><a href="#L-1585"><span class="linenos" data-line="1585"></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-1586"><a href="#L-1586"><span class="linenos" data-line="1586"></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-1587"><a href="#L-1587"><span class="linenos" data-line="1587"></span></a> <span class="kr">return</span> </span><span id="L-1588"><a href="#L-1588"><span class="linenos" data-line="1588"></span></a> <span class="kr">end</span> </span><span id="L-1589"><a href="#L-1589"><span class="linenos" data-line="1589"></span></a> </span><span id="L-1590"><a href="#L-1590"><span class="linenos" data-line="1590"></span></a> <span class="kd">local</span> <span class="n">entity_id</span> </span><span id="L-1591"><a href="#L-1591"><span class="linenos" data-line="1591"></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-1592"><a href="#L-1592"><span class="linenos" data-line="1592"></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-1593"><a href="#L-1593"><span class="linenos" data-line="1593"></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-1594"><a href="#L-1594"><span class="linenos" data-line="1594"></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-1595"><a href="#L-1595"><span class="linenos" data-line="1595"></span></a> <span class="kr">end</span> </span><span id="L-1596"><a href="#L-1596"><span class="linenos" data-line="1596"></span></a> </span><span id="L-1597"><a href="#L-1597"><span class="linenos" data-line="1597"></span></a> <span class="kr">return</span> <span class="n">entity_id</span><span class="p">,</span> <span class="n">result</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><span id="L-1600"><a href="#L-1600"><span class="linenos" data-line="1600"></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-1601"><a href="#L-1601"><span class="linenos" data-line="1601"></span></a> <span class="n">prop_format</span><span class="p">,</span> </span><span id="L-1602"><a href="#L-1602"><span class="linenos" data-line="1602"></span></a> <span class="n">label_format</span><span class="p">,</span> </span><span id="L-1603"><a href="#L-1603"><span class="linenos" data-line="1603"></span></a> <span class="n">languages</span><span class="p">,</span> </span><span id="L-1604"><a href="#L-1604"><span class="linenos" data-line="1604"></span></a> <span class="n">propertySupString</span><span class="p">,</span> </span><span id="L-1605"><a href="#L-1605"><span class="linenos" data-line="1605"></span></a> <span class="n">propertyLabel</span><span class="p">,</span> </span><span id="L-1606"><a href="#L-1606"><span class="linenos" data-line="1606"></span></a> <span class="n">propertyLink</span><span class="p">,</span> </span><span id="L-1607"><a href="#L-1607"><span class="linenos" data-line="1607"></span></a> <span class="n">label_show</span><span class="p">,</span> </span><span id="L-1608"><a href="#L-1608"><span class="linenos" data-line="1608"></span></a> <span class="n">labelicon0</span><span class="p">,</span> </span><span id="L-1609"><a href="#L-1609"><span class="linenos" data-line="1609"></span></a> <span class="n">labelicon1</span><span class="p">,</span> </span><span id="L-1610"><a href="#L-1610"><span class="linenos" data-line="1610"></span></a> <span class="n">upto_number</span><span class="p">,</span> </span><span id="L-1611"><a href="#L-1611"><span class="linenos" data-line="1611"></span></a> <span class="n">upto_label</span><span class="p">,</span> </span><span id="L-1612"><a href="#L-1612"><span class="linenos" data-line="1612"></span></a> <span class="n">upto_value</span><span class="p">,</span> </span><span id="L-1613"><a href="#L-1613"><span class="linenos" data-line="1613"></span></a> <span class="n">last_only</span><span class="p">,</span> </span><span id="L-1614"><a href="#L-1614"><span class="linenos" data-line="1614"></span></a> <span class="n">grammatical_case</span><span class="p">,</span> </span><span id="L-1615"><a href="#L-1615"><span class="linenos" data-line="1615"></span></a> <span class="n">include_self</span><span class="p">)</span> </span><span id="L-1616"><a href="#L-1616"><span class="linenos" data-line="1616"></span></a> </span><span id="L-1617"><a href="#L-1617"><span class="linenos" data-line="1617"></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-1618"><a href="#L-1618"><span class="linenos" data-line="1618"></span></a> </span><span id="L-1619"><a href="#L-1619"><span class="linenos" data-line="1619"></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-1620"><a href="#L-1620"><span class="linenos" data-line="1620"></span></a> <span class="kr">if</span> <span class="n">upto_number</span> <span class="kr">then</span> </span><span id="L-1621"><a href="#L-1621"><span class="linenos" data-line="1621"></span></a> <span class="n">maxloop</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">upto_number</span><span class="p">)</span> </span><span id="L-1622"><a href="#L-1622"><span class="linenos" data-line="1622"></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-1623"><a href="#L-1623"><span class="linenos" data-line="1623"></span></a> <span class="n">maxloop</span> <span class="o">=</span> <span class="mi">50</span> </span><span id="L-1624"><a href="#L-1624"><span class="linenos" data-line="1624"></span></a> <span class="kr">end</span> </span><span id="L-1625"><a href="#L-1625"><span class="linenos" data-line="1625"></span></a> </span><span id="L-1626"><a href="#L-1626"><span class="linenos" data-line="1626"></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-1627"><a href="#L-1627"><span class="linenos" data-line="1627"></span></a> </span><span id="L-1628"><a href="#L-1628"><span class="linenos" data-line="1628"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1629"><a href="#L-1629"><span class="linenos" data-line="1629"></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-1630"><a href="#L-1630"><span class="linenos" data-line="1630"></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-1631"><a href="#L-1631"><span class="linenos" data-line="1631"></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-1632"><a href="#L-1632"><span class="linenos" data-line="1632"></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-1633"><a href="#L-1633"><span class="linenos" data-line="1633"></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-1634"><a href="#L-1634"><span class="linenos" data-line="1634"></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-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">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-1638"><a href="#L-1638"><span class="linenos" data-line="1638"></span></a> </span><span id="L-1639"><a href="#L-1639"><span class="linenos" data-line="1639"></span></a> <span class="kr">if</span> <span class="n">propertyLink</span> <span class="kr">then</span> </span><span id="L-1640"><a href="#L-1640"><span class="linenos" data-line="1640"></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-1641"><a href="#L-1641"><span class="linenos" data-line="1641"></span></a> <span class="kr">if</span> <span class="n">linktext</span> <span class="kr">then</span> </span><span id="L-1642"><a href="#L-1642"><span class="linenos" data-line="1642"></span></a> <span class="n">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-1643"><a href="#L-1643"><span class="linenos" data-line="1643"></span></a> <span class="kr">end</span> </span><span id="L-1644"><a href="#L-1644"><span class="linenos" data-line="1644"></span></a> <span class="kr">end</span> </span><span id="L-1645"><a href="#L-1645"><span class="linenos" data-line="1645"></span></a> </span><span id="L-1646"><a href="#L-1646"><span class="linenos" data-line="1646"></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-1647"><a href="#L-1647"><span class="linenos" data-line="1647"></span></a> <span class="kr">if</span> <span class="n">labelicon0</span> <span class="kr">then</span> </span><span id="L-1648"><a href="#L-1648"><span class="linenos" data-line="1648"></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-1649"><a href="#L-1649"><span class="linenos" data-line="1649"></span></a> <span class="kr">else</span> </span><span id="L-1650"><a href="#L-1650"><span class="linenos" data-line="1650"></span></a> <span class="n">labelwicon</span> <span class="o">=</span> <span class="n">label</span> </span><span id="L-1651"><a href="#L-1651"><span class="linenos" data-line="1651"></span></a> <span class="kr">end</span> </span><span id="L-1652"><a href="#L-1652"><span class="linenos" data-line="1652"></span></a> </span><span id="L-1653"><a href="#L-1653"><span class="linenos" data-line="1653"></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-1654"><a href="#L-1654"><span class="linenos" data-line="1654"></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-1655"><a href="#L-1655"><span class="linenos" data-line="1655"></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-1656"><a href="#L-1656"><span class="linenos" data-line="1656"></span></a> <span class="kr">end</span> </span><span id="L-1657"><a href="#L-1657"><span class="linenos" data-line="1657"></span></a> </span><span id="L-1658"><a href="#L-1658"><span class="linenos" data-line="1658"></span></a> <span class="kr">if</span> <span class="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-1659"><a href="#L-1659"><span class="linenos" data-line="1659"></span></a> <span class="kr">break</span> </span><span id="L-1660"><a href="#L-1660"><span class="linenos" data-line="1660"></span></a> <span class="kr">end</span> </span><span id="L-1661"><a href="#L-1661"><span class="linenos" data-line="1661"></span></a> <span class="kr">end</span> </span><span id="L-1662"><a href="#L-1662"><span class="linenos" data-line="1662"></span></a> </span><span id="L-1663"><a href="#L-1663"><span class="linenos" data-line="1663"></span></a> <span class="kr">if</span> <span class="n">last_only</span> <span class="kr">then</span> </span><span id="L-1664"><a href="#L-1664"><span class="linenos" data-line="1664"></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-1665"><a href="#L-1665"><span class="linenos" data-line="1665"></span></a> <span class="kr">end</span> </span><span id="L-1666"><a href="#L-1666"><span class="linenos" data-line="1666"></span></a> </span><span id="L-1667"><a href="#L-1667"><span class="linenos" data-line="1667"></span></a> <span class="kr">if</span> <span class="n">include_self</span> <span class="kr">then</span> </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">label_self</span><span class="p">,</span> <span class="n">link_self</span> </span><span id="L-1669"><a href="#L-1669"><span class="linenos" data-line="1669"></span></a> <span class="n">_</span><span class="p">,</span> <span class="n">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-1670"><a href="#L-1670"><span class="linenos" data-line="1670"></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-1671"><a href="#L-1671"><span class="linenos" data-line="1671"></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-1672"><a href="#L-1672"><span class="linenos" data-line="1672"></span></a> <span class="kr">end</span> </span><span id="L-1673"><a href="#L-1673"><span class="linenos" data-line="1673"></span></a> </span><span id="L-1674"><a href="#L-1674"><span class="linenos" data-line="1674"></span></a> <span class="kr">return</span> <span class="n">result</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="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-1678"><a href="#L-1678"><span class="linenos" data-line="1678"></span></a> <span class="n">rowformat</span><span class="p">,</span> </span><span id="L-1679"><a href="#L-1679"><span class="linenos" data-line="1679"></span></a> <span class="n">cascade</span><span class="p">,</span> </span><span id="L-1680"><a href="#L-1680"><span class="linenos" data-line="1680"></span></a> <span class="n">sorting</span><span class="p">)</span> </span><span id="L-1681"><a href="#L-1681"><span class="linenos" data-line="1681"></span></a> </span><span id="L-1682"><a href="#L-1682"><span class="linenos" data-line="1682"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1683"><a href="#L-1683"><span class="linenos" data-line="1683"></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-1684"><a href="#L-1684"><span class="linenos" data-line="1684"></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-1685"><a href="#L-1685"><span class="linenos" data-line="1685"></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-1686"><a href="#L-1686"><span class="linenos" data-line="1686"></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-1687"><a href="#L-1687"><span class="linenos" data-line="1687"></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-1688"><a href="#L-1688"><span class="linenos" data-line="1688"></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-1689"><a href="#L-1689"><span class="linenos" data-line="1689"></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-1690"><a href="#L-1690"><span class="linenos" data-line="1690"></span></a> <span class="kr">end</span> </span><span id="L-1691"><a href="#L-1691"><span class="linenos" data-line="1691"></span></a> </span><span id="L-1692"><a href="#L-1692"><span class="linenos" data-line="1692"></span></a> <span class="kr">if</span> <span class="n">cascade</span> <span class="kr">then</span> </span><span id="L-1693"><a href="#L-1693"><span class="linenos" data-line="1693"></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-1694"><a href="#L-1694"><span class="linenos" data-line="1694"></span></a> <span class="kd">local</span> <span class="n">suffix</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-1695"><a href="#L-1695"><span class="linenos" data-line="1695"></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-1696"><a href="#L-1696"><span class="linenos" data-line="1696"></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-1697"><a href="#L-1697"><span class="linenos" data-line="1697"></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-1698"><a href="#L-1698"><span class="linenos" data-line="1698"></span></a> <span class="kr">end</span> </span><span id="L-1699"><a href="#L-1699"><span class="linenos" data-line="1699"></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-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><span id="L-1702"><a href="#L-1702"><span class="linenos" data-line="1702"></span></a> <span class="kr">return</span> <span class="n">ret</span> </span><span id="L-1703"><a href="#L-1703"><span class="linenos" data-line="1703"></span></a><span class="kr">end</span> </span><span id="L-1704"><a href="#L-1704"><span class="linenos" data-line="1704"></span></a> </span><span id="L-1705"><a href="#L-1705"><span class="linenos" data-line="1705"></span></a><span class="c1">-- Returns pairs of parent label and property value fetching a recursive tree</span> </span><span id="L-1706"><a href="#L-1706"><span class="linenos" data-line="1706"></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-1707"><a href="#L-1707"><span class="linenos" data-line="1707"></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-1708"><a href="#L-1708"><span class="linenos" data-line="1708"></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-1709"><a href="#L-1709"><span class="linenos" data-line="1709"></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-1710"><a href="#L-1710"><span class="linenos" data-line="1710"></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-1711"><a href="#L-1711"><span class="linenos" data-line="1711"></span></a> <span class="kr">end</span> </span><span id="L-1712"><a href="#L-1712"><span class="linenos" data-line="1712"></span></a> <span 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-1713"><a href="#L-1713"><span class="linenos" data-line="1713"></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-1714"><a href="#L-1714"><span class="linenos" data-line="1714"></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-1715"><a href="#L-1715"><span class="linenos" data-line="1715"></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-1716"><a href="#L-1716"><span class="linenos" data-line="1716"></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-1717"><a href="#L-1717"><span class="linenos" data-line="1717"></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-1718"><a href="#L-1718"><span class="linenos" data-line="1718"></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-1719"><a href="#L-1719"><span class="linenos" data-line="1719"></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-1720"><a href="#L-1720"><span class="linenos" data-line="1720"></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-1721"><a href="#L-1721"><span class="linenos" data-line="1721"></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-1722"><a href="#L-1722"><span class="linenos" data-line="1722"></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-1723"><a href="#L-1723"><span class="linenos" data-line="1723"></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-1724"><a href="#L-1724"><span class="linenos" data-line="1724"></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-1725"><a href="#L-1725"><span class="linenos" data-line="1725"></span></a> </span><span id="L-1726"><a href="#L-1726"><span class="linenos" data-line="1726"></span></a> <span class="kd">local</span> <span class="n">upto_label</span> <span class="o">=</span> <span class="p">{}</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">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-1728"><a href="#L-1728"><span class="linenos" data-line="1728"></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-1729"><a href="#L-1729"><span class="linenos" data-line="1729"></span></a> <span class="kr">end</span> </span><span id="L-1730"><a href="#L-1730"><span class="linenos" data-line="1730"></span></a> <span class="kr">if</span> <span class="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-1731"><a href="#L-1731"><span class="linenos" data-line="1731"></span></a> <span class="n">upto_label</span><span class="p">[</span><span class="n">uc_first</span><span class="p">(</span><span class="n">upto_number</span><span class="p">)]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1732"><a href="#L-1732"><span class="linenos" data-line="1732"></span></a> <span class="n">upto_number</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1733"><a href="#L-1733"><span class="linenos" data-line="1733"></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-1734"><a href="#L-1734"><span class="linenos" data-line="1734"></span></a> <span class="kr">end</span> </span><span id="L-1735"><a href="#L-1735"><span class="linenos" data-line="1735"></span></a> </span><span id="L-1736"><a href="#L-1736"><span class="linenos" data-line="1736"></span></a> <span class="kd">local</span> <span class="n">upto_value</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1737"><a href="#L-1737"><span class="linenos" data-line="1737"></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-1738"><a href="#L-1738"><span class="linenos" data-line="1738"></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-1739"><a href="#L-1739"><span class="linenos" data-line="1739"></span></a> <span class="kr">end</span> </span><span id="L-1740"><a href="#L-1740"><span class="linenos" data-line="1740"></span></a> </span><span id="L-1741"><a href="#L-1741"><span class="linenos" data-line="1741"></span></a> <span class="kd">local</span> <span class="n">label_show</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1742"><a href="#L-1742"><span class="linenos" data-line="1742"></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-1743"><a href="#L-1743"><span class="linenos" data-line="1743"></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-1744"><a href="#L-1744"><span class="linenos" data-line="1744"></span></a> <span class="kr">end</span> </span><span id="L-1745"><a href="#L-1745"><span class="linenos" data-line="1745"></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-1746"><a href="#L-1746"><span class="linenos" data-line="1746"></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-1747"><a href="#L-1747"><span class="linenos" data-line="1747"></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-1748"><a href="#L-1748"><span class="linenos" data-line="1748"></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-1749"><a href="#L-1749"><span class="linenos" data-line="1749"></span></a> <span class="kr">end</span> </span><span id="L-1750"><a href="#L-1750"><span class="linenos" data-line="1750"></span></a> <span class="kr">end</span> </span><span id="L-1751"><a href="#L-1751"><span class="linenos" data-line="1751"></span></a> </span><span id="L-1752"><a href="#L-1752"><span class="linenos" data-line="1752"></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-1753"><a href="#L-1753"><span class="linenos" data-line="1753"></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-1754"><a href="#L-1754"><span class="linenos" data-line="1754"></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-1755"><a href="#L-1755"><span class="linenos" data-line="1755"></span></a> <span class="n">labelicon0</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1756"><a href="#L-1756"><span class="linenos" data-line="1756"></span></a> <span class="kr">end</span> </span><span id="L-1757"><a href="#L-1757"><span class="linenos" data-line="1757"></span></a> </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">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-1759"><a href="#L-1759"><span class="linenos" data-line="1759"></span></a> <span class="n">property_format</span><span class="p">,</span> </span><span id="L-1760"><a href="#L-1760"><span class="linenos" data-line="1760"></span></a> <span class="n">label_format</span><span class="p">,</span> </span><span id="L-1761"><a href="#L-1761"><span class="linenos" data-line="1761"></span></a> <span class="n">languages</span><span class="p">,</span> </span><span id="L-1762"><a href="#L-1762"><span class="linenos" data-line="1762"></span></a> <span class="n">propertySup</span><span class="p">,</span> </span><span id="L-1763"><a href="#L-1763"><span class="linenos" data-line="1763"></span></a> <span class="n">propertyLabel</span><span class="p">,</span> </span><span id="L-1764"><a href="#L-1764"><span class="linenos" data-line="1764"></span></a> <span class="n">propertyLink</span><span class="p">,</span> </span><span id="L-1765"><a href="#L-1765"><span class="linenos" data-line="1765"></span></a> <span class="n">label_show</span><span class="p">,</span> </span><span id="L-1766"><a href="#L-1766"><span class="linenos" data-line="1766"></span></a> <span class="n">labelicon0</span><span class="p">,</span> </span><span id="L-1767"><a href="#L-1767"><span class="linenos" data-line="1767"></span></a> <span class="n">labelicon1</span><span class="p">,</span> </span><span id="L-1768"><a href="#L-1768"><span class="linenos" data-line="1768"></span></a> <span class="n">upto_number</span><span class="p">,</span> </span><span id="L-1769"><a href="#L-1769"><span class="linenos" data-line="1769"></span></a> <span class="n">upto_label</span><span class="p">,</span> </span><span id="L-1770"><a href="#L-1770"><span class="linenos" data-line="1770"></span></a> <span class="n">upto_value</span><span class="p">,</span> </span><span id="L-1771"><a href="#L-1771"><span class="linenos" data-line="1771"></span></a> <span class="n">last_only</span><span class="p">,</span> </span><span id="L-1772"><a href="#L-1772"><span class="linenos" data-line="1772"></span></a> <span class="n">case</span><span class="p">,</span> </span><span id="L-1773"><a href="#L-1773"><span class="linenos" data-line="1773"></span></a> <span class="n">include_self</span><span class="p">)</span> </span><span id="L-1774"><a href="#L-1774"><span class="linenos" data-line="1774"></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-1775"><a href="#L-1775"><span class="linenos" data-line="1775"></span></a> </span><span id="L-1776"><a href="#L-1776"><span class="linenos" data-line="1776"></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-1777"><a href="#L-1777"><span class="linenos" data-line="1777"></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-1778"><a href="#L-1778"><span class="linenos" data-line="1778"></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-1779"><a href="#L-1779"><span class="linenos" data-line="1779"></span></a> </span><span id="L-1780"><a href="#L-1780"><span class="linenos" data-line="1780"></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-1781"><a href="#L-1781"><span class="linenos" data-line="1781"></span></a> <span class="n">rowformat</span><span class="p">,</span> </span><span id="L-1782"><a href="#L-1782"><span class="linenos" data-line="1782"></span></a> <span class="n">cascade</span><span class="p">,</span> </span><span id="L-1783"><a href="#L-1783"><span class="linenos" data-line="1783"></span></a> <span class="n">sorting</span><span class="p">)</span> </span><span id="L-1784"><a href="#L-1784"><span class="linenos" data-line="1784"></span></a> <span class="n">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-1785"><a href="#L-1785"><span class="linenos" data-line="1785"></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-1786"><a href="#L-1786"><span class="linenos" data-line="1786"></span></a><span class="kr">end</span> </span><span id="L-1787"><a href="#L-1787"><span class="linenos" data-line="1787"></span></a> </span><span id="L-1788"><a href="#L-1788"><span class="linenos" data-line="1788"></span></a><span class="c1">-- Link with a parent label --------------------</span> </span><span id="L-1789"><a href="#L-1789"><span class="linenos" data-line="1789"></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-1790"><a href="#L-1790"><span class="linenos" data-line="1790"></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-1791"><a href="#L-1791"><span class="linenos" data-line="1791"></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-1792"><a href="#L-1792"><span class="linenos" data-line="1792"></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-1793"><a href="#L-1793"><span class="linenos" data-line="1793"></span></a> <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">args</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1795"><a href="#L-1795"><span class="linenos" data-line="1795"></span></a> <span class="kr">if</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</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="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-1797"><a href="#L-1797"><span class="linenos" data-line="1797"></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-1798"><a href="#L-1798"><span class="linenos" data-line="1798"></span></a> <span class="kr">end</span> </span><span id="L-1799"><a href="#L-1799"><span class="linenos" data-line="1799"></span></a> <span class="kr">else</span> </span><span id="L-1800"><a href="#L-1800"><span class="linenos" data-line="1800"></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-1801"><a href="#L-1801"><span class="linenos" data-line="1801"></span></a> <span class="kr">end</span> </span><span id="L-1802"><a href="#L-1802"><span class="linenos" data-line="1802"></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-1803"><a href="#L-1803"><span class="linenos" data-line="1803"></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-1804"><a href="#L-1804"><span class="linenos" data-line="1804"></span></a> <span class="kr">end</span> </span><span id="L-1805"><a href="#L-1805"><span class="linenos" data-line="1805"></span></a> </span><span id="L-1806"><a href="#L-1806"><span class="linenos" data-line="1806"></span></a> <span class="c1">-- get id value of property/qualifier</span> </span><span id="L-1807"><a href="#L-1807"><span class="linenos" data-line="1807"></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-1808"><a href="#L-1808"><span class="linenos" data-line="1808"></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-1809"><a href="#L-1809"><span class="linenos" data-line="1809"></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-1810"><a href="#L-1810"><span class="linenos" data-line="1810"></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-1811"><a href="#L-1811"><span class="linenos" data-line="1811"></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-1812"><a href="#L-1812"><span class="linenos" data-line="1812"></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-1813"><a href="#L-1813"><span class="linenos" data-line="1813"></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-1814"><a href="#L-1814"><span class="linenos" data-line="1814"></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-1815"><a href="#L-1815"><span class="linenos" data-line="1815"></span></a> </span><span id="L-1816"><a href="#L-1816"><span class="linenos" data-line="1816"></span></a> <span class="c1">-- get internal link of property/qualifier</span> </span><span id="L-1817"><a href="#L-1817"><span class="linenos" data-line="1817"></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-1818"><a href="#L-1818"><span class="linenos" data-line="1818"></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-1819"><a href="#L-1819"><span class="linenos" data-line="1819"></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-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="c1">-- get label of parent property</span> </span><span id="L-1822"><a href="#L-1822"><span class="linenos" data-line="1822"></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-1823"><a href="#L-1823"><span class="linenos" data-line="1823"></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-1824"><a href="#L-1824"><span class="linenos" data-line="1824"></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-1825"><a href="#L-1825"><span class="linenos" data-line="1825"></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-1826"><a href="#L-1826"><span class="linenos" data-line="1826"></span></a> <span class="kr">else</span> </span><span id="L-1827"><a href="#L-1827"><span class="linenos" data-line="1827"></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-1828"><a href="#L-1828"><span class="linenos" data-line="1828"></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-1829"><a href="#L-1829"><span class="linenos" data-line="1829"></span></a> <span class="kr">end</span> </span><span id="L-1830"><a href="#L-1830"><span class="linenos" data-line="1830"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">property</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">parent</span> </span><span id="L-1831"><a href="#L-1831"><span class="linenos" data-line="1831"></span></a> <span class="n">largs</span><span class="p">.</span><span class="n">qualifier</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1832"><a href="#L-1832"><span class="linenos" data-line="1832"></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-1833"><a href="#L-1833"><span class="linenos" data-line="1833"></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-1834"><a href="#L-1834"><span class="linenos" data-line="1834"></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-1835"><a href="#L-1835"><span class="linenos" data-line="1835"></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-1836"><a href="#L-1836"><span class="linenos" data-line="1836"></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-1837"><a href="#L-1837"><span class="linenos" data-line="1837"></span></a> <span class="kr">end</span> </span><span id="L-1838"><a href="#L-1838"><span class="linenos" data-line="1838"></span></a> <span class="kr">end</span> </span><span id="L-1839"><a href="#L-1839"><span class="linenos" data-line="1839"></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-1840"><a href="#L-1840"><span class="linenos" data-line="1840"></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-1841"><a href="#L-1841"><span class="linenos" data-line="1841"></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-1842"><a href="#L-1842"><span class="linenos" data-line="1842"></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-1843"><a href="#L-1843"><span class="linenos" data-line="1843"></span></a><span class="kr">end</span> </span><span id="L-1844"><a href="#L-1844"><span class="linenos" data-line="1844"></span></a> </span><span id="L-1845"><a href="#L-1845"><span class="linenos" data-line="1845"></span></a><span class="c1">-- Calculate number of years old ----------------------------</span> </span><span id="L-1846"><a href="#L-1846"><span class="linenos" data-line="1846"></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-1847"><a href="#L-1847"><span class="linenos" data-line="1847"></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-1848"><a href="#L-1848"><span class="linenos" data-line="1848"></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-1849"><a href="#L-1849"><span class="linenos" data-line="1849"></span></a> <span class="kr">end</span> </span><span id="L-1850"><a href="#L-1850"><span class="linenos" data-line="1850"></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-1851"><a href="#L-1851"><span class="linenos" data-line="1851"></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-1852"><a href="#L-1852"><span class="linenos" data-line="1852"></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-1853"><a href="#L-1853"><span class="linenos" data-line="1853"></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-1854"><a href="#L-1854"><span class="linenos" data-line="1854"></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-1855"><a href="#L-1855"><span class="linenos" data-line="1855"></span></a> </span><span id="L-1856"><a href="#L-1856"><span class="linenos" data-line="1856"></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-1857"><a href="#L-1857"><span class="linenos" data-line="1857"></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-1858"><a href="#L-1858"><span class="linenos" data-line="1858"></span></a> <span class="kr">end</span> </span><span id="L-1859"><a href="#L-1859"><span class="linenos" data-line="1859"></span></a> </span><span id="L-1860"><a href="#L-1860"><span class="linenos" data-line="1860"></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-1861"><a href="#L-1861"><span class="linenos" data-line="1861"></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-1862"><a href="#L-1862"><span class="linenos" data-line="1862"></span></a> <span class="kr">return</span> </span><span id="L-1863"><a href="#L-1863"><span class="linenos" data-line="1863"></span></a> <span class="kr">end</span> </span><span id="L-1864"><a href="#L-1864"><span class="linenos" data-line="1864"></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-1865"><a href="#L-1865"><span class="linenos" data-line="1865"></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-1866"><a href="#L-1866"><span class="linenos" data-line="1866"></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-1867"><a href="#L-1867"><span class="linenos" data-line="1867"></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-1868"><a href="#L-1868"><span class="linenos" data-line="1868"></span></a> <span class="kr">return</span> </span><span id="L-1869"><a href="#L-1869"><span class="linenos" data-line="1869"></span></a> <span class="kr">end</span> </span><span id="L-1870"><a href="#L-1870"><span class="linenos" data-line="1870"></span></a> </span><span id="L-1871"><a href="#L-1871"><span class="linenos" data-line="1871"></span></a> <span class="kd">local</span> <span class="n">dates</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1872"><a href="#L-1872"><span class="linenos" data-line="1872"></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-1873"><a href="#L-1873"><span class="linenos" data-line="1873"></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-1874"><a href="#L-1874"><span class="linenos" data-line="1874"></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">"</span><span class="err">\</span><span class="s2">-(%d%d)</span><span class="err">\</span><span class="s2">-"</span><span class="p">))</span> </span><span id="L-1875"><a href="#L-1875"><span class="linenos" data-line="1875"></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">"</span><span class="err">\</span><span class="s2">-(%d%d)T"</span><span class="p">))</span> </span><span id="L-1876"><a href="#L-1876"><span class="linenos" data-line="1876"></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-1877"><a href="#L-1877"><span class="linenos" data-line="1877"></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-1878"><a href="#L-1878"><span class="linenos" data-line="1878"></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-1879"><a href="#L-1879"><span class="linenos" data-line="1879"></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">"</span><span class="err">\</span><span class="s2">-(%d%d)</span><span class="err">\</span><span class="s2">-"</span><span class="p">))</span> </span><span id="L-1880"><a href="#L-1880"><span class="linenos" data-line="1880"></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">"</span><span class="err">\</span><span class="s2">-(%d%d)T"</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">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-1882"><a href="#L-1882"><span class="linenos" data-line="1882"></span></a> </span><span id="L-1883"><a href="#L-1883"><span class="linenos" data-line="1883"></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-1884"><a href="#L-1884"><span class="linenos" data-line="1884"></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-1885"><a href="#L-1885"><span class="linenos" data-line="1885"></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-1886"><a href="#L-1886"><span class="linenos" data-line="1886"></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-1887"><a href="#L-1887"><span class="linenos" data-line="1887"></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-1888"><a href="#L-1888"><span class="linenos" data-line="1888"></span></a> <span class="o">..</span> <span class="s2">"01"</span> </span><span id="L-1889"><a href="#L-1889"><span class="linenos" data-line="1889"></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-1890"><a href="#L-1890"><span class="linenos" data-line="1890"></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-1891"><a href="#L-1891"><span class="linenos" data-line="1891"></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-1892"><a href="#L-1892"><span class="linenos" data-line="1892"></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-1893"><a href="#L-1893"><span class="linenos" data-line="1893"></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-1894"><a href="#L-1894"><span class="linenos" data-line="1894"></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-1895"><a href="#L-1895"><span class="linenos" data-line="1895"></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-1896"><a href="#L-1896"><span class="linenos" data-line="1896"></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-1897"><a href="#L-1897"><span class="linenos" data-line="1897"></span></a> <span class="kr">end</span> </span><span id="L-1898"><a href="#L-1898"><span class="linenos" data-line="1898"></span></a> <span class="kr">end</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="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-1902"><a href="#L-1902"><span class="linenos" data-line="1902"></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-1903"><a href="#L-1903"><span class="linenos" data-line="1903"></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-1904"><a href="#L-1904"><span class="linenos" data-line="1904"></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-1905"><a href="#L-1905"><span class="linenos" data-line="1905"></span></a> <span class="kr">end</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="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-1907"><a href="#L-1907"><span class="linenos" data-line="1907"></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-1908"><a href="#L-1908"><span class="linenos" data-line="1908"></span></a> <span class="kr">end</span> </span><span id="L-1909"><a href="#L-1909"><span class="linenos" data-line="1909"></span></a> <span class="kr">return</span> <span class="n">years</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">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-1913"><a href="#L-1913"><span class="linenos" data-line="1913"></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-1914"><a href="#L-1914"><span class="linenos" data-line="1914"></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-1915"><a href="#L-1915"><span class="linenos" data-line="1915"></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-1916"><a href="#L-1916"><span class="linenos" data-line="1916"></span></a> <span class="n">old</span> <span class="o">=</span> <span class="s2">"< 1"</span> </span><span id="L-1917"><a href="#L-1917"><span class="linenos" data-line="1917"></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-1918"><a href="#L-1918"><span class="linenos" data-line="1918"></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-1919"><a href="#L-1919"><span class="linenos" data-line="1919"></span></a> <span class="n">old</span> <span class="o">=</span> <span class="n">old_min</span> </span><span id="L-1920"><a href="#L-1920"><span class="linenos" data-line="1920"></span></a> <span class="kr">else</span> </span><span id="L-1921"><a href="#L-1921"><span class="linenos" data-line="1921"></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-1922"><a href="#L-1922"><span class="linenos" data-line="1922"></span></a> <span class="kr">end</span> </span><span id="L-1923"><a href="#L-1923"><span class="linenos" data-line="1923"></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-1924"><a href="#L-1924"><span class="linenos" data-line="1924"></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-1925"><a href="#L-1925"><span class="linenos" data-line="1925"></span></a> <span class="kd">local</span> <span class="n">yo</span> </span><span id="L-1926"><a href="#L-1926"><span class="linenos" data-line="1926"></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-1927"><a href="#L-1927"><span class="linenos" data-line="1927"></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-1928"><a href="#L-1928"><span class="linenos" data-line="1928"></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-1929"><a href="#L-1929"><span class="linenos" data-line="1929"></span></a> <span class="kr">end</span> </span><span id="L-1930"><a href="#L-1930"><span class="linenos" data-line="1930"></span></a> <span class="kr">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-1931"><a href="#L-1931"><span class="linenos" data-line="1931"></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-1932"><a href="#L-1932"><span class="linenos" data-line="1932"></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-1933"><a href="#L-1933"><span class="linenos" data-line="1933"></span></a> <span class="kr">end</span> </span><span id="L-1934"><a href="#L-1934"><span class="linenos" data-line="1934"></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-1935"><a href="#L-1935"><span class="linenos" data-line="1935"></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-1936"><a href="#L-1936"><span class="linenos" data-line="1936"></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-1937"><a href="#L-1937"><span class="linenos" data-line="1937"></span></a> <span class="kr">else</span> </span><span id="L-1938"><a href="#L-1938"><span class="linenos" data-line="1938"></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-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">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-1941"><a href="#L-1941"><span class="linenos" data-line="1941"></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-1942"><a href="#L-1942"><span class="linenos" data-line="1942"></span></a> <span class="kr">else</span> </span><span id="L-1943"><a href="#L-1943"><span class="linenos" data-line="1943"></span></a> <span class="n">old_expr</span> <span class="o">=</span> <span class="n">old</span> </span><span id="L-1944"><a href="#L-1944"><span class="linenos" data-line="1944"></span></a> <span class="kr">end</span> </span><span id="L-1945"><a href="#L-1945"><span class="linenos" data-line="1945"></span></a> </span><span id="L-1946"><a href="#L-1946"><span class="linenos" data-line="1946"></span></a> <span class="kr">return</span> <span class="n">old_expr</span> </span><span id="L-1947"><a href="#L-1947"><span class="linenos" data-line="1947"></span></a><span class="kr">end</span> </span><span id="L-1948"><a href="#L-1948"><span class="linenos" data-line="1948"></span></a> </span><span id="L-1949"><a href="#L-1949"><span class="linenos" data-line="1949"></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-1950"><a href="#L-1950"><span class="linenos" data-line="1950"></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-1951"><a href="#L-1951"><span class="linenos" data-line="1951"></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-1952"><a href="#L-1952"><span class="linenos" data-line="1952"></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-1953"><a href="#L-1953"><span class="linenos" data-line="1953"></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-1954"><a href="#L-1954"><span class="linenos" data-line="1954"></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-1955"><a href="#L-1955"><span class="linenos" data-line="1955"></span></a> <span class="kr">end</span> </span><span id="L-1956"><a href="#L-1956"><span class="linenos" data-line="1956"></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-1957"><a href="#L-1957"><span class="linenos" data-line="1957"></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-1958"><a href="#L-1958"><span class="linenos" data-line="1958"></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-1959"><a href="#L-1959"><span class="linenos" data-line="1959"></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-1960"><a href="#L-1960"><span class="linenos" data-line="1960"></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-1961"><a href="#L-1961"><span class="linenos" data-line="1961"></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-1962"><a href="#L-1962"><span class="linenos" data-line="1962"></span></a> <span class="kr">end</span> </span><span id="L-1963"><a href="#L-1963"><span class="linenos" data-line="1963"></span></a> </span><span id="L-1964"><a href="#L-1964"><span class="linenos" data-line="1964"></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-1965"><a href="#L-1965"><span class="linenos" data-line="1965"></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-1966"><a href="#L-1966"><span class="linenos" data-line="1966"></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-1967"><a href="#L-1967"><span class="linenos" data-line="1967"></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-1968"><a href="#L-1968"><span class="linenos" data-line="1968"></span></a> <span class="kr">else</span> </span><span id="L-1969"><a href="#L-1969"><span class="linenos" data-line="1969"></span></a> <span class="c1">-- exceptions or labels fixed</span> </span><span id="L-1970"><a href="#L-1970"><span class="linenos" data-line="1970"></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-1971"><a href="#L-1971"><span class="linenos" data-line="1971"></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-1972"><a href="#L-1972"><span class="linenos" data-line="1972"></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-1973"><a href="#L-1973"><span class="linenos" data-line="1973"></span></a> <span class="kr">end</span> </span><span id="L-1974"><a href="#L-1974"><span class="linenos" data-line="1974"></span></a> </span><span id="L-1975"><a href="#L-1975"><span class="linenos" data-line="1975"></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-1976"><a href="#L-1976"><span class="linenos" data-line="1976"></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-1977"><a href="#L-1977"><span class="linenos" data-line="1977"></span></a> <span class="kr">if</span> <span class="n">label</span> <span class="kr">then</span> </span><span id="L-1978"><a href="#L-1978"><span class="linenos" data-line="1978"></span></a> <span class="kr">if</span> <span class="n">isSet</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">itemgender</span><span class="p">)</span> <span class="ow">and</span> <span class="n">feminineGender</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">itemgender</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1979"><a href="#L-1979"><span class="linenos" data-line="1979"></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-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="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-1982"><a href="#L-1982"><span class="linenos" data-line="1982"></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-1983"><a href="#L-1983"><span class="linenos" data-line="1983"></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-1984"><a href="#L-1984"><span class="linenos" data-line="1984"></span></a> <span class="kr">end</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 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-1987"><a href="#L-1987"><span class="linenos" data-line="1987"></span></a> <span class="kr">end</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="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-1991"><a href="#L-1991"><span class="linenos" data-line="1991"></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-1992"><a href="#L-1992"><span class="linenos" data-line="1992"></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-1993"><a href="#L-1993"><span class="linenos" data-line="1993"></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-1994"><a href="#L-1994"><span class="linenos" data-line="1994"></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-1995"><a href="#L-1995"><span class="linenos" data-line="1995"></span></a> <span class="kr">else</span> </span><span id="L-1996"><a href="#L-1996"><span class="linenos" data-line="1996"></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-1997"><a href="#L-1997"><span class="linenos" data-line="1997"></span></a> <span class="kr">end</span> </span><span id="L-1998"><a href="#L-1998"><span class="linenos" data-line="1998"></span></a><span class="kr">end</span> </span><span id="L-1999"><a href="#L-1999"><span class="linenos" data-line="1999"></span></a> </span><span id="L-2000"><a href="#L-2000"><span class="linenos" data-line="2000"></span></a><span class="c1">-- Utilities -----------------------------</span> </span><span id="L-2001"><a href="#L-2001"><span class="linenos" data-line="2001"></span></a><span class="c1">-- See also module ../debug.</span> </span><span id="L-2002"><a href="#L-2002"><span class="linenos" data-line="2002"></span></a> </span><span id="L-2003"><a href="#L-2003"><span class="linenos" data-line="2003"></span></a><span class="c1">-- Copied from Module:Wikibase</span> </span><span id="L-2004"><a href="#L-2004"><span class="linenos" data-line="2004"></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-2005"><a href="#L-2005"><span class="linenos" data-line="2005"></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-2006"><a href="#L-2006"><span class="linenos" data-line="2006"></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-2007"><a href="#L-2007"><span class="linenos" data-line="2007"></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-2008"><a href="#L-2008"><span class="linenos" data-line="2008"></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-2009"><a href="#L-2009"><span class="linenos" data-line="2009"></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-2010"><a href="#L-2010"><span class="linenos" data-line="2010"></span></a><span class="kr">end</span> </span><span id="L-2011"><a href="#L-2011"><span class="linenos" data-line="2011"></span></a> </span><span id="L-2012"><a href="#L-2012"><span class="linenos" data-line="2012"></span></a><span class="c1">-- Helper function for the default language code used</span> </span><span id="L-2013"><a href="#L-2013"><span class="linenos" data-line="2013"></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-2014"><a href="#L-2014"><span class="linenos" data-line="2014"></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-2015"><a href="#L-2015"><span class="linenos" data-line="2015"></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-2016"><a href="#L-2016"><span class="linenos" data-line="2016"></span></a><span class="kr">end</span> </span><span id="L-2017"><a href="#L-2017"><span class="linenos" data-line="2017"></span></a> </span><span id="L-2018"><a href="#L-2018"><span class="linenos" data-line="2018"></span></a><span class="c1">-- Number of statements</span> </span><span id="L-2019"><a href="#L-2019"><span class="linenos" data-line="2019"></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-2020"><a href="#L-2020"><span class="linenos" data-line="2020"></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-2021"><a href="#L-2021"><span class="linenos" data-line="2021"></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-2022"><a href="#L-2022"><span class="linenos" data-line="2022"></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-2023"><a href="#L-2023"><span class="linenos" data-line="2023"></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-2024"><a href="#L-2024"><span class="linenos" data-line="2024"></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-2025"><a href="#L-2025"><span class="linenos" data-line="2025"></span></a> <span class="kd">local</span> <span class="n">num</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-2026"><a href="#L-2026"><span class="linenos" data-line="2026"></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-2027"><a href="#L-2027"><span class="linenos" data-line="2027"></span></a> <span class="kd">local</span> <span class="n">largs</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-2028"><a href="#L-2028"><span class="linenos" data-line="2028"></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-2029"><a href="#L-2029"><span class="linenos" data-line="2029"></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-2030"><a href="#L-2030"><span class="linenos" data-line="2030"></span></a> <span class="kr">end</span> </span><span id="L-2031"><a href="#L-2031"><span class="linenos" data-line="2031"></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-2032"><a href="#L-2032"><span class="linenos" data-line="2032"></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-2033"><a href="#L-2033"><span class="linenos" data-line="2033"></span></a> <span class="kr">end</span> </span><span id="L-2034"><a href="#L-2034"><span class="linenos" data-line="2034"></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-2035"><a href="#L-2035"><span class="linenos" data-line="2035"></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-2036"><a href="#L-2036"><span class="linenos" data-line="2036"></span></a> <span class="kr">return</span> <span class="n">num</span> </span><span id="L-2037"><a href="#L-2037"><span class="linenos" data-line="2037"></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-2038"><a href="#L-2038"><span class="linenos" data-line="2038"></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-2039"><a href="#L-2039"><span class="linenos" data-line="2039"></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-2040"><a href="#L-2040"><span class="linenos" data-line="2040"></span></a> <span class="kr">if</span> <span class="n">values</span> <span class="kr">then</span> </span><span id="L-2041"><a href="#L-2041"><span class="linenos" data-line="2041"></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-2042"><a href="#L-2042"><span class="linenos" data-line="2042"></span></a> <span class="kr">end</span> </span><span id="L-2043"><a href="#L-2043"><span class="linenos" data-line="2043"></span></a> <span class="kr">else</span> </span><span id="L-2044"><a href="#L-2044"><span class="linenos" data-line="2044"></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-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 class="kr">return</span> <span class="o">#</span><span class="n">num</span> </span><span id="L-2047"><a href="#L-2047"><span class="linenos" data-line="2047"></span></a><span class="kr">end</span> </span><span id="L-2048"><a href="#L-2048"><span class="linenos" data-line="2048"></span></a> </span><span id="L-2049"><a href="#L-2049"><span class="linenos" data-line="2049"></span></a><span class="c1">-- Returns true if property datavalue is found excluding novalue/somevalue</span> </span><span id="L-2050"><a href="#L-2050"><span class="linenos" data-line="2050"></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-2051"><a href="#L-2051"><span class="linenos" data-line="2051"></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-2052"><a href="#L-2052"><span class="linenos" data-line="2052"></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-2053"><a href="#L-2053"><span class="linenos" data-line="2053"></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-2054"><a href="#L-2054"><span class="linenos" data-line="2054"></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-2055"><a href="#L-2055"><span class="linenos" data-line="2055"></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-2056"><a href="#L-2056"><span class="linenos" data-line="2056"></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-2057"><a href="#L-2057"><span class="linenos" data-line="2057"></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-2058"><a href="#L-2058"><span class="linenos" data-line="2058"></span></a><span class="kr">end</span> </span><span id="L-2059"><a href="#L-2059"><span class="linenos" data-line="2059"></span></a> </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">editAtWikidata</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">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-2062"><a href="#L-2062"><span class="linenos" data-line="2062"></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-2063"><a href="#L-2063"><span class="linenos" data-line="2063"></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-2064"><a href="#L-2064"><span class="linenos" data-line="2064"></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-2065"><a href="#L-2065"><span class="linenos" data-line="2065"></span></a> <span class="kd">local</span> <span class="n">param</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-2066"><a href="#L-2066"><span class="linenos" data-line="2066"></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-2067"><a href="#L-2067"><span class="linenos" data-line="2067"></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-2068"><a href="#L-2068"><span class="linenos" data-line="2068"></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-2069"><a href="#L-2069"><span class="linenos" data-line="2069"></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-2070"><a href="#L-2070"><span class="linenos" data-line="2070"></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-2071"><a href="#L-2071"><span class="linenos" data-line="2071"></span></a><span class="kr">end</span> </span><span id="L-2072"><a href="#L-2072"><span class="linenos" data-line="2072"></span></a> </span><span id="L-2073"><a href="#L-2073"><span class="linenos" data-line="2073"></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-2074"><a href="#L-2074"><span class="linenos" data-line="2074"></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-2075"><a href="#L-2075"><span class="linenos" data-line="2075"></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-2076"><a href="#L-2076"><span class="linenos" data-line="2076"></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-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><span id="L-2079"><a href="#L-2079"><span class="linenos" data-line="2079"></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‐phpnv Cached time: 20241124235656 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.189 seconds Real time usage: 0.283 seconds Preprocessor visited node count: 1848/1000000 Post‐expand include size: 45540/2097152 bytes Template argument size: 1045/2097152 bytes Highest expansion depth: 9/100 Expensive parser function count: 0/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 1581/5000000 bytes Lua time usage: 0.076/10.000 seconds Lua memory usage: 1527721/52428800 bytes Number of Wikibase entities loaded: 1/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 229.340 1 -total 100.00% 229.340 1 Module:Wikidades/doc 67.38% 154.523 30 Teimpléad:P 58.48% 134.122 30 Teimpléad:GetLabelFix 13.61% 31.211 5 Teimpléad:Q 5.06% 11.612 10 Teimpléad:Tl 1.60% 3.667 1 Teimpléad:Wikidatapowered --> </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="">Aisghafa ó "<a dir="ltr" href="https://ga.wikipedia.org/w/index.php?title=Module:Wikidades&oldid=1229700">https://ga.wikipedia.org/w/index.php?title=Module:Wikidades&oldid=1229700</a>"</div></div> <div id="catlinks" class="catlinks catlinks-allhidden" data-mw="interface"></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> Tugadh an leathanach seo cothrom le dáta an 24 Lúnasa 2024 ag 16:46.<br /></li> <li id="footer-info-copyright">Tá an téacs ar fáil faoi réir an <a rel="nofollow" class="external text" href="//creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution/Share-Alike License</a>; féadann téarmaí eile a bheith i bhfeidhm sa bhreis. Féach ar <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Téarmaí Úsáide</a> le sonraí a fháil. <br /> Trádmharc cláraithe is ea Wikipedia® de chuid <a rel="nofollow" class="external text" href="https://www.wikimediafoundation.org">Wikimedia Foundation, Inc.</a>, eagraíocht neamhbhrabúis.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Polasaí príobháideachais</a></li> <li id="footer-places-about"><a href="/wiki/Vicip%C3%A9id:Maidir_leis">Maidir le Vicipéid</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Vicip%C3%A9id:S%C3%A9anadh_ginear%C3%A1lta">Séanadh</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Forbróirí</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/ga.wikipedia.org">Staitisticí</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Ráiteas fianán</a></li> <li id="footer-places-mobileview"><a href="//ga.m.wikipedia.org/w/index.php?title=Module:Wikidades&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Amharc móibíleach</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-phpnv","wgBackendResponseTime":653,"wgPageParseReport":{"limitreport":{"cputime":"0.189","walltime":"0.283","ppvisitednodes":{"value":1848,"limit":1000000},"postexpandincludesize":{"value":45540,"limit":2097152},"templateargumentsize":{"value":1045,"limit":2097152},"expansiondepth":{"value":9,"limit":100},"expensivefunctioncount":{"value":0,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":1581,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 229.340 1 -total","100.00% 229.340 1 Module:Wikidades/doc"," 67.38% 154.523 30 Teimpléad:P"," 58.48% 134.122 30 Teimpléad:GetLabelFix"," 13.61% 31.211 5 Teimpléad:Q"," 5.06% 11.612 10 Teimpléad:Tl"," 1.60% 3.667 1 Teimpléad:Wikidatapowered"]},"scribunto":{"limitreport-timeusage":{"value":"0.076","limit":"10.000"},"limitreport-memusage":{"value":1527721,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-phpnv","timestamp":"20241124235656","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>