CINXE.COM
Module:Wd: Difference between revisions - Wikipedia
<!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-disabled 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="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Module:Wd: Difference between revisions - Wikipedia</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-disabled 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(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy" ,"wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"05a3c009-7bab-456d-9111-c41ab9e249bb","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Module:Wd","wgTitle":"Wd","wgCurRevisionId":1258646059,"wgRevisionId":1258646059,"wgArticleId":51376229,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Wikipedia template-protected modules","Modules subject to page protection","Wikidata modules","Modules using data from Wikidata"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"Scribunto","wgRelevantPageName":"Module:Wd","wgRelevantArticleId":51376229,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["templateeditor"],"wgRestrictionMove":["templateeditor"],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive": false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":70000,"extRevisionSliderTimeOffset":0,"wgDiffOldId":1249550606,"wgDiffNewId":1258646059,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q24733825","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.visualEditor.diffPage.init.styles":"ready","oojs-ui.styles.icons-accessibility":"ready","oojs-ui.styles.icons-editing-advanced":"ready","oojs-ui-core.styles":"ready","oojs-ui.styles.indicators":"ready","mediawiki.widgets.styles":"ready","oojs-ui-core.icons":"ready","ext.RevisionSlider.lazyCss":"ready","mediawiki.interface.helpers.styles":"ready","mediawiki.diff.styles":"ready","ext.cite.styles":"ready","ext.pygments":"ready","ext.math.styles":"ready","ext.templateData":"ready","ext.templateData.images":"ready","jquery.tablesorter.styles":"ready","mediawiki.helplink":"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.visualEditor.diffPage.init","ext.RevisionSlider.lazyJs","mediawiki.diff","ext.cite.ux-enhancements","ext.pygments.view","ext.math.popup","jquery.tablesorter","mediawiki.page.media","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","wikibase.client.vector-2022","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.RevisionSlider.lazyCss%7Cext.cite.styles%7Cext.math.styles%7Cext.pygments%2CtemplateData%2CwikimediaBadges%7Cext.templateData.images%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.visualEditor.diffPage.init.styles%7Cext.wikimediamessages.styles%7Cjquery.tablesorter.styles%7Cmediawiki.diff.styles%7Cmediawiki.helplink%7Cmediawiki.interface.helpers.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.icons-accessibility%2Cicons-editing-advanced%2Cindicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&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="noindex,nofollow,max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Module:Wd: Difference between revisions - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Module:Wd"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Module:Wd"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="mw-article-diff skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject page-Module_Wd rootpage-Module_Wd 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="Main menu" > <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">Main menu</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">Main menu</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">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </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/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</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="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <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="Appearance"> <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="Appearance" > <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">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en" class=""><span>Donate</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=Special:CreateAccount&returnto=Module%3AWd&returntoquery=curid%3D51376229%26diff%3D1258646059%26oldid%3D1249550606" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</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=Special:UserLogin&returnto=Module%3AWd&returntoquery=curid%3D51376229%26diff%3D1258646059%26oldid%3D1249550606" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</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="Log in and 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="Personal tools" > <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">Personal tools</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="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Module%3AWd&returntoquery=curid%3D51376229%26diff%3D1258646059%26oldid%3D1249550606" 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>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Module%3AWd&returntoquery=curid%3D51376229%26diff%3D1258646059%26oldid%3D1249550606" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</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/Help: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/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </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="Contents" 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">Contents</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">hide</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">(Top)</div> </a> </li> <li id="toc-Usage" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Usage"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Usage</span> </div> </a> <button aria-controls="toc-Usage-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 Usage subsection</span> </button> <ul id="toc-Usage-sublist" class="vector-toc-list"> <li id="toc-Common_use_cases" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Common_use_cases"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1</span> <span>Common use cases</span> </div> </a> <ul id="toc-Common_use_cases-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Commands" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Commands"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Commands</span> </div> </a> <button aria-controls="toc-Commands-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 Commands subsection</span> </button> <ul id="toc-Commands-sublist" class="vector-toc-list"> <li id="toc-Claim_class" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Claim_class"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Claim class</span> </div> </a> <ul id="toc-Claim_class-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-General_class" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#General_class"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>General class</span> </div> </a> <ul id="toc-General_class-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Flags" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Flags"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Flags</span> </div> </a> <button aria-controls="toc-Flags-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 Flags subsection</span> </button> <ul id="toc-Flags-sublist" class="vector-toc-list"> <li id="toc-Command_flags" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Command_flags"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Command flags</span> </div> </a> <ul id="toc-Command_flags-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Configuration_flags" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Configuration_flags"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>Configuration flags</span> </div> </a> <ul id="toc-Configuration_flags-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Arguments" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Arguments"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Arguments</span> </div> </a> <button aria-controls="toc-Arguments-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 Arguments subsection</span> </button> <ul id="toc-Arguments-sublist" class="vector-toc-list"> <li id="toc-Positional_arguments" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Positional_arguments"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Positional arguments</span> </div> </a> <ul id="toc-Positional_arguments-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Named_arguments" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Named_arguments"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>Named arguments</span> </div> </a> <ul id="toc-Named_arguments-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Property_aliases" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Property_aliases"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.3</span> <span>Property aliases</span> </div> </a> <ul id="toc-Property_aliases-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Advanced_usage" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Advanced_usage"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Advanced usage</span> </div> </a> <ul id="toc-Advanced_usage-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Examples" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Examples"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Examples</span> </div> </a> <button aria-controls="toc-Examples-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 Examples subsection</span> </button> <ul id="toc-Examples-sublist" class="vector-toc-list"> <li id="toc-Example_references" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Example_references"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.1</span> <span>Example references</span> </div> </a> <ul id="toc-Example_references-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-TemplateData" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#TemplateData"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>TemplateData</span> </div> </a> <ul id="toc-TemplateData-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">9</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="Contents" 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">Module:Wd: Difference between revisions</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 127 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-127" 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">127 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-af mw-list-item"><a href="https://af.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Afrikaans" lang="af" hreflang="af" data-title="Module:Wd" data-language-autonym="Afrikaans" data-language-local-name="Afrikaans" class="interlanguage-link-target"><span>Afrikaans</span></a></li><li class="interlanguage-link interwiki-ang mw-list-item"><a href="https://ang.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Old English" lang="ang" hreflang="ang" data-title="Module:Wd" data-language-autonym="Ænglisc" data-language-local-name="Old English" class="interlanguage-link-target"><span>Ænglisc</span></a></li><li class="interlanguage-link interwiki-ab mw-list-item"><a href="https://ab.wikipedia.org/wiki/%D0%90%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wd" title="Амодуль:Wd – Abkhazian" lang="ab" hreflang="ab" data-title="Амодуль:Wd" data-language-autonym="Аԥсшәа" data-language-local-name="Abkhazian" class="interlanguage-link-target"><span>Аԥсшәа</span></a></li><li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D9%88%D8%AD%D8%AF%D8%A9:Wd" title="وحدة:Wd – Arabic" lang="ar" hreflang="ar" data-title="وحدة:Wd" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-arc mw-list-item"><a href="https://arc.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Aramaic" lang="arc" hreflang="arc" data-title="Module:Wd" data-language-autonym="ܐܪܡܝܐ" data-language-local-name="Aramaic" class="interlanguage-link-target"><span>ܐܪܡܝܐ</span></a></li><li class="interlanguage-link interwiki-as mw-list-item"><a href="https://as.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Assamese" lang="as" hreflang="as" data-title="Module:Wd" data-language-autonym="অসমীয়া" data-language-local-name="Assamese" class="interlanguage-link-target"><span>অসমীয়া</span></a></li><li class="interlanguage-link interwiki-av mw-list-item"><a href="https://av.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wd" title="Модуль:Wd – Avaric" lang="av" hreflang="av" data-title="Модуль:Wd" data-language-autonym="Авар" data-language-local-name="Avaric" class="interlanguage-link-target"><span>Авар</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Azerbaijani" lang="az" hreflang="az" data-title="Modul:Wd" data-language-autonym="Azərbaycanca" data-language-local-name="Azerbaijani" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-azb mw-list-item"><a href="https://azb.wikipedia.org/wiki/%D9%85%D8%A7%DA%98%D9%88%D9%84:Wd" title="ماژول:Wd – South Azerbaijani" lang="azb" hreflang="azb" data-title="ماژول:Wd" data-language-autonym="تۆرکجه" data-language-local-name="South Azerbaijani" class="interlanguage-link-target"><span>تۆرکجه</span></a></li><li class="interlanguage-link interwiki-ban mw-list-item"><a href="https://ban.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Balinese" lang="ban" hreflang="ban" data-title="Modul:Wd" data-language-autonym="Basa Bali" data-language-local-name="Balinese" class="interlanguage-link-target"><span>Basa Bali</span></a></li><li class="interlanguage-link interwiki-bn mw-list-item"><a href="https://bn.wikipedia.org/wiki/%E0%A6%AE%E0%A6%A1%E0%A6%BF%E0%A6%89%E0%A6%B2:Wd" title="মডিউল:Wd – Bangla" lang="bn" hreflang="bn" data-title="মডিউল:Wd" data-language-autonym="বাংলা" data-language-local-name="Bangla" class="interlanguage-link-target"><span>বাংলা</span></a></li><li class="interlanguage-link interwiki-zh-min-nan mw-list-item"><a href="https://zh-min-nan.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:Wd" title="模組:Wd – Minnan" lang="nan" hreflang="nan" data-title="模組:Wd" data-language-autonym="閩南語 / Bân-lâm-gú" data-language-local-name="Minnan" class="interlanguage-link-target"><span>閩南語 / Bân-lâm-gú</span></a></li><li class="interlanguage-link interwiki-be mw-list-item"><a href="https://be.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wd" title="Модуль:Wd – Belarusian" lang="be" hreflang="be" data-title="Модуль:Wd" data-language-autonym="Беларуская" data-language-local-name="Belarusian" class="interlanguage-link-target"><span>Беларуская</span></a></li><li class="interlanguage-link interwiki-be-x-old mw-list-item"><a href="https://be-tarask.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%92%D1%96%D0%BA%D1%96%D0%B7%D1%8C%D0%B2%D0%B5%D1%81%D1%82%D0%BA%D1%964" title="Модуль:Вікізьвесткі4 – Belarusian (Taraškievica orthography)" lang="be-tarask" hreflang="be-tarask" data-title="Модуль:Вікізьвесткі4" data-language-autonym="Беларуская (тарашкевіца)" data-language-local-name="Belarusian (Taraškievica orthography)" class="interlanguage-link-target"><span>Беларуская (тарашкевіца)</span></a></li><li class="interlanguage-link interwiki-bh mw-list-item"><a href="https://bh.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Bhojpuri" lang="bh" hreflang="bh" data-title="Module:Wd" data-language-autonym="भोजपुरी" data-language-local-name="Bhojpuri" class="interlanguage-link-target"><span>भोजपुरी</span></a></li><li class="interlanguage-link interwiki-bcl mw-list-item"><a href="https://bcl.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Central Bikol" lang="bcl" hreflang="bcl" data-title="Module:Wd" data-language-autonym="Bikol Central" data-language-local-name="Central Bikol" class="interlanguage-link-target"><span>Bikol Central</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Wd" title="Модул:Wd – Bulgarian" lang="bg" hreflang="bg" data-title="Модул:Wd" data-language-autonym="Български" data-language-local-name="Bulgarian" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-bs mw-list-item"><a href="https://bs.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Bosnian" lang="bs" hreflang="bs" data-title="Modul:Wd" data-language-autonym="Bosanski" data-language-local-name="Bosnian" class="interlanguage-link-target"><span>Bosanski</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/M%C3%B2dul:Wd" title="Mòdul:Wd – Catalan" lang="ca" hreflang="ca" data-title="Mòdul:Wd" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cv mw-list-item"><a href="https://cv.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wd" title="Модуль:Wd – Chuvash" lang="cv" hreflang="cv" data-title="Модуль:Wd" data-language-autonym="Чӑвашла" data-language-local-name="Chuvash" class="interlanguage-link-target"><span>Чӑвашла</span></a></li><li class="interlanguage-link interwiki-ceb mw-list-item"><a href="https://ceb.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Cebuano" lang="ceb" hreflang="ceb" data-title="Module:Wd" data-language-autonym="Cebuano" data-language-local-name="Cebuano" class="interlanguage-link-target"><span>Cebuano</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Czech" lang="cs" hreflang="cs" data-title="Modul:Wd" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-co mw-list-item"><a href="https://co.wikipedia.org/wiki/Modulo:Wd" title="Modulo:Wd – Corsican" lang="co" hreflang="co" data-title="Modulo:Wd" data-language-autonym="Corsu" data-language-local-name="Corsican" class="interlanguage-link-target"><span>Corsu</span></a></li><li class="interlanguage-link interwiki-cy mw-list-item"><a href="https://cy.wikipedia.org/wiki/Modiwl:Wd" title="Modiwl:Wd – Welsh" lang="cy" hreflang="cy" data-title="Modiwl:Wd" data-language-autonym="Cymraeg" data-language-local-name="Welsh" class="interlanguage-link-target"><span>Cymraeg</span></a></li><li class="interlanguage-link interwiki-dag mw-list-item"><a href="https://dag.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Dagbani" lang="dag" hreflang="dag" data-title="Module:Wd" data-language-autonym="Dagbanli" data-language-local-name="Dagbani" class="interlanguage-link-target"><span>Dagbanli</span></a></li><li class="interlanguage-link interwiki-da mw-list-item"><a href="https://da.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Danish" lang="da" hreflang="da" data-title="Modul:Wd" data-language-autonym="Dansk" data-language-local-name="Danish" class="interlanguage-link-target"><span>Dansk</span></a></li><li class="interlanguage-link interwiki-ary mw-list-item"><a href="https://ary.wikipedia.org/wiki/%D9%85%D9%88%D8%AF%D9%88%D9%84:Wd" title="مودول:Wd – Moroccan Arabic" lang="ary" hreflang="ary" data-title="مودول:Wd" data-language-autonym="الدارجة" data-language-local-name="Moroccan Arabic" class="interlanguage-link-target"><span>الدارجة</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/Moodul:Wd" title="Moodul:Wd – Estonian" lang="et" hreflang="et" data-title="Moodul:Wd" data-language-autonym="Eesti" data-language-local-name="Estonian" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Greek" lang="el" hreflang="el" data-title="Module:Wd" data-language-autonym="Ελληνικά" data-language-local-name="Greek" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/M%C3%B3dulo:Wd" title="Módulo:Wd – Spanish" lang="es" hreflang="es" data-title="Módulo:Wd" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-eo mw-list-item"><a href="https://eo.wikipedia.org/wiki/Modulo:Wd" title="Modulo:Wd – Esperanto" lang="eo" hreflang="eo" data-title="Modulo:Wd" 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:Wd" title="Modulu:Wd – Basque" lang="eu" hreflang="eu" data-title="Modulu:Wd" data-language-autonym="Euskara" data-language-local-name="Basque" class="interlanguage-link-target"><span>Euskara</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Wd" title="پودمان:Wd – Persian" lang="fa" hreflang="fa" data-title="پودمان:Wd" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Module:Wd" title="Module:Wd – French" lang="fr" hreflang="fr" data-title="Module:Wd" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ga mw-list-item"><a href="https://ga.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Irish" lang="ga" hreflang="ga" data-title="Module:Wd" data-language-autonym="Gaeilge" data-language-local-name="Irish" class="interlanguage-link-target"><span>Gaeilge</span></a></li><li class="interlanguage-link interwiki-gv mw-list-item"><a href="https://gv.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Manx" lang="gv" hreflang="gv" data-title="Module:Wd" data-language-autonym="Gaelg" data-language-local-name="Manx" class="interlanguage-link-target"><span>Gaelg</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/M%C3%B3dulo:Wd" title="Módulo:Wd – Galician" lang="gl" hreflang="gl" data-title="Módulo:Wd" data-language-autonym="Galego" data-language-local-name="Galician" 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:Wd" title="ماجۊل:Wd – Gilaki" lang="glk" hreflang="glk" data-title="ماجۊل:Wd" data-language-autonym="گیلکی" data-language-local-name="Gilaki" class="interlanguage-link-target"><span>گیلکی</span></a></li><li class="interlanguage-link interwiki-gu mw-list-item"><a href="https://gu.wikipedia.org/wiki/%E0%AA%B5%E0%AA%BF%E0%AA%AD%E0%AA%BE%E0%AA%97:Wd" title="વિભાગ:Wd – Gujarati" lang="gu" hreflang="gu" data-title="વિભાગ:Wd" data-language-autonym="ગુજરાતી" data-language-local-name="Gujarati" class="interlanguage-link-target"><span>ગુજરાતી</span></a></li><li class="interlanguage-link interwiki-hak mw-list-item"><a href="https://hak.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:Wd" title="模組:Wd – Hakka Chinese" lang="hak" hreflang="hak" data-title="模組:Wd" data-language-autonym="客家語 / Hak-kâ-ngî" data-language-local-name="Hakka Chinese" class="interlanguage-link-target"><span>客家語 / Hak-kâ-ngî</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%93%88:Wd" title="모듈:Wd – Korean" lang="ko" hreflang="ko" data-title="모듈:Wd" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-ha mw-list-item"><a href="https://ha.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Hausa" lang="ha" hreflang="ha" data-title="Module:Wd" data-language-autonym="Hausa" data-language-local-name="Hausa" class="interlanguage-link-target"><span>Hausa</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/%D5%84%D5%B8%D5%A4%D5%B8%D6%82%D5%AC:Wd" title="Մոդուլ:Wd – Armenian" lang="hy" hreflang="hy" data-title="Մոդուլ:Wd" data-language-autonym="Հայերեն" data-language-local-name="Armenian" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-hi mw-list-item"><a href="https://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%89%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%82%E0%A4%B2:Wd" title="मॉड्यूल:Wd – Hindi" lang="hi" hreflang="hi" data-title="मॉड्यूल:Wd" data-language-autonym="हिन्दी" data-language-local-name="Hindi" class="interlanguage-link-target"><span>हिन्दी</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Croatian" lang="hr" hreflang="hr" data-title="Modul:Wd" data-language-autonym="Hrvatski" data-language-local-name="Croatian" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-ilo mw-list-item"><a href="https://ilo.wikipedia.org/wiki/Modulo:Wd" title="Modulo:Wd – Iloko" lang="ilo" hreflang="ilo" data-title="Modulo:Wd" data-language-autonym="Ilokano" data-language-local-name="Iloko" class="interlanguage-link-target"><span>Ilokano</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Indonesian" lang="id" hreflang="id" data-title="Modul:Wd" data-language-autonym="Bahasa Indonesia" data-language-local-name="Indonesian" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-ia mw-list-item"><a href="https://ia.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Interlingua" lang="ia" hreflang="ia" data-title="Module:Wd" data-language-autonym="Interlingua" data-language-local-name="Interlingua" class="interlanguage-link-target"><span>Interlingua</span></a></li><li class="interlanguage-link interwiki-os mw-list-item"><a href="https://os.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wd~en" title="Модуль:Wd~en – Ossetic" lang="os" hreflang="os" data-title="Модуль:Wd~en" data-language-autonym="Ирон" data-language-local-name="Ossetic" class="interlanguage-link-target"><span>Ирон</span></a></li><li class="interlanguage-link interwiki-is mw-list-item"><a href="https://is.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Icelandic" lang="is" hreflang="is" data-title="Module:Wd" data-language-autonym="Íslenska" data-language-local-name="Icelandic" class="interlanguage-link-target"><span>Íslenska</span></a></li><li class="interlanguage-link interwiki-jv mw-list-item"><a href="https://jv.wikipedia.org/wiki/Modhul:Wd" title="Modhul:Wd – Javanese" lang="jv" hreflang="jv" data-title="Modhul:Wd" data-language-autonym="Jawa" data-language-local-name="Javanese" class="interlanguage-link-target"><span>Jawa</span></a></li><li class="interlanguage-link interwiki-kn mw-list-item"><a href="https://kn.wikipedia.org/wiki/%E0%B2%AE%E0%B2%BE%E0%B2%A1%E0%B3%8D%E0%B2%AF%E0%B3%82%E0%B2%B2%E0%B3%8D:Wd" title="ಮಾಡ್ಯೂಲ್:Wd – Kannada" lang="kn" hreflang="kn" data-title="ಮಾಡ್ಯೂಲ್:Wd" data-language-autonym="ಕನ್ನಡ" data-language-local-name="Kannada" class="interlanguage-link-target"><span>ಕನ್ನಡ</span></a></li><li class="interlanguage-link interwiki-ka mw-list-item"><a href="https://ka.wikipedia.org/wiki/%E1%83%9B%E1%83%9D%E1%83%93%E1%83%A3%E1%83%9A%E1%83%98:Wd" title="მოდული:Wd – Georgian" lang="ka" hreflang="ka" data-title="მოდული:Wd" data-language-autonym="ქართული" data-language-local-name="Georgian" class="interlanguage-link-target"><span>ქართული</span></a></li><li class="interlanguage-link interwiki-kw mw-list-item"><a href="https://kw.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Cornish" lang="kw" hreflang="kw" data-title="Module:Wd" data-language-autonym="Kernowek" data-language-local-name="Cornish" class="interlanguage-link-target"><span>Kernowek</span></a></li><li class="interlanguage-link interwiki-ku mw-list-item"><a href="https://ku.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Kurdish" lang="ku" hreflang="ku" data-title="Modul:Wd" data-language-autonym="Kurdî" data-language-local-name="Kurdish" class="interlanguage-link-target"><span>Kurdî</span></a></li><li class="interlanguage-link interwiki-ky mw-list-item"><a href="https://ky.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wd" title="Модуль:Wd – Kyrgyz" lang="ky" hreflang="ky" data-title="Модуль:Wd" data-language-autonym="Кыргызча" data-language-local-name="Kyrgyz" class="interlanguage-link-target"><span>Кыргызча</span></a></li><li class="interlanguage-link interwiki-lld mw-list-item"><a href="https://lld.wikipedia.org/wiki/Modulo:Wd" title="Modulo:Wd – Ladin" lang="lld" hreflang="lld" data-title="Modulo:Wd" data-language-autonym="Ladin" data-language-local-name="Ladin" class="interlanguage-link-target"><span>Ladin</span></a></li><li class="interlanguage-link interwiki-lv mw-list-item"><a href="https://lv.wikipedia.org/wiki/Modulis:Wd" title="Modulis:Wd – Latvian" lang="lv" hreflang="lv" data-title="Modulis:Wd" data-language-autonym="Latviešu" data-language-local-name="Latvian" class="interlanguage-link-target"><span>Latviešu</span></a></li><li class="interlanguage-link interwiki-lb mw-list-item"><a href="https://lb.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Luxembourgish" lang="lb" hreflang="lb" data-title="Modul:Wd" data-language-autonym="Lëtzebuergesch" data-language-local-name="Luxembourgish" class="interlanguage-link-target"><span>Lëtzebuergesch</span></a></li><li class="interlanguage-link interwiki-lt mw-list-item"><a href="https://lt.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Lithuanian" lang="lt" hreflang="lt" data-title="Module:Wd" data-language-autonym="Lietuvių" data-language-local-name="Lithuanian" class="interlanguage-link-target"><span>Lietuvių</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Hungarian" lang="hu" hreflang="hu" data-title="Modul:Wd" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-mai mw-list-item"><a href="https://mai.wikipedia.org/wiki/%E0%A4%AE%E0%A5%8B%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%81%E0%A4%B2:Wd" title="मोड्युल:Wd – Maithili" lang="mai" hreflang="mai" data-title="मोड्युल:Wd" data-language-autonym="मैथिली" data-language-local-name="Maithili" class="interlanguage-link-target"><span>मैथिली</span></a></li><li class="interlanguage-link interwiki-mk mw-list-item"><a href="https://mk.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Wd" title="Модул:Wd – Macedonian" lang="mk" hreflang="mk" data-title="Модул:Wd" data-language-autonym="Македонски" data-language-local-name="Macedonian" class="interlanguage-link-target"><span>Македонски</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Wd" title="ഘടകം:Wd – Malayalam" lang="ml" hreflang="ml" data-title="ഘടകം:Wd" data-language-autonym="മലയാളം" data-language-local-name="Malayalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-mr mw-list-item"><a href="https://mr.wikipedia.org/wiki/%E0%A4%B5%E0%A4%BF%E0%A4%AD%E0%A4%BE%E0%A4%97:Wd" title="विभाग:Wd – Marathi" lang="mr" hreflang="mr" data-title="विभाग:Wd" data-language-autonym="मराठी" data-language-local-name="Marathi" class="interlanguage-link-target"><span>मराठी</span></a></li><li class="interlanguage-link interwiki-mnw mw-list-item"><a href="https://mnw.wikipedia.org/wiki/%E1%80%99%E1%80%9D%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0:Wd" title="မဝ်ဂျူ:Wd – Mon" lang="mnw" hreflang="mnw" data-title="မဝ်ဂျူ:Wd" data-language-autonym="ဘာသာမန်" data-language-local-name="Mon" class="interlanguage-link-target"><span>ဘာသာမန်</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Malay" lang="ms" hreflang="ms" data-title="Modul:Wd" data-language-autonym="Bahasa Melayu" data-language-local-name="Malay" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-min mw-list-item"><a href="https://min.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Minangkabau" lang="min" hreflang="min" data-title="Modul:Wd" data-language-autonym="Minangkabau" data-language-local-name="Minangkabau" class="interlanguage-link-target"><span>Minangkabau</span></a></li><li class="interlanguage-link interwiki-cdo mw-list-item"><a href="https://cdo.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:Wd" title="模組:Wd – Mindong" lang="cdo" hreflang="cdo" data-title="模組:Wd" data-language-autonym="閩東語 / Mìng-dĕ̤ng-ngṳ̄" data-language-local-name="Mindong" class="interlanguage-link-target"><span>閩東語 / Mìng-dĕ̤ng-ngṳ̄</span></a></li><li class="interlanguage-link interwiki-mdf mw-list-item"><a href="https://mdf.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wd" title="Модуль:Wd – Moksha" lang="mdf" hreflang="mdf" data-title="Модуль:Wd" data-language-autonym="Мокшень" data-language-local-name="Moksha" class="interlanguage-link-target"><span>Мокшень</span></a></li><li class="interlanguage-link interwiki-mn mw-list-item"><a href="https://mn.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Mongolian" lang="mn" hreflang="mn" data-title="Module:Wd" data-language-autonym="Монгол" data-language-local-name="Mongolian" class="interlanguage-link-target"><span>Монгол</span></a></li><li class="interlanguage-link interwiki-my mw-list-item"><a href="https://my.wikipedia.org/wiki/%E1%80%99%E1%80%B1%E1%80%AC%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0%E1%80%B8:Wd" title="မော်ဂျူး:Wd – Burmese" lang="my" hreflang="my" data-title="မော်ဂျူး:Wd" data-language-autonym="မြန်မာဘာသာ" data-language-local-name="Burmese" class="interlanguage-link-target"><span>မြန်မာဘာသာ</span></a></li><li class="interlanguage-link interwiki-nah mw-list-item"><a href="https://nah.wikipedia.org/wiki/M%C3%B3dulo:Wd" title="Módulo:Wd – Nahuatl" lang="nah" hreflang="nah" data-title="Módulo:Wd" data-language-autonym="Nāhuatl" data-language-local-name="Nahuatl" class="interlanguage-link-target"><span>Nāhuatl</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Dutch" lang="nl" hreflang="nl" data-title="Module:Wd" data-language-autonym="Nederlands" data-language-local-name="Dutch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-nds-nl mw-list-item"><a href="https://nds-nl.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Low Saxon" lang="nds-NL" hreflang="nds-NL" data-title="Module:Wd" data-language-autonym="Nedersaksies" data-language-local-name="Low Saxon" class="interlanguage-link-target"><span>Nedersaksies</span></a></li><li class="interlanguage-link interwiki-ne mw-list-item"><a href="https://ne.wikipedia.org/wiki/%E0%A4%AE%E0%A5%8B%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%81%E0%A4%B2:Wd" title="मोड्युल:Wd – Nepali" lang="ne" hreflang="ne" data-title="मोड्युल:Wd" data-language-autonym="नेपाली" data-language-local-name="Nepali" class="interlanguage-link-target"><span>नेपाली</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Wd" title="モジュール:Wd – Japanese" lang="ja" hreflang="ja" data-title="モジュール:Wd" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-ce mw-list-item"><a href="https://ce.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wd~en" title="Модуль:Wd~en – Chechen" lang="ce" hreflang="ce" data-title="Модуль:Wd~en" data-language-autonym="Нохчийн" data-language-local-name="Chechen" 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:Wd-norsk" title="Modul:Wd-norsk – Norwegian Bokmål" lang="nb" hreflang="nb" data-title="Modul:Wd-norsk" data-language-autonym="Norsk bokmål" data-language-local-name="Norwegian Bokmål" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-nn mw-list-item"><a href="https://nn.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Norwegian Nynorsk" lang="nn" hreflang="nn" data-title="Modul:Wd" data-language-autonym="Norsk nynorsk" data-language-local-name="Norwegian Nynorsk" class="interlanguage-link-target"><span>Norsk nynorsk</span></a></li><li class="interlanguage-link interwiki-or mw-list-item"><a href="https://or.wikipedia.org/wiki/%E0%AC%AE%E0%AC%A1%E0%AD%8D%E0%AD%9F%E0%AD%81%E0%AC%B2:Wd" title="ମଡ୍ୟୁଲ:Wd – Odia" lang="or" hreflang="or" data-title="ମଡ୍ୟୁଲ:Wd" data-language-autonym="ଓଡ଼ିଆ" data-language-local-name="Odia" class="interlanguage-link-target"><span>ଓଡ଼ିଆ</span></a></li><li class="interlanguage-link interwiki-uz mw-list-item"><a href="https://uz.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Uzbek" lang="uz" hreflang="uz" data-title="Modul:Wd" data-language-autonym="Oʻzbekcha / ўзбекча" data-language-local-name="Uzbek" class="interlanguage-link-target"><span>Oʻzbekcha / ўзбекча</span></a></li><li class="interlanguage-link interwiki-pa mw-list-item"><a href="https://pa.wikipedia.org/wiki/%E0%A8%AE%E0%A9%8C%E0%A8%A1%E0%A8%BF%E0%A8%8A%E0%A8%B2:Wd" title="ਮੌਡਿਊਲ:Wd – Punjabi" lang="pa" hreflang="pa" data-title="ਮੌਡਿਊਲ:Wd" data-language-autonym="ਪੰਜਾਬੀ" data-language-local-name="Punjabi" class="interlanguage-link-target"><span>ਪੰਜਾਬੀ</span></a></li><li class="interlanguage-link interwiki-pag mw-list-item"><a href="https://pag.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Pangasinan" lang="pag" hreflang="pag" data-title="Module:Wd" data-language-autonym="Pangasinan" data-language-local-name="Pangasinan" class="interlanguage-link-target"><span>Pangasinan</span></a></li><li class="interlanguage-link interwiki-blk mw-list-item"><a href="https://blk.wikipedia.org/wiki/%E1%80%99%E1%80%B1%E1%80%AC%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0%E1%80%B8:Wd" title="မော်ဂျူး:Wd – Pa'O" lang="blk" hreflang="blk" data-title="မော်ဂျူး:Wd" data-language-autonym="ပအိုဝ်ႏဘာႏသာႏ" data-language-local-name="Pa'O" class="interlanguage-link-target"><span>ပအိုဝ်ႏဘာႏသာႏ</span></a></li><li class="interlanguage-link interwiki-pap mw-list-item"><a href="https://pap.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Papiamento" lang="pap" hreflang="pap" data-title="Module:Wd" data-language-autonym="Papiamentu" data-language-local-name="Papiamento" class="interlanguage-link-target"><span>Papiamentu</span></a></li><li class="interlanguage-link interwiki-ps mw-list-item"><a href="https://ps.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Pashto" lang="ps" hreflang="ps" data-title="Module:Wd" data-language-autonym="پښتو" data-language-local-name="Pashto" class="interlanguage-link-target"><span>پښتو</span></a></li><li class="interlanguage-link interwiki-km mw-list-item"><a href="https://km.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Khmer" lang="km" hreflang="km" data-title="Module:Wd" data-language-autonym="ភាសាខ្មែរ" data-language-local-name="Khmer" class="interlanguage-link-target"><span>ភាសាខ្មែរ</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/M%C3%B3dulo:Wd" title="Módulo:Wd – Portuguese" lang="pt" hreflang="pt" data-title="Módulo:Wd" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Romanian" lang="ro" hreflang="ro" data-title="Modul:Wd" data-language-autonym="Română" data-language-local-name="Romanian" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-rue mw-list-item"><a href="https://rue.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wd" title="Модуль:Wd – Rusyn" lang="rue" hreflang="rue" data-title="Модуль:Wd" data-language-autonym="Русиньскый" data-language-local-name="Rusyn" class="interlanguage-link-target"><span>Русиньскый</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wd~en" title="Модуль:Wd~en – Russian" lang="ru" hreflang="ru" data-title="Модуль:Wd~en" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sa mw-list-item"><a href="https://sa.wikipedia.org/wiki/%E0%A4%AA%E0%A4%9F%E0%A4%B2%E0%A4%AE%E0%A5%8D:Wd" title="पटलम्:Wd – Sanskrit" lang="sa" hreflang="sa" data-title="पटलम्:Wd" data-language-autonym="संस्कृतम्" data-language-local-name="Sanskrit" class="interlanguage-link-target"><span>संस्कृतम्</span></a></li><li class="interlanguage-link interwiki-skr mw-list-item"><a href="https://skr.wikipedia.org/wiki/%D9%85%D8%A7%DA%88%DB%8C%D9%88%D9%84:Wd" title="ماڈیول:Wd – Saraiki" lang="skr" hreflang="skr" data-title="ماڈیول:Wd" data-language-autonym="سرائیکی" data-language-local-name="Saraiki" class="interlanguage-link-target"><span>سرائیکی</span></a></li><li class="interlanguage-link interwiki-sco mw-list-item"><a href="https://sco.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Scots" lang="sco" hreflang="sco" data-title="Module:Wd" data-language-autonym="Scots" data-language-local-name="Scots" class="interlanguage-link-target"><span>Scots</span></a></li><li class="interlanguage-link interwiki-sq mw-list-item"><a href="https://sq.wikipedia.org/wiki/Moduli:Wd" title="Moduli:Wd – Albanian" lang="sq" hreflang="sq" data-title="Moduli:Wd" data-language-autonym="Shqip" data-language-local-name="Albanian" class="interlanguage-link-target"><span>Shqip</span></a></li><li class="interlanguage-link interwiki-si mw-list-item"><a href="https://si.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Sinhala" lang="si" hreflang="si" data-title="Module:Wd" data-language-autonym="සිංහල" data-language-local-name="Sinhala" class="interlanguage-link-target"><span>සිංහල</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Simple English" lang="en-simple" hreflang="en-simple" data-title="Module:Wd" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sd mw-list-item"><a href="https://sd.wikipedia.org/wiki/%D9%85%D8%A7%DA%8A%D9%8A%D9%88%D9%84:Wd" title="ماڊيول:Wd – Sindhi" lang="sd" hreflang="sd" data-title="ماڊيول:Wd" data-language-autonym="سنڌي" data-language-local-name="Sindhi" class="interlanguage-link-target"><span>سنڌي</span></a></li><li class="interlanguage-link interwiki-sk mw-list-item"><a href="https://sk.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Slovak" lang="sk" hreflang="sk" data-title="Modul:Wd" data-language-autonym="Slovenčina" data-language-local-name="Slovak" class="interlanguage-link-target"><span>Slovenčina</span></a></li><li class="interlanguage-link interwiki-sl mw-list-item"><a href="https://sl.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Slovenian" lang="sl" hreflang="sl" data-title="Modul:Wd" data-language-autonym="Slovenščina" data-language-local-name="Slovenian" class="interlanguage-link-target"><span>Slovenščina</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:Wd" title="مۆدیوول:Wd – Central Kurdish" lang="ckb" hreflang="ckb" data-title="مۆدیوول:Wd" data-language-autonym="کوردی" data-language-local-name="Central Kurdish" class="interlanguage-link-target"><span>کوردی</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Wd" title="Модул:Wd – Serbian" lang="sr" hreflang="sr" data-title="Модул:Wd" data-language-autonym="Српски / srpski" data-language-local-name="Serbian" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-sh mw-list-item"><a href="https://sh.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Serbo-Croatian" lang="sh" hreflang="sh" data-title="Modul:Wd" data-language-autonym="Srpskohrvatski / српскохрватски" data-language-local-name="Serbo-Croatian" class="interlanguage-link-target"><span>Srpskohrvatski / српскохрватски</span></a></li><li class="interlanguage-link interwiki-su mw-list-item"><a href="https://su.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Sundanese" lang="su" hreflang="su" data-title="Modul:Wd" data-language-autonym="Sunda" data-language-local-name="Sundanese" class="interlanguage-link-target"><span>Sunda</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Modul:Wd" title="Modul:Wd – Swedish" lang="sv" hreflang="sv" data-title="Modul:Wd" data-language-autonym="Svenska" data-language-local-name="Swedish" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-tl mw-list-item"><a href="https://tl.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Tagalog" lang="tl" hreflang="tl" data-title="Module:Wd" data-language-autonym="Tagalog" data-language-local-name="Tagalog" class="interlanguage-link-target"><span>Tagalog</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Tamil" lang="ta" hreflang="ta" data-title="Module:Wd" data-language-autonym="தமிழ்" data-language-local-name="Tamil" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-kab mw-list-item"><a href="https://kab.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Kabyle" lang="kab" hreflang="kab" data-title="Module:Wd" data-language-autonym="Taqbaylit" data-language-local-name="Kabyle" class="interlanguage-link-target"><span>Taqbaylit</span></a></li><li class="interlanguage-link interwiki-tt mw-list-item"><a href="https://tt.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wd" title="Модуль:Wd – Tatar" lang="tt" hreflang="tt" data-title="Модуль:Wd" data-language-autonym="Татарча / tatarça" data-language-local-name="Tatar" class="interlanguage-link-target"><span>Татарча / tatarça</span></a></li><li class="interlanguage-link interwiki-shn mw-list-item"><a href="https://shn.wikipedia.org/wiki/%E1%80%99%E1%80%B1%E1%82%83%E1%82%87%E1%81%B5%E1%80%BB%E1%80%B0%E1%80%B8:Wd" title="မေႃႇၵျူး:Wd – Shan" lang="shn" hreflang="shn" data-title="မေႃႇၵျူး:Wd" data-language-autonym="ၽႃႇသႃႇတႆး " data-language-local-name="Shan" class="interlanguage-link-target"><span>ၽႃႇသႃႇတႆး </span></a></li><li class="interlanguage-link interwiki-te mw-list-item"><a href="https://te.wikipedia.org/wiki/%E0%B0%AE%E0%B0%BE%E0%B0%A1%E0%B1%8D%E0%B0%AF%E0%B1%82%E0%B0%B2%E0%B1%8D:Wd" title="మాడ్యూల్:Wd – Telugu" lang="te" hreflang="te" data-title="మాడ్యూల్:Wd" data-language-autonym="తెలుగు" data-language-local-name="Telugu" class="interlanguage-link-target"><span>తెలుగు</span></a></li><li class="interlanguage-link interwiki-tet mw-list-item"><a href="https://tet.wikipedia.org/wiki/M%C3%B3dulo:Wd" title="Módulo:Wd – Tetum" lang="tet" hreflang="tet" data-title="Módulo:Wd" data-language-autonym="Tetun" data-language-local-name="Tetum" class="interlanguage-link-target"><span>Tetun</span></a></li><li class="interlanguage-link interwiki-th mw-list-item"><a href="https://th.wikipedia.org/wiki/%E0%B8%A1%E0%B8%AD%E0%B8%94%E0%B8%B9%E0%B8%A5:Wd" title="มอดูล:Wd – Thai" lang="th" hreflang="th" data-title="มอดูล:Wd" data-language-autonym="ไทย" data-language-local-name="Thai" class="interlanguage-link-target"><span>ไทย</span></a></li><li class="interlanguage-link interwiki-ti mw-list-item"><a href="https://ti.wikipedia.org/wiki/%E1%88%9E%E1%8B%B5%E1%8B%A9%E1%88%8D:Wd" title="ሞድዩል:Wd – Tigrinya" lang="ti" hreflang="ti" data-title="ሞድዩል:Wd" data-language-autonym="ትግርኛ" data-language-local-name="Tigrinya" class="interlanguage-link-target"><span>ትግርኛ</span></a></li><li class="interlanguage-link interwiki-tg mw-list-item"><a href="https://tg.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Wd" title="Модул:Wd – Tajik" lang="tg" hreflang="tg" data-title="Модул:Wd" data-language-autonym="Тоҷикӣ" data-language-local-name="Tajik" class="interlanguage-link-target"><span>Тоҷикӣ</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/Mod%C3%BCl:Wd" title="Modül:Wd – Turkish" lang="tr" hreflang="tr" data-title="Modül:Wd" data-language-autonym="Türkçe" data-language-local-name="Turkish" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-tk mw-list-item"><a href="https://tk.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Turkmen" lang="tk" hreflang="tk" data-title="Module:Wd" data-language-autonym="Türkmençe" data-language-local-name="Turkmen" class="interlanguage-link-target"><span>Türkmençe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wd" title="Модуль:Wd – Ukrainian" lang="uk" hreflang="uk" data-title="Модуль:Wd" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</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:Wd" title="ماڈیول:Wd – Urdu" lang="ur" hreflang="ur" data-title="ماڈیول:Wd" data-language-autonym="اردو" data-language-local-name="Urdu" class="interlanguage-link-target"><span>اردو</span></a></li><li class="interlanguage-link interwiki-za mw-list-item"><a href="https://za.wikipedia.org/wiki/%E6%A8%A1%E5%9D%97:Wd" title="模块:Wd – Zhuang" lang="za" hreflang="za" data-title="模块:Wd" data-language-autonym="Vahcuengh" data-language-local-name="Zhuang" class="interlanguage-link-target"><span>Vahcuengh</span></a></li><li class="interlanguage-link interwiki-vec mw-list-item"><a href="https://vec.wikipedia.org/wiki/Modulo:Wd" title="Modulo:Wd – Venetian" lang="vec" hreflang="vec" data-title="Modulo:Wd" data-language-autonym="Vèneto" data-language-local-name="Venetian" class="interlanguage-link-target"><span>Vèneto</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/M%C3%B4_%C4%91un:Wd" title="Mô đun:Wd – Vietnamese" lang="vi" hreflang="vi" data-title="Mô đun:Wd" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamese" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-war mw-list-item"><a href="https://war.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Waray" lang="war" hreflang="war" data-title="Module:Wd" data-language-autonym="Winaray" data-language-local-name="Waray" class="interlanguage-link-target"><span>Winaray</span></a></li><li class="interlanguage-link interwiki-wuu mw-list-item"><a href="https://wuu.wikipedia.org/wiki/%E6%A8%A1%E5%9D%97:Wd" title="模块:Wd – Wu" lang="wuu" hreflang="wuu" data-title="模块:Wd" data-language-autonym="吴语" data-language-local-name="Wu" class="interlanguage-link-target"><span>吴语</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:Wd" title="模組:Wd – Cantonese" lang="yue" hreflang="yue" data-title="模組:Wd" data-language-autonym="粵語" data-language-local-name="Cantonese" class="interlanguage-link-target"><span>粵語</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/Module:Wd" title="Module:Wd – Chinese" lang="zh" hreflang="zh" data-title="Module:Wd" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q24733825#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</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="Namespaces"> <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:Wd" title="View the module page [c]" accesskey="c"><span>Module</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Module_talk:Wd" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</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="Views"> <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:Wd"><span>Read</span></a></li><li id="ca-viewsource" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Wd&action=edit" title="This page is protected. You can view its source [e]" accesskey="e"><span>View source</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Wd&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</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="Tools" > <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">Tools</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">Tools</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">hide</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"> Actions </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:Wd"><span>Read</span></a></li><li id="ca-more-viewsource" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Module:Wd&action=edit"><span>View source</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Module:Wd&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Module:Wd" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Module:Wd" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Module:Wd&oldid=1258646059" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Module:Wd&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DModule%3AWd%26curid%3D51376229%26diff%3D1258646059%26oldid%3D1249550606"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DModule%3AWd%26curid%3D51376229%26diff%3D1258646059%26oldid%3D1249550606"><span>Download QR code</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=Special:DownloadAsPdf&page=Module%3AWd&action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Module:Wd" hreflang="en"><span>Wikimedia Commons</span></a></li><li class="wb-otherproject-link wb-otherproject-meta mw-list-item"><a href="https://meta.wikimedia.org/wiki/Module:Wd" hreflang="en"><span>Meta-Wiki</span></a></li><li class="wb-otherproject-link wb-otherproject-outreach mw-list-item"><a href="https://outreach.wikimedia.org/wiki/Module:Wd" hreflang="en"><span>Wikimedia Outreach</span></a></li><li class="wb-otherproject-link wb-otherproject-species mw-list-item"><a href="https://species.wikimedia.org/wiki/Module:Wd" hreflang="en"><span>Wikispecies</span></a></li><li class="wb-otherproject-link wb-otherproject-wikidata mw-list-item"><a href="https://www.wikidata.org/wiki/Module:Wd" hreflang="en"><span>Wikidata</span></a></li><li class="wb-otherproject-link wb-otherproject-wikisource mw-list-item"><a href="https://en.wikisource.org/wiki/Module:Wd" hreflang="en"><span>Wikisource</span></a></li><li class="wb-otherproject-link wb-otherproject-wikiversity mw-list-item"><a href="https://en.wikiversity.org/wiki/Module:Wd" hreflang="en"><span>Wikiversity</span></a></li><li class="wb-otherproject-link wb-otherproject-wikivoyage mw-list-item"><a href="https://en.wikivoyage.org/wiki/Module:Wd" hreflang="en"><span>Wikivoyage</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/Q24733825" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</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="Appearance"> <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">Appearance</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">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> <div id="mw-indicator-mw-helplink" class="mw-indicator"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Diff" target="_blank" class="mw-helplink"><span class="mw-helplink-icon"></span>Help</a></div> <div id="mw-indicator-pp-default" class="mw-indicator"><div class="mw-parser-output"><span typeof="mw:File"><a href="/wiki/Wikipedia:Protection_policy#template" title="This high-risk module is permanently template-protected to prevent vandalism"><img alt="Permanently protected module" src="//upload.wikimedia.org/wikipedia/en/thumb/5/53/Template-protection-shackle.svg/20px-Template-protection-shackle.svg.png" decoding="async" width="20" height="20" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/5/53/Template-protection-shackle.svg/30px-Template-protection-shackle.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/5/53/Template-protection-shackle.svg/40px-Template-protection-shackle.svg.png 2x" data-file-width="512" data-file-height="512" /></a></span></div></div> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-revslider-container"><span style='width: 100%; text-align: center;' id='ooui-php-1' class='mw-revslider-toggle-button oo-ui-widget oo-ui-widget-enabled oo-ui-buttonElement oo-ui-buttonElement-frameless oo-ui-indicatorElement oo-ui-labelElement oo-ui-buttonWidget' data-ooui='{"_":"OO.ui.ButtonWidget","rel":["nofollow"],"framed":false,"indicator":"down","label":"Browse history interactively","title":"Open revision slider","classes":["mw-revslider-toggle-button"]}'><a role='button' title='Open revision slider' tabindex='0' rel='nofollow' class='oo-ui-buttonElement-button'><span class='oo-ui-iconElement-icon oo-ui-iconElement-noIcon'></span><span class='oo-ui-labelElement-label'>Browse history interactively</span><span class='oo-ui-indicatorElement-indicator oo-ui-indicator-down'></span></a></span><div class="mw-revslider-slider-wrapper" style="display: none;"><div class="mw-revslider-placeholder"><div class="mw-revslider-spinner"><div class="mw-revslider-bounce"></div></div></div></div></div><div class="mw-diff-revision-history-links"><a href="/w/index.php?title=Module:Wd&diff=prev&oldid=1249550606" class="mw-diff-revision-history-link-previous" title="Module:Wd">← Previous edit</a></div><div class="mw-diff-table-prefix" dir="ltr" lang="en"><div class="mw-diff-inline-legend oo-ui-element-hidden"><span class="mw-diff-inline-legend-del">Content deleted</span> <span class="mw-diff-inline-legend-ins">Content added</span></div><div class="mw-diffPage-inlineToggle-container"><div id='mw-diffPage-inline-toggle-switch-layout' class='oo-ui-layout oo-ui-labelElement oo-ui-fieldLayout oo-ui-fieldLayout-align-left' data-ooui='{"_":"OO.ui.FieldLayout","fieldWidget":{"tag":"mw-diffPage-inline-toggle-switch"},"$overlay":true,"label":"Inline","title":"Switches between inline format and two-column format"}'><div class='oo-ui-fieldLayout-body'><span class='oo-ui-fieldLayout-header'><label title='Switches between inline format and two-column format' id='ooui-php-2' class='oo-ui-labelElement-label'>Inline</label></span><div class='oo-ui-fieldLayout-field'><div id='mw-diffPage-inline-toggle-switch' title='Switches between inline format and two-column format' aria-checked='false' tabindex='0' role='switch' aria-labelledby='ooui-php-2' class='oo-ui-widget oo-ui-widget-enabled oo-ui-toggleWidget oo-ui-toggleWidget-off oo-ui-toggleSwitchWidget' data-ooui='{"_":"OO.ui.ToggleSwitchWidget","href":"\/w\/index.php?title=Module:Wd&curid=51376229&diff=1258646059&oldid=1249550606&diff-type=inline","value":false,"title":"Switches between inline format and two-column format"}'><span class='oo-ui-toggleSwitchWidget-glow'></span><a href='/w/index.php?title=Module:Wd&curid=51376229&diff=1258646059&oldid=1249550606&diff-type=inline'><span class='oo-ui-toggleSwitchWidget-grip'></span></a></div></div></div></div></div></div><table class="diff diff-type-table diff-contentalign-left diff-editfont-monospace" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" class="diff-otitle diff-side-deleted"><div id="mw-diff-otitle1"><strong><a href="/w/index.php?title=Module:Wd&oldid=1249550606" title="Module:Wd">Revision as of 14:22, 5 October 2024</a> <span class="mw-diff-edit"><a href="/w/index.php?title=Module:Wd&action=edit&oldid=1249550606" title="Module:Wd">view source</a></span><span class="mw-diff-timestamp" data-timestamp="2024-10-05T14:22:38Z"></span></strong></div><div id="mw-diff-otitle2"><a href="/wiki/User:Janhrach" class="mw-userlink" title="User:Janhrach" data-mw-revid="1249550606"><bdi>Janhrach</bdi></a> <span class="mw-usertoollinks">(<a href="/wiki/User_talk:Janhrach" class="mw-usertoollinks-talk" title="User talk:Janhrach">talk</a> | <a href="/wiki/Special:Contributions/Janhrach" class="mw-usertoollinks-contribs" title="Special:Contributions/Janhrach">contribs</a>)</span><div class="mw-diff-usermetadata"><div class="mw-diff-userroles"><a href="/wiki/Wikipedia:Extended_confirmed_editors" class="mw-redirect" title="Wikipedia:Extended confirmed editors">Extended confirmed users</a>, <a href="/wiki/Wikipedia:Template_editor" title="Wikipedia:Template editor">Template editors</a></div><div class="mw-diff-usereditcount"><span>2,955</span> edits</div></div></div><div id="mw-diff-otitle3"> <span class="comment comment--without-parentheses">Undid revision <a href="/wiki/Special:Diff/1249540315" title="Special:Diff/1249540315">1249540315</a> by <a href="/wiki/Special:Contributions/Janhrach" title="Special:Contributions/Janhrach">Janhrach</a> (<a href="/wiki/User_talk:Janhrach" title="User talk:Janhrach">talk</a>)</span></div><div id="mw-diff-otitle5"><span class="mw-tag-markers"><a href="/wiki/Special:Tags" title="Special:Tags">Tag</a>: <span class="mw-tag-marker mw-tag-marker-mw-undo"><a href="/wiki/Wikipedia:Undo" class="mw-redirect" title="Wikipedia:Undo">Undo</a></span></span></div><div id="mw-diff-otitle4"><a href="/w/index.php?title=Module:Wd&diff=prev&oldid=1249550606" title="Module:Wd" id="differences-prevlink">← Previous edit</a></div></td> <td colspan="2" class="diff-ntitle diff-side-added"><div id="mw-diff-ntitle1"><strong><a href="/w/index.php?title=Module:Wd&oldid=1258646059" title="Module:Wd">Latest revision as of 21:00, 20 November 2024</a> <span class="mw-diff-edit"><a href="/w/index.php?title=Module:Wd&action=edit" title="Module:Wd">view source</a></span><span class="mw-diff-timestamp" data-timestamp="2024-11-20T21:00:06Z"></span> </strong></div><div id="mw-diff-ntitle2"><a href="/wiki/User:Uzume" class="mw-userlink" title="User:Uzume" data-mw-revid="1258646059"><bdi>Uzume</bdi></a> <span class="mw-usertoollinks">(<a href="/wiki/User_talk:Uzume" class="mw-usertoollinks-talk" title="User talk:Uzume">talk</a> | <a href="/wiki/Special:Contributions/Uzume" class="mw-usertoollinks-contribs" title="Special:Contributions/Uzume">contribs</a>)</span><div class="mw-diff-usermetadata"><div class="mw-diff-userroles"><a href="/wiki/Wikipedia:Extended_confirmed_editors" class="mw-redirect" title="Wikipedia:Extended confirmed editors">Extended confirmed users</a>, <a href="/wiki/Wikipedia:Page_mover" title="Wikipedia:Page mover">Page movers</a>, <a href="/wiki/Wikipedia:Template_editor" title="Wikipedia:Template editor">Template editors</a></div><div class="mw-diff-usereditcount"><span>11,440</span> edits</div></div></div><div id="mw-diff-ntitle3"><abbr class="minoredit" title="This is a minor edit">m</abbr> <span class="comment comment--without-parentheses">remove unused local "refHash" and narrow lifetime/scope of "valuesArray"</span></div><div id="mw-diff-ntitle5"></div><div id="mw-diff-ntitle4"> </div></td> </tr><tr> <td colspan="2" class="diff-lineno">Line 2,169:</td> <td colspan="2" class="diff-lineno">Line 2,169:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function State:callHook(param, hooks, statement, result)</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function State:callHook(param, hooks, statement, result)</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> local valuesArray, refHash</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> -- call a parameter's hook if it has been defined and if it has not been called before</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> -- call a parameter's hook if it has been defined and if it has not been called before</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> if not result[param] and hooks[param] then</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> if not result[param] and hooks[param] then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> <ins class="diffchange diffchange-inline">local </ins>valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> -- add to the result</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> -- add to the result</div></td> </tr> <!-- diff cache key enwiki:diff:1.41:old-1249550606:rev-1258646059:wikidiff2=table:1.14.1:ff290eae --> </table><hr class='diff-hr' id='mw-oldid' /> <h2 class='diff-currentversion-title'>Latest revision as of 21:00, 20 November 2024</h2> <div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r1237875617">.mw-parser-output .documentation,.mw-parser-output .documentation-metadata{border:1px solid #a2a9b1;background-color:#ecfcf4;clear:both}.mw-parser-output .documentation{margin:1em 0 0 0;padding:1em}.mw-parser-output .documentation-metadata{margin:0.2em 0;font-style:italic;padding:0.4em 1em}.mw-parser-output .documentation-startbox{padding-bottom:3px;border-bottom:1px solid #aaa;margin-bottom:1ex}.mw-parser-output .documentation-heading{font-weight:bold;font-size:125%}.mw-parser-output .documentation-clear{clear:both}.mw-parser-output .documentation-toolbar{font-style:normal;font-size:85%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .documentation,html.skin-theme-clientpref-night .mw-parser-output .documentation-metadata{background-color:#0b1e1c}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .documentation,html.skin-theme-clientpref-os .mw-parser-output .documentation-metadata{background-color:#0b1e1c}}</style><div class="documentation-container" role="complementary" aria-labelledby="documentation-heading"> <div class="documentation"> <div class="documentation-startbox"> <span class="documentation-heading" id="documentation-heading"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png" decoding="async" width="50" height="22" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/75px-Test_Template_Info-Icon_-_Version_%282%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/100px-Test_Template_Info-Icon_-_Version_%282%29.svg.png 2x" data-file-width="1792" data-file-height="800" /></span></span> Module documentation</span><span class="mw-editsection-like plainlinks">[<a href="/wiki/Module:Wd/doc" title="Module:Wd/doc">view</a>] [<a href="/wiki/Special:EditPage/Module:Wd/doc" title="Special:EditPage/Module:Wd/doc">edit</a>] [<a href="/wiki/Special:PageHistory/Module:Wd/doc" title="Special:PageHistory/Module:Wd/doc">history</a>] [<a href="/wiki/Special:Purge/Module:Wd" title="Special:Purge/Module:Wd">purge</a>]</span></div> <style data-mw-deduplicate="TemplateStyles:r1238436933">.mw-parser-output .ombox{margin:4px 0;border-collapse:collapse;border:1px solid #a2a9b1;background-color:var(--background-color-neutral-subtle,#f8f9fa);box-sizing:border-box;color:var(--color-base,#202122)}.mw-parser-output .ombox.mbox-small{font-size:88%;line-height:1.25em}.mw-parser-output .ombox-speedy{border:2px solid #b32424;background-color:#fee7e6}.mw-parser-output .ombox-delete{border:2px solid #b32424}.mw-parser-output .ombox-content{border:1px solid #f28500}.mw-parser-output .ombox-style{border:1px solid #fc3}.mw-parser-output .ombox-move{border:1px solid #9932cc}.mw-parser-output .ombox-protection{border:2px solid #a2a9b1}.mw-parser-output .ombox .mbox-text{border:none;padding:0.25em 0.9em;width:100%}.mw-parser-output .ombox .mbox-image{border:none;padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .ombox .mbox-imageright{border:none;padding:2px 0.9em 2px 0;text-align:center}.mw-parser-output .ombox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ombox .mbox-invalid-type{text-align:center}@media(min-width:720px){.mw-parser-output .ombox{margin:4px 10%}.mw-parser-output .ombox.mbox-small{clear:right;float:right;margin:4px 0 4px 1em;width:238px}}body.skin--responsive .mw-parser-output table.ombox img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .ombox-speedy{background-color:#310402}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .ombox-speedy{background-color:#310402}}</style><table class="plainlinks ombox ombox-notice" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img alt="Protected" src="//upload.wikimedia.org/wikipedia/en/thumb/5/53/Template-protection-shackle.svg/40px-Template-protection-shackle.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/5/53/Template-protection-shackle.svg/60px-Template-protection-shackle.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/5/53/Template-protection-shackle.svg/80px-Template-protection-shackle.svg.png 2x" data-file-width="512" data-file-height="512" /></span></span></td><td class="mbox-text">This module is <a href="/wiki/Category:Modules_subject_to_page_protection" title="Category:Modules subject to page protection">subject to page protection</a>. It is a <a href="/wiki/Wikipedia:High-risk_templates" title="Wikipedia:High-risk templates">highly visible module</a> in use by a very large number of pages, or is <a href="/wiki/Wikipedia:Substitution" title="Wikipedia:Substitution">substituted</a> very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is <a href="/wiki/Wikipedia:Protection_policy" title="Wikipedia:Protection policy">protected</a> from editing.</td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238436933"><table class="plainlinks ombox ombox-content" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img alt="Warning" src="//upload.wikimedia.org/wikipedia/en/thumb/5/5f/Ambox_warning_orange.svg/40px-Ambox_warning_orange.svg.png" decoding="async" width="40" height="34" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/5/5f/Ambox_warning_orange.svg/60px-Ambox_warning_orange.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/5/5f/Ambox_warning_orange.svg/80px-Ambox_warning_orange.svg.png 2x" data-file-width="378" data-file-height="326" /></span></span></td><td class="mbox-text"><b>This Lua module is used on <a class="external text" href="https://linkcount.toolforge.org/?project=en.wikipedia.org&page=Module%3AWd#transclusions">approximately 1,720,000 pages, or roughly 3% of all pages</a></b>.<br /> To avoid major disruption and server load, any changes should be tested in the module's <a href="/wiki/Module:Wd/sandbox" title="Module:Wd/sandbox">/sandbox</a> or <a href="/wiki/Module:Wd/testcases" title="Module:Wd/testcases">/testcases</a> subpages, or in your own <a href="/wiki/Module:Sandbox" title="Module:Sandbox">module sandbox</a>. The tested changes can be added to this page in a single edit. Consider discussing changes on the <a href="/wiki/Module_talk:Wd" title="Module talk:Wd">talk page</a> before implementing them.</td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238436933"><table class="plainlinks ombox ombox-notice" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/1/1d/Information_icon4.svg/40px-Information_icon4.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/1/1d/Information_icon4.svg/60px-Information_icon4.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/1/1d/Information_icon4.svg/80px-Information_icon4.svg.png 2x" data-file-width="620" data-file-height="620" /></span></span></td><td class="mbox-text">You might want to use one of the user-friendly wrapper templates <span class="nowrap">{{</span><a href="/wiki/Template:Wikidata" title="Template:Wikidata">Wikidata</a><span class="nowrap">}}</span> and <span class="nowrap">{{</span><a href="/wiki/Template:WikidataOI" title="Template:WikidataOI">WikidataOI</a><span class="nowrap">}}</span> instead of invoking this module directly.</td></tr></tbody></table> <style data-mw-deduplicate="TemplateStyles:r1236090951">.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}</style><div role="note" class="hatnote navigation-not-searchable">For the module that should be used in infobox templates instead of this module, see <a href="/wiki/Module:WikidataIB" title="Module:WikidataIB">Module:WikidataIB</a>.</div> <p>This module is intended to fetch data from <b><a href="/wiki/Wikidata" title="Wikidata">Wikidata</a></b> with or without a link to the connected Wikipedia article and with many other features. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Usage">Usage</h2></div> <p>The general structure of a call to this module is as follows. Note that the basic structure consists of positional commands, flags and arguments, which all have a fixed position. </p> <dl><dd><code>{{#invoke:wd<span style="visibility:hidden;color:transparent;"> </span><span style="background-color: #cddae3;color:black;">|command1|flag1a|flag1b|flag1c</span><span style="visibility:hidden;color:transparent;"> </span><span style="background-color: #dce5ec;color:black;">|command2|flag2a|flag2b|flag2c</span><span style="visibility:hidden;color:transparent;"> </span><span style="background-color: #c1debf;color:black;">|flag0a|flag0b|flag0c</span><span style="visibility:hidden;color:transparent;"> </span><span style="background-color: #ffdfc4;color:black;">|arg1|arg2|arg3</span>}}</code></dd></dl> <p>Use different <a href="#Commands"><span style="background-color: #cddae3;color:black;">commands</span></a> to get different kinds of values from Wikidata. At least one command must be given and multiple commands can be combined into one call as shown above (in any order, more than two is also possible), but this only applies to commands from the <a href="#Claim_class">claim class</a>; calls containing a command from the <a href="#General_class">general class</a> cannot contain any other command. Each command can be followed by any number of <a href="#Command_flags"><span style="background-color: #cddae3;color:black;">command flags</span></a>, which are optional and can be used to tweak the output generated by that command. </p><p>The commands and their flags may be followed by any number of <a href="#Configuration_flags"><span style="background-color: #c1debf;color:black;">configuration flags</span></a>, which are also optional and affect the selection of data and the module's behaviour in general. The call is closed with the <a href="#Positional_arguments"><span style="background-color: #ffdfc4;color:black;">positional arguments</span></a>, which may be required depending on the given command(s). Some <a href="#Named_arguments">named arguments</a> (i.e. name-value pairs) also exist, as well as a set of named flags for <a href="#Advanced_usage">advanced usage</a> that can be used to change the way the fetched values are merged together into the output. </p><p>This module was designed to provide the basic needs for fetching data from Wikidata, but a lot can be achieved through different combinations of calls. For convenience, such combinations could be wrapped into new templates that serve a specific need. See also the section on <a href="#Common_use_cases">common use cases</a> below for some examples of useful "building blocks". Likewise, the functionality of this module can be extended by creating wrapper templates that use the <a class="mw-selflink-fragment" href="#Main_class"><code>main</code> command</a> provided by this module (just like <span class="nowrap">{{</span><a href="/wiki/Template:WikidataOI" title="Template:WikidataOI">WikidataOI</a><span class="nowrap">}}</span> does). </p> <div class="mw-heading mw-heading3"><h3 id="Common_use_cases">Common use cases</h3></div> <p>Below follows a list of common use cases. In the future, shortcut commands may be implemented that are equivalent to these calls for convenience. </p> <table class="wikitable"> <tbody><tr> <th>Call </th> <th>Use case </th></tr> <tr> <td><span class="nowrap"><code>{{#invoke:wd|label|raw}}</code></span> </td> <td>Returns the Q-identifier of the Wikidata item connected to the current page (e.g. "Q55"). </td></tr> <tr> <td><span class="nowrap"><code>{{#if:<code>{{#invoke:wd|label|raw}}</code>|...}}</code></span> </td> <td>Performs a check to determine if the current page has a Wikidata item. <p>Note that this statement relies on a returned value that is either empty or non-empty and that the <code>raw</code> flag is important to include. Without this flag, an existing item's regular label would be returned which could be empty, giving an undesired result. If the flag is given on the other hand, then a non-empty Q-identifier is always returned if an item exists and an empty value if an item does not exist. </p> </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="Commands">Commands</h2></div> <p>The commands (<code><span style="background-color: #cddae3;color:black;">command1</span></code>, <code><span style="background-color: #dce5ec;color:black;">command2</span></code>, ...) determine what kind of values are returned. One call can only contain commands from a single class. </p> <div class="mw-heading mw-heading3"><h3 id="Claim_class">Claim class</h3></div> <p>The claim class commands can be combined, meaning that multiple commands of different types from this class can be given at one time (<a href="#Usage">see above for usage</a>). </p><p>Combine multiple commands into one call to this module, instead of making multiple calls to this module with one command each, to be sure that all the returned pieces of information belong to each other (<a href="#Examples">see also the examples below</a>). </p> <table class="wikitable"> <tbody><tr> <th>Type </th> <th>Command </th> <th>Returns </th> <th>Basic usage </th> <th>Description </th></tr> <tr> <td rowspan="2" style="text-align:right;">I </td> <th style="text-align:left;"><code>property</code> </th> <td><span style="font-size:85%;">first match<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>a<span class="cite-bracket">]</span></a></sup></span> </td> <td><span class="nowrap"><code>{{#invoke:wd|property|P1}}</code></span> </td> <td rowspan="2">Returns the requested property – or list of properties – from the current item-entity or from a given entity. <p>This command can be given only once in one call. </p> </td></tr> <tr> <th style="text-align:left;"><code>properties</code> </th> <td><span style="font-size:85%;">all matches</span> </td> <td><span class="nowrap"><code>{{#invoke:wd|properties|P1}}</code></span> </td></tr> <tr> <td colspan="5"> </td></tr> <tr> <td rowspan="2" style="text-align:right;">II </td> <th style="text-align:left;"><code>qualifier</code> </th> <td><span style="font-size:85%;">first match<sup id="cite_ref-fm_2-0" class="reference"><a href="#cite_note-fm-2"><span class="cite-bracket">[</span>b<span class="cite-bracket">]</span></a></sup></span> </td> <td><span class="nowrap"><code>{{#invoke:wd|qualifier|P1|P2}}</code></span> </td> <td rowspan="2">Returns the requested qualifier – or list of qualifiers – from the given property of the current item-entity or of a given entity. <p>Unlike the other claim class commands, this command can be given multiple times to retrieve different qualifiers in one call. </p> </td></tr> <tr> <th style="text-align:left;"><code>qualifiers</code> </th> <td><span style="font-size:85%;">all matches</span> </td> <td><span class="nowrap"><code>{{#invoke:wd|qualifiers|P1|P2}}</code></span> </td></tr> <tr> <td colspan="5"> </td></tr> <tr> <td rowspan="2" style="text-align:right;">III </td> <th style="text-align:left;"><code>reference</code> </th> <td><span style="font-size:85%;">first match<sup id="cite_ref-fm_2-1" class="reference"><a href="#cite_note-fm-2"><span class="cite-bracket">[</span>b<span class="cite-bracket">]</span></a></sup></span> </td> <td><span class="nowrap"><code>{{#invoke:wd|reference|P1}}</code></span> </td> <td rowspan="2">Returns a reference – or list of references – from the given property of the current item-entity or of a given entity.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>c<span class="cite-bracket">]</span></a></sup> <p>This command can be given only once in one call. </p> </td></tr> <tr> <th style="text-align:left;"><code>references</code> </th> <td><span style="font-size:85%;">all matches</span> </td> <td><span class="nowrap"><code>{{#invoke:wd|references|P1}}</code></span> </td></tr> <tr> <td colspan="5"> </td></tr> <tr> <td colspan="5" style="text-align:left;"><style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist reflist-lower-alpha"> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text">Returns only a single value instead of multiple (if multiple claims or statements match). The returned value is <b>the first match found from the best-ranked</b> claims.</span> </li> <li id="cite_note-fm-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-fm_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-fm_2-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text">Returns only a single value instead of multiple for each matching claim. To get at most one value in total in case the <code>property</code> command is not also used, additionally use the <a href="#Configuration_flags"><code>single</code> configuration flag</a>.</span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text">See <a href="#References">the section on references</a> for details.</span> </li> </ol></div></div> </td></tr></tbody></table> <div class="mw-heading mw-heading3"><h3 id="General_class">General class</h3></div> <p>The general class commands cannot be combined. </p> <table class="wikitable"> <tbody><tr> <th>Type </th> <th>Command </th> <th>Returns </th> <th>Basic usage </th> <th>Description </th></tr> <tr> <td style="text-align:right;">I </td> <th style="text-align:left;"><code>label</code> </th> <td> </td> <td><span class="nowrap"><code>{{#invoke:wd|label}}</code></span> </td> <td>Returns the label of the current item-entity or of a given entity if present. </td></tr> <tr> <td colspan="5"> </td></tr> <tr> <td style="text-align:right;">II </td> <th style="text-align:left;"><code>title</code> </th> <td> </td> <td><span class="nowrap"><code>{{#invoke:wd|title}}</code></span> </td> <td>Returns the title of the page connected to the current item-entity or to a given item-entity if such page exists. </td></tr> <tr> <td colspan="5"> </td></tr> <tr> <td style="text-align:right;">III </td> <th style="text-align:left;"><code>description</code> </th> <td> </td> <td><span class="nowrap"><code>{{#invoke:wd|description}}</code></span> </td> <td>Returns the description of the current item-entity or of a given entity if present. </td></tr> <tr> <td colspan="5"> </td></tr> <tr> <td rowspan="2" style="text-align:right;">IV </td> <th style="text-align:left;"><code>alias</code> </th> <td><span style="font-size:85%;">first match<sup id="cite_ref-fmg_4-0" class="reference"><a href="#cite_note-fmg-4"><span class="cite-bracket">[</span>a<span class="cite-bracket">]</span></a></sup></span> </td> <td><span class="nowrap"><code>{{#invoke:wd|alias}}</code></span> </td> <td rowspan="2">Returns an alias – or list of aliases – of the current item-entity or of a given entity if present. </td></tr> <tr> <th style="text-align:left;"><code>aliases</code> </th> <td><span style="font-size:85%;">all matches</span> </td> <td><span class="nowrap"><code>{{#invoke:wd|aliases}}</code></span> </td></tr> <tr> <td colspan="5"> </td></tr> <tr> <td rowspan="2" style="text-align:right;">V </td> <th style="text-align:left;"><code>badge</code> </th> <td><span style="font-size:85%;">first match<sup id="cite_ref-fmg_4-1" class="reference"><a href="#cite_note-fmg-4"><span class="cite-bracket">[</span>a<span class="cite-bracket">]</span></a></sup></span> </td> <td><span class="nowrap"><code>{{#invoke:wd|badge}}</code></span> </td> <td rowspan="2">Returns a badge – or list of badges – for the page connected to the current item-entity or to a given item-entity if such page exists. </td></tr> <tr> <th style="text-align:left;"><code>badges</code> </th> <td><span style="font-size:85%;">all matches</span> </td> <td><span class="nowrap"><code>{{#invoke:wd|badges}}</code></span> </td></tr> <tr> <td colspan="5"> </td></tr> <tr> <td colspan="5" style="text-align:left;"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239543626"><div class="reflist reflist-lower-alpha"> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-fmg-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-fmg_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-fmg_4-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text">Returns only a single value instead of multiple (if multiple values are present).</span> </li> </ol></div></div> </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="Flags">Flags</h2></div> <p>The following (optional) flags are available which can be used to alter this module's behaviour. They must be given after the (first) <span style="background-color: #cddae3;color:black;">command</span> and before the <span style="background-color: #ffdfc4;color:black;">positional arguments</span>. For convenience, empty flags (i.e. <code>||</code>) are allowed and will simply be ignored. </p> <div class="mw-heading mw-heading3"><h3 id="Command_flags">Command flags</h3></div> <p>These flags (<code><span style="background-color: #cddae3;color:black;">flag1*</span></code>, <code><span style="background-color: #dce5ec;color:black;">flag2*</span></code>, ...) apply to the command that precedes them directly. </p> <table class="wikitable"> <tbody><tr> <th>Flag </th> <th>Description </th></tr> <tr> <th style="text-align:left;"><code>raw</code> </th> <td>Returns the raw value if applicable. <p>If this flag is used with item or property datatypes, then this will return the Q-identifier or P-identifier instead of the regular label. </p><p>For quantity datatypes, this flag will strip off any units of measurement, unless the <code>unit</code> flag is also given in which case the raw unit of measurement (its Q-identifier) will be returned. </p><p>If this flag is used with time datatypes, then the returned date will be in the format of <code>yyyy-mm-dd</code> (e.g. <code>1731-02-11</code>), or <code>yyyy-mm</code>, or <code>yyyy</code> depending on the date's precision. Dates in the Julian calendar stored with a precision of days through millenniums will have <code>/Julian</code> attached to the output (e.g. <code>1731-02-11/Julian</code>, which may be split off using the <a href="https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions#.23titleparts" class="extiw" title="mw:Help:Extension:ParserFunctions">{{#titleparts}} parser function</a>). </p><p>If it is used with globe coordinate datatypes, then it replaces the various symbols with forward slashes in the returned value (e.g. <code>52/5/3/N/4/19/3/E</code>, which may be split into parts using the <a href="https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions#.23titleparts" class="extiw" title="mw:Help:Extension:ParserFunctions">{{#titleparts}} parser function</a>). </p> </td></tr> <tr> <th style="text-align:left;"><code>linked</code> </th> <td>Creates a link to the Wikipedia article that is connected to the property or qualifier if it exists. Also links units of measurement that may be appended to values. <p>If this parameter is omitted, then the plain property or qualifier value will be returned. </p> </td></tr> <tr> <th style="text-align:left;"><code>short</code> </th> <td><b><code><style data-mw-deduplicate="TemplateStyles:r1239334494">@media screen{html.skin-theme-clientpref-night .mw-parser-output div:not(.notheme)>.tmp-color,html.skin-theme-clientpref-night .mw-parser-output p>.tmp-color,html.skin-theme-clientpref-night .mw-parser-output table:not(.notheme) .tmp-color{color:inherit!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output div:not(.notheme)>.tmp-color,html.skin-theme-clientpref-os .mw-parser-output p>.tmp-color,html.skin-theme-clientpref-os .mw-parser-output table:not(.notheme) .tmp-color{color:inherit!important}}</style><span class="tmp-color" style="color:red">[EXPENSIVE]</span></code></b> Returns the <a href="https://www.wikidata.org/wiki/Special:EntityPage/P1813" class="extiw" title="d:Special:EntityPage/P1813">short name <small>(P1813)</small></a> of any entity returned if they have one attached. If that is not the case, then the default behaviour of returning the entity's label will occur. </td></tr> <tr> <th style="text-align:left;"><code>multilanguage</code> </th> <td>Returns monolingual text values in any available language, not just the current wiki's language. </td></tr> <tr> <th style="text-align:left;"><code>unit</code> </th> <td>Returns only the unit of measurement for quantity datatypes. </td></tr></tbody></table> <div class="mw-heading mw-heading3"><h3 id="Configuration_flags">Configuration flags</h3></div> <p>These flags (<code><span style="background-color: #c1debf;color:black;">flag0*</span></code>) are general configuration flags and can be given anywhere after the first <span style="background-color: #cddae3;color:black;">command</span> (but before the <span style="background-color: #ffdfc4;color:black;">positional arguments</span>). </p> <table class="wikitable"> <tbody><tr> <th> </th> <th>Flag </th> <th>Description </th> <th>Command class </th></tr> <tr> <td rowspan="4" style="text-align:right;"><span class="nowrap">Combination of:</span> </td> <th style="text-align:left;"><code>preferred</code> </th> <td rowspan="4">Sets a rank constraint for the selected claim(s). <p>The first three set the ranks for which claim(s) will be selected. They can optionally be followed by a <code>+</code> or a <code>-</code>, e.g. <code>normal+</code> or <code>preferred-</code>, where the first selects claims with a 'normal' rank <i>or higher</i> and the second selects claims with a 'preferred' rank <i>or lower</i>. To get claims of all ranks, use <code>preferred-</code> or <code>deprecated+</code>. </p><p>If the <code>best</code> flag is given additionally, then only the claims that have the highest rank amongst the selected claims will be returned. </p><p>The default is <code>normal+|best</code> (so by default claims with a 'deprecated' rank are never returned). </p><p>Output is always sorted from highest rank to lowest (regardless of any of these flags being set). </p> </td> <td rowspan="4"><a href="#Claim_class">claim</a> </td></tr> <tr> <th style="text-align:left;"><code>normal</code> </th></tr> <tr> <th style="text-align:left;"><code>deprecated</code> </th></tr> <tr> <th style="text-align:left;"><code>best</code> </th></tr> <tr> <td rowspan="3" style="text-align:right;"><span class="nowrap">Combination of:</span> </td> <th style="text-align:left;"><code>future</code> </th> <td rowspan="3">Sets a time constraint for the selected claim(s). Uses the claims' qualifiers of <a href="https://www.wikidata.org/wiki/Special:EntityPage/P580" class="extiw" title="d:Special:EntityPage/P580">start time <small>(P580)</small></a> and <a href="https://www.wikidata.org/wiki/Special:EntityPage/P582" class="extiw" title="d:Special:EntityPage/P582">end time <small>(P582)</small></a> to determine if the claim is valid for the selected time period(s). <p>The default is <code>future|current|former</code> (so by default claims that are valid for any time period are returned), except when <code>date=</code> is given (<a href="#Named_arguments">see below</a>) in which case the default is <code>current</code>. </p> </td> <td rowspan="3">claim </td></tr> <tr> <th style="text-align:left;"><code>current</code> </th></tr> <tr> <th style="text-align:left;"><code>former</code> </th></tr> <tr> <td> </td> <th style="text-align:left;"><code>mdy</code> </th> <td>Returns date values in month-day-year order instead of day-month-year order. </td> <td>claim </td></tr> <tr> <td> </td> <th style="text-align:left;"><code>single</code> </th> <td>Returns only a single claim instead of multiple (if multiple claims match). Has no effect if the <code>property</code>/<code>properties</code> command is given, in which case this flag would be redundant. </td> <td>claim </td></tr> <tr> <td> </td> <th style="text-align:left;"><code>sourced</code> </th> <td>Only returns claims that have at least one non-empty reference. (References having only <a href="#Ignored_parameters">ignored parameters</a> are considered empty.) </td> <td>claim </td></tr> <tr> <td rowspan="2" style="text-align:right;"><span class="nowrap">One of:</span> </td> <th style="text-align:left;"><code>edit</code> </th> <td rowspan="2">Adds a clickable icon after the output that may be used by readers to edit the returned claim on Wikidata. <p>If <code>edit@end</code> is used, then the icon will be placed at the end of the line for neat alignment in infoboxes. </p> </td> <td rowspan="2">claim, <a href="#General_class">general</a> </td></tr> <tr> <th style="text-align:left;"><code>edit@end</code> </th></tr> <tr style="display:none;"> <td colspan="4"> </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="Arguments">Arguments</h2></div> <p>The arguments determine the sources from which all the returned values are fetched. </p> <div class="mw-heading mw-heading3"><h3 id="Positional_arguments">Positional arguments</h3></div> <p>The following table shows the available positional arguments (<code><span style="background-color: #ffdfc4;color:black;">arg*</span></code>) in their fixed order. For each command, the applicable set of arguments is marked. If multiple commands are given, then the applicable set is the union of the individual sets. For instance, if the commands <code>properties</code> and <code>qualifiers</code> have been given, then at least both the arguments <code>property_id</code> and <code>qualifier_id</code> should be given as well. </p><p>More than one <code>qualifier</code>/<code>qualifiers</code> command can be given. The order in which these commands with their flags are given matches the order in which the respective <code>qualifier_id</code> arguments are given. </p> <table class="wikitable" style="background:none;border:none;"> <tbody><tr style="text-align:center;"> <td rowspan="2" style="background:none;border:none;"> </td> <td colspan="2"><span style="font-size:85%;"><i>(required)</i></span> </td> <td><span style="font-size:85%;"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239334494"><span class="tmp-color" style="color:#777"><i>(optional)</i></span></span> </td> <td><span style="font-size:85%;"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239334494"><span class="tmp-color" style="color:#777">(optional)</span></span> </td> <td><span style="font-size:85%;">(required)</span> </td> <td><span style="font-size:85%;"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239334494"><span class="tmp-color" style="color:#777">(optional)</span></span> </td> <td><span style="font-size:85%;">(required)</span> </td> <td><span style="font-size:85%;">(required)</span> </td> <td rowspan="2" style="background:none;border:none;"> </td></tr> <tr> <td colspan="2"> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td></tr> <tr> <td style="border-right:2px solid #000;"><i><code>{{#invoke:wd</code></i> </td> <td colspan="2" style="border-right:2px solid #000;"><i><code>commands</code></i> </td> <td style="border-right:2px solid #000;"><i><code style="color:#777;">flags</code></i> </td> <th style="border-right:2px solid #000;background-color:#ffdfc4;"><code style="color:#777;">entity_id</code> </th> <th style="border-right:2px solid #000;background-color:#ffdfc4;"><code>property_id</code> </th> <th style="border-right:2px solid #000;background-color:#ffdfc4;"><code style="color:#777;">raw_value</code> </th> <th style="border-right:2px solid #000;background-color:#ffdfc4;"><code>qualifier_id</code> </th> <th style="background-color:#ffdfc4;"><code>qualifier_id</code> </th> <td><i><code>}}</code></i> </td></tr> <tr> <td rowspan="12" colspan="2" style="background:none;border:none;"> </td> <td rowspan="2" colspan="2" style="border-style:dashed;border-left-color:blue;border-bottom-color:blue;"> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td rowspan="12" style="background:none;border:none;"> </td></tr> <tr style="text-align:center;"> <td rowspan="2"><code>label</code>, <code>title</code>,<br /><code>description</code>,<br /><code>alias</code>/<code>aliases</code>,<br /><code>badge</code>/<code>badges</code> </td> <td rowspan="2" style="border-top:none;border-bottom:none;"> </td> <td rowspan="2" style="border-top:none;border-bottom:none;"> </td> <td rowspan="2" style="border-top:none;border-bottom:none;"> </td> <td rowspan="2" style="border-top:none;border-bottom:none;"> </td></tr> <tr> <td rowspan="2" colspan="2" style="border-style:dashed;border-left-color:blue;border-bottom-color:blue;"> </td></tr> <tr style="text-align:center;"> <td rowspan="2" colspan="2" style="border-top:none;"><code>property</code>/<code>properties</code> </td> <td rowspan="2" style="border-top:none;border-bottom:none;"> </td> <td rowspan="2" style="border-top:none;border-bottom:none;"> </td> <td rowspan="2" style="border-top:none;border-bottom:none;"> </td></tr> <tr> <td rowspan="2" colspan="2" style="border-style:dashed;border-left-color:blue;border-bottom-color:blue;"> </td></tr> <tr style="text-align:center;"> <td rowspan="2" colspan="3" style="border-top:none;"><code>reference</code>/<code>references</code> </td> <td rowspan="2" style="border-top:none;border-bottom:none;"> </td> <td rowspan="2" style="border-top:none;border-bottom:none;"> </td></tr> <tr> <td rowspan="2" colspan="2" style="border-style:dashed;border-left-color:blue;border-bottom-color:blue;"> </td></tr> <tr style="text-align:center;"> <td rowspan="2" colspan="4" style="border-top:none;"><code>qualifier</code>/<code>qualifiers</code> </td> <td rowspan="2" style="border-top:none;border-bottom:none;"> </td></tr> <tr> <td rowspan="2" colspan="2" style="border-style:dashed;border-left-color:blue;border-bottom-color:blue;"> </td></tr> <tr style="text-align:center;"> <td rowspan="2" colspan="5" style="border-top:none;"><code>qualifier</code>/<code>qualifiers</code> <i>(optional 2<sup>nd</sup>, 3<sup>rd</sup>, etc.)</i> </td></tr> <tr> <td rowspan="2" colspan="2" style="border:none;"> </td></tr> <tr> <td colspan="5" style="border:none;"> </td></tr></tbody></table> <p>Below follows a description of all positional arguments. </p> <table class="wikitable"> <tbody><tr> <th>Argument </th> <th>Description </th></tr> <tr> <th style="text-align:left;"><code style="color:#777;">entity_id</code> <p><span style="font-size:85%;"><style data-mw-deduplicate="TemplateStyles:r886047488">.mw-parser-output .nobold{font-weight:normal}</style><span class="nobold">(optional)</span></span> </p> </th> <td><b><code><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239334494"><span class="tmp-color" style="color:red">[EXPENSIVE]</span></code></b> <b>Q-identifier</b> of the item-entity to be accessed (e.g. <code>Q55</code>), <b>P-identifier</b> (or an available <b><a href="#Property_aliases">alias</a></b>) of the property-entity to be accessed preceded by the <code>Property:</code> prefix (e.g. <code>Property:P38</code>), or <b>page title</b> of the Wikipedia article whose connected item-entity is to be accessed preceded by <code>:</code>, a prefixed colon (e.g. <code>:Netherlands</code>). <p>In case of the <a href="#General_class">general class commands</a>, the <code>Property:</code> prefix may be omitted for P-identifiers (e.g. <code>P38</code>). </p><p>If this parameter is omitted, then the item-entity connected to the current page will be used (except when <code>eid=</code> or <code>page=</code> is given, <a href="#Named_arguments">see below</a>). If this parameter is given, but empty (i.e. <code>||</code>), then due to its position it will be interpreted as an <a href="#Flags">empty flag</a> and thus be ignored, giving the same result as if it were omitted. See also the <a href="#Named_arguments">named arguments <code>eid=</code> and <code>page=</code></a> below that can be used to give an entity-ID or page title too, but without the item-entity connected to the current page being used as a default. </p> </td></tr> <tr> <th style="text-align:left;"><code>property_id</code> </th> <td><b>P-identifier</b> (or an available <b><a href="#Property_aliases">alias</a></b>) of the property within the entity to be accessed, without the <code>Property:</code> prefix (e.g. <code>P35</code>). </td></tr> <tr> <th style="text-align:left;"><code style="color:#777;">raw_value</code> <p><span style="font-size:85%;"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886047488"><span class="nobold">(optional)</span></span> </p> </th> <td>Either the <b>Q-identifier</b> equal to the property value (e.g. <code>Q29574</code>) or a <b>literal value</b> (i.e. string or quantity etc., <i>no entity label</i>) equal to the raw property value of the particular claim to be accessed. <p>Dates as literal values must be formatted <code>yyyy-mm-dd</code> (e.g. <code>1731-02-11</code>) for dates with a precision of days, <code>yyyy-mm</code> (e.g. <code>1731-02</code>) for dates with a precision of months, and <code>yyyy</code> (e.g. <code>1731</code>) for dates of lesser precision. Dates BCE require a minus sign in front of the year (e.g. <code>-2950-01-31</code>). Dates stored in the Julian calendar must have <code>/Julian</code> attached to the end (e.g. <code>1731-02-11/Julian</code>). Decades like the 2010s must be given as <code>2010</code> (but the 2010s BCE as <code>-2019</code>), centuries like the 20th century as <code>1901</code> (but the 20th century BCE as <code>-2000</code>), and millenniums like the 3rd millennium as <code>2001</code> (but the 3rd millennium BCE as <code>-3000</code>). </p><p>Globe coordinates as literal values must be formatted with forward slashes (i.e. <code>/</code>) between the parts and no symbols (e.g. <code>52/5/3/N/4/19/3/E</code>) <i>without any spaces or leading zeros</i>. </p><p>The special type '<b>no value</b>' can be given by entering the empty string (i.e. <code>||</code>) and the special type '<b>unknown value</b>' can be given by entering a single underscore (i.e. <code>|_|</code>). To get a literal underscore, escape it by placing a backslash <code>\</code> directly in front of it (i.e. <code>\_</code>); the same holds for a literal backslash (i.e. <code>\\</code>). </p><p>To get a literal vertical bar <code>|</code>, use <code><span class="nowrap">{{</span><a href="/wiki/Template:!" title="Template:!">!</a><span class="nowrap">}}</span></code> or <code>&#124;</code>. </p><p>If this parameter is omitted, then all claims (matching any other constraints) within the property will be accessed. </p> </td></tr> <tr> <th style="text-align:left;"><code>qualifier_id</code> </th> <td><b>P-identifier</b> (or an available <b><a href="#Property_aliases">alias</a></b>) of the qualifier within the entity to be accessed, without the <code>Property:</code> prefix (e.g. <code>P580</code>). </td></tr></tbody></table> <p><br /> </p> <div class="mw-heading mw-heading3"><h3 id="Named_arguments">Named arguments</h3></div> <p>Below follows a description of all named arguments, which are name-value pairs (i.e. <code>|name=value</code>). These are all optional and can be given anywhere after the first command. </p> <table class="wikitable"> <tbody><tr> <th>Argument </th> <th>Description </th> <th>Command class </th></tr> <tr> <th style="text-align:right;"><code>eid=</code> </th> <td><b><code><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239334494"><span class="tmp-color" style="color:red">[EXPENSIVE]</span></code></b> This argument can be used to give the <b>Q-identifier</b> (e.g. <code>|eid=Q55</code>) or <b>P-identifier</b> (or an available <b><a href="#Property_aliases">alias</a></b>) of the entity to be accessed. It offers the same functionality as the <a href="#Positional_arguments">positional argument <code>entity_id</code></a>, with one difference: if the argument is given but its value is left empty (i.e. <code>|eid=</code>), then no entity is accessed at all instead of the item-entity connected to the current page. This is useful in some cases where a variable entity-ID is expected, but where the item-entity connected to the current page should not be accessed as the default. <p>Also, the <code>Property:</code> prefix may be omitted for P-identifiers (e.g. <code>|eid=P38</code>) for all commands. </p><p>This argument only has effect if the positional argument <code>entity_id</code> is omitted. </p> </td> <td><a href="#Claim_class">claim</a>, <a href="#General_class">general</a> </td></tr> <tr> <th style="text-align:right;"><code>page=</code> </th> <td><b><code><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239334494"><span class="tmp-color" style="color:red">[EXPENSIVE]</span></code></b> This argument can be used to give the <b>page title</b> (e.g. <code>|page=Netherlands</code>) of the Wikipedia article whose connected item-entity is to be accessed. It behaves similar to the named argument <code>eid=</code> and can be used instead of the <a href="#Positional_arguments">positional argument <code>entity_id</code></a> (note that no prefixed colon, <code>:</code>, is required). If the argument is given but its value is left empty (i.e. <code>|page=</code>), then no entity is accessed at all instead of the item-entity connected to the current page. <p>This argument only has effect if the positional argument <code>entity_id</code> and the named argument <code>eid=</code> are omitted. </p> </td> <td>claim, general </td></tr> <tr> <th style="text-align:right;"><code>date=</code> </th> <td>This argument can be used to set a particular date (e.g. <code>|date=1731-02-11</code>) relative to which claim matching using the <a href="#Configuration_flags"><code>future</code>, <code>current</code> and <code>former</code> flags</a> is done, instead of relative to today. It overrides the default of these flags to <code>current</code> so that by default only claims that were valid at the given date are returned (based on the claims' qualifiers of <a href="https://www.wikidata.org/wiki/Special:EntityPage/P580" class="extiw" title="d:Special:EntityPage/P580">start time <small>(P580)</small></a> and <a href="https://www.wikidata.org/wiki/Special:EntityPage/P582" class="extiw" title="d:Special:EntityPage/P582">end time <small>(P582)</small></a>). <p>The date value must be formatted <code>yyyy-mm-dd</code> (e.g. <code>1731-02-11</code>), <code>yyyy-mm</code> (e.g. <code>1731-02</code>) or <code>yyyy</code> (e.g. <code>1731</code>). </p> </td> <td>claim </td></tr> <tr> <th style="text-align:right;"><code><i><qualifier></i>=</code> </th> <td>The <code><i><qualifier></i></code> is a placeholder for a set of arguments that determine which claims should be accessed based on qualifier value, analogous to the pair of <a href="#Positional_arguments">positional arguments <code>property_id</code> and <code>raw_value</code></a> (that determine access based on property value). <p>As such, <code><i><qualifier></i></code> is any qualifier's <b>P-identifier</b> (or an available <b><a href="#Property_aliases">alias</a></b>) without the <code>Property:</code> prefix (e.g. <code>P518</code>). Its value is either the <b>Q-identifier</b> equal to one of the qualifier values (e.g. <code>Q27561</code>) or a <b>literal value</b> (i.e. string or quantity etc., <i>no entity label</i>) equal to one of the raw qualifier values of the particular claim to be accessed. The value format is the same as for the positional argument <code>raw_value</code>. The special type '<b>no value</b>' given by the empty string also matches the total absence within the claim of the particular qualifier. </p><p>Example: <code>|P518=Q27561</code> </p><p>Multiple arguments of this type can be given to match multiple qualifier values simultaneously for each claim. </p> </td> <td>claim </td></tr></tbody></table> <div class="mw-heading mw-heading3"><h3 id="Property_aliases">Property aliases</h3></div> <p>Property aliases are other names for P-identifiers that can be used instead. The following property aliases (which are <a href="/wiki/Case_sensitivity" title="Case sensitivity">case-sensitive</a>) are currently available: </p> <table class="wikitable"> <tbody><tr> <th>Alias </th> <th><sub>translates<br /></sub><sup>to</sup> </th> <th>P-identifier </th></tr> <tr> <td>coord</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P625" class="extiw" title="d:Property:P625">P625</a> </td></tr> <tr> <th colspan="3"> </th></tr> <tr> <td>image</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P18" class="extiw" title="d:Property:P18">P18</a> </td></tr> <tr> <td>author</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P50" class="extiw" title="d:Property:P50">P50</a> </td></tr> <tr> <td>authorNameString</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P2093" class="extiw" title="d:Property:P2093">P2093</a> </td></tr> <tr> <td>publisher</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P123" class="extiw" title="d:Property:P123">P123</a> </td></tr> <tr> <td>importedFrom</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P143" class="extiw" title="d:Property:P143">P143</a> </td></tr> <tr> <td>wikimediaImportURL</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P4656" class="extiw" title="d:Property:P4656">P4656</a> </td></tr> <tr> <td>statedIn</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P248" class="extiw" title="d:Property:P248">P248</a> </td></tr> <tr> <td>pages</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P304" class="extiw" title="d:Property:P304">P304</a> </td></tr> <tr> <td>language</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P407" class="extiw" title="d:Property:P407">P407</a> </td></tr> <tr> <td>hasPart</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P527" class="extiw" title="d:Property:P527">P527</a> </td></tr> <tr> <td>publicationDate</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P577" class="extiw" title="d:Property:P577">P577</a> </td></tr> <tr> <td>startTime</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P580" class="extiw" title="d:Property:P580">P580</a> </td></tr> <tr> <td>endTime</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P582" class="extiw" title="d:Property:P582">P582</a> </td></tr> <tr> <td>chapter</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P792" class="extiw" title="d:Property:P792">P792</a> </td></tr> <tr> <td>retrieved</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P813" class="extiw" title="d:Property:P813">P813</a> </td></tr> <tr> <td>referenceURL</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P854" class="extiw" title="d:Property:P854">P854</a> </td></tr> <tr> <td>sectionVerseOrParagraph</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P958" class="extiw" title="d:Property:P958">P958</a> </td></tr> <tr> <td>archiveURL</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P1065" class="extiw" title="d:Property:P1065">P1065</a> </td></tr> <tr> <td>title</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P1476" class="extiw" title="d:Property:P1476">P1476</a> </td></tr> <tr> <td>formatterURL</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P1630" class="extiw" title="d:Property:P1630">P1630</a> </td></tr> <tr> <td>quote</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P1683" class="extiw" title="d:Property:P1683">P1683</a> </td></tr> <tr> <td>shortName</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P1813" class="extiw" title="d:Property:P1813">P1813</a> </td></tr> <tr> <td>definingFormula</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P2534" class="extiw" title="d:Property:P2534">P2534</a> </td></tr> <tr> <td>archiveDate</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P2960" class="extiw" title="d:Property:P2960">P2960</a> </td></tr> <tr> <td>inferredFrom</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P3452" class="extiw" title="d:Property:P3452">P3452</a> </td></tr> <tr> <td>typeOfReference</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P3865" class="extiw" title="d:Property:P3865">P3865</a> </td></tr> <tr> <td>column</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P3903" class="extiw" title="d:Property:P3903">P3903</a> </td></tr> <tr> <td>subjectNamedAs</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P1810" class="extiw" title="d:Property:P1810">P1810</a> </td></tr> <tr> <td>wikidataProperty</td> <td style="text-align: center;">→</td> <td><a href="https://www.wikidata.org/wiki/Property:P1687" class="extiw" title="d:Property:P1687">P1687</a> </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="References">References</h2></div> <p>When either the <code>reference</code> or the <code>references</code> command is used and a reference is encountered (in Wikidata), the module checks if the reference contains an <a href="https://www.wikidata.org/wiki/Special:EntityPage/P143" class="extiw" title="d:Special:EntityPage/P143">imported from Wikimedia project <small>(P143)</small></a>, <a href="https://www.wikidata.org/wiki/Special:EntityPage/P3452" class="extiw" title="d:Special:EntityPage/P3452">inferred from <small>(P3452)</small></a> or <a href="https://www.wikidata.org/wiki/Special:EntityPage/P4656" class="extiw" title="d:Special:EntityPage/P4656">Wikimedia import URL <small>(P4656)</small></a> property. In the case one of these properties is present, the whole reference is ignored (i.e. it is treated as if it wasn't present). </p><p>Else, the module attempts to display the reference using the <span class="nowrap">{{</span><a href="/wiki/Template:Cite_web" title="Template:Cite web">Cite web</a><span class="nowrap">}}</span> template. The reference has to have a <a href="https://www.wikidata.org/wiki/Special:EntityPage/P854" class="extiw" title="d:Special:EntityPage/P854">reference URL <small>(P854)</small></a> property. The below table shows the mapping of Wikidata properties to parameters of Cite web. </p> <table class="wikitable"> <caption> </caption> <tbody><tr> <th>Wikidata property </th> <th>Parameter of Cite web </th> <th>Notes </th></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P2960" class="extiw" title="d:Special:EntityPage/P2960">archive date <small>(P2960)</small></a> </td> <td>archive-date </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P1065" class="extiw" title="d:Special:EntityPage/P1065">archive URL <small>(P1065)</small></a> </td> <td>archive-url </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P50" class="extiw" title="d:Special:EntityPage/P50">author <small>(P50)</small></a> </td> <td rowspan="2">author/authorN </td> <td rowspan="2">N can be 1, 2, 3... </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P2093" class="extiw" title="d:Special:EntityPage/P2093">author name string <small>(P2093)</small></a> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P407" class="extiw" title="d:Special:EntityPage/P407">language of work or name <small>(P407)</small></a> </td> <td>language </td> <td>Ignored when the same as the local language. </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P304" class="extiw" title="d:Special:EntityPage/P304">page(s) <small>(P304)</small></a> </td> <td>pages </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P577" class="extiw" title="d:Special:EntityPage/P577">publication date <small>(P577)</small></a> </td> <td>date </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P123" class="extiw" title="d:Special:EntityPage/P123">publisher <small>(P123)</small></a> </td> <td>publisher </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P1683" class="extiw" title="d:Special:EntityPage/P1683">quotation <small>(P1683)</small></a> </td> <td>quote </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P854" class="extiw" title="d:Special:EntityPage/P854">reference URL <small>(P854)</small></a> </td> <td>url </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P813" class="extiw" title="d:Special:EntityPage/P813">retrieved <small>(P813)</small></a> </td> <td>access-date </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P958" class="extiw" title="d:Special:EntityPage/P958">section, verse, paragraph, or clause <small>(P958)</small></a> </td> <td>at </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P248" class="extiw" title="d:Special:EntityPage/P248">stated in <small>(P248)</small></a> </td> <td>website </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P1810" class="extiw" title="d:Special:EntityPage/P1810">subject named as <small>(P1810)</small></a> </td> <td>title </td> <td>Used only when <a href="https://www.wikidata.org/wiki/Special:EntityPage/P1476" class="extiw" title="d:Special:EntityPage/P1476">title <small>(P1476)</small></a> is not present, but a URL (either from <a href="https://www.wikidata.org/wiki/Special:EntityPage/P854" class="extiw" title="d:Special:EntityPage/P854">reference URL <small>(P854)</small></a> or from an external identifier, as described below) is, otherwise ignored. </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P1476" class="extiw" title="d:Special:EntityPage/P1476">title <small>(P1476)</small></a> </td> <td>title </td> <td> </td></tr></tbody></table> <p><span class="anchor" id="Ignored_parameters"></span>The following properties are ignored: <a href="https://www.wikidata.org/wiki/Special:EntityPage/P18" class="extiw" title="d:Special:EntityPage/P18">image <small>(P18)</small></a>, <a href="https://www.wikidata.org/wiki/Special:EntityPage/P3865" class="extiw" title="d:Special:EntityPage/P3865">type of reference <small>(P3865)</small></a>. </p><p>If there is no <a href="https://www.wikidata.org/wiki/Special:EntityPage/P854" class="extiw" title="d:Special:EntityPage/P854">reference URL <small>(P854)</small></a> property present in the reference, but a property of the "External identifier" <a href="https://www.wikidata.org/wiki/Help:Data_type" class="extiw" title="d:Help:Data type">data type</a> is present both in the reference and in the <a href="https://www.wikidata.org/wiki/Special:EntityPage/P1687" class="extiw" title="d:Special:EntityPage/P1687">Wikidata property <small>(P1687)</small></a> of the item in <a href="https://www.wikidata.org/wiki/Special:EntityPage/P248" class="extiw" title="d:Special:EntityPage/P248">stated in <small>(P248)</small></a>, a URL is generated from its content and is used in the same manner as a URL given in <a href="https://www.wikidata.org/wiki/Special:EntityPage/P854" class="extiw" title="d:Special:EntityPage/P854">reference URL <small>(P854)</small></a>. </p><p>If there is no <a href="https://www.wikidata.org/wiki/Special:EntityPage/P854" class="extiw" title="d:Special:EntityPage/P854">reference URL <small>(P854)</small></a> property, or the reference has unknown properties, the module attempts to display it using the <span class="nowrap">{{</span><a href="/wiki/Template:Cite_Q" title="Template:Cite Q">Cite Q</a><span class="nowrap">}}</span> template. The <a href="https://www.wikidata.org/wiki/Special:EntityPage/P248" class="extiw" title="d:Special:EntityPage/P248">stated in <small>(P248)</small></a> property is mandatory. The below table shows the mapping of properties to Cite Q parameters. </p> <table class="wikitable"> <caption> </caption> <tbody><tr> <th>Wikidata property </th> <th>Parameter of Cite Q </th> <th>Notes </th></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P248" class="extiw" title="d:Special:EntityPage/P248">stated in <small>(P248)</small></a> </td> <td>1 </td> <td>Value supplied to the parameter is <i>raw</i>, i.e. it is just the plain QID. </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P792" class="extiw" title="d:Special:EntityPage/P792">chapter <small>(P792)</small></a> </td> <td>chapter </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P3903" class="extiw" title="d:Special:EntityPage/P3903">column <small>(P3903)</small></a> </td> <td>at </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P304" class="extiw" title="d:Special:EntityPage/P304">page(s) <small>(P304)</small></a> </td> <td>pages </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P577" class="extiw" title="d:Special:EntityPage/P577">publication date <small>(P577)</small></a> </td> <td>date </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P813" class="extiw" title="d:Special:EntityPage/P813">retrieved <small>(P813)</small></a> </td> <td>access-date </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P958" class="extiw" title="d:Special:EntityPage/P958">section, verse, paragraph, or clause <small>(P958)</small></a> </td> <td>section </td> <td> </td></tr> <tr> <td><a href="https://www.wikidata.org/wiki/Special:EntityPage/P1476" class="extiw" title="d:Special:EntityPage/P1476">title <small>(P1476)</small></a> </td> <td>title </td> <td> </td></tr> <tr> <td>any property of the "External identifier" data type </td> <td>id </td> <td>The label ("name") of the property is prepended before its content. </td></tr></tbody></table> <p>The properties listed <i>under</i> the first table (in this section) are also ignored when using Cite Q. </p><p>A reference could be displayed using Cite Q only if the reference has a <a href="https://www.wikidata.org/wiki/Special:EntityPage/P248" class="extiw" title="d:Special:EntityPage/P248">stated in <small>(P248)</small></a> property and has only properties listed in the table above. If neither Cite web nor Cite Q could be used to display a reference, the following an error message with an explanation is returned. </p><p>To fix this error, check if the reference has the required properties and doesn't have any unknown properties, as described above. The <a href="https://www.wikidata.org/wiki/Help:Sources" class="extiw" title="d:Help:Sources">Wikidata help page on references</a> can also be helpful when sourcing statements. </p> <div class="mw-heading mw-heading2"><h2 id="Advanced_usage">Advanced usage</h2></div> <p>The layout of the output from (a combination of) commands that have both a singular and a plural form (e.g. <code>property</code>/<code>properties</code>) can be customized by using a number of named flags, which are name-value pairs (i.e. <code>|flag=value</code>), that can be given anywhere after the first command. The table below shows the available named flags. </p><p>To insert a space at the beginning or end of a <code>value</code>, use an underscore <code>_</code>. To get a literal underscore, escape it by placing a backslash <code>\</code> directly in front of it (i.e. <code>\_</code>); the same holds for a literal backslash (i.e. <code>\\</code>). To get a literal vertical bar <code>|</code>, use <code><span class="nowrap">{{</span><a href="/wiki/Template:!" title="Template:!">!</a><span class="nowrap">}}</span></code> or <code>&#124;</code>. </p> <table class="wikitable"> <tbody><tr> <th>Named flag </th> <th>Default value </th> <th>Default condition </th> <th>Description </th></tr> <tr> <th rowspan="6" style="text-align:right;"><code>format=</code> </th> <td><code>%p[%s][%r]</code> </td> <td>if the <code>property</code>/<code>properties</code> command <b>was</b> given and the <code>qualifier</code>/<code>qualifiers</code> command <b>was not</b> given </td> <td rowspan="6">The format of a single claim. The available parameters are as follows. <table class="wikitable"> <tbody><tr> <th>Parameter </th> <th>Description </th></tr> <tr> <td><code>%p</code> </td> <td>The claim's property value applied by the <code>property</code>/<code>properties</code> command. </td></tr> <tr> <td><code>%q1</code>, <code>%q2</code>, <code>%q3</code>, ... </td> <td>The claim's qualifier value or list of qualifier values applied by the corresponding <code>qualifier</code>/<code>qualifiers</code> command. </td></tr> <tr> <td><code>%q</code> </td> <td>The collection of the qualifier values applied by each <code>qualifier</code>/<code>qualifiers</code> command (i.e. <code>%q1</code> + <code>%q2</code> + <code>%q3</code> + ...). If only one <code>qualifier</code>/<code>qualifiers</code> command was given, then this parameter is equivalent to <code>%q1</code>. </td></tr> <tr> <td><code>%r</code> </td> <td>The claim's reference value or list of reference values applied by the <code>reference</code>/<code>references</code> command. </td></tr> <tr> <td><code>%a</code> </td> <td>The entity's alias applied by the <code>alias</code>/<code>aliases</code> command. </td></tr> <tr> <td><code>%b</code> </td> <td>The entity's page badge applied by the <code>badge</code>/<code>badges</code> command. </td></tr> <tr> <td><code>%s</code> </td> <td>The movable separator placeholder. This is a special parameter that is not applied by a command, but instead is filled automatically between each pair of claims, aliases or badges (if a list of claims, aliases or badges is returned). This is particularly handy in case a claim's reference is returned as well, since it allows the reference to be placed after the punctuation mark as prescribed by <a href="/wiki/Wikipedia:Manual_of_Style#Punctuation_and_footnotes" title="Wikipedia:Manual of Style">Wikipedia's manual of style</a>. The default value is a comma (<code>,</code>) and can be overridden with the <code>sep%s</code> flag (see below). </td></tr></tbody></table> <p>Optional parameters can be given by encapsulating them between square brackets: <code>[...]</code>. All content between the square brackets is only displayed if a value for each optional parameter that has been defined between the same brackets has been found. Optional content can also be nested. </p><p>To use two opening square brackets that directly follow each other (i.e. <code>[[</code>), use <code><span class="nowrap">{{</span><a href="/wiki/Template:!((" title="Template:!((">!((</a><span class="nowrap">}}</span></code>. </p><p>At least one parameter must be given that is not optional, while the <code>%s</code> parameter must always be defined as optional. </p><p>To get a literal <code>[</code>, <code>]</code>, <code>%</code> or <code>\</code>, escape the character by placing a backslash <code>\</code> directly in front of it (e.g. <code>\%</code>). See also the description directly above this table for more. </p> </td></tr> <tr> <td><code>%q[%s][%r]</code> </td> <td>if the <code>property</code>/<code>properties</code> command <b>was not</b> given and the <code>qualifier</code>/<code>qualifiers</code> command <b>was</b> given </td></tr> <tr> <td><code>%r</code> </td> <td>if <b>only</b> the <code>reference</code>/<code>references</code> command was given </td></tr> <tr> <td><div class="mw-highlight mw-highlight-lang-wikitext mw-content-ltr" dir="ltr"><pre><span></span>%p[ <span class="p"><</span><span class="nt">span</span><span class="w"> </span><span class="na">style</span><span class="o">=</span><span class="s2">"font-size:85\%"</span><span class="p">></span>(%q)<span class="p"></</span><span class="nt">span</span><span class="p">></span>][%s][%r] </pre></div> </td> <td>if the <code>property</code>/<code>properties</code> command <b>was</b> given and the <code>qualifier</code>/<code>qualifiers</code> command <b>was</b> given </td></tr> <tr> <td><code>%a[%s]</code> </td> <td>if the <code>alias</code>/<code>aliases</code> command was given </td></tr> <tr> <td><code>%b[%s]</code> </td> <td>if the <code>badge</code>/<code>badges</code> command was given </td></tr> <tr> <td colspan="4"> </td></tr> <tr> <th rowspan="2" style="text-align:right;"><code>sep=</code> </th> <td><code><dfn title="space" class="explain">_</dfn></code> </td> <td><span style="color:#777;"><i>default</i></span> </td> <td rowspan="2">The fixed separator between each pair of claims, aliases or badges. </td></tr> <tr> <td><dfn title="empty" class="explain"><code><span style="visibility:hidden;color:transparent;"> </span></code></dfn> </td> <td>if <b>only</b> the <code>reference</code>/<code>references</code> command was given <b>without</b> the <code>raw</code> flag </td></tr> <tr> <td colspan="4"> </td></tr> <tr> <th rowspan="2" style="text-align:right;"><code>sep%s=</code> </th> <td><code>,</code> </td> <td><span style="color:#777;"><i>default</i></span> </td> <td rowspan="2">The movable separator between each pair of claims, aliases or badges. This will be the value of the <code>%s</code> parameter applied to all claims, aliases or badges, except for the last in the list (which can be set with the <code>punc</code> flag). </td></tr> <tr> <td><code>;</code> </td> <td>if the <code>property</code>/<code>properties</code> command <b>was not</b> given and the <code>qualifier</code>/<code>qualifiers</code> command <b>was</b> given </td></tr> <tr> <td colspan="4"> </td></tr> <tr> <th style="text-align:right;"><code>sep%q1=</code>, <code>sep%q2=</code>, <code>sep%q3=</code>, ... </th> <td><code><dfn title="comma space" class="explain">,_</dfn></code> </td> <td><span style="color:#777;"><i>default</i></span> </td> <td>The separator between each pair of qualifiers of a single claim. These are the value separators for the <code>%q1</code>, <code>%q2</code>, <code>%q3</code>, ... parameters. <p>If only one <code>qualifier</code>/<code>qualifiers</code> command was given, then the <code>sep%q1</code> flag is equivalent to <code>sep%q</code>. </p> </td></tr> <tr> <td colspan="4"> </td></tr> <tr> <th rowspan="2" style="text-align:right;"><code>sep%q=</code> </th> <td><code><dfn title="comma space" class="explain">,_</dfn></code> </td> <td>if <b>exactly one</b> <code>qualifier</code>/<code>qualifiers</code> command was given </td> <td rowspan="2">The separator between each set of qualifiers of a single claim. This is the value separator for the <code>%q</code> parameter. <p>If only one <code>qualifier</code>/<code>qualifiers</code> command was given, then this flag is equivalent to <code>sep%q1</code>. </p> </td></tr> <tr> <td><code><dfn title="semicolon space" class="explain">;_</dfn></code> </td> <td>if <b>more than one</b> <code>qualifier</code>/<code>qualifiers</code> command was given </td></tr> <tr> <td colspan="4"> </td></tr> <tr> <th rowspan="2" style="text-align:right;"><code>sep%r=</code> </th> <td><dfn title="empty" class="explain"><code><span style="visibility:hidden;color:transparent;"> </span></code></dfn> </td> <td><span style="color:#777;"><i>default</i></span> </td> <td rowspan="2">The separator between each pair of references of a single claim. This is the value separator for the <code>%r</code> parameter. </td></tr> <tr> <td><code><dfn title="space" class="explain">_</dfn></code> </td> <td>if the <code>raw</code> flag <b>was</b> given for the <code>reference</code>/<code>references</code> command </td></tr> <tr> <td colspan="4"> </td></tr> <tr> <th style="text-align:right;"><code>punc=</code> </th> <td><dfn title="empty" class="explain"><code><span style="visibility:hidden;color:transparent;"> </span></code></dfn> </td> <td><span style="color:#777;"><i>default</i></span> </td> <td>A punctuation mark placed at the end of the output. This will be placed on the <code>%s</code> parameter applied to the last claim (or alias or badge) in the list. <p>This allows the last claim's references to be placed after the punctuation mark when the output is used as part of a sentence. </p> </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="Examples">Examples</h2></div> <table class="wikitable"> <tbody><tr> <th>Parameters and output types </th> <th>Example </th> <th style="width:20%">Description </th></tr> <tr> <td style="color:#777;font-size:small;"><a href="https://www.wikidata.org/wiki/Q55" class="extiw" title="d:Q55">Q55</a> = "Netherlands", <a href="https://www.wikidata.org/wiki/Property:P395" class="extiw" title="d:Property:P395">P395</a> = "licence plate code"<br /> <dl><dd>↓<br /></dd></dl> <p>[<style data-mw-deduplicate="TemplateStyles:r920966791">.mw-parser-output span.smallcaps{font-variant:small-caps}.mw-parser-output span.smallcaps-smaller{font-size:85%}</style><span class="smallcaps">string</span>] </p> </td> <td><code>{{#invoke:wd|property|Q55|P395}}</code><br /> <dl><dd>↓<br /></dd> <dd>NL</dd></dl> </td> <td>Gets a literal string value. </td></tr> <tr> <td style="color:#777;font-size:small;">P395 = "licence plate code"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">string</span>] </p> </td> <td><code>{{#invoke:wd|property|P395}}</code><br /> <dl><dd>↓<br /></dd> <dd>NL</dd></dl> </td> <td>If the module is transcluded on the <a href="/wiki/Netherlands" title="Netherlands">Netherlands</a> page (which is linked to Q55), then the <code>Q55</code> can be omitted. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P395 = "NL"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">string</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>eid=Q55</b>|P395}}</code><br /> <dl><dd>↓<br /></dd> <dd>NL</dd></dl> </td> <td>An entity-ID can also be given using the <code>eid=</code> argument. </td></tr> <tr> <td style="color:#777;font-size:small;">P395 = "NL"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">string</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>page=Netherlands</b>|P395}}</code><br /> <dl><dd>↓<br /></dd> <dd>NL</dd></dl> </td> <td>A page title can be given instead of an entity-ID using the <code>page=</code> argument. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P395 = "licence plate code"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">string</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>edit</b>|Q55|P395}}</code><br /> <dl><dd>↓<br /></dd> <dd>NL <span class="mw-valign-text-top" typeof="mw:File/Frameless"><a href="https://www.wikidata.org/wiki/Q55?uselang=en#P395" title="Edit this on Wikidata"><img alt="Edit this on Wikidata" src="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span></dd></dl> </td> <td>Adds a clickable icon that may be used to edit the returned value on Wikidata. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P395 = "licence plate code"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">string</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>edit@end</b>|Q55|P395}}</code><br /> <dl><dd>↓<br /></dd> <dd>NL<span style="float:right"><span class="mw-valign-text-top" typeof="mw:File/Frameless"><a href="https://www.wikidata.org/wiki/Q55?uselang=en#P395" title="Edit this on Wikidata"><img alt="Edit this on Wikidata" src="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span></span></dd></dl> </td> <td>Places the edit icon at the end of the line. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", <a href="https://www.wikidata.org/wiki/Property:P1082" class="extiw" title="d:Property:P1082">P1082</a> = "population"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>] </p> </td> <td><code>{{#invoke:wd|<b>property</b>|<b>normal+</b>|Q55|P1082}}</code><br /> <dl><dd>↓<br /></dd> <dd>17,590,672</dd></dl> </td> <td>Gets a single property value from claims with a 'normal' rank or higher. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>] </p> </td> <td><code>{{#invoke:wd|<b>properties</b>|normal+|Q55|P1082}}</code><br /> <dl><dd>↓<br /></dd> <dd>17,590,672, 10,026,773, 16,779,575, 16,829,289, 17,000,000, 17,081,507, 17,181,084, 17,282,163, 17,407,585</dd></dl> </td> <td>Gets multiple property values from claims with a 'normal' rank or higher. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population", <a href="https://www.wikidata.org/wiki/Property:P585" class="extiw" title="d:Property:P585">P585</a> = "point in time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>] </p> </td> <td><code>{{#invoke:wd|properties|<b>qualifier</b>|normal+|Q55|P1082|<b>P585</b>}}</code><br /> <dl><dd>↓<br /></dd> <dd>17,590,672 <span style="font-size:85%">(1 January 2022)</span>, 10,026,773 <span style="font-size:85%">(1950)</span>, 16,779,575 <span style="font-size:85%">(2013)</span>, 16,829,289 <span style="font-size:85%">(26 August 2014)</span>, 17,000,000 <span style="font-size:85%">(21 March 2016)</span>, 17,081,507 <span style="font-size:85%">(1 January 2017)</span>, 17,181,084 <span style="font-size:85%">(1 January 2018)</span>, 17,282,163 <span style="font-size:85%">(1 January 2019)</span>, 17,407,585 <span style="font-size:85%">(1 January 2020)</span></dd></dl> </td> <td>Gets a single qualifier value for each claim, additional to the property value. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population", P585 = "point in time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">reference</span>] </p> </td> <td><code>{{#invoke:wd|properties|qualifier|<b>references</b>|normal+|Q55|P1082|P585}}</code><br /> <dl><dd>↓<br /></dd> <dd>17,590,672 <span style="font-size:85%">(1 January 2022)</span>,<sup id="cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-0" class="reference"><a href="#cite_note-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5-5"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> 10,026,773 <span style="font-size:85%">(1950)</span>,<sup id="cite_ref-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5_6-0" class="reference"><a href="#cite_note-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5-6"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> 16,779,575 <span style="font-size:85%">(2013)</span>,<sup id="cite_ref-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5_6-1" class="reference"><a href="#cite_note-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5-6"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> 16,829,289 <span style="font-size:85%">(26 August 2014)</span>,<sup id="cite_ref-wikidata-475c2999c451e2e418b275ef9b087583a2db7228-v5_7-0" class="reference"><a href="#cite_note-wikidata-475c2999c451e2e418b275ef9b087583a2db7228-v5-7"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> 17,000,000 <span style="font-size:85%">(21 March 2016)</span>,<sup id="cite_ref-wikidata-08fbc9797078849d8dc7b4754ad2109020d16f96-v5_8-0" class="reference"><a href="#cite_note-wikidata-08fbc9797078849d8dc7b4754ad2109020d16f96-v5-8"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> 17,081,507 <span style="font-size:85%">(1 January 2017)</span>,<sup id="cite_ref-wikidata-4f58fc69480f96aaec74e771792854a11428895e-v5_9-0" class="reference"><a href="#cite_note-wikidata-4f58fc69480f96aaec74e771792854a11428895e-v5-9"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> 17,181,084 <span style="font-size:85%">(1 January 2018)</span>,<sup id="cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-1" class="reference"><a href="#cite_note-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5-5"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> 17,282,163 <span style="font-size:85%">(1 January 2019)</span>,<sup id="cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-2" class="reference"><a href="#cite_note-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5-5"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> 17,407,585 <span style="font-size:85%">(1 January 2020)</span><sup id="cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-3" class="reference"><a href="#cite_note-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5-5"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></dd></dl> </td> <td>Gets references for each claim. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">reference</span>] </p> </td> <td><code>A total of <code>{{#invoke:wd|property|references|Q55|P1082}}</code> people live in the Netherlands.</code><br /> <dl><dd>↓<br /></dd> <dd>A total of 17,590,672<sup id="cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-4" class="reference"><a href="#cite_note-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5-5"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> people live in the Netherlands.</dd></dl> </td> <td>Gets a property with its references. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">reference</span>] </p> </td> <td><code>The Netherlands has a population of <code>{{#invoke:wd|property|references|Q55|P1082|<b>punc=.</b>}}</code></code> <dl><dd>↓<br /></dd> <dd>The Netherlands has a population of 17,590,672.<sup id="cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-5" class="reference"><a href="#cite_note-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5-5"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></dd></dl> </td> <td>Adds a punctuation mark at the end of the output, in front of the references. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population", P585 = "point in time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">reference</span>] </p> </td> <td><code><b><ul></b><code>{{#invoke:wd|properties|qualifier|references|normal+|Q55|P1082|P585|<b>format=<li>%p[%r][<ul><li>%q</li></ul>]</li></b>}}</code><b></ul></b></code><br /> <dl><dd>↓<br /></dd></dl> <ul><li>17,590,672<sup id="cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-6" class="reference"><a href="#cite_note-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5-5"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><ul><li>1 January 2022</li></ul></li> <li>10,026,773<sup id="cite_ref-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5_6-2" class="reference"><a href="#cite_note-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5-6"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><ul><li>1950</li></ul></li> <li>16,779,575<sup id="cite_ref-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5_6-3" class="reference"><a href="#cite_note-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5-6"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><ul><li>2013</li></ul></li> <li>16,829,289<sup id="cite_ref-wikidata-475c2999c451e2e418b275ef9b087583a2db7228-v5_7-1" class="reference"><a href="#cite_note-wikidata-475c2999c451e2e418b275ef9b087583a2db7228-v5-7"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><ul><li>26 August 2014</li></ul></li> <li>17,000,000<sup id="cite_ref-wikidata-08fbc9797078849d8dc7b4754ad2109020d16f96-v5_8-1" class="reference"><a href="#cite_note-wikidata-08fbc9797078849d8dc7b4754ad2109020d16f96-v5-8"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><ul><li>21 March 2016</li></ul></li> <li>17,081,507<sup id="cite_ref-wikidata-4f58fc69480f96aaec74e771792854a11428895e-v5_9-1" class="reference"><a href="#cite_note-wikidata-4f58fc69480f96aaec74e771792854a11428895e-v5-9"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><ul><li>1 January 2017</li></ul></li> <li>17,181,084<sup id="cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-7" class="reference"><a href="#cite_note-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5-5"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><ul><li>1 January 2018</li></ul></li> <li>17,282,163<sup id="cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-8" class="reference"><a href="#cite_note-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5-5"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><ul><li>1 January 2019</li></ul></li> <li>17,407,585<sup id="cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-9" class="reference"><a href="#cite_note-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5-5"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><ul><li>1 January 2020</li></ul></li></ul> </td> <td>Returns the output in a custom format. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population", P585 = "point in time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>] </p> </td> <td><code>{{#invoke:wd|<b>qualifier</b>|normal+|Q55|P1082|P585}}</code><br /> <dl><dd>↓<br /></dd> <dd>1 January 2022; 1950; 2013; 26 August 2014; 21 March 2016; 1 January 2017; 1 January 2018; 1 January 2019; 1 January 2020</dd></dl> </td> <td>Gets a single qualifier per claim, by default for multiple matching claims. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population", P585 = "point in time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>] </p> </td> <td><code>{{#invoke:wd|qualifier|normal+|<b>single</b>|Q55|P1082|P585}}</code><br /> <dl><dd>↓<br /></dd> <dd>1 January 2022</dd></dl> </td> <td>To get a single qualifier for only a single claim, give the <code>single</code> flag too so that only a single claim will be accessed. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population", P585 = "point in time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>] </p> </td> <td><code>{{#invoke:wd|qualifier|Q55|P1082|<b>10026773</b>|P585}}</code><br /> <dl><dd>↓<br /></dd> <dd>1950</dd></dl> </td> <td>Gets a qualifier from claims for which the (raw) property value matches a given literal value. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population", P585 = "point in time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>] </p> </td> <td><code>{{#invoke:wd|qualifier|<b>mdy</b>|Q55|P1082|10026773|P585}}</code><br /> <dl><dd>↓<br /></dd> <dd>1950</dd></dl> </td> <td>Gets dates in month-day-year order. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population", P585 = "point in time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>] </p> </td> <td><code>{{#invoke:wd|qualifier|<b>raw</b>|Q55|P1082|10026773|P585}}</code><br /> <dl><dd>↓<br /></dd> <dd>1950</dd></dl> </td> <td>Gets a raw date value. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">reference</span>] </p> </td> <td><code>{{#invoke:wd|<b>references</b>|Q55|P1082|<b>10026773</b>}}</code><br /> <dl><dd>↓<br /></dd> <dd><sup id="cite_ref-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5_6-4" class="reference"><a href="#cite_note-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5-6"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup></dd></dl> </td> <td>Gets the references from a particular claim. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1082 = "population"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">reference</span>] </p> </td> <td><code>{{#invoke:wd|<b>references</b>|<b>raw</b>|Q55|P1082|<b>10026773</b>}}</code><br /> <dl><dd>↓<br /></dd> <dd><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20150827042738/http://statline.cbs.nl/StatWeb/publication/?VW=T&DM=SLNL&PA=37296ned&D1=a&D2=0,10,20,30,40,50,60,(l-1),l&HD=130605-0924&HDR=G1&STB=T">"CBS StatLine - Bevolking; kerncijfers"</a>. Statistics Netherlands. Archived from <a rel="nofollow" class="external text" href="https://statline.cbs.nl/StatWeb/publication/?VW=T&DM=SLNL&PA=37296ned&D1=a&D2=0,10,20,30,40,50,60,(l-1),l&HD=130605-0924&HDR=G1&STB=T">the original</a> on 27 August 2015<span class="reference-accessdate">. Retrieved <span class="nowrap">22 August</span> 2015</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=CBS+StatLine+-+Bevolking%3B+kerncijfers&rft.pub=Statistics+Netherlands&rft_id=http%3A%2F%2Fstatline.cbs.nl%2FStatWeb%2Fpublication%2F%3FVW%3DT%26DM%3DSLNL%26PA%3D37296ned%26D1%3Da%26D2%3D0%2C10%2C20%2C30%2C40%2C50%2C60%2C%28l-1%29%2Cl%26HD%3D130605-0924%26HDR%3DG1%26STB%3DT&rfr_id=info%3Asid%2Fen.wikipedia.org%3AModule%3AWd" class="Z3988"></span></dd></dl> </td> <td>Gets references from a particular claim in their raw form. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", <a href="https://www.wikidata.org/wiki/Property:P1081" class="extiw" title="d:Property:P1081">P1081</a> = "Human Development Index"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">reference</span>] </p> </td> <td><code>{{#invoke:wd|properties|<b>references</b>|normal+|Q55|P1081}}</code><br /> <dl><dd>↓<br /></dd> <dd>0.931,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-0" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.787, 0.799, 0.829,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-0" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-1" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.861,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-2" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.877,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-1" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> 0.891,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-3" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.909,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-2" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> 0.919,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-3" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> 0.920,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-4" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> 0.920,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-5" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> 0.922,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-6" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> 0.834,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-4" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.835,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-5" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.839,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-6" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.864,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-7" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.866,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-8" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.865,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-9" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.867,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-10" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.870,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-11" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.876,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-12" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.879,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-13" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.878,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-14" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.883,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-15" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.886,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-16" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.897,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-17" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.904,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-18" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.906,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-19" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.906,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-20" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.910,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-21" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.921,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-22" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.921,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-23" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.923,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-24" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.924,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-25" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.926,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-26" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.928<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-27" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup></dd></dl> </td> <td>Gets properties from each claim with any references they have. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1081 = "Human Development Index"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">reference</span>] </p> </td> <td><code>{{#invoke:wd|properties|references|normal+|<b>sourced</b>|Q55|P1081}}</code><br /> <dl><dd>↓<br /></dd> <dd>0.931,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-28" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.829,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-7" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-29" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.861,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-30" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.877,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-8" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> 0.891,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-31" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.909,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-9" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> 0.919,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-10" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> 0.920,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-11" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> 0.920,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-12" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> 0.922,<sup id="cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-13" class="reference"><a href="#cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> 0.834,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-32" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.835,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-33" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.839,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-34" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.864,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-35" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.866,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-36" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.865,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-37" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.867,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-38" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.870,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-39" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.876,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-40" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.879,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-41" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.878,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-42" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.883,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-43" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.886,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-44" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.897,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-45" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.904,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-46" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.906,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-47" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.906,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-48" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.910,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-49" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.921,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-50" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.921,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-51" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.923,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-52" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.924,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-53" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.926,<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-54" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> 0.928<sup id="cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-55" class="reference"><a href="#cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup></dd></dl> </td> <td>Only gets properties from claims that have at least one reference. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", <a href="https://www.wikidata.org/wiki/Property:P2855" class="extiw" title="d:Property:P2855">P2855</a> = "VAT rate", <a href="https://www.wikidata.org/wiki/Property:P518" class="extiw" title="d:Property:P518">P518</a> = "applies to part"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|<b>qualifier</b>|Q55|P2855|P518}}</code><br /> <dl><dd>↓<br /></dd> <dd>food</dd></dl> </td> <td>Gets a single qualifier value (for each matching claim). </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P2855 = "VAT rate", P518 = "applies to part"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|<b>qualifiers</b>|Q55|P2855|P518}}</code><br /> <dl><dd>↓<br /></dd> <dd>food, medication, assistive technology, magazine, book, art, antique, hairdresser, hotel, campsite, recreation, sport, water</dd></dl> </td> <td>Gets multiple qualifier values (for each matching claim). </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P2855 = "VAT rate", P518 = "applies to part"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|<b>properties</b>|qualifiers|Q55|P2855|P518}}</code><br /> <dl><dd>↓<br /></dd> <dd>21%, 6% <span style="font-size:85%">(food, medication, assistive technology, magazine, book, art, antique, hairdresser, hotel, campsite, recreation, sport, water)</span></dd></dl> </td> <td>Gets multiple property values along with multiple qualifier values. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P2855 = "VAT rate", P518 = "applies to part"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|properties|qualifiers|Q55|P2855|P518|<b>sep=_+_</b>|<b>sep%s=</b>|<b>sep%q=_/_</b>}}</code><br /> <dl><dd>↓<br /></dd> <dd>21% + 6% <span style="font-size:85%">(food / medication / assistive technology / magazine / book / art / antique / hairdresser / hotel / campsite / recreation / sport / water)</span></dd></dl> </td> <td>Returns the output with custom separators. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", <a href="https://www.wikidata.org/wiki/Property:P35" class="extiw" title="d:Property:P35">P35</a> = "head of state", <a href="https://www.wikidata.org/wiki/Property:P580" class="extiw" title="d:Property:P580">P580</a> = "start time", <a href="https://www.wikidata.org/wiki/Property:P582" class="extiw" title="d:Property:P582">P582</a> = "end time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>] </p> </td> <td><code>{{#invoke:wd|properties|<b>qualifier</b>|<b>qualifier</b>|normal+|Q55|P35|<b>P580</b>|<b>P582</b>}}</code><br /> <dl><dd>↓<br /></dd> <dd>Willem-Alexander of the Netherlands <span style="font-size:85%">(30 April 2013)</span>, Beatrix of the Netherlands <span style="font-size:85%">(30 April 1980; 30 April 2013)</span>, Juliana of the Netherlands <span style="font-size:85%">(4 September 1948; 30 April 1980)</span>, Wilhelmina of the Netherlands <span style="font-size:85%">(23 November 1890; 4 September 1948)</span>, Willem III of the Netherlands <span style="font-size:85%">(17 March 1849; 23 November 1890)</span>, Willem II of the Netherlands <span style="font-size:85%">(7 October 1840; 17 March 1849)</span>, William I of the Netherlands <span style="font-size:85%">(16 March 1815; 7 October 1840)</span></dd></dl> </td> <td>Gets two different qualifier values for each claim. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P35 = "head of state", P580 = "start time", P582 = "end time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>] </p> </td> <td><code>{{#invoke:wd|properties|qualifier|qualifier|normal+|Q55|P35|P580|P582|<b>sep%q=_–_</b>}}</code><br /> <dl><dd>↓<br /></dd> <dd>Willem-Alexander of the Netherlands <span style="font-size:85%">(30 April 2013)</span>, Beatrix of the Netherlands <span style="font-size:85%">(30 April 1980 – 30 April 2013)</span>, Juliana of the Netherlands <span style="font-size:85%">(4 September 1948 – 30 April 1980)</span>, Wilhelmina of the Netherlands <span style="font-size:85%">(23 November 1890 – 4 September 1948)</span>, Willem III of the Netherlands <span style="font-size:85%">(17 March 1849 – 23 November 1890)</span>, Willem II of the Netherlands <span style="font-size:85%">(7 October 1840 – 17 March 1849)</span>, William I of the Netherlands <span style="font-size:85%">(16 March 1815 – 7 October 1840)</span></dd></dl> </td> <td>Returns the output with a custom separator. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P35 = "head of state", P580 = "start time", P582 = "end time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>] </p> </td> <td><code>{{#invoke:wd|properties|qualifier|qualifier|normal+|Q55|P35|P580|P582|<b>format=%p[ <span style="font-size:85\%">(%q1[ – %q2])</span>][%s][%r]</b>}}</code><br /> <dl><dd>↓<br /></dd> <dd>Willem-Alexander of the Netherlands <span style="font-size:85%">(30 April 2013)</span>, Beatrix of the Netherlands <span style="font-size:85%">(30 April 1980 – 30 April 2013)</span>, Juliana of the Netherlands <span style="font-size:85%">(4 September 1948 – 30 April 1980)</span>, Wilhelmina of the Netherlands <span style="font-size:85%">(23 November 1890 – 4 September 1948)</span>, Willem III of the Netherlands <span style="font-size:85%">(17 March 1849 – 23 November 1890)</span>, Willem II of the Netherlands <span style="font-size:85%">(7 October 1840 – 17 March 1849)</span>, William I of the Netherlands <span style="font-size:85%">(16 March 1815 – 7 October 1840)</span></dd></dl> </td> <td>Returns the output in a custom format instead of with a custom separator. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P35 = "head of state", P580 = "start time", P582 = "end time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>] </p> </td> <td><code>{{#invoke:wd|properties|qualifier|qualifier|normal+|Q55|P35|P580|P582|format=%p[ <span style="font-size:85\%">(<b>[<![]--%q2]since [%q2--[]>]</b>%q1[ – %q2])</span>][%s][%r]}}</code><br /> <dl><dd>↓<br /></dd> <dd>Willem-Alexander of the Netherlands <span style="font-size:85%">(since 30 April 2013)</span>, Beatrix of the Netherlands <span style="font-size:85%">(30 April 1980 – 30 April 2013)</span>, Juliana of the Netherlands <span style="font-size:85%">(4 September 1948 – 30 April 1980)</span>, Wilhelmina of the Netherlands <span style="font-size:85%">(23 November 1890 – 4 September 1948)</span>, Willem III of the Netherlands <span style="font-size:85%">(17 March 1849 – 23 November 1890)</span>, Willem II of the Netherlands <span style="font-size:85%">(7 October 1840 – 17 March 1849)</span>, William I of the Netherlands <span style="font-size:85%">(16 March 1815 – 7 October 1840)</span></dd></dl> </td> <td>To add text only when a certain value is not present, like adding the word <i>since</i> if there is no end time, wrap it in between two optional blocks containing HTML comment tags and the relevant parameter (this also prevents the text from being added to the page source). </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P35 = "head of state", <a href="https://www.wikidata.org/wiki/Q29574" class="extiw" title="d:Q29574">Q29574</a> = "Beatrix of the Netherlands", P580 = "start time", P582 = "end time"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">time</span>] </p> </td> <td><code>{{#invoke:wd|properties|qualifier|<b>raw</b>|qualifier|normal+|Q55|P35|<b>Q29574</b>|P580|P582|format=%p[ <span style="font-size:85\%">(%q1[ – %q2])</span>][%s][%r]}}</code><br /> <dl><dd>↓<br /></dd> <dd>Beatrix of the Netherlands <span style="font-size:85%">(1980-04-30 – 30 April 2013)</span></dd></dl> </td> <td>Gets a property with qualifiers from claims for which the property matches a given Q-identifier, with one of the qualifier values in its raw form. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", <a href="https://www.wikidata.org/wiki/Property:P38" class="extiw" title="d:Property:P38">P38</a> = "currency", P518 = "applies to part"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|properties|qualifiers|normal+|<b>current</b>|Q55|P38|P518}}</code><br /> <dl><dd>↓<br /></dd> <dd>euro <span style="font-size:85%">(European Netherlands)</span>, United States dollar <span style="font-size:85%">(Caribbean Netherlands)</span></dd></dl> </td> <td>Gets claims that are currently valid. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P38 = currency", P518 = "applies to part"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|properties|<b>linked</b>|qualifiers|normal+|current|Q55|P38|P518}}</code><br /> <dl><dd>↓<br /></dd> <dd><a href="/wiki/Euro" title="Euro">euro</a> <span style="font-size:85%">(European Netherlands)</span>, <a href="/wiki/United_States_dollar" title="United States dollar">United States dollar</a> <span style="font-size:85%">(Caribbean Netherlands)</span></dd></dl> </td> <td>Gets claims with linked property values. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P38 = currency", P518 = "applies to part"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|properties|qualifiers|<b>linked</b>|normal+|current|Q55|P38|P518}}</code><br /> <dl><dd>↓<br /></dd> <dd>euro <span style="font-size:85%">(European Netherlands)</span>, United States dollar <span style="font-size:85%">(<a href="/wiki/Caribbean_Netherlands" title="Caribbean Netherlands">Caribbean Netherlands</a>)</span></dd></dl> </td> <td>Gets claims with linked qualifier values. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P38 = currency", P518 = "applies to part"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|properties|<b>linked</b>|<b>short</b>|qualifiers|<b>linked</b>|normal+|current|Q55|P38|P518}}</code><br /> <dl><dd>↓<br /></dd> <dd><a href="/wiki/Euro" title="Euro">euro</a> <span style="font-size:85%">(European Netherlands)</span>, <a href="/wiki/United_States_dollar" title="United States dollar">US dollar</a> <span style="font-size:85%">(<a href="/wiki/Caribbean_Netherlands" title="Caribbean Netherlands">Caribbean Netherlands</a>)</span></dd></dl> </td> <td>Gets claims with linked property and qualifier values, with short property values wherever available. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P38 = currency", <a href="https://www.wikidata.org/wiki/Q4917" class="extiw" title="d:Q4917">Q4917</a> = "United States dollar", P518 = "applies to part"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|qualifiers|normal+|current|Q55|P38|<b>Q4917</b>|P518}}</code><br /> <dl><dd>↓<br /></dd> <dd>Caribbean Netherlands</dd></dl> </td> <td>Gets qualifiers from claims for which the (raw) property value matches a given Q-identifier. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P38 = currency", P518 = "applies to part", <a href="https://www.wikidata.org/wiki/Q27561" class="extiw" title="d:Q27561">Q27561</a> = "Caribbean Netherlands"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|properties|normal+|current|Q55|P38|<b>P518=Q27561</b>}}</code><br /> <dl><dd>↓<br /></dd> <dd>United States dollar</dd></dl> </td> <td>Gets properties from claims for which a (raw) qualifier value matches a given Q-identifier. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P38 = currency"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|properties|normal+|<b>former</b>|Q55|P38}}</code><br /> <dl><dd>↓<br /></dd> <dd>Dutch guilder</dd></dl> </td> <td>Gets claims that were valid in the past. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P38 = currency"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|properties|<b>raw</b>|normal+|former|Q55|P38}}</code><br /> <dl><dd>↓<br /></dd> <dd>Q788472</dd></dl> </td> <td>Gets raw property values. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P38 = currency"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|properties|raw|<b>linked</b>|normal+|former|Q55|P38}}</code><br /> <dl><dd>↓<br /></dd> <dd><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q788472" class="extiw" title="d:Special:EntityPage/Q788472">Q788472</a></dd></dl> </td> <td>Gets raw property values that are linked to Wikidata. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", <a href="https://www.wikidata.org/wiki/Property:P1549" class="extiw" title="d:Property:P1549">P1549</a> = "demonym"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">monolingual text</span>] </p> </td> <td><code>{{#invoke:wd|property|Q55|P1549}}</code><br /> <dl><dd>↓<br /></dd> <dd>Dutch</dd></dl> </td> <td>Gets a monolingual text value in the current wiki's language. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P1549 = "demonym", <a href="https://www.wikidata.org/wiki/Property:P407" class="extiw" title="d:Property:P407">P407</a> = "language of work or name", <a href="https://www.wikidata.org/wiki/Q36846" class="extiw" title="d:Q36846">Q36846</a> = "Toki Pona"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">monolingual text</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>multilanguage</b>|Q55|P1549|P407=Q36846}}</code><br /> <dl><dd>↓<br /></dd> <dd></dd></dl> </td> <td>Gets a monolingual text value in any available language. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", <a href="https://www.wikidata.org/wiki/Property:P2884" class="extiw" title="d:Property:P2884">P2884</a> = "mains voltage"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>] </p> </td> <td><code>{{#invoke:wd|property|Q55|P2884}}</code><br /> <dl><dd>↓<br /></dd> <dd>230 volt</dd></dl> </td> <td>Gets a quantity value with its associated unit of measurement. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P2884 = "mains voltage"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>linked</b>|Q55|P2884}}</code><br /> <dl><dd>↓<br /></dd> <dd>230 <a href="/wiki/Volt" title="Volt">volt</a></dd></dl> </td> <td>Gets a quantity value with a linked unit of measurement. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P2884 = "mains voltage"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>raw</b>|Q55|P2884}}</code><br /> <dl><dd>↓<br /></dd> <dd>230</dd></dl> </td> <td>Gets a raw quantity value. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P2884 = "mains voltage"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>unit</b>|Q55|P2884}}</code><br /> <dl><dd>↓<br /></dd> <dd>volt</dd></dl> </td> <td>Gets only the unit of measurement. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P2884 = "mains voltage"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">quantity</span>] </p> </td> <td><code>{{#invoke:wd|property|unit|<b>raw</b>|Q55|P2884}}</code><br /> <dl><dd>↓<br /></dd> <dd>Q25250</dd></dl> </td> <td>Gets the raw unit of measurement. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", <a href="https://www.wikidata.org/wiki/Property:P625" class="extiw" title="d:Property:P625">P625</a> = "coordinate location"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">globe coordinate</span>] </p> </td> <td><code>{{#invoke:wd|property|Q55|P625}}</code><br /> <dl><dd>↓<br /></dd> <dd>52°19'N, 5°33'E</dd></dl> </td> <td>Gets a globe coordinate value. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P625 = "coordinate location"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">globe coordinate</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>linked</b>|Q55|P625}}</code><br /> <dl><dd>↓<br /></dd> <dd><a class="external text" href="https://tools.wmflabs.org/geohack/geohack.php?language=en&params=52_19_N_5_33_E_globe:earth">52°19'N, 5°33'E</a></dd></dl> </td> <td>Gets a linked globe coordinate value. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P625 = "coordinate location"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">globe coordinate</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>raw</b>|Q55|P625}}</code><br /> <dl><dd>↓<br /></dd> <dd>52/19/N/5/33/E</dd></dl> </td> <td>Gets a raw globe coordinate value. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P625 = "coordinate location"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">globe coordinate</span>] </p> </td> <td><code>{{#invoke:wd|property|Q55|<b>coord</b>}}</code><br /> <dl><dd>↓<br /></dd> <dd>52°19'N, 5°33'E</dd></dl> </td> <td>A property alias can be used instead of the P-identifier. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", <a href="https://www.wikidata.org/wiki/Property:P41" class="extiw" title="d:Property:P41">P41</a> = "flag image"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">commons media</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>linked</b>|Q55|P41}}</code><br /> <dl><dd>↓<br /></dd> <dd><a href="https://commons.wikimedia.org/wiki/File:Flag_of_the_Netherlands.svg" class="extiw" title="c:File:Flag of the Netherlands.svg">Flag of the Netherlands.svg</a></dd></dl> </td> <td>Gets a media file name and links to it on Commons. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P41 = "flag image"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">commons media</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>raw</b>|Q55|P41|<b>format=\[\[File:%p {{!}} thumb {{!}} left\]\]</b>}}</code><br /> <dl><dd>↓<br /></dd> <dd><figure class="mw-default-size mw-halign-left" typeof="mw:File/Thumb"><a href="/wiki/File:Flag_of_the_Netherlands.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/2/20/Flag_of_the_Netherlands.svg/220px-Flag_of_the_Netherlands.svg.png" decoding="async" width="220" height="147" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/2/20/Flag_of_the_Netherlands.svg/330px-Flag_of_the_Netherlands.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/2/20/Flag_of_the_Netherlands.svg/440px-Flag_of_the_Netherlands.svg.png 2x" data-file-width="900" data-file-height="600" /></a><figcaption></figcaption></figure></dd></dl> </td> <td>A Commons media file can be included on the page as-is by omitting the <code>linked</code> and <code>raw</code> flags, but by using the <code>raw</code> flag it can be freely formatted. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P41 = "flag image"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">commons media</span>] </p> </td> <td><code>{{#invoke:wd|property|raw|<b>date=1700-05-06</b>|Q55|P41|format=\[\[File:%p {{!}} thumb {{!}} left\]\]}}</code><br /> <dl><dd>↓<br /></dd> <dd><figure class="mw-default-size mw-halign-left" typeof="mw:File/Thumb"><a href="/wiki/File:Statenvlag.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Statenvlag.svg/220px-Statenvlag.svg.png" decoding="async" width="220" height="147" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Statenvlag.svg/330px-Statenvlag.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Statenvlag.svg/440px-Statenvlag.svg.png 2x" data-file-width="900" data-file-height="600" /></a><figcaption></figcaption></figure></dd></dl> </td> <td>To get the value of a property that was valid at a given time, the <code>date=</code> argument can be used. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands", P41 = "flag image"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">commons media</span>] </p> </td> <td><code>{{#invoke:wd|property|raw|date=1700-05-06|<b>former</b>|Q55|P41|format=\[\[File:%p {{!}} thumb {{!}} left\]\]}}</code><br /> <dl><dd>↓<br /></dd> <dd><figure class="mw-default-size mw-halign-left" typeof="mw:File/Thumb"><a href="/wiki/File:Prinsenvlag.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Prinsenvlag.svg/220px-Prinsenvlag.svg.png" decoding="async" width="220" height="147" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Prinsenvlag.svg/330px-Prinsenvlag.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Prinsenvlag.svg/440px-Prinsenvlag.svg.png 2x" data-file-width="900" data-file-height="600" /></a><figcaption></figcaption></figure></dd></dl> </td> <td>The time constraint flags work relatively to the date value given for the <code>date=</code> argument. </td></tr> <tr> <td style="color:#777;font-size:small;"><a href="https://www.wikidata.org/wiki/Q915684" class="extiw" title="d:Q915684">Q915684</a> = "Lorentz–Lorenz equation", <a href="https://www.wikidata.org/wiki/Property:P2534" class="extiw" title="d:Property:P2534">P2534</a> = "defining formula"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">math</span>] </p> </td> <td><code>{{#invoke:wd|property|Q915684|P2534}}</code><br /> <dl><dd>↓<br /></dd> <dd><span class="mwe-math-element" data-qid="Q915684"><a href="/w/index.php?title=Special:MathWikibase&qid=Q915684" style="color:inherit;"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\frac {n^{2}-1}{n^{2}+2}}={\frac {4\pi }{3}}N\alpha }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mrow> <msup> <mi>n</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> <mrow> <msup> <mi>n</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>+</mo> <mn>2</mn> </mrow> </mfrac> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mrow> <mn>4</mn> <mi>π<!-- π --></mi> </mrow> <mn>3</mn> </mfrac> </mrow> <mi>N</mi> <mi>α<!-- α --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\frac {n^{2}-1}{n^{2}+2}}={\frac {4\pi }{3}}N\alpha }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d13095c802df3c9bff3581ecc3f26b1dd3c1a547" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.338ex; width:17.268ex; height:6.176ex;" alt="{\displaystyle {\frac {n^{2}-1}{n^{2}+2}}={\frac {4\pi }{3}}N\alpha }"></a></span></dd></dl> </td> <td>Gets a mathematical expression. </td></tr> <tr> <td style="color:#777;font-size:small;">Q915684 = "Lorentz–Lorenz equation", <a href="https://www.wikidata.org/wiki/Property:P7235" class="extiw" title="d:Property:P7235">P7235</a> = "in defining formula", <a href="https://www.wikidata.org/wiki/Property:P9758" class="extiw" title="d:Property:P9758">P9758</a> = "symbol represents"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">math</span>] </p> </td> <td><code><ul><code>{{#invoke:wd|properties|qualifier|linked|Q915684|P7235|P9758|format=<li>%q[ (%p)]</li>}}</code></ul></code><br /> <dl><dd>↓<br /></dd> <dd><ul><li><a href="/wiki/Refractive_index" title="Refractive index">refractive index</a> (<span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a601995d55609f2d9f5e233e36fbe9ea26011b3b" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.395ex; height:1.676ex;" alt="{\displaystyle n}"></span>)</li> <li><a href="/wiki/Polarizability" title="Polarizability">polarizability</a> (<span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>α<!-- α --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b79333175c8b3f0840bfb4ec41b8072c83ea88d3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.488ex; height:1.676ex;" alt="{\displaystyle \alpha }"></span>)</li> <li><a href="/wiki/Number_density" title="Number density">volumetric number density</a> (<span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle N}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>N</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle N}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f5e3890c981ae85503089652feb48b191b57aae3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.064ex; height:2.176ex;" alt="{\displaystyle N}"></span>)</li> <li><a href="/wiki/Pi" title="Pi">pi</a> (<span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \pi }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>π<!-- π --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \pi }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/9be4ba0bb8df3af72e90a0535fabcc17431e540a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.332ex; height:1.676ex;" alt="{\displaystyle \pi }"></span>)</li></ul></dd></dl> </td> <td>Mathematical expressions can be combined with regular text as usual. </td></tr> <tr> <td style="color:#777;font-size:small;"><a href="https://www.wikidata.org/wiki/Q6256" class="extiw" title="d:Q6256">Q6256</a> = "country", <a href="https://www.wikidata.org/wiki/Property:P3896" class="extiw" title="d:Property:P3896">P3896</a> = "geoshape"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">geographic shape</span>] </p> </td> <td><code>{{#invoke:wd|property|<b>linked</b>|Q6256|P3896}}</code><br /> <dl><dd>↓<br /></dd> <dd><a href="https://commons.wikimedia.org/wiki/Data:Naturalearthdata.com/admin-0-countries-no-antarctica.map" class="extiw" title="c:Data:Naturalearthdata.com/admin-0-countries-no-antarctica.map">Data:Naturalearthdata.com/admin-0-countries-no-antarctica.map</a></dd></dl> </td> <td>Gets a geographic shape data file name and links to it on Commons. </td></tr> <tr> <td style="color:#777;font-size:small;">Q4917 = "United States dollar"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|<b>label</b>|Q4917}}</code><br /> <dl><dd>↓<br /></dd> <dd>United States dollar</dd></dl> </td> <td>Gets an item's label. </td></tr> <tr> <td style="color:#777;font-size:small;">Q4917 = "United States dollar"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|label|<b>short</b>|<b>linked</b>|Q4917}}</code><br /> <dl><dd>↓<br /></dd> <dd><a href="/wiki/United_States_dollar" title="United States dollar">US dollar</a></dd></dl> </td> <td>Gets an item's short and linked label. </td></tr> <tr> <td style="color:#777;font-size:small;">P38 = currency"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|label|P38}}</code><br /> <dl><dd>↓<br /></dd> <dd>currency</dd></dl> </td> <td>Gets a property's label. </td></tr> <tr> <td style="color:#777;font-size:small;">P38 = currency"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|label|<b>linked</b>|P38}}</code><br /> <dl><dd>↓<br /></dd> <dd><a href="https://www.wikidata.org/wiki/Special:EntityPage/P38" class="extiw" title="d:Special:EntityPage/P38">currency</a></dd></dl> </td> <td>Gets a property's label that is linked to Wikidata. </td></tr> <tr> <td style="color:#777;font-size:small;"><a href="https://www.wikidata.org/wiki/Q776" class="extiw" title="d:Q776">Q776</a> = "Utrecht"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|label|Q776}}</code><br /> <dl><dd>↓<br /></dd> <dd>Utrecht</dd></dl> </td> <td>Gets an item's label. </td></tr> <tr> <td style="color:#777;font-size:small;">Q776 = "Utrecht"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|label|<b>linked</b>|Q776}}</code><br /> <dl><dd>↓<br /></dd> <dd><a href="/wiki/Utrecht_(province)" title="Utrecht (province)">Utrecht</a></dd></dl> </td> <td>Gets an item's linked label. </td></tr> <tr> <td style="color:#777;font-size:small;"><br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|label}}</code><br /> <dl><dd>↓<br /></dd> <dd>Utrecht</dd></dl> </td> <td>If the module is transcluded on the <a href="/wiki/Utrecht_(province)" title="Utrecht (province)">Utrecht (province)</a> page (which is linked to Q776), then the <code>Q776</code> can be omitted. </td></tr> <tr> <td style="color:#777;font-size:small;"><br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|label|<b>raw</b>}}</code><br /> <dl><dd>↓<br /></dd> <dd>Q776</dd></dl> </td> <td>If just the <code>label</code> command with the <code>raw</code> flag is given, then the Q-identifier of the item connected to the current page is returned. </td></tr> <tr> <td style="color:#777;font-size:small;"><br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity label</span>] </p> </td> <td><code>{{#invoke:wd|label|raw|<b>linked</b>}}</code><br /> <dl><dd>↓<br /></dd> <dd><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q776" class="extiw" title="d:Special:EntityPage/Q776">Q776</a></dd></dl> </td> <td>If additionally the <code>linked</code> flag is given, then the Q-identifier of the item connected to the current page is linked to Wikidata. </td></tr> <tr> <td style="color:#777;font-size:small;">Q776 = "Utrecht"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">page title</span>] </p> </td> <td><code>{{#invoke:wd|<b>title</b>|Q776}}</code><br /> <dl><dd>↓<br /></dd> <dd>Utrecht (province)</dd></dl> </td> <td>Gets the title of the page on the current wiki that is linked to the given item. </td></tr> <tr> <td style="color:#777;font-size:small;">Q776 = "Utrecht"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">page title</span>] </p> </td> <td><code>{{#invoke:wd|title|<b>linked</b>|Q776}}</code><br /> <dl><dd>↓<br /></dd> <dd><a href="/wiki/Utrecht_(province)" title="Utrecht (province)">Utrecht (province)</a></dd></dl> </td> <td>Gets the linked title of the page on the current wiki that is linked to the given item. </td></tr> <tr> <td style="color:#777;font-size:small;"><br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">page title</span>] </p> </td> <td><code>{{#invoke:wd|title}}</code><br /> <dl><dd>↓<br /></dd> <dd>Utrecht (province)</dd></dl> </td> <td>If the module is transcluded on the <a href="/wiki/Utrecht_(province)" title="Utrecht (province)">Utrecht (province)</a> page (which is linked to Q776), then the <code>Q776</code> can be omitted. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity description</span>] </p> </td> <td><code>{{#invoke:wd|<b>description</b>|Q55}}</code><br /> <dl><dd>↓<br /></dd> <dd>country in Northwestern Europe with territories in the Caribbean</dd></dl> </td> <td>Gets an item's description. </td></tr> <tr> <td style="color:#777;font-size:small;"><br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity description</span>] </p> </td> <td><code>{{#invoke:wd|description}}</code><br /> <dl><dd>↓<br /></dd> <dd>country in Northwestern Europe with territories in the Caribbean</dd></dl> </td> <td>If the module is transcluded on the <a href="/wiki/Netherlands" title="Netherlands">Netherlands</a> page (which is linked to Q55), then the <code>Q55</code> can be omitted. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity alias</span>] </p> </td> <td><code>{{#invoke:wd|<b>alias</b>|Q55}}</code><br /> <dl><dd>↓<br /></dd> <dd>Holland</dd></dl> </td> <td>Gets one of an item's aliases. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity alias</span>] </p> </td> <td><code>{{#invoke:wd|<b>aliases</b>|Q55}}</code><br /> <dl><dd>↓<br /></dd> <dd>Holland, the Netherlands, NL, NED, Nederland, nl, 🇳🇱, Netherlands (after 1945)</dd></dl> </td> <td>Gets all of an item's aliases. </td></tr> <tr> <td style="color:#777;font-size:small;">Q55 = "Netherlands"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity alias</span>] </p> </td> <td><code>{{#invoke:wd|alias|<b>linked</b>|Q55}}</code><br /> <dl><dd>↓<br /></dd> <dd><a href="/wiki/Netherlands" title="Netherlands">Holland</a></dd></dl> </td> <td>Gets a linked alias from an item. </td></tr> <tr> <td style="color:#777;font-size:small;"><br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">entity alias</span>] </p> </td> <td><code>{{#invoke:wd|alias}}</code><br /> <dl><dd>↓<br /></dd> <dd>Holland</dd></dl> </td> <td>If the module is transcluded on the <a href="/wiki/Netherlands" title="Netherlands">Netherlands</a> page (which is linked to Q55), then the <code>Q55</code> can be omitted. </td></tr> <tr> <td style="color:#777;font-size:small;"><a href="https://www.wikidata.org/wiki/Q2" class="extiw" title="d:Q2">Q2</a> = "Earth"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">page badge</span>] </p> </td> <td><code>{{#invoke:wd|<b>badges</b>|Q2}}</code><br /> <dl><dd>↓<br /></dd> <dd>featured article badge</dd></dl> </td> <td>Gets the badges for the page on the current wiki that is linked to the given item. </td></tr> <tr> <td style="color:#777;font-size:small;">Q2 = "Earth"<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">page badge</span>] </p> </td> <td><code>{{#invoke:wd|badges|<b>raw</b>|Q2}}</code><br /> <dl><dd>↓<br /></dd> <dd>Q17437796</dd></dl> </td> <td>Gets the raw badges for the page on the current wiki that is linked to the given item. </td></tr> <tr> <td style="color:#777;font-size:small;"><br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">page badge</span>] </p> </td> <td><code>{{#invoke:wd|badges}}</code><br /> <dl><dd>↓<br /></dd> <dd>featured article badge</dd></dl> </td> <td>If the module is transcluded on the <a href="/wiki/Earth" title="Earth">Earth</a> page (which is linked to Q2), then the <code>Q2</code> can be omitted. </td></tr> <tr> <td style="color:#777;font-size:small;"><a href="https://www.wikidata.org/wiki/Q28865" class="extiw" title="d:Q28865">Q28865</a> = "Python", <a href="https://www.wikidata.org/wiki/P548" class="extiw" title="d:P548">P548</a> = "version type", <a href="https://www.wikidata.org/wiki/P348" class="extiw" title="d:P348">P348</a> = "software version identifier",<br /> <dl><dd>↓<br /></dd></dl> <p>[<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">version</span>], [<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r920966791"><span class="smallcaps">reference</span>] </p> </td> <td><code>{{#invoke:wd|property|reference|edit|Q28865|<b>P548=Q2804309</b>|P348}}</code><br /> <dl><dd>↓<br /></dd> <dd>3.11.3<sup id="cite_ref-wikidata-47b0d8952e763dae8105c1e70220fc5d387af155-v5_12-0" class="reference"><a href="#cite_note-wikidata-47b0d8952e763dae8105c1e70220fc5d387af155-v5-12"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> <span class="mw-valign-text-top" typeof="mw:File/Frameless"><a href="https://www.wikidata.org/wiki/Q28865?uselang=en#P348" title="Edit this on Wikidata"><img alt="Edit this on Wikidata" src="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span></dd></dl> </td> <td>Get <a href="/wiki/Python_(programming_language)" title="Python (programming language)">Python</a>'s latest stable release version with its references. You may want to use <b>P548=Q2122918</b> to get the latest preview release version. </td></tr></tbody></table> <div class="mw-heading mw-heading3"><h3 id="Example_references">Example references</h3></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239543626"><div class="reflist"> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-5"><sup><i><b>f</b></i></sup></a> <a href="#cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-6"><sup><i><b>g</b></i></sup></a> <a href="#cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-7"><sup><i><b>h</b></i></sup></a> <a href="#cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-8"><sup><i><b>i</b></i></sup></a> <a href="#cite_ref-wikidata-3abcb661cd2d0629bbc49088fa86f8b016fa3525-v5_5-9"><sup><i><b>j</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://opendata.cbs.nl/statline/#/CBS/nl/dataset/37296ned/table?ts=1560596956049">"Bevolking; kerncijfers, 1950-2022"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Bevolking%3B+kerncijfers%2C+1950-2022&rft_id=https%3A%2F%2Fopendata.cbs.nl%2Fstatline%2F%23%2FCBS%2Fnl%2Fdataset%2F37296ned%2Ftable%3Fts%3D1560596956049&rfr_id=info%3Asid%2Fen.wikipedia.org%3AModule%3AWd" class="Z3988"></span></span> </li> <li id="cite_note-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5_6-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5_6-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5_6-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-wikidata-cb4c9d92a7876cfdfafdaf4b92634cba9063dac1-v5_6-4"><sup><i><b>e</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20150827042738/http://statline.cbs.nl/StatWeb/publication/?VW=T&DM=SLNL&PA=37296ned&D1=a&D2=0,10,20,30,40,50,60,(l-1),l&HD=130605-0924&HDR=G1&STB=T">"CBS StatLine - Bevolking; kerncijfers"</a>. Statistics Netherlands. Archived from <a rel="nofollow" class="external text" href="https://statline.cbs.nl/StatWeb/publication/?VW=T&DM=SLNL&PA=37296ned&D1=a&D2=0,10,20,30,40,50,60,(l-1),l&HD=130605-0924&HDR=G1&STB=T">the original</a> on 27 August 2015<span class="reference-accessdate">. Retrieved <span class="nowrap">22 August</span> 2015</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=CBS+StatLine+-+Bevolking%3B+kerncijfers&rft.pub=Statistics+Netherlands&rft_id=http%3A%2F%2Fstatline.cbs.nl%2FStatWeb%2Fpublication%2F%3FVW%3DT%26DM%3DSLNL%26PA%3D37296ned%26D1%3Da%26D2%3D0%2C10%2C20%2C30%2C40%2C50%2C60%2C%28l-1%29%2Cl%26HD%3D130605-0924%26HDR%3DG1%26STB%3DT&rfr_id=info%3Asid%2Fen.wikipedia.org%3AModule%3AWd" class="Z3988"></span></span> </li> <li id="cite_note-wikidata-475c2999c451e2e418b275ef9b087583a2db7228-v5-7"><span class="mw-cite-backlink">^ <a href="#cite_ref-wikidata-475c2999c451e2e418b275ef9b087583a2db7228-v5_7-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-wikidata-475c2999c451e2e418b275ef9b087583a2db7228-v5_7-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20140903082344/http://statline.cbs.nl/StatWeb/publication/?VW=T&DM=SLNL&PA=37296ned&LA=NL">"CBS StatLine - Bevolking; kerncijfers"</a>. Archived from <a rel="nofollow" class="external text" href="https://statline.cbs.nl/StatWeb/publication/?VW=T&DM=SLNL&PA=37296ned&LA=NL">the original</a> on 3 September 2014<span class="reference-accessdate">. Retrieved <span class="nowrap">26 August</span> 2014</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=CBS+StatLine+-+Bevolking%3B+kerncijfers&rft_id=http%3A%2F%2Fstatline.cbs.nl%2FStatWeb%2Fpublication%2F%3FVW%3DT%26DM%3DSLNL%26PA%3D37296ned%26LA%3DNL&rfr_id=info%3Asid%2Fen.wikipedia.org%3AModule%3AWd" class="Z3988"></span></span> </li> <li id="cite_note-wikidata-08fbc9797078849d8dc7b4754ad2109020d16f96-v5-8"><span class="mw-cite-backlink">^ <a href="#cite_ref-wikidata-08fbc9797078849d8dc7b4754ad2109020d16f96-v5_8-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-wikidata-08fbc9797078849d8dc7b4754ad2109020d16f96-v5_8-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.cbs.nl/nl-NL/menu/themas/bevolking/publicaties/artikelen/archief/2016/nederland-telt-17-miljoen-inwoners.htm">"Nederland telt 17 miljoen inwoners"</a>. 21 March 2016.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Nederland+telt+17+miljoen+inwoners&rft.date=2016-03-21&rft_id=http%3A%2F%2Fwww.cbs.nl%2Fnl-NL%2Fmenu%2Fthemas%2Fbevolking%2Fpublicaties%2Fartikelen%2Farchief%2F2016%2Fnederland-telt-17-miljoen-inwoners.htm&rfr_id=info%3Asid%2Fen.wikipedia.org%3AModule%3AWd" class="Z3988"></span></span> </li> <li id="cite_note-wikidata-4f58fc69480f96aaec74e771792854a11428895e-v5-9"><span class="mw-cite-backlink">^ <a href="#cite_ref-wikidata-4f58fc69480f96aaec74e771792854a11428895e-v5_9-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-wikidata-4f58fc69480f96aaec74e771792854a11428895e-v5_9-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://opendata.cbs.nl/statline/#/CBS/nl/dataset/37296ned/table?ts=1560596956049">"Bevolking; kerncijfers, 1950-2022"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">18 March</span> 2023</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Bevolking%3B+kerncijfers%2C+1950-2022&rft_id=https%3A%2F%2Fopendata.cbs.nl%2Fstatline%2F%23%2FCBS%2Fnl%2Fdataset%2F37296ned%2Ftable%3Fts%3D1560596956049&rfr_id=info%3Asid%2Fen.wikipedia.org%3AModule%3AWd" class="Z3988"></span></span> </li> <li id="cite_note-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5-10"><span class="mw-cite-backlink">^ <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-5"><sup><i><b>f</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-6"><sup><i><b>g</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-7"><sup><i><b>h</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-8"><sup><i><b>i</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-9"><sup><i><b>j</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-10"><sup><i><b>k</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-11"><sup><i><b>l</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-12"><sup><i><b>m</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-13"><sup><i><b>n</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-14"><sup><i><b>o</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-15"><sup><i><b>p</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-16"><sup><i><b>q</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-17"><sup><i><b>r</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-18"><sup><i><b>s</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-19"><sup><i><b>t</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-20"><sup><i><b>u</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-21"><sup><i><b>v</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-22"><sup><i><b>w</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-23"><sup><i><b>x</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-24"><sup><i><b>y</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-25"><sup><i><b>z</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-26"><sup><i><b>aa</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-27"><sup><i><b>ab</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-28"><sup><i><b>ac</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-29"><sup><i><b>ad</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-30"><sup><i><b>ae</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-31"><sup><i><b>af</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-32"><sup><i><b>ag</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-33"><sup><i><b>ah</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-34"><sup><i><b>ai</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-35"><sup><i><b>aj</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-36"><sup><i><b>ak</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-37"><sup><i><b>al</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-38"><sup><i><b>am</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-39"><sup><i><b>an</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-40"><sup><i><b>ao</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-41"><sup><i><b>ap</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-42"><sup><i><b>aq</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-43"><sup><i><b>ar</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-44"><sup><i><b>as</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-45"><sup><i><b>at</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-46"><sup><i><b>au</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-47"><sup><i><b>av</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-48"><sup><i><b>aw</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-49"><sup><i><b>ax</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-50"><sup><i><b>ay</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-51"><sup><i><b>az</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-52"><sup><i><b>ba</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-53"><sup><i><b>bb</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-54"><sup><i><b>bc</b></i></sup></a> <a href="#cite_ref-wikidata-f5c4249c74a1deaf99aa1ce9def008283983d0a1-v5_10-55"><sup><i><b>bd</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20181230181123/http://hdr.undp.org/en/data">"Human Development Data (1990-2017)"</a>. <i><a href="/wiki/Human_Development_Report" title="Human Development Report">Human Development Report</a></i>. Archived from <a rel="nofollow" class="external text" href="http://hdr.undp.org/en/data">the original</a> on 30 December 2018.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Human+Development+Report&rft.atitle=Human+Development+Data+%281990-2017%29&rft_id=http%3A%2F%2Fhdr.undp.org%2Fen%2Fdata&rfr_id=info%3Asid%2Fen.wikipedia.org%3AModule%3AWd" class="Z3988"></span></span> </li> <li id="cite_note-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5-11"><span class="mw-cite-backlink">^ <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-5"><sup><i><b>f</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-6"><sup><i><b>g</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-7"><sup><i><b>h</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-8"><sup><i><b>i</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-9"><sup><i><b>j</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-10"><sup><i><b>k</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-11"><sup><i><b>l</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-12"><sup><i><b>m</b></i></sup></a> <a href="#cite_ref-wikidata-9775e828e0f16e6a1b32ff4b6293321469548907-v5_11-13"><sup><i><b>n</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20170202193023/http://hdr.undp.org/en/countries/profiles/NLD">"Netherlands"</a>. Archived from <a rel="nofollow" class="external text" href="http://hdr.undp.org/en/countries/profiles/NLD">the original</a> on 2 February 2017.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Netherlands&rft_id=http%3A%2F%2Fhdr.undp.org%2Fen%2Fcountries%2Fprofiles%2FNLD&rfr_id=info%3Asid%2Fen.wikipedia.org%3AModule%3AWd" class="Z3988"></span></span> </li> <li id="cite_note-wikidata-47b0d8952e763dae8105c1e70220fc5d387af155-v5-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-wikidata-47b0d8952e763dae8105c1e70220fc5d387af155-v5_12-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://blog.python.org/2023/04/its-time-for-another-set-of-python.html">"It's time for another set of Python releases! Python 3.11.3, 3.10.11 and 3.12 alpha 7 are now available"</a>. 5 April 2023<span class="reference-accessdate">. Retrieved <span class="nowrap">6 April</span> 2023</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=It%27s+time+for+another+set+of+Python+releases%21+Python+3.11.3%2C+3.10.11+and+3.12+alpha+7+are+now+available.&rft.date=2023-04-05&rft_id=https%3A%2F%2Fblog.python.org%2F2023%2F04%2Fits-time-for-another-set-of-python.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AModule%3AWd" class="Z3988"></span></span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="TemplateData">TemplateData</h2></div> <section class="mw-templatedata-doc-wrap"><header><p class="mw-templatedata-doc-desc">This template fetches data from the centralized knowledge base Wikidata. To edit the data, click on "Wikidata item" in the left sidebar.</p></header><table class="wikitable mw-templatedata-doc-params"><caption><p class="mw-templatedata-caption">Template parameters<span class="mw-editsection-like"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Template:Wikidata/doc&action=edit&templatedata=edit" title="Template:Wikidata/doc">Edit template data</a><span class="mw-editsection-bracket">]</span></span></p></caption><thead><tr><th colspan="2">Parameter</th><th>Description</th><th>Type</th><th>Status</th></tr></thead><tbody><tr><td class="mw-templatedata-doc-muted" colspan="7">No parameters specified</td></tr></tbody></table></section> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div> <ul><li><span class="nowrap">{{</span><a href="/wiki/Template:Wikidata" title="Template:Wikidata">Wikidata</a><span class="nowrap">}}</span>, a user-friendly wrapper template for this module.</li> <li><span class="nowrap">{{</span><a href="/wiki/Template:WikidataOI" title="Template:WikidataOI">WikidataOI</a><span class="nowrap">}}</span>, a wrapper template for this module that adds an opt-in toggle.</li> <li><span class="nowrap">{{</span><a href="/wiki/Template:Pageid_to_title" title="Template:Pageid to title">Pageid to title</a><span class="nowrap">}}</span>, to get a page title using its local page id, rather than Wikidata</li></ul> <div class="documentation-clear"></div> </div> <div role="note" class="documentation-metadata plainlinks">The above <a href="/wiki/Wikipedia:Template_documentation" title="Wikipedia:Template documentation">documentation</a> is <a href="/wiki/Help:Transclusion" title="Help:Transclusion">transcluded</a> from <a href="/wiki/Module:Wd/doc" title="Module:Wd/doc">Module:Wd/doc</a>. <span class="documentation-toolbar">(<a href="/wiki/Special:EditPage/Module:Wd/doc" title="Special:EditPage/Module:Wd/doc">edit</a> | <a href="/wiki/Special:PageHistory/Module:Wd/doc" title="Special:PageHistory/Module:Wd/doc">history</a>)</span><br />Editors can experiment in this module's <a href="/wiki/Module:Wd/sandbox" title="Module:Wd/sandbox">sandbox</a> <span class="documentation-toolbar">(<a href="/wiki/Special:EditPage/Module:Wd/sandbox" title="Special:EditPage/Module:Wd/sandbox">edit</a> | <a class="external text" href="https://en.wikipedia.org/w/index.php?title=Special%3AComparePages&page1=Module%3AWd&page2=Module%3AWd%2Fsandbox">diff</a>)</span> and <a href="/wiki/Module:Wd/testcases" title="Module:Wd/testcases">testcases</a> <span class="documentation-toolbar">(<a href="/wiki/Special:EditPage/Module:Wd/testcases" title="Special:EditPage/Module:Wd/testcases">edit</a>)</span> pages.<br /> <a href="/wiki/Special:PrefixIndex/Module:Wd/" title="Special:PrefixIndex/Module:Wd/">Subpages of this module</a>.</div></div> <p><span id="code"></span> </p><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos" data-line="1"></span></a><span class="c1">-- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]].</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="nb">require</span><span class="p">(</span><span class="s2">"strict"</span><span class="p">)</span> </span><span id="L-4"><a href="#L-4"><span class="linenos" data-line="4"></span></a><span class="kd">local</span> <span class="n">p</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-5"><a href="#L-5"><span class="linenos" data-line="5"></span></a><span class="kd">local</span> <span class="n">module_arg</span> <span class="o">=</span> <span class="p">...</span> </span><span id="L-6"><a href="#L-6"><span class="linenos" data-line="6"></span></a><span class="kd">local</span> <span class="n">i18n</span> </span><span id="L-7"><a href="#L-7"><span class="linenos" data-line="7"></span></a><span class="kd">local</span> <span class="n">i18nPath</span> </span><span id="L-8"><a href="#L-8"><span class="linenos" data-line="8"></span></a> </span><span id="L-9"><a href="#L-9"><span class="linenos" data-line="9"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">loadI18n</span><span class="p">(</span><span class="n">aliasesP</span><span class="p">,</span> <span class="n">frame</span><span class="p">)</span> </span><span id="L-10"><a href="#L-10"><span class="linenos" data-line="10"></span></a> <span class="kd">local</span> <span class="n">title</span> </span><span id="L-11"><a href="#L-11"><span class="linenos" data-line="11"></span></a> </span><span id="L-12"><a href="#L-12"><span class="linenos" data-line="12"></span></a> <span class="kr">if</span> <span class="n">frame</span> <span class="kr">then</span> </span><span id="L-13"><a href="#L-13"><span class="linenos" data-line="13"></span></a> <span class="c1">-- current module invoked by page/template, get its title from frame</span> </span><span id="L-14"><a href="#L-14"><span class="linenos" data-line="14"></span></a> <span class="n">title</span> <span class="o">=</span> <span class="n">frame</span><span class="p">:</span><span class="n">getTitle</span><span class="p">()</span> </span><span id="L-15"><a href="#L-15"><span class="linenos" data-line="15"></span></a> <span class="kr">else</span> </span><span id="L-16"><a href="#L-16"><span class="linenos" data-line="16"></span></a> <span class="c1">-- current module included by other module, get its title from ...</span> </span><span id="L-17"><a href="#L-17"><span class="linenos" data-line="17"></span></a> <span class="n">title</span> <span class="o">=</span> <span class="n">module_arg</span> </span><span id="L-18"><a href="#L-18"><span class="linenos" data-line="18"></span></a> <span class="kr">end</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="kr">if</span> <span class="ow">not</span> <span class="n">i18n</span> <span class="kr">then</span> </span><span id="L-21"><a href="#L-21"><span class="linenos" data-line="21"></span></a> <span class="n">i18nPath</span> <span class="o">=</span> <span class="n">title</span> <span class="o">..</span> <span class="s2">"/i18n"</span> </span><span id="L-22"><a href="#L-22"><span class="linenos" data-line="22"></span></a> <span class="n">i18n</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="n">i18nPath</span><span class="p">).</span><span class="n">init</span><span class="p">(</span><span class="n">aliasesP</span><span class="p">)</span> </span><span id="L-23"><a href="#L-23"><span class="linenos" data-line="23"></span></a> <span class="kr">end</span> </span><span id="L-24"><a href="#L-24"><span class="linenos" data-line="24"></span></a><span class="kr">end</span> </span><span id="L-25"><a href="#L-25"><span class="linenos" data-line="25"></span></a> </span><span id="L-26"><a href="#L-26"><span class="linenos" data-line="26"></span></a><span class="n">p</span><span class="p">.</span><span class="n">claimCommands</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-27"><a href="#L-27"><span class="linenos" data-line="27"></span></a> <span class="n">property</span> <span class="o">=</span> <span class="s2">"property"</span><span class="p">,</span> </span><span id="L-28"><a href="#L-28"><span class="linenos" data-line="28"></span></a> <span class="n">properties</span> <span class="o">=</span> <span class="s2">"properties"</span><span class="p">,</span> </span><span id="L-29"><a href="#L-29"><span class="linenos" data-line="29"></span></a> <span class="n">qualifier</span> <span class="o">=</span> <span class="s2">"qualifier"</span><span class="p">,</span> </span><span id="L-30"><a href="#L-30"><span class="linenos" data-line="30"></span></a> <span class="n">qualifiers</span> <span class="o">=</span> <span class="s2">"qualifiers"</span><span class="p">,</span> </span><span id="L-31"><a href="#L-31"><span class="linenos" data-line="31"></span></a> <span class="n">reference</span> <span class="o">=</span> <span class="s2">"reference"</span><span class="p">,</span> </span><span id="L-32"><a href="#L-32"><span class="linenos" data-line="32"></span></a> <span class="n">references</span> <span class="o">=</span> <span class="s2">"references"</span> </span><span id="L-33"><a href="#L-33"><span class="linenos" data-line="33"></span></a><span class="p">}</span> </span><span id="L-34"><a href="#L-34"><span class="linenos" data-line="34"></span></a> </span><span id="L-35"><a href="#L-35"><span class="linenos" data-line="35"></span></a><span class="n">p</span><span class="p">.</span><span class="n">generalCommands</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-36"><a href="#L-36"><span class="linenos" data-line="36"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="s2">"label"</span><span class="p">,</span> </span><span id="L-37"><a href="#L-37"><span class="linenos" data-line="37"></span></a> <span class="n">title</span> <span class="o">=</span> <span class="s2">"title"</span><span class="p">,</span> </span><span id="L-38"><a href="#L-38"><span class="linenos" data-line="38"></span></a> <span class="n">description</span> <span class="o">=</span> <span class="s2">"description"</span><span class="p">,</span> </span><span id="L-39"><a href="#L-39"><span class="linenos" data-line="39"></span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">"alias"</span><span class="p">,</span> </span><span id="L-40"><a href="#L-40"><span class="linenos" data-line="40"></span></a> <span class="n">aliases</span> <span class="o">=</span> <span class="s2">"aliases"</span><span class="p">,</span> </span><span id="L-41"><a href="#L-41"><span class="linenos" data-line="41"></span></a> <span class="n">badge</span> <span class="o">=</span> <span class="s2">"badge"</span><span class="p">,</span> </span><span id="L-42"><a href="#L-42"><span class="linenos" data-line="42"></span></a> <span class="n">badges</span> <span class="o">=</span> <span class="s2">"badges"</span> </span><span id="L-43"><a href="#L-43"><span class="linenos" data-line="43"></span></a><span class="p">}</span> </span><span id="L-44"><a href="#L-44"><span class="linenos" data-line="44"></span></a> </span><span id="L-45"><a href="#L-45"><span class="linenos" data-line="45"></span></a><span class="n">p</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-46"><a href="#L-46"><span class="linenos" data-line="46"></span></a> <span class="n">linked</span> <span class="o">=</span> <span class="s2">"linked"</span><span class="p">,</span> </span><span id="L-47"><a href="#L-47"><span class="linenos" data-line="47"></span></a> <span class="n">short</span> <span class="o">=</span> <span class="s2">"short"</span><span class="p">,</span> </span><span id="L-48"><a href="#L-48"><span class="linenos" data-line="48"></span></a> <span class="n">raw</span> <span class="o">=</span> <span class="s2">"raw"</span><span class="p">,</span> </span><span id="L-49"><a href="#L-49"><span class="linenos" data-line="49"></span></a> <span class="n">multilanguage</span> <span class="o">=</span> <span class="s2">"multilanguage"</span><span class="p">,</span> </span><span id="L-50"><a href="#L-50"><span class="linenos" data-line="50"></span></a> <span class="n">unit</span> <span class="o">=</span> <span class="s2">"unit"</span><span class="p">,</span> </span><span id="L-51"><a href="#L-51"><span class="linenos" data-line="51"></span></a> <span class="c1">-------------</span> </span><span id="L-52"><a href="#L-52"><span class="linenos" data-line="52"></span></a> <span class="n">preferred</span> <span class="o">=</span> <span class="s2">"preferred"</span><span class="p">,</span> </span><span id="L-53"><a href="#L-53"><span class="linenos" data-line="53"></span></a> <span class="n">normal</span> <span class="o">=</span> <span class="s2">"normal"</span><span class="p">,</span> </span><span id="L-54"><a href="#L-54"><span class="linenos" data-line="54"></span></a> <span class="n">deprecated</span> <span class="o">=</span> <span class="s2">"deprecated"</span><span class="p">,</span> </span><span id="L-55"><a href="#L-55"><span class="linenos" data-line="55"></span></a> <span class="n">best</span> <span class="o">=</span> <span class="s2">"best"</span><span class="p">,</span> </span><span id="L-56"><a href="#L-56"><span class="linenos" data-line="56"></span></a> <span class="n">future</span> <span class="o">=</span> <span class="s2">"future"</span><span class="p">,</span> </span><span id="L-57"><a href="#L-57"><span class="linenos" data-line="57"></span></a> <span class="n">current</span> <span class="o">=</span> <span class="s2">"current"</span><span class="p">,</span> </span><span id="L-58"><a href="#L-58"><span class="linenos" data-line="58"></span></a> <span class="n">former</span> <span class="o">=</span> <span class="s2">"former"</span><span class="p">,</span> </span><span id="L-59"><a href="#L-59"><span class="linenos" data-line="59"></span></a> <span class="n">edit</span> <span class="o">=</span> <span class="s2">"edit"</span><span class="p">,</span> </span><span id="L-60"><a href="#L-60"><span class="linenos" data-line="60"></span></a> <span class="n">editAtEnd</span> <span class="o">=</span> <span class="s2">"edit@end"</span><span class="p">,</span> </span><span id="L-61"><a href="#L-61"><span class="linenos" data-line="61"></span></a> <span class="n">mdy</span> <span class="o">=</span> <span class="s2">"mdy"</span><span class="p">,</span> </span><span id="L-62"><a href="#L-62"><span class="linenos" data-line="62"></span></a> <span class="n">single</span> <span class="o">=</span> <span class="s2">"single"</span><span class="p">,</span> </span><span id="L-63"><a href="#L-63"><span class="linenos" data-line="63"></span></a> <span class="n">sourced</span> <span class="o">=</span> <span class="s2">"sourced"</span> </span><span id="L-64"><a href="#L-64"><span class="linenos" data-line="64"></span></a><span class="p">}</span> </span><span id="L-65"><a href="#L-65"><span class="linenos" data-line="65"></span></a> </span><span id="L-66"><a href="#L-66"><span class="linenos" data-line="66"></span></a><span class="n">p</span><span class="p">.</span><span class="n">args</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-67"><a href="#L-67"><span class="linenos" data-line="67"></span></a> <span class="n">eid</span> <span class="o">=</span> <span class="s2">"eid"</span><span class="p">,</span> </span><span id="L-68"><a href="#L-68"><span class="linenos" data-line="68"></span></a> <span class="n">page</span> <span class="o">=</span> <span class="s2">"page"</span><span class="p">,</span> </span><span id="L-69"><a href="#L-69"><span class="linenos" data-line="69"></span></a> <span class="n">date</span> <span class="o">=</span> <span class="s2">"date"</span><span class="p">,</span> </span><span id="L-70"><a href="#L-70"><span class="linenos" data-line="70"></span></a> <span class="n">globalSiteId</span> <span class="o">=</span> <span class="s2">"globalSiteId"</span> </span><span id="L-71"><a href="#L-71"><span class="linenos" data-line="71"></span></a><span class="p">}</span> </span><span id="L-72"><a href="#L-72"><span class="linenos" data-line="72"></span></a> </span><span id="L-73"><a href="#L-73"><span class="linenos" data-line="73"></span></a><span class="kd">local</span> <span class="n">aliasesP</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-74"><a href="#L-74"><span class="linenos" data-line="74"></span></a> <span class="n">coord</span> <span class="o">=</span> <span class="s2">"P625"</span><span class="p">,</span> </span><span id="L-75"><a href="#L-75"><span class="linenos" data-line="75"></span></a> <span class="c1">-----------------------</span> </span><span id="L-76"><a href="#L-76"><span class="linenos" data-line="76"></span></a> <span class="n">image</span> <span class="o">=</span> <span class="s2">"P18"</span><span class="p">,</span> </span><span id="L-77"><a href="#L-77"><span class="linenos" data-line="77"></span></a> <span class="n">author</span> <span class="o">=</span> <span class="s2">"P50"</span><span class="p">,</span> </span><span id="L-78"><a href="#L-78"><span class="linenos" data-line="78"></span></a> <span class="n">authorNameString</span> <span class="o">=</span> <span class="s2">"P2093"</span><span class="p">,</span> </span><span id="L-79"><a href="#L-79"><span class="linenos" data-line="79"></span></a> <span class="n">publisher</span> <span class="o">=</span> <span class="s2">"P123"</span><span class="p">,</span> </span><span id="L-80"><a href="#L-80"><span class="linenos" data-line="80"></span></a> <span class="n">importedFrom</span> <span class="o">=</span> <span class="s2">"P143"</span><span class="p">,</span> </span><span id="L-81"><a href="#L-81"><span class="linenos" data-line="81"></span></a> <span class="n">wikimediaImportURL</span> <span class="o">=</span> <span class="s2">"P4656"</span><span class="p">,</span> </span><span id="L-82"><a href="#L-82"><span class="linenos" data-line="82"></span></a> <span class="n">statedIn</span> <span class="o">=</span> <span class="s2">"P248"</span><span class="p">,</span> </span><span id="L-83"><a href="#L-83"><span class="linenos" data-line="83"></span></a> <span class="n">pages</span> <span class="o">=</span> <span class="s2">"P304"</span><span class="p">,</span> </span><span id="L-84"><a href="#L-84"><span class="linenos" data-line="84"></span></a> <span class="n">language</span> <span class="o">=</span> <span class="s2">"P407"</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">hasPart</span> <span class="o">=</span> <span class="s2">"P527"</span><span class="p">,</span> </span><span id="L-86"><a href="#L-86"><span class="linenos" data-line="86"></span></a> <span class="n">publicationDate</span> <span class="o">=</span> <span class="s2">"P577"</span><span class="p">,</span> </span><span id="L-87"><a href="#L-87"><span class="linenos" data-line="87"></span></a> <span class="n">startTime</span> <span class="o">=</span> <span class="s2">"P580"</span><span class="p">,</span> </span><span id="L-88"><a href="#L-88"><span class="linenos" data-line="88"></span></a> <span class="n">endTime</span> <span class="o">=</span> <span class="s2">"P582"</span><span class="p">,</span> </span><span id="L-89"><a href="#L-89"><span class="linenos" data-line="89"></span></a> <span class="n">chapter</span> <span class="o">=</span> <span class="s2">"P792"</span><span class="p">,</span> </span><span id="L-90"><a href="#L-90"><span class="linenos" data-line="90"></span></a> <span class="n">retrieved</span> <span class="o">=</span> <span class="s2">"P813"</span><span class="p">,</span> </span><span id="L-91"><a href="#L-91"><span class="linenos" data-line="91"></span></a> <span class="n">referenceURL</span> <span class="o">=</span> <span class="s2">"P854"</span><span class="p">,</span> </span><span id="L-92"><a href="#L-92"><span class="linenos" data-line="92"></span></a> <span class="n">sectionVerseOrParagraph</span> <span class="o">=</span> <span class="s2">"P958"</span><span class="p">,</span> </span><span id="L-93"><a href="#L-93"><span class="linenos" data-line="93"></span></a> <span class="n">archiveURL</span> <span class="o">=</span> <span class="s2">"P1065"</span><span class="p">,</span> </span><span id="L-94"><a href="#L-94"><span class="linenos" data-line="94"></span></a> <span class="n">title</span> <span class="o">=</span> <span class="s2">"P1476"</span><span class="p">,</span> </span><span id="L-95"><a href="#L-95"><span class="linenos" data-line="95"></span></a> <span class="n">formatterURL</span> <span class="o">=</span> <span class="s2">"P1630"</span><span class="p">,</span> </span><span id="L-96"><a href="#L-96"><span class="linenos" data-line="96"></span></a> <span class="n">quote</span> <span class="o">=</span> <span class="s2">"P1683"</span><span class="p">,</span> </span><span id="L-97"><a href="#L-97"><span class="linenos" data-line="97"></span></a> <span class="n">shortName</span> <span class="o">=</span> <span class="s2">"P1813"</span><span class="p">,</span> </span><span id="L-98"><a href="#L-98"><span class="linenos" data-line="98"></span></a> <span class="n">definingFormula</span> <span class="o">=</span> <span class="s2">"P2534"</span><span class="p">,</span> </span><span id="L-99"><a href="#L-99"><span class="linenos" data-line="99"></span></a> <span class="n">archiveDate</span> <span class="o">=</span> <span class="s2">"P2960"</span><span class="p">,</span> </span><span id="L-100"><a href="#L-100"><span class="linenos" data-line="100"></span></a> <span class="n">inferredFrom</span> <span class="o">=</span> <span class="s2">"P3452"</span><span class="p">,</span> </span><span id="L-101"><a href="#L-101"><span class="linenos" data-line="101"></span></a> <span class="n">typeOfReference</span> <span class="o">=</span> <span class="s2">"P3865"</span><span class="p">,</span> </span><span id="L-102"><a href="#L-102"><span class="linenos" data-line="102"></span></a> <span class="n">column</span> <span class="o">=</span> <span class="s2">"P3903"</span><span class="p">,</span> </span><span id="L-103"><a href="#L-103"><span class="linenos" data-line="103"></span></a> <span class="n">subjectNamedAs</span> <span class="o">=</span> <span class="s2">"P1810"</span><span class="p">,</span> </span><span id="L-104"><a href="#L-104"><span class="linenos" data-line="104"></span></a> <span class="n">wikidataProperty</span> <span class="o">=</span> <span class="s2">"P1687"</span><span class="p">,</span> </span><span id="L-105"><a href="#L-105"><span class="linenos" data-line="105"></span></a> <span class="n">publishedIn</span> <span class="o">=</span> <span class="s2">"P1433"</span> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a><span class="p">}</span> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></span></a> </span><span id="L-108"><a href="#L-108"><span class="linenos" data-line="108"></span></a><span class="kd">local</span> <span class="n">aliasesQ</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-109"><a href="#L-109"><span class="linenos" data-line="109"></span></a> <span class="n">percentage</span> <span class="o">=</span> <span class="s2">"Q11229"</span><span class="p">,</span> </span><span id="L-110"><a href="#L-110"><span class="linenos" data-line="110"></span></a> <span class="n">prolepticJulianCalendar</span> <span class="o">=</span> <span class="s2">"Q1985786"</span><span class="p">,</span> </span><span id="L-111"><a href="#L-111"><span class="linenos" data-line="111"></span></a> <span class="n">citeWeb</span> <span class="o">=</span> <span class="s2">"Q5637226"</span><span class="p">,</span> </span><span id="L-112"><a href="#L-112"><span class="linenos" data-line="112"></span></a> <span class="n">citeQ</span> <span class="o">=</span> <span class="s2">"Q22321052"</span> </span><span id="L-113"><a href="#L-113"><span class="linenos" data-line="113"></span></a><span class="p">}</span> </span><span id="L-114"><a href="#L-114"><span class="linenos" data-line="114"></span></a> </span><span id="L-115"><a href="#L-115"><span class="linenos" data-line="115"></span></a><span class="kd">local</span> <span class="n">parameters</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-116"><a href="#L-116"><span class="linenos" data-line="116"></span></a> <span class="n">property</span> <span class="o">=</span> <span class="s2">"%p"</span><span class="p">,</span> </span><span id="L-117"><a href="#L-117"><span class="linenos" data-line="117"></span></a> <span class="n">qualifier</span> <span class="o">=</span> <span class="s2">"%q"</span><span class="p">,</span> </span><span id="L-118"><a href="#L-118"><span class="linenos" data-line="118"></span></a> <span class="n">reference</span> <span class="o">=</span> <span class="s2">"%r"</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">alias</span> <span class="o">=</span> <span class="s2">"%a"</span><span class="p">,</span> </span><span id="L-120"><a href="#L-120"><span class="linenos" data-line="120"></span></a> <span class="n">badge</span> <span class="o">=</span> <span class="s2">"%b"</span><span class="p">,</span> </span><span id="L-121"><a href="#L-121"><span class="linenos" data-line="121"></span></a> <span class="n">separator</span> <span class="o">=</span> <span class="s2">"%s"</span><span class="p">,</span> </span><span id="L-122"><a href="#L-122"><span class="linenos" data-line="122"></span></a> <span class="n">general</span> <span class="o">=</span> <span class="s2">"%x"</span> </span><span id="L-123"><a href="#L-123"><span class="linenos" data-line="123"></span></a><span class="p">}</span> </span><span id="L-124"><a href="#L-124"><span class="linenos" data-line="124"></span></a> </span><span id="L-125"><a href="#L-125"><span class="linenos" data-line="125"></span></a><span class="kd">local</span> <span class="n">formats</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-126"><a href="#L-126"><span class="linenos" data-line="126"></span></a> <span class="n">property</span> <span class="o">=</span> <span class="s2">"%p[%s][%r]"</span><span class="p">,</span> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a> <span class="n">qualifier</span> <span class="o">=</span> <span class="s2">"%q[%s][%r]"</span><span class="p">,</span> </span><span id="L-128"><a href="#L-128"><span class="linenos" data-line="128"></span></a> <span class="n">reference</span> <span class="o">=</span> <span class="s2">"%r"</span><span class="p">,</span> </span><span id="L-129"><a href="#L-129"><span class="linenos" data-line="129"></span></a> <span class="n">propertyWithQualifier</span> <span class="o">=</span> <span class="s2">"%p[ <span style=</span><span class="se">\"</span><span class="s2">font-size:85</span><span class="se">\\</span><span class="s2">%</span><span class="se">\"</span><span class="s2">>(%q)</span>][%s][%r]"</span><span class="p">,</span> </span><span id="L-130"><a href="#L-130"><span class="linenos" data-line="130"></span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">"%a[%s]"</span><span class="p">,</span> </span><span id="L-131"><a href="#L-131"><span class="linenos" data-line="131"></span></a> <span class="n">badge</span> <span class="o">=</span> <span class="s2">"%b[%s]"</span> </span><span id="L-132"><a href="#L-132"><span class="linenos" data-line="132"></span></a><span class="p">}</span> </span><span id="L-133"><a href="#L-133"><span class="linenos" data-line="133"></span></a> </span><span id="L-134"><a href="#L-134"><span class="linenos" data-line="134"></span></a><span class="kd">local</span> <span class="n">hookNames</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">-- {level_1, level_2}</span> </span><span id="L-135"><a href="#L-135"><span class="linenos" data-line="135"></span></a> <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="p">{</span><span class="s2">"getProperty"</span><span class="p">},</span> </span><span id="L-136"><a href="#L-136"><span class="linenos" data-line="136"></span></a> <span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">reference</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"getReferences"</span><span class="p">,</span> <span class="s2">"getReference"</span><span class="p">},</span> </span><span id="L-137"><a href="#L-137"><span class="linenos" data-line="137"></span></a> <span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"getAllQualifiers"</span><span class="p">},</span> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></span></a> <span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="o">..</span><span class="s2">"</span><span class="se">\\</span><span class="s2">d"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"getQualifiers"</span><span class="p">,</span> <span class="s2">"getQualifier"</span><span class="p">},</span> </span><span id="L-139"><a href="#L-139"><span class="linenos" data-line="139"></span></a> <span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">alias</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"getAlias"</span><span class="p">},</span> </span><span id="L-140"><a href="#L-140"><span class="linenos" data-line="140"></span></a> <span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">badge</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"getBadge"</span><span class="p">}</span> </span><span id="L-141"><a href="#L-141"><span class="linenos" data-line="141"></span></a><span class="p">}</span> </span><span id="L-142"><a href="#L-142"><span class="linenos" data-line="142"></span></a> </span><span id="L-143"><a href="#L-143"><span class="linenos" data-line="143"></span></a><span class="c1">-- default value objects, should NOT be mutated but instead copied</span> </span><span id="L-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a><span class="kd">local</span> <span class="n">defaultSeparators</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></span></a> <span class="p">[</span><span class="s2">"sep"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">" "</span><span class="p">},</span> </span><span id="L-146"><a href="#L-146"><span class="linenos" data-line="146"></span></a> <span class="p">[</span><span class="s2">"sep%s"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">","</span><span class="p">},</span> </span><span id="L-147"><a href="#L-147"><span class="linenos" data-line="147"></span></a> <span class="p">[</span><span class="s2">"sep%q"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"; "</span><span class="p">},</span> </span><span id="L-148"><a href="#L-148"><span class="linenos" data-line="148"></span></a> <span class="p">[</span><span class="s2">"sep%q</span><span class="se">\\</span><span class="s2">d"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">", "</span><span class="p">},</span> </span><span id="L-149"><a href="#L-149"><span class="linenos" data-line="149"></span></a> <span class="p">[</span><span class="s2">"sep%r"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">,</span> <span class="c1">-- none</span> </span><span id="L-150"><a href="#L-150"><span class="linenos" data-line="150"></span></a> <span class="p">[</span><span class="s2">"punc"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> <span class="c1">-- none</span> </span><span id="L-151"><a href="#L-151"><span class="linenos" data-line="151"></span></a><span class="p">}</span> </span><span id="L-152"><a href="#L-152"><span class="linenos" data-line="152"></span></a> </span><span id="L-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a><span class="kd">local</span> <span class="n">rankTable</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-154"><a href="#L-154"><span class="linenos" data-line="154"></span></a> <span class="p">[</span><span class="s2">"preferred"</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a> <span class="p">[</span><span class="s2">"normal"</span><span class="p">]</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a> <span class="p">[</span><span class="s2">"deprecated"</span><span class="p">]</span> <span class="o">=</span> <span class="mi">3</span> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></span></a><span class="p">}</span> </span><span id="L-158"><a href="#L-158"><span class="linenos" data-line="158"></span></a> </span><span id="L-159"><a href="#L-159"><span class="linenos" data-line="159"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">replaceAlias</span><span class="p">(</span><span class="n">id</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">if</span> <span class="n">aliasesP</span><span class="p">[</span><span class="n">id</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-161"><a href="#L-161"><span class="linenos" data-line="161"></span></a> <span class="n">id</span> <span class="o">=</span> <span class="n">aliasesP</span><span class="p">[</span><span class="n">id</span><span class="p">]</span> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></span></a> <span class="kr">end</span> </span><span id="L-163"><a href="#L-163"><span class="linenos" data-line="163"></span></a> </span><span id="L-164"><a href="#L-164"><span class="linenos" data-line="164"></span></a> <span class="kr">return</span> <span class="n">id</span> </span><span id="L-165"><a href="#L-165"><span class="linenos" data-line="165"></span></a><span class="kr">end</span> </span><span id="L-166"><a href="#L-166"><span class="linenos" data-line="166"></span></a> </span><span id="L-167"><a href="#L-167"><span class="linenos" data-line="167"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">errorText</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="p">...)</span> </span><span id="L-168"><a href="#L-168"><span class="linenos" data-line="168"></span></a> <span class="kd">local</span> <span class="n">text</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s2">"errors"</span><span class="p">][</span><span class="n">code</span><span class="p">]</span> </span><span id="L-169"><a href="#L-169"><span class="linenos" data-line="169"></span></a> <span class="kr">if</span> <span class="n">arg</span> <span class="kr">then</span> <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">format</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">unpack</span><span class="p">(</span><span class="n">arg</span><span class="p">))</span> <span class="kr">end</span> </span><span id="L-170"><a href="#L-170"><span class="linenos" data-line="170"></span></a> <span class="kr">return</span> <span class="n">text</span> </span><span id="L-171"><a href="#L-171"><span class="linenos" data-line="171"></span></a><span class="kr">end</span> </span><span id="L-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a> </span><span id="L-173"><a href="#L-173"><span class="linenos" data-line="173"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">throwError</span><span class="p">(</span><span class="n">errorMessage</span><span class="p">,</span> <span class="p">...)</span> </span><span id="L-174"><a href="#L-174"><span class="linenos" data-line="174"></span></a> <span class="nb">error</span><span class="p">(</span><span class="n">errorText</span><span class="p">(</span><span class="n">errorMessage</span><span class="p">,</span> <span class="n">unpack</span><span class="p">(</span><span class="n">arg</span><span class="p">)))</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="kd">local</span> <span class="kr">function</span> <span class="nf">replaceDecimalMark</span><span class="p">(</span><span class="n">num</span><span class="p">)</span> </span><span id="L-178"><a href="#L-178"><span class="linenos" data-line="178"></span></a> <span class="kr">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">num</span><span class="p">,</span> <span class="s2">"[.]"</span><span class="p">,</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'numeric'</span><span class="p">][</span><span class="s1">'decimal-mark'</span><span class="p">],</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-179"><a href="#L-179"><span class="linenos" data-line="179"></span></a><span class="kr">end</span> </span><span id="L-180"><a href="#L-180"><span class="linenos" data-line="180"></span></a> </span><span id="L-181"><a href="#L-181"><span class="linenos" data-line="181"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">padZeros</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">numDigits</span><span class="p">)</span> </span><span id="L-182"><a href="#L-182"><span class="linenos" data-line="182"></span></a> <span class="kd">local</span> <span class="n">numZeros</span> </span><span id="L-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a> <span class="kd">local</span> <span class="n">negative</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a> </span><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a> <span class="kr">if</span> <span class="n">num</span> <span class="o"><</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-186"><a href="#L-186"><span class="linenos" data-line="186"></span></a> <span class="n">negative</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-187"><a href="#L-187"><span class="linenos" data-line="187"></span></a> <span class="n">num</span> <span class="o">=</span> <span class="n">num</span> <span class="o">*</span> <span class="o">-</span><span class="mi">1</span> </span><span id="L-188"><a href="#L-188"><span class="linenos" data-line="188"></span></a> <span class="kr">end</span> </span><span id="L-189"><a href="#L-189"><span class="linenos" data-line="189"></span></a> </span><span id="L-190"><a href="#L-190"><span class="linenos" data-line="190"></span></a> <span class="n">num</span> <span class="o">=</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">num</span><span class="p">)</span> </span><span id="L-191"><a href="#L-191"><span class="linenos" data-line="191"></span></a> <span class="n">numZeros</span> <span class="o">=</span> <span class="n">numDigits</span> <span class="o">-</span> <span class="n">num</span><span class="p">:</span><span class="n">len</span><span class="p">()</span> </span><span id="L-192"><a href="#L-192"><span class="linenos" data-line="192"></span></a> </span><span id="L-193"><a href="#L-193"><span class="linenos" data-line="193"></span></a> <span class="kr">for</span> <span class="n">_</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">numZeros</span> <span class="kr">do</span> </span><span id="L-194"><a href="#L-194"><span class="linenos" data-line="194"></span></a> <span class="n">num</span> <span class="o">=</span> <span class="s2">"0"</span><span class="o">..</span><span class="n">num</span> </span><span id="L-195"><a href="#L-195"><span class="linenos" data-line="195"></span></a> <span class="kr">end</span> </span><span id="L-196"><a href="#L-196"><span class="linenos" data-line="196"></span></a> </span><span id="L-197"><a href="#L-197"><span class="linenos" data-line="197"></span></a> <span class="kr">if</span> <span class="n">negative</span> <span class="kr">then</span> </span><span id="L-198"><a href="#L-198"><span class="linenos" data-line="198"></span></a> <span class="n">num</span> <span class="o">=</span> <span class="s2">"-"</span><span class="o">..</span><span class="n">num</span> </span><span id="L-199"><a href="#L-199"><span class="linenos" data-line="199"></span></a> <span class="kr">end</span> </span><span id="L-200"><a href="#L-200"><span class="linenos" data-line="200"></span></a> </span><span id="L-201"><a href="#L-201"><span class="linenos" data-line="201"></span></a> <span class="kr">return</span> <span class="n">num</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><span id="L-204"><a href="#L-204"><span class="linenos" data-line="204"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">replaceSpecialChar</span><span class="p">(</span><span class="n">chr</span><span class="p">)</span> </span><span id="L-205"><a href="#L-205"><span class="linenos" data-line="205"></span></a> <span class="kr">if</span> <span class="n">chr</span> <span class="o">==</span> <span class="s1">'_'</span> <span class="kr">then</span> </span><span id="L-206"><a href="#L-206"><span class="linenos" data-line="206"></span></a> <span class="c1">-- replace underscores with spaces</span> </span><span id="L-207"><a href="#L-207"><span class="linenos" data-line="207"></span></a> <span class="kr">return</span> <span class="s1">' '</span> </span><span id="L-208"><a href="#L-208"><span class="linenos" data-line="208"></span></a> <span class="kr">else</span> </span><span id="L-209"><a href="#L-209"><span class="linenos" data-line="209"></span></a> <span class="kr">return</span> <span class="n">chr</span> </span><span id="L-210"><a href="#L-210"><span class="linenos" data-line="210"></span></a> <span class="kr">end</span> </span><span id="L-211"><a href="#L-211"><span class="linenos" data-line="211"></span></a><span class="kr">end</span> </span><span id="L-212"><a href="#L-212"><span class="linenos" data-line="212"></span></a> </span><span id="L-213"><a href="#L-213"><span class="linenos" data-line="213"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">replaceSpecialChars</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> </span><span id="L-214"><a href="#L-214"><span class="linenos" data-line="214"></span></a> <span class="kd">local</span> <span class="n">chr</span> </span><span id="L-215"><a href="#L-215"><span class="linenos" data-line="215"></span></a> <span class="kd">local</span> <span class="n">esc</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-216"><a href="#L-216"><span class="linenos" data-line="216"></span></a> <span class="kd">local</span> <span class="n">strOut</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-217"><a href="#L-217"><span class="linenos" data-line="217"></span></a> </span><span id="L-218"><a href="#L-218"><span class="linenos" data-line="218"></span></a> <span class="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">str</span> <span class="kr">do</span> </span><span id="L-219"><a href="#L-219"><span class="linenos" data-line="219"></span></a> <span class="n">chr</span> <span class="o">=</span> <span class="n">str</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="n">i</span><span class="p">)</span> </span><span id="L-220"><a href="#L-220"><span class="linenos" data-line="220"></span></a> </span><span id="L-221"><a href="#L-221"><span class="linenos" data-line="221"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">esc</span> <span class="kr">then</span> </span><span id="L-222"><a href="#L-222"><span class="linenos" data-line="222"></span></a> <span class="kr">if</span> <span class="n">chr</span> <span class="o">==</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">'</span> <span class="kr">then</span> </span><span id="L-223"><a href="#L-223"><span class="linenos" data-line="223"></span></a> <span class="n">esc</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-224"><a href="#L-224"><span class="linenos" data-line="224"></span></a> <span class="kr">else</span> </span><span id="L-225"><a href="#L-225"><span class="linenos" data-line="225"></span></a> <span class="n">strOut</span> <span class="o">=</span> <span class="n">strOut</span> <span class="o">..</span> <span class="n">replaceSpecialChar</span><span class="p">(</span><span class="n">chr</span><span class="p">)</span> </span><span id="L-226"><a href="#L-226"><span class="linenos" data-line="226"></span></a> <span class="kr">end</span> </span><span id="L-227"><a href="#L-227"><span class="linenos" data-line="227"></span></a> <span class="kr">else</span> </span><span id="L-228"><a href="#L-228"><span class="linenos" data-line="228"></span></a> <span class="n">strOut</span> <span class="o">=</span> <span class="n">strOut</span> <span class="o">..</span> <span class="n">chr</span> </span><span id="L-229"><a href="#L-229"><span class="linenos" data-line="229"></span></a> <span class="n">esc</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-230"><a href="#L-230"><span class="linenos" data-line="230"></span></a> <span class="kr">end</span> </span><span id="L-231"><a href="#L-231"><span class="linenos" data-line="231"></span></a> <span class="kr">end</span> </span><span id="L-232"><a href="#L-232"><span class="linenos" data-line="232"></span></a> </span><span id="L-233"><a href="#L-233"><span class="linenos" data-line="233"></span></a> <span class="kr">return</span> <span class="n">strOut</span> </span><span id="L-234"><a href="#L-234"><span class="linenos" data-line="234"></span></a><span class="kr">end</span> </span><span id="L-235"><a href="#L-235"><span class="linenos" data-line="235"></span></a> </span><span id="L-236"><a href="#L-236"><span class="linenos" data-line="236"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">buildWikilink</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">label</span><span class="p">)</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="ow">not</span> <span class="n">label</span> <span class="ow">or</span> <span class="n">target</span> <span class="o">==</span> <span class="n">label</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="s2">"[["</span> <span class="o">..</span> <span class="n">target</span> <span class="o">..</span> <span class="s2">"]]"</span> </span><span id="L-239"><a href="#L-239"><span class="linenos" data-line="239"></span></a> <span class="kr">else</span> </span><span id="L-240"><a href="#L-240"><span class="linenos" data-line="240"></span></a> <span class="kr">return</span> <span class="s2">"[["</span> <span class="o">..</span> <span class="n">target</span> <span class="o">..</span> <span class="s2">"|"</span> <span class="o">..</span> <span class="n">label</span> <span class="o">..</span> <span class="s2">"]]"</span> </span><span id="L-241"><a href="#L-241"><span class="linenos" data-line="241"></span></a> <span class="kr">end</span> </span><span id="L-242"><a href="#L-242"><span class="linenos" data-line="242"></span></a><span class="kr">end</span> </span><span id="L-243"><a href="#L-243"><span class="linenos" data-line="243"></span></a> </span><span id="L-244"><a href="#L-244"><span class="linenos" data-line="244"></span></a><span class="c1">-- used to make frame.args mutable, to replace #frame.args (which is always 0)</span> </span><span id="L-245"><a href="#L-245"><span class="linenos" data-line="245"></span></a><span class="c1">-- with the actual amount and to simply copy tables</span> </span><span id="L-246"><a href="#L-246"><span class="linenos" data-line="246"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">copyTable</span><span class="p">(</span><span class="n">tIn</span><span class="p">)</span> </span><span id="L-247"><a href="#L-247"><span class="linenos" data-line="247"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">tIn</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="kr">return</span> <span class="kc">nil</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><span id="L-251"><a href="#L-251"><span class="linenos" data-line="251"></span></a> <span class="kd">local</span> <span class="n">tOut</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-252"><a href="#L-252"><span class="linenos" data-line="252"></span></a> </span><span id="L-253"><a href="#L-253"><span class="linenos" data-line="253"></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">pairs</span><span class="p">(</span><span class="n">tIn</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-254"><a href="#L-254"><span class="linenos" data-line="254"></span></a> <span class="n">tOut</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> </span><span id="L-255"><a href="#L-255"><span class="linenos" data-line="255"></span></a> <span class="kr">end</span> </span><span id="L-256"><a href="#L-256"><span class="linenos" data-line="256"></span></a> </span><span id="L-257"><a href="#L-257"><span class="linenos" data-line="257"></span></a> <span class="kr">return</span> <span class="n">tOut</span> </span><span id="L-258"><a href="#L-258"><span class="linenos" data-line="258"></span></a><span class="kr">end</span> </span><span id="L-259"><a href="#L-259"><span class="linenos" data-line="259"></span></a> </span><span id="L-260"><a href="#L-260"><span class="linenos" data-line="260"></span></a><span class="c1">-- used to merge output arrays together;</span> </span><span id="L-261"><a href="#L-261"><span class="linenos" data-line="261"></span></a><span class="c1">-- note that it currently mutates the first input array</span> </span><span id="L-262"><a href="#L-262"><span class="linenos" data-line="262"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">mergeArrays</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span> <span class="n">a2</span><span class="p">)</span> </span><span id="L-263"><a href="#L-263"><span class="linenos" data-line="263"></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">a2</span> <span class="kr">do</span> </span><span id="L-264"><a href="#L-264"><span class="linenos" data-line="264"></span></a> <span class="n">a1</span><span class="p">[</span><span class="o">#</span><span class="n">a1</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">a2</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> </span><span id="L-265"><a href="#L-265"><span class="linenos" data-line="265"></span></a> <span class="kr">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="kr">return</span> <span class="n">a1</span> </span><span id="L-268"><a href="#L-268"><span class="linenos" data-line="268"></span></a><span class="kr">end</span> </span><span id="L-269"><a href="#L-269"><span class="linenos" data-line="269"></span></a> </span><span id="L-270"><a href="#L-270"><span class="linenos" data-line="270"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">split</span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="n">del</span><span class="p">)</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">out</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-272"><a href="#L-272"><span class="linenos" data-line="272"></span></a> <span class="kd">local</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">=</span> <span class="n">str</span><span class="p">:</span><span class="n">find</span><span class="p">(</span><span class="n">del</span><span class="p">)</span> </span><span id="L-273"><a href="#L-273"><span class="linenos" data-line="273"></span></a> </span><span id="L-274"><a href="#L-274"><span class="linenos" data-line="274"></span></a> <span class="kr">if</span> <span class="n">i</span> <span class="ow">and</span> <span class="n">j</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">out</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">str</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="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-276"><a href="#L-276"><span class="linenos" data-line="276"></span></a> <span class="n">out</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">str</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-277"><a href="#L-277"><span class="linenos" data-line="277"></span></a> <span class="kr">else</span> </span><span id="L-278"><a href="#L-278"><span class="linenos" data-line="278"></span></a> <span class="n">out</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">str</span> </span><span id="L-279"><a href="#L-279"><span class="linenos" data-line="279"></span></a> <span class="kr">end</span> </span><span id="L-280"><a href="#L-280"><span class="linenos" data-line="280"></span></a> </span><span id="L-281"><a href="#L-281"><span class="linenos" data-line="281"></span></a> <span class="kr">return</span> <span class="n">out</span> </span><span id="L-282"><a href="#L-282"><span class="linenos" data-line="282"></span></a><span class="kr">end</span> </span><span id="L-283"><a href="#L-283"><span class="linenos" data-line="283"></span></a> </span><span id="L-284"><a href="#L-284"><span class="linenos" data-line="284"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">parseWikidataURL</span><span class="p">(</span><span class="n">url</span><span class="p">)</span> </span><span id="L-285"><a href="#L-285"><span class="linenos" data-line="285"></span></a> <span class="kd">local</span> <span class="n">id</span> </span><span id="L-286"><a href="#L-286"><span class="linenos" data-line="286"></span></a> </span><span id="L-287"><a href="#L-287"><span class="linenos" data-line="287"></span></a> <span class="kr">if</span> <span class="n">url</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">'^http[s]?://'</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-288"><a href="#L-288"><span class="linenos" data-line="288"></span></a> <span class="n">id</span> <span class="o">=</span> <span class="n">split</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="s2">"Q"</span><span class="p">)</span> </span><span id="L-289"><a href="#L-289"><span class="linenos" data-line="289"></span></a> </span><span id="L-290"><a href="#L-290"><span class="linenos" data-line="290"></span></a> <span class="kr">if</span> <span class="n">id</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-291"><a href="#L-291"><span class="linenos" data-line="291"></span></a> <span class="kr">return</span> <span class="s2">"Q"</span> <span class="o">..</span> <span class="n">id</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> </span><span id="L-292"><a href="#L-292"><span class="linenos" data-line="292"></span></a> <span class="kr">end</span> </span><span id="L-293"><a href="#L-293"><span class="linenos" data-line="293"></span></a> <span class="kr">end</span> </span><span id="L-294"><a href="#L-294"><span class="linenos" data-line="294"></span></a> </span><span id="L-295"><a href="#L-295"><span class="linenos" data-line="295"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-296"><a href="#L-296"><span class="linenos" data-line="296"></span></a><span class="kr">end</span> </span><span id="L-297"><a href="#L-297"><span class="linenos" data-line="297"></span></a> </span><span id="L-298"><a href="#L-298"><span class="linenos" data-line="298"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">parseDate</span><span class="p">(</span><span class="n">dateStr</span><span class="p">,</span> <span class="n">precision</span><span class="p">)</span> </span><span id="L-299"><a href="#L-299"><span class="linenos" data-line="299"></span></a> <span class="n">precision</span> <span class="o">=</span> <span class="n">precision</span> <span class="ow">or</span> <span class="s2">"d"</span> </span><span id="L-300"><a href="#L-300"><span class="linenos" data-line="300"></span></a> </span><span id="L-301"><a href="#L-301"><span class="linenos" data-line="301"></span></a> <span class="kd">local</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">index</span><span class="p">,</span> <span class="n">ptr</span> </span><span id="L-302"><a href="#L-302"><span class="linenos" data-line="302"></span></a> <span class="kd">local</span> <span class="n">parts</span> <span class="o">=</span> <span class="p">{</span><span class="kc">nil</span><span class="p">,</span> <span class="kc">nil</span><span class="p">,</span> <span class="kc">nil</span><span class="p">}</span> </span><span id="L-303"><a href="#L-303"><span class="linenos" data-line="303"></span></a> </span><span id="L-304"><a href="#L-304"><span class="linenos" data-line="304"></span></a> <span class="kr">if</span> <span class="n">dateStr</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-305"><a href="#L-305"><span class="linenos" data-line="305"></span></a> <span class="kr">return</span> <span class="n">parts</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">parts</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">parts</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="c1">-- year, month, day</span> </span><span id="L-306"><a href="#L-306"><span class="linenos" data-line="306"></span></a> <span class="kr">end</span> </span><span id="L-307"><a href="#L-307"><span class="linenos" data-line="307"></span></a> </span><span id="L-308"><a href="#L-308"><span class="linenos" data-line="308"></span></a> <span class="c1">-- 'T' for snak values, '/' for outputs with '/Julian' attached</span> </span><span id="L-309"><a href="#L-309"><span class="linenos" data-line="309"></span></a> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">=</span> <span class="n">dateStr</span><span class="p">:</span><span class="n">find</span><span class="p">(</span><span class="s2">"[T/]"</span><span class="p">)</span> </span><span id="L-310"><a href="#L-310"><span class="linenos" data-line="310"></span></a> </span><span id="L-311"><a href="#L-311"><span class="linenos" data-line="311"></span></a> <span class="kr">if</span> <span class="n">i</span> <span class="kr">then</span> </span><span id="L-312"><a href="#L-312"><span class="linenos" data-line="312"></span></a> <span class="n">dateStr</span> <span class="o">=</span> <span class="n">dateStr</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="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> </span><span id="L-313"><a href="#L-313"><span class="linenos" data-line="313"></span></a> <span class="kr">end</span> </span><span id="L-314"><a href="#L-314"><span class="linenos" data-line="314"></span></a> </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">from</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-316"><a href="#L-316"><span class="linenos" data-line="316"></span></a> </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">dateStr</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"-"</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="c1">-- this is a negative number, look further ahead</span> </span><span id="L-319"><a href="#L-319"><span class="linenos" data-line="319"></span></a> <span class="n">from</span> <span class="o">=</span> <span class="mi">2</span> </span><span id="L-320"><a href="#L-320"><span class="linenos" data-line="320"></span></a> <span class="kr">end</span> </span><span id="L-321"><a href="#L-321"><span class="linenos" data-line="321"></span></a> </span><span id="L-322"><a href="#L-322"><span class="linenos" data-line="322"></span></a> <span class="n">index</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-323"><a href="#L-323"><span class="linenos" data-line="323"></span></a> <span class="n">ptr</span> <span class="o">=</span> <span class="mi">1</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="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">=</span> <span class="n">dateStr</span><span class="p">:</span><span class="n">find</span><span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="n">from</span><span class="p">)</span> </span><span id="L-326"><a href="#L-326"><span class="linenos" data-line="326"></span></a> </span><span id="L-327"><a href="#L-327"><span class="linenos" data-line="327"></span></a> <span class="kr">if</span> <span class="n">i</span> <span class="kr">then</span> </span><span id="L-328"><a href="#L-328"><span class="linenos" data-line="328"></span></a> <span class="c1">-- year</span> </span><span id="L-329"><a href="#L-329"><span class="linenos" data-line="329"></span></a> <span class="n">parts</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">dateStr</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="n">ptr</span><span class="p">,</span> <span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="mi">10</span><span class="p">)</span> <span class="c1">-- explicitly give base 10 to prevent error</span> </span><span id="L-330"><a href="#L-330"><span class="linenos" data-line="330"></span></a> </span><span id="L-331"><a href="#L-331"><span class="linenos" data-line="331"></span></a> <span class="kr">if</span> <span class="n">parts</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="o">==</span> <span class="o">-</span><span class="mi">0</span> <span class="kr">then</span> </span><span id="L-332"><a href="#L-332"><span class="linenos" data-line="332"></span></a> <span class="n">parts</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="s2">"0"</span><span class="p">)</span> <span class="c1">-- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead</span> </span><span id="L-333"><a href="#L-333"><span class="linenos" data-line="333"></span></a> <span class="kr">end</span> </span><span id="L-334"><a href="#L-334"><span class="linenos" data-line="334"></span></a> </span><span id="L-335"><a href="#L-335"><span class="linenos" data-line="335"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o">==</span> <span class="s2">"y"</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="c1">-- we're done</span> </span><span id="L-337"><a href="#L-337"><span class="linenos" data-line="337"></span></a> <span class="kr">return</span> <span class="n">parts</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">parts</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">parts</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="c1">-- year, month, day</span> </span><span id="L-338"><a href="#L-338"><span class="linenos" data-line="338"></span></a> <span class="kr">end</span> </span><span id="L-339"><a href="#L-339"><span class="linenos" data-line="339"></span></a> </span><span id="L-340"><a href="#L-340"><span class="linenos" data-line="340"></span></a> <span class="n">index</span> <span class="o">=</span> <span class="n">index</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-341"><a href="#L-341"><span class="linenos" data-line="341"></span></a> <span class="n">ptr</span> <span class="o">=</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-342"><a href="#L-342"><span class="linenos" data-line="342"></span></a> </span><span id="L-343"><a href="#L-343"><span class="linenos" data-line="343"></span></a> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">=</span> <span class="n">dateStr</span><span class="p">:</span><span class="n">find</span><span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="n">ptr</span><span class="p">)</span> </span><span id="L-344"><a href="#L-344"><span class="linenos" data-line="344"></span></a> </span><span id="L-345"><a href="#L-345"><span class="linenos" data-line="345"></span></a> <span class="kr">if</span> <span class="n">i</span> <span class="kr">then</span> </span><span id="L-346"><a href="#L-346"><span class="linenos" data-line="346"></span></a> <span class="c1">-- month</span> </span><span id="L-347"><a href="#L-347"><span class="linenos" data-line="347"></span></a> <span class="n">parts</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">dateStr</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="n">ptr</span><span class="p">,</span> <span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="mi">10</span><span class="p">)</span> </span><span id="L-348"><a href="#L-348"><span class="linenos" data-line="348"></span></a> </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">precision</span> <span class="o">==</span> <span class="s2">"m"</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="c1">-- we're done</span> </span><span id="L-351"><a href="#L-351"><span class="linenos" data-line="351"></span></a> <span class="kr">return</span> <span class="n">parts</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">parts</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">parts</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="c1">-- year, month, day</span> </span><span id="L-352"><a href="#L-352"><span class="linenos" data-line="352"></span></a> <span class="kr">end</span> </span><span id="L-353"><a href="#L-353"><span class="linenos" data-line="353"></span></a> </span><span id="L-354"><a href="#L-354"><span class="linenos" data-line="354"></span></a> <span class="n">index</span> <span class="o">=</span> <span class="n">index</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="n">ptr</span> <span class="o">=</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-356"><a href="#L-356"><span class="linenos" data-line="356"></span></a> <span class="kr">end</span> </span><span id="L-357"><a href="#L-357"><span class="linenos" data-line="357"></span></a> <span class="kr">end</span> </span><span id="L-358"><a href="#L-358"><span class="linenos" data-line="358"></span></a> </span><span id="L-359"><a href="#L-359"><span class="linenos" data-line="359"></span></a> <span class="kr">if</span> <span class="n">dateStr</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="n">ptr</span><span class="p">)</span> <span class="o">~=</span> <span class="s2">""</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="c1">-- day if we have month, month if we have year, or year</span> </span><span id="L-361"><a href="#L-361"><span class="linenos" data-line="361"></span></a> <span class="n">parts</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">dateStr</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="n">ptr</span><span class="p">),</span> <span class="mi">10</span><span class="p">)</span> </span><span id="L-362"><a href="#L-362"><span class="linenos" data-line="362"></span></a> <span class="kr">end</span> </span><span id="L-363"><a href="#L-363"><span class="linenos" data-line="363"></span></a> </span><span id="L-364"><a href="#L-364"><span class="linenos" data-line="364"></span></a> <span class="kr">return</span> <span class="n">parts</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">parts</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">parts</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="c1">-- year, month, day</span> </span><span id="L-365"><a href="#L-365"><span class="linenos" data-line="365"></span></a><span class="kr">end</span> </span><span id="L-366"><a href="#L-366"><span class="linenos" data-line="366"></span></a> </span><span id="L-367"><a href="#L-367"><span class="linenos" data-line="367"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">datePrecedesDate</span><span class="p">(</span><span class="n">aY</span><span class="p">,</span> <span class="n">aM</span><span class="p">,</span> <span class="n">aD</span><span class="p">,</span> <span class="n">bY</span><span class="p">,</span> <span class="n">bM</span><span class="p">,</span> <span class="n">bD</span><span class="p">)</span> </span><span id="L-368"><a href="#L-368"><span class="linenos" data-line="368"></span></a> <span class="kr">if</span> <span class="n">aY</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="n">bY</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-369"><a href="#L-369"><span class="linenos" data-line="369"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-370"><a href="#L-370"><span class="linenos" data-line="370"></span></a> <span class="kr">end</span> </span><span id="L-371"><a href="#L-371"><span class="linenos" data-line="371"></span></a> <span class="n">aM</span> <span class="o">=</span> <span class="n">aM</span> <span class="ow">or</span> <span class="mi">1</span> </span><span id="L-372"><a href="#L-372"><span class="linenos" data-line="372"></span></a> <span class="n">aD</span> <span class="o">=</span> <span class="n">aD</span> <span class="ow">or</span> <span class="mi">1</span> </span><span id="L-373"><a href="#L-373"><span class="linenos" data-line="373"></span></a> <span class="n">bM</span> <span class="o">=</span> <span class="n">bM</span> <span class="ow">or</span> <span class="mi">1</span> </span><span id="L-374"><a href="#L-374"><span class="linenos" data-line="374"></span></a> <span class="n">bD</span> <span class="o">=</span> <span class="n">bD</span> <span class="ow">or</span> <span class="mi">1</span> </span><span id="L-375"><a href="#L-375"><span class="linenos" data-line="375"></span></a> </span><span id="L-376"><a href="#L-376"><span class="linenos" data-line="376"></span></a> <span class="kr">if</span> <span class="n">aY</span> <span class="o"><</span> <span class="n">bY</span> <span class="kr">then</span> </span><span id="L-377"><a href="#L-377"><span class="linenos" data-line="377"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-378"><a href="#L-378"><span class="linenos" data-line="378"></span></a> <span class="kr">end</span> </span><span id="L-379"><a href="#L-379"><span class="linenos" data-line="379"></span></a> </span><span id="L-380"><a href="#L-380"><span class="linenos" data-line="380"></span></a> <span class="kr">if</span> <span class="n">aY</span> <span class="o">></span> <span class="n">bY</span> <span class="kr">then</span> </span><span id="L-381"><a href="#L-381"><span class="linenos" data-line="381"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-382"><a href="#L-382"><span class="linenos" data-line="382"></span></a> <span class="kr">end</span> </span><span id="L-383"><a href="#L-383"><span class="linenos" data-line="383"></span></a> </span><span id="L-384"><a href="#L-384"><span class="linenos" data-line="384"></span></a> <span class="kr">if</span> <span class="n">aM</span> <span class="o"><</span> <span class="n">bM</span> <span class="kr">then</span> </span><span id="L-385"><a href="#L-385"><span class="linenos" data-line="385"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-386"><a href="#L-386"><span class="linenos" data-line="386"></span></a> <span class="kr">end</span> </span><span id="L-387"><a href="#L-387"><span class="linenos" data-line="387"></span></a> </span><span id="L-388"><a href="#L-388"><span class="linenos" data-line="388"></span></a> <span class="kr">if</span> <span class="n">aM</span> <span class="o">></span> <span class="n">bM</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="kr">return</span> <span class="kc">false</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><span id="L-392"><a href="#L-392"><span class="linenos" data-line="392"></span></a> <span class="kr">if</span> <span class="n">aD</span> <span class="o"><</span> <span class="n">bD</span> <span class="kr">then</span> </span><span id="L-393"><a href="#L-393"><span class="linenos" data-line="393"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-394"><a href="#L-394"><span class="linenos" data-line="394"></span></a> <span class="kr">end</span> </span><span id="L-395"><a href="#L-395"><span class="linenos" data-line="395"></span></a> </span><span id="L-396"><a href="#L-396"><span class="linenos" data-line="396"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-397"><a href="#L-397"><span class="linenos" data-line="397"></span></a><span class="kr">end</span> </span><span id="L-398"><a href="#L-398"><span class="linenos" data-line="398"></span></a> </span><span id="L-399"><a href="#L-399"><span class="linenos" data-line="399"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getHookName</span><span class="p">(</span><span class="n">param</span><span class="p">,</span> <span class="n">index</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">if</span> <span class="n">hookNames</span><span class="p">[</span><span class="n">param</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-401"><a href="#L-401"><span class="linenos" data-line="401"></span></a> <span class="kr">return</span> <span class="n">hookNames</span><span class="p">[</span><span class="n">param</span><span class="p">][</span><span class="n">index</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">elseif</span> <span class="n">param</span><span class="p">:</span><span class="n">len</span><span class="p">()</span> <span class="o">></span> <span class="mi">2</span> <span class="kr">then</span> </span><span id="L-403"><a href="#L-403"><span class="linenos" data-line="403"></span></a> <span class="kr">return</span> <span class="n">hookNames</span><span class="p">[</span><span class="n">param</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">2</span><span class="p">)</span><span class="o">..</span><span class="s2">"</span><span class="se">\\</span><span class="s2">d"</span><span class="p">][</span><span class="n">index</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">else</span> </span><span id="L-405"><a href="#L-405"><span class="linenos" data-line="405"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-406"><a href="#L-406"><span class="linenos" data-line="406"></span></a> <span class="kr">end</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="kd">local</span> <span class="kr">function</span> <span class="nf">alwaysTrue</span><span class="p">()</span> </span><span id="L-410"><a href="#L-410"><span class="linenos" data-line="410"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-411"><a href="#L-411"><span class="linenos" data-line="411"></span></a><span class="kr">end</span> </span><span id="L-412"><a href="#L-412"><span class="linenos" data-line="412"></span></a> </span><span id="L-413"><a href="#L-413"><span class="linenos" data-line="413"></span></a><span class="c1">-- The following function parses a format string.</span> </span><span id="L-414"><a href="#L-414"><span class="linenos" data-line="414"></span></a><span class="c1">--</span> </span><span id="L-415"><a href="#L-415"><span class="linenos" data-line="415"></span></a><span class="c1">-- The example below shows how a parsed string is structured in memory.</span> </span><span id="L-416"><a href="#L-416"><span class="linenos" data-line="416"></span></a><span class="c1">-- Variables other than 'str' and 'child' are left out for clarity's sake.</span> </span><span id="L-417"><a href="#L-417"><span class="linenos" data-line="417"></span></a><span class="c1">--</span> </span><span id="L-418"><a href="#L-418"><span class="linenos" data-line="418"></span></a><span class="c1">-- Example:</span> </span><span id="L-419"><a href="#L-419"><span class="linenos" data-line="419"></span></a><span class="c1">-- "A %p B [%s[%q1]] C [%r] D"</span> </span><span id="L-420"><a href="#L-420"><span class="linenos" data-line="420"></span></a><span class="c1">--</span> </span><span id="L-421"><a href="#L-421"><span class="linenos" data-line="421"></span></a><span class="c1">-- Structure:</span> </span><span id="L-422"><a href="#L-422"><span class="linenos" data-line="422"></span></a><span class="c1">-- [</span> </span><span id="L-423"><a href="#L-423"><span class="linenos" data-line="423"></span></a><span class="c1">-- {</span> </span><span id="L-424"><a href="#L-424"><span class="linenos" data-line="424"></span></a><span class="c1">-- str = "A "</span> </span><span id="L-425"><a href="#L-425"><span class="linenos" data-line="425"></span></a><span class="c1">-- },</span> </span><span id="L-426"><a href="#L-426"><span class="linenos" data-line="426"></span></a><span class="c1">-- {</span> </span><span id="L-427"><a href="#L-427"><span class="linenos" data-line="427"></span></a><span class="c1">-- str = "%p"</span> </span><span id="L-428"><a href="#L-428"><span class="linenos" data-line="428"></span></a><span class="c1">-- },</span> </span><span id="L-429"><a href="#L-429"><span class="linenos" data-line="429"></span></a><span class="c1">-- {</span> </span><span id="L-430"><a href="#L-430"><span class="linenos" data-line="430"></span></a><span class="c1">-- str = " B ",</span> </span><span id="L-431"><a href="#L-431"><span class="linenos" data-line="431"></span></a><span class="c1">-- child =</span> </span><span id="L-432"><a href="#L-432"><span class="linenos" data-line="432"></span></a><span class="c1">-- [</span> </span><span id="L-433"><a href="#L-433"><span class="linenos" data-line="433"></span></a><span class="c1">-- {</span> </span><span id="L-434"><a href="#L-434"><span class="linenos" data-line="434"></span></a><span class="c1">-- str = "%s",</span> </span><span id="L-435"><a href="#L-435"><span class="linenos" data-line="435"></span></a><span class="c1">-- child =</span> </span><span id="L-436"><a href="#L-436"><span class="linenos" data-line="436"></span></a><span class="c1">-- [</span> </span><span id="L-437"><a href="#L-437"><span class="linenos" data-line="437"></span></a><span class="c1">-- {</span> </span><span id="L-438"><a href="#L-438"><span class="linenos" data-line="438"></span></a><span class="c1">-- str = "%q1"</span> </span><span id="L-439"><a href="#L-439"><span class="linenos" data-line="439"></span></a><span class="c1">-- }</span> </span><span id="L-440"><a href="#L-440"><span class="linenos" data-line="440"></span></a><span class="c1">-- ]</span> </span><span id="L-441"><a href="#L-441"><span class="linenos" data-line="441"></span></a><span class="c1">-- }</span> </span><span id="L-442"><a href="#L-442"><span class="linenos" data-line="442"></span></a><span class="c1">-- ]</span> </span><span id="L-443"><a href="#L-443"><span class="linenos" data-line="443"></span></a><span class="c1">-- },</span> </span><span id="L-444"><a href="#L-444"><span class="linenos" data-line="444"></span></a><span class="c1">-- {</span> </span><span id="L-445"><a href="#L-445"><span class="linenos" data-line="445"></span></a><span class="c1">-- str = " C ",</span> </span><span id="L-446"><a href="#L-446"><span class="linenos" data-line="446"></span></a><span class="c1">-- child =</span> </span><span id="L-447"><a href="#L-447"><span class="linenos" data-line="447"></span></a><span class="c1">-- [</span> </span><span id="L-448"><a href="#L-448"><span class="linenos" data-line="448"></span></a><span class="c1">-- {</span> </span><span id="L-449"><a href="#L-449"><span class="linenos" data-line="449"></span></a><span class="c1">-- str = "%r"</span> </span><span id="L-450"><a href="#L-450"><span class="linenos" data-line="450"></span></a><span class="c1">-- }</span> </span><span id="L-451"><a href="#L-451"><span class="linenos" data-line="451"></span></a><span class="c1">-- ]</span> </span><span id="L-452"><a href="#L-452"><span class="linenos" data-line="452"></span></a><span class="c1">-- },</span> </span><span id="L-453"><a href="#L-453"><span class="linenos" data-line="453"></span></a><span class="c1">-- {</span> </span><span id="L-454"><a href="#L-454"><span class="linenos" data-line="454"></span></a><span class="c1">-- str = " D"</span> </span><span id="L-455"><a href="#L-455"><span class="linenos" data-line="455"></span></a><span class="c1">-- }</span> </span><span id="L-456"><a href="#L-456"><span class="linenos" data-line="456"></span></a><span class="c1">-- ]</span> </span><span id="L-457"><a href="#L-457"><span class="linenos" data-line="457"></span></a><span class="c1">--</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">parseFormat</span><span class="p">(</span><span class="n">str</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="n">chr</span><span class="p">,</span> <span class="n">esc</span><span class="p">,</span> <span class="n">param</span><span class="p">,</span> <span class="n">root</span><span class="p">,</span> <span class="n">cur</span><span class="p">,</span> <span class="n">prev</span><span class="p">,</span> <span class="n">new</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">params</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-461"><a href="#L-461"><span class="linenos" data-line="461"></span></a> </span><span id="L-462"><a href="#L-462"><span class="linenos" data-line="462"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">newObject</span><span class="p">(</span><span class="n">array</span><span class="p">)</span> </span><span id="L-463"><a href="#L-463"><span class="linenos" data-line="463"></span></a> <span class="kd">local</span> <span class="n">obj</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1">-- new object</span> </span><span id="L-464"><a href="#L-464"><span class="linenos" data-line="464"></span></a> <span class="n">obj</span><span class="p">.</span><span class="n">str</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-465"><a href="#L-465"><span class="linenos" data-line="465"></span></a> </span><span id="L-466"><a href="#L-466"><span class="linenos" data-line="466"></span></a> <span class="n">array</span><span class="p">[</span><span class="o">#</span><span class="n">array</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">obj</span> <span class="c1">-- array{object}</span> </span><span id="L-467"><a href="#L-467"><span class="linenos" data-line="467"></span></a> <span class="n">obj</span><span class="p">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">array</span> </span><span id="L-468"><a href="#L-468"><span class="linenos" data-line="468"></span></a> </span><span id="L-469"><a href="#L-469"><span class="linenos" data-line="469"></span></a> <span class="kr">return</span> <span class="n">obj</span> </span><span id="L-470"><a href="#L-470"><span class="linenos" data-line="470"></span></a> <span class="kr">end</span> </span><span id="L-471"><a href="#L-471"><span class="linenos" data-line="471"></span></a> </span><span id="L-472"><a href="#L-472"><span class="linenos" data-line="472"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">endParam</span><span class="p">()</span> </span><span id="L-473"><a href="#L-473"><span class="linenos" data-line="473"></span></a> <span class="kr">if</span> <span class="n">param</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-474"><a href="#L-474"><span class="linenos" data-line="474"></span></a> <span class="kr">if</span> <span class="n">cur</span><span class="p">.</span><span class="n">str</span> <span class="o">~=</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-475"><a href="#L-475"><span class="linenos" data-line="475"></span></a> <span class="n">cur</span><span class="p">.</span><span class="n">str</span> <span class="o">=</span> <span class="s2">"%"</span><span class="o">..</span><span class="n">cur</span><span class="p">.</span><span class="n">str</span> </span><span id="L-476"><a href="#L-476"><span class="linenos" data-line="476"></span></a> <span class="n">cur</span><span class="p">.</span><span class="n">param</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-477"><a href="#L-477"><span class="linenos" data-line="477"></span></a> <span class="n">params</span><span class="p">[</span><span class="n">cur</span><span class="p">.</span><span class="n">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-478"><a href="#L-478"><span class="linenos" data-line="478"></span></a> <span class="n">cur</span><span class="p">.</span><span class="n">parent</span><span class="p">.</span><span class="n">req</span><span class="p">[</span><span class="n">cur</span><span class="p">.</span><span class="n">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-479"><a href="#L-479"><span class="linenos" data-line="479"></span></a> <span class="n">prev</span> <span class="o">=</span> <span class="n">cur</span> </span><span id="L-480"><a href="#L-480"><span class="linenos" data-line="480"></span></a> <span class="n">cur</span> <span class="o">=</span> <span class="n">newObject</span><span class="p">(</span><span class="n">cur</span><span class="p">.</span><span class="n">parent</span><span class="p">)</span> </span><span id="L-481"><a href="#L-481"><span class="linenos" data-line="481"></span></a> <span class="kr">end</span> </span><span id="L-482"><a href="#L-482"><span class="linenos" data-line="482"></span></a> <span class="n">param</span> <span class="o">=</span> <span class="mi">0</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="kr">end</span> </span><span id="L-485"><a href="#L-485"><span class="linenos" data-line="485"></span></a> </span><span id="L-486"><a href="#L-486"><span class="linenos" data-line="486"></span></a> <span class="n">root</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1">-- array</span> </span><span id="L-487"><a href="#L-487"><span class="linenos" data-line="487"></span></a> <span class="n">root</span><span class="p">.</span><span class="n">req</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-488"><a href="#L-488"><span class="linenos" data-line="488"></span></a> <span class="n">cur</span> <span class="o">=</span> <span class="n">newObject</span><span class="p">(</span><span class="n">root</span><span class="p">)</span> </span><span id="L-489"><a href="#L-489"><span class="linenos" data-line="489"></span></a> <span class="n">prev</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-490"><a href="#L-490"><span class="linenos" data-line="490"></span></a> </span><span id="L-491"><a href="#L-491"><span class="linenos" data-line="491"></span></a> <span class="n">esc</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-492"><a href="#L-492"><span class="linenos" data-line="492"></span></a> <span class="n">param</span> <span class="o">=</span> <span class="mi">0</span> </span><span id="L-493"><a href="#L-493"><span class="linenos" data-line="493"></span></a> </span><span id="L-494"><a href="#L-494"><span class="linenos" data-line="494"></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">str</span> <span class="kr">do</span> </span><span id="L-495"><a href="#L-495"><span class="linenos" data-line="495"></span></a> <span class="n">chr</span> <span class="o">=</span> <span class="n">str</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="n">i</span><span class="p">)</span> </span><span id="L-496"><a href="#L-496"><span class="linenos" data-line="496"></span></a> </span><span id="L-497"><a href="#L-497"><span class="linenos" data-line="497"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">esc</span> <span class="kr">then</span> </span><span id="L-498"><a href="#L-498"><span class="linenos" data-line="498"></span></a> <span class="kr">if</span> <span class="n">chr</span> <span class="o">==</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">'</span> <span class="kr">then</span> </span><span id="L-499"><a href="#L-499"><span class="linenos" data-line="499"></span></a> <span class="n">endParam</span><span class="p">()</span> </span><span id="L-500"><a href="#L-500"><span class="linenos" data-line="500"></span></a> <span class="n">esc</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-501"><a href="#L-501"><span class="linenos" data-line="501"></span></a> <span class="kr">elseif</span> <span class="n">chr</span> <span class="o">==</span> <span class="s1">'%'</span> <span class="kr">then</span> </span><span id="L-502"><a href="#L-502"><span class="linenos" data-line="502"></span></a> <span class="n">endParam</span><span class="p">()</span> </span><span id="L-503"><a href="#L-503"><span class="linenos" data-line="503"></span></a> <span class="kr">if</span> <span class="n">cur</span><span class="p">.</span><span class="n">str</span> <span class="o">~=</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-504"><a href="#L-504"><span class="linenos" data-line="504"></span></a> <span class="n">cur</span> <span class="o">=</span> <span class="n">newObject</span><span class="p">(</span><span class="n">cur</span><span class="p">.</span><span class="n">parent</span><span class="p">)</span> </span><span id="L-505"><a href="#L-505"><span class="linenos" data-line="505"></span></a> <span class="kr">end</span> </span><span id="L-506"><a href="#L-506"><span class="linenos" data-line="506"></span></a> <span class="n">param</span> <span class="o">=</span> <span class="mi">2</span> </span><span id="L-507"><a href="#L-507"><span class="linenos" data-line="507"></span></a> <span class="kr">elseif</span> <span class="n">chr</span> <span class="o">==</span> <span class="s1">'['</span> <span class="kr">then</span> </span><span id="L-508"><a href="#L-508"><span class="linenos" data-line="508"></span></a> <span class="n">endParam</span><span class="p">()</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">prev</span> <span class="ow">and</span> <span class="n">cur</span><span class="p">.</span><span class="n">str</span> <span class="o">==</span> <span class="s2">""</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="nb">table.remove</span><span class="p">(</span><span class="n">cur</span><span class="p">.</span><span class="n">parent</span><span class="p">)</span> </span><span id="L-511"><a href="#L-511"><span class="linenos" data-line="511"></span></a> <span class="n">cur</span> <span class="o">=</span> <span class="n">prev</span> </span><span id="L-512"><a href="#L-512"><span class="linenos" data-line="512"></span></a> <span class="kr">end</span> </span><span id="L-513"><a href="#L-513"><span class="linenos" data-line="513"></span></a> <span class="n">cur</span><span class="p">.</span><span class="n">child</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1">-- new array</span> </span><span id="L-514"><a href="#L-514"><span class="linenos" data-line="514"></span></a> <span class="n">cur</span><span class="p">.</span><span class="n">child</span><span class="p">.</span><span class="n">req</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-515"><a href="#L-515"><span class="linenos" data-line="515"></span></a> <span class="n">cur</span><span class="p">.</span><span class="n">child</span><span class="p">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">cur</span> </span><span id="L-516"><a href="#L-516"><span class="linenos" data-line="516"></span></a> <span class="n">cur</span> <span class="o">=</span> <span class="n">newObject</span><span class="p">(</span><span class="n">cur</span><span class="p">.</span><span class="n">child</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">elseif</span> <span class="n">chr</span> <span class="o">==</span> <span class="s1">']'</span> <span class="kr">then</span> </span><span id="L-518"><a href="#L-518"><span class="linenos" data-line="518"></span></a> <span class="n">endParam</span><span class="p">()</span> </span><span id="L-519"><a href="#L-519"><span class="linenos" data-line="519"></span></a> <span class="kr">if</span> <span class="n">cur</span><span class="p">.</span><span class="n">parent</span><span class="p">.</span><span class="n">parent</span> <span class="kr">then</span> </span><span id="L-520"><a href="#L-520"><span class="linenos" data-line="520"></span></a> <span class="n">new</span> <span class="o">=</span> <span class="n">newObject</span><span class="p">(</span><span class="n">cur</span><span class="p">.</span><span class="n">parent</span><span class="p">.</span><span class="n">parent</span><span class="p">.</span><span class="n">parent</span><span class="p">)</span> </span><span id="L-521"><a href="#L-521"><span class="linenos" data-line="521"></span></a> <span class="kr">if</span> <span class="n">cur</span><span class="p">.</span><span class="n">str</span> <span class="o">==</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-522"><a href="#L-522"><span class="linenos" data-line="522"></span></a> <span class="nb">table.remove</span><span class="p">(</span><span class="n">cur</span><span class="p">.</span><span class="n">parent</span><span class="p">)</span> </span><span id="L-523"><a href="#L-523"><span class="linenos" data-line="523"></span></a> <span class="kr">end</span> </span><span id="L-524"><a href="#L-524"><span class="linenos" data-line="524"></span></a> <span class="n">cur</span> <span class="o">=</span> <span class="n">new</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">else</span> </span><span id="L-527"><a href="#L-527"><span class="linenos" data-line="527"></span></a> <span class="kr">if</span> <span class="n">param</span> <span class="o">></span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-528"><a href="#L-528"><span class="linenos" data-line="528"></span></a> <span class="n">param</span> <span class="o">=</span> <span class="n">param</span> <span class="o">-</span> <span class="mi">1</span> </span><span id="L-529"><a href="#L-529"><span class="linenos" data-line="529"></span></a> <span class="kr">elseif</span> <span class="n">param</span> <span class="o">==</span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-530"><a href="#L-530"><span class="linenos" data-line="530"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">chr</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">'%d'</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-531"><a href="#L-531"><span class="linenos" data-line="531"></span></a> <span class="n">endParam</span><span class="p">()</span> </span><span id="L-532"><a href="#L-532"><span class="linenos" data-line="532"></span></a> <span class="kr">end</span> </span><span id="L-533"><a href="#L-533"><span class="linenos" data-line="533"></span></a> <span class="kr">end</span> </span><span id="L-534"><a href="#L-534"><span class="linenos" data-line="534"></span></a> </span><span id="L-535"><a href="#L-535"><span class="linenos" data-line="535"></span></a> <span class="n">cur</span><span class="p">.</span><span class="n">str</span> <span class="o">=</span> <span class="n">cur</span><span class="p">.</span><span class="n">str</span> <span class="o">..</span> <span class="n">replaceSpecialChar</span><span class="p">(</span><span class="n">chr</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">end</span> </span><span id="L-537"><a href="#L-537"><span class="linenos" data-line="537"></span></a> <span class="kr">else</span> </span><span id="L-538"><a href="#L-538"><span class="linenos" data-line="538"></span></a> <span class="n">cur</span><span class="p">.</span><span class="n">str</span> <span class="o">=</span> <span class="n">cur</span><span class="p">.</span><span class="n">str</span> <span class="o">..</span> <span class="n">chr</span> </span><span id="L-539"><a href="#L-539"><span class="linenos" data-line="539"></span></a> <span class="n">esc</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-540"><a href="#L-540"><span class="linenos" data-line="540"></span></a> <span class="kr">end</span> </span><span id="L-541"><a href="#L-541"><span class="linenos" data-line="541"></span></a> </span><span id="L-542"><a href="#L-542"><span class="linenos" data-line="542"></span></a> <span class="n">prev</span> <span class="o">=</span> <span class="kc">nil</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><span id="L-545"><a href="#L-545"><span class="linenos" data-line="545"></span></a> <span class="n">endParam</span><span class="p">()</span> </span><span id="L-546"><a href="#L-546"><span class="linenos" data-line="546"></span></a> </span><span id="L-547"><a href="#L-547"><span class="linenos" data-line="547"></span></a> <span class="c1">-- make sure that at least one required parameter has been defined</span> </span><span id="L-548"><a href="#L-548"><span class="linenos" data-line="548"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="nb">next</span><span class="p">(</span><span class="n">root</span><span class="p">.</span><span class="n">req</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-549"><a href="#L-549"><span class="linenos" data-line="549"></span></a> <span class="n">throwError</span><span class="p">(</span><span class="s2">"missing-required-parameter"</span><span class="p">)</span> </span><span id="L-550"><a href="#L-550"><span class="linenos" data-line="550"></span></a> <span class="kr">end</span> </span><span id="L-551"><a href="#L-551"><span class="linenos" data-line="551"></span></a> </span><span id="L-552"><a href="#L-552"><span class="linenos" data-line="552"></span></a> <span class="c1">-- make sure that the separator parameter "%s" is not amongst the required parameters</span> </span><span id="L-553"><a href="#L-553"><span class="linenos" data-line="553"></span></a> <span class="kr">if</span> <span class="n">root</span><span class="p">.</span><span class="n">req</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="kr">then</span> </span><span id="L-554"><a href="#L-554"><span class="linenos" data-line="554"></span></a> <span class="n">throwError</span><span class="p">(</span><span class="s2">"extra-required-parameter"</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-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><span id="L-557"><a href="#L-557"><span class="linenos" data-line="557"></span></a> <span class="kr">return</span> <span class="n">root</span><span class="p">,</span> <span class="n">params</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><span id="L-560"><a href="#L-560"><span class="linenos" data-line="560"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">sortOnRank</span><span class="p">(</span><span class="n">claims</span><span class="p">)</span> </span><span id="L-561"><a href="#L-561"><span class="linenos" data-line="561"></span></a> <span class="kd">local</span> <span class="n">rankPos</span> </span><span id="L-562"><a href="#L-562"><span class="linenos" data-line="562"></span></a> <span class="kd">local</span> <span class="n">ranks</span> <span class="o">=</span> <span class="p">{{},</span> <span class="p">{},</span> <span class="p">{},</span> <span class="p">{}}</span> <span class="c1">-- preferred, normal, deprecated, (default)</span> </span><span id="L-563"><a href="#L-563"><span class="linenos" data-line="563"></span></a> <span class="kd">local</span> <span class="n">sorted</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-564"><a href="#L-564"><span class="linenos" data-line="564"></span></a> </span><span id="L-565"><a href="#L-565"><span class="linenos" data-line="565"></span></a> <span class="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">claims</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-566"><a href="#L-566"><span class="linenos" data-line="566"></span></a> <span class="n">rankPos</span> <span class="o">=</span> <span class="n">rankTable</span><span class="p">[</span><span class="n">v</span><span class="p">.</span><span class="n">rank</span><span class="p">]</span> <span class="ow">or</span> <span class="mi">4</span> </span><span id="L-567"><a href="#L-567"><span class="linenos" data-line="567"></span></a> <span class="n">ranks</span><span class="p">[</span><span class="n">rankPos</span><span class="p">][</span><span class="o">#</span><span class="n">ranks</span><span class="p">[</span><span class="n">rankPos</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> </span><span id="L-568"><a href="#L-568"><span class="linenos" data-line="568"></span></a> <span class="kr">end</span> </span><span id="L-569"><a href="#L-569"><span class="linenos" data-line="569"></span></a> </span><span id="L-570"><a href="#L-570"><span class="linenos" data-line="570"></span></a> <span class="n">sorted</span> <span class="o">=</span> <span class="n">ranks</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-571"><a href="#L-571"><span class="linenos" data-line="571"></span></a> <span class="n">sorted</span> <span class="o">=</span> <span class="n">mergeArrays</span><span class="p">(</span><span class="n">sorted</span><span class="p">,</span> <span class="n">ranks</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> </span><span id="L-572"><a href="#L-572"><span class="linenos" data-line="572"></span></a> <span class="n">sorted</span> <span class="o">=</span> <span class="n">mergeArrays</span><span class="p">(</span><span class="n">sorted</span><span class="p">,</span> <span class="n">ranks</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span> </span><span id="L-573"><a href="#L-573"><span class="linenos" data-line="573"></span></a> </span><span id="L-574"><a href="#L-574"><span class="linenos" data-line="574"></span></a> <span class="kr">return</span> <span class="n">sorted</span> </span><span id="L-575"><a href="#L-575"><span class="linenos" data-line="575"></span></a><span class="kr">end</span> </span><span id="L-576"><a href="#L-576"><span class="linenos" data-line="576"></span></a> </span><span id="L-577"><a href="#L-577"><span class="linenos" data-line="577"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">isValueInTable</span><span class="p">(</span><span class="n">searchedItem</span><span class="p">,</span> <span class="n">inputTable</span><span class="p">)</span> </span><span id="L-578"><a href="#L-578"><span class="linenos" data-line="578"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">item</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">inputTable</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-579"><a href="#L-579"><span class="linenos" data-line="579"></span></a> <span class="kr">if</span> <span class="n">item</span> <span class="o">==</span> <span class="n">searchedItem</span> <span class="kr">then</span> </span><span id="L-580"><a href="#L-580"><span class="linenos" data-line="580"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-581"><a href="#L-581"><span class="linenos" data-line="581"></span></a> <span class="kr">end</span> </span><span id="L-582"><a href="#L-582"><span class="linenos" data-line="582"></span></a> <span class="kr">end</span> </span><span id="L-583"><a href="#L-583"><span class="linenos" data-line="583"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-584"><a href="#L-584"><span class="linenos" data-line="584"></span></a><span class="kr">end</span> </span><span id="L-585"><a href="#L-585"><span class="linenos" data-line="585"></span></a> </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">Config</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-587"><a href="#L-587"><span class="linenos" data-line="587"></span></a> </span><span id="L-588"><a href="#L-588"><span class="linenos" data-line="588"></span></a><span class="c1">-- allows for recursive calls</span> </span><span id="L-589"><a href="#L-589"><span class="linenos" data-line="589"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">new</span><span class="p">()</span> </span><span id="L-590"><a href="#L-590"><span class="linenos" data-line="590"></span></a> <span class="kd">local</span> <span class="n">cfg</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-591"><a href="#L-591"><span class="linenos" data-line="591"></span></a> <span class="nb">setmetatable</span><span class="p">(</span><span class="n">cfg</span><span class="p">,</span> <span class="n">self</span><span class="p">)</span> </span><span id="L-592"><a href="#L-592"><span class="linenos" data-line="592"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">__index</span> <span class="o">=</span> <span class="n">self</span> </span><span id="L-593"><a href="#L-593"><span class="linenos" data-line="593"></span></a> </span><span id="L-594"><a href="#L-594"><span class="linenos" data-line="594"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">separators</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-595"><a href="#L-595"><span class="linenos" data-line="595"></span></a> <span class="c1">-- single value objects wrapped in arrays so that we can pass by reference</span> </span><span id="L-596"><a href="#L-596"><span class="linenos" data-line="596"></span></a> <span class="p">[</span><span class="s2">"sep"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="n">copyTable</span><span class="p">(</span><span class="n">defaultSeparators</span><span class="p">[</span><span class="s2">"sep"</span><span class="p">])},</span> </span><span id="L-597"><a href="#L-597"><span class="linenos" data-line="597"></span></a> <span class="p">[</span><span class="s2">"sep%s"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="n">copyTable</span><span class="p">(</span><span class="n">defaultSeparators</span><span class="p">[</span><span class="s2">"sep%s"</span><span class="p">])},</span> </span><span id="L-598"><a href="#L-598"><span class="linenos" data-line="598"></span></a> <span class="p">[</span><span class="s2">"sep%q"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="n">copyTable</span><span class="p">(</span><span class="n">defaultSeparators</span><span class="p">[</span><span class="s2">"sep%q"</span><span class="p">])},</span> </span><span id="L-599"><a href="#L-599"><span class="linenos" data-line="599"></span></a> <span class="p">[</span><span class="s2">"sep%r"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="n">copyTable</span><span class="p">(</span><span class="n">defaultSeparators</span><span class="p">[</span><span class="s2">"sep%r"</span><span class="p">])},</span> </span><span id="L-600"><a href="#L-600"><span class="linenos" data-line="600"></span></a> <span class="p">[</span><span class="s2">"punc"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="n">copyTable</span><span class="p">(</span><span class="n">defaultSeparators</span><span class="p">[</span><span class="s2">"punc"</span><span class="p">])}</span> </span><span id="L-601"><a href="#L-601"><span class="linenos" data-line="601"></span></a> <span class="p">}</span> </span><span id="L-602"><a href="#L-602"><span class="linenos" data-line="602"></span></a> </span><span id="L-603"><a href="#L-603"><span class="linenos" data-line="603"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-604"><a href="#L-604"><span class="linenos" data-line="604"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">entityID</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-605"><a href="#L-605"><span class="linenos" data-line="605"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyID</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-606"><a href="#L-606"><span class="linenos" data-line="606"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyValue</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-607"><a href="#L-607"><span class="linenos" data-line="607"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">qualifierIDs</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-608"><a href="#L-608"><span class="linenos" data-line="608"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">qualifierIDsAndValues</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-609"><a href="#L-609"><span class="linenos" data-line="609"></span></a> </span><span id="L-610"><a href="#L-610"><span class="linenos" data-line="610"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">bestRank</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-611"><a href="#L-611"><span class="linenos" data-line="611"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">ranks</span> <span class="o">=</span> <span class="p">{</span><span class="kc">true</span><span class="p">,</span> <span class="kc">true</span><span class="p">,</span> <span class="kc">false</span><span class="p">}</span> <span class="c1">-- preferred = true, normal = true, deprecated = false</span> </span><span id="L-612"><a href="#L-612"><span class="linenos" data-line="612"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">foundRank</span> <span class="o">=</span> <span class="o">#</span><span class="n">cfg</span><span class="p">.</span><span class="n">ranks</span> </span><span id="L-613"><a href="#L-613"><span class="linenos" data-line="613"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">flagBest</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-614"><a href="#L-614"><span class="linenos" data-line="614"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">flagRank</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-615"><a href="#L-615"><span class="linenos" data-line="615"></span></a> </span><span id="L-616"><a href="#L-616"><span class="linenos" data-line="616"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">periods</span> <span class="o">=</span> <span class="p">{</span><span class="kc">true</span><span class="p">,</span> <span class="kc">true</span><span class="p">,</span> <span class="kc">true</span><span class="p">}</span> <span class="c1">-- future = true, current = true, former = true</span> </span><span id="L-617"><a href="#L-617"><span class="linenos" data-line="617"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">flagPeriod</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-618"><a href="#L-618"><span class="linenos" data-line="618"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">atDate</span> <span class="o">=</span> <span class="p">{</span><span class="n">parseDate</span><span class="p">(</span><span class="nb">os.date</span><span class="p">(</span><span class="s1">'!%Y-%m-%d'</span><span class="p">))}</span> <span class="c1">-- today as {year, month, day}</span> </span><span id="L-619"><a href="#L-619"><span class="linenos" data-line="619"></span></a> </span><span id="L-620"><a href="#L-620"><span class="linenos" data-line="620"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">mdyDate</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-621"><a href="#L-621"><span class="linenos" data-line="621"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">singleClaim</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-622"><a href="#L-622"><span class="linenos" data-line="622"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">sourcedOnly</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-623"><a href="#L-623"><span class="linenos" data-line="623"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">editable</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-624"><a href="#L-624"><span class="linenos" data-line="624"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">editAtEnd</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-625"><a href="#L-625"><span class="linenos" data-line="625"></span></a> </span><span id="L-626"><a href="#L-626"><span class="linenos" data-line="626"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">inSitelinks</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-627"><a href="#L-627"><span class="linenos" data-line="627"></span></a> </span><span id="L-628"><a href="#L-628"><span class="linenos" data-line="628"></span></a> <span class="n">cfg</span><span class="p">.</span><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><span id="L-629"><a href="#L-629"><span class="linenos" data-line="629"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">langName</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">fetchLanguageName</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">langCode</span><span class="p">,</span> <span class="n">cfg</span><span class="p">.</span><span class="n">langCode</span><span class="p">)</span> </span><span id="L-630"><a href="#L-630"><span class="linenos" data-line="630"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">langObj</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">language</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">langCode</span><span class="p">)</span> </span><span id="L-631"><a href="#L-631"><span class="linenos" data-line="631"></span></a> </span><span id="L-632"><a href="#L-632"><span class="linenos" data-line="632"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">siteID</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">getGlobalSiteId</span><span class="p">()</span> </span><span id="L-633"><a href="#L-633"><span class="linenos" data-line="633"></span></a> </span><span id="L-634"><a href="#L-634"><span class="linenos" data-line="634"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-635"><a href="#L-635"><span class="linenos" data-line="635"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> <span class="o">=</span> <span class="mi">0</span> </span><span id="L-636"><a href="#L-636"><span class="linenos" data-line="636"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">curState</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-637"><a href="#L-637"><span class="linenos" data-line="637"></span></a> </span><span id="L-638"><a href="#L-638"><span class="linenos" data-line="638"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">prefetchedRefs</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-639"><a href="#L-639"><span class="linenos" data-line="639"></span></a> </span><span id="L-640"><a href="#L-640"><span class="linenos" data-line="640"></span></a> <span class="kr">return</span> <span class="n">cfg</span> </span><span id="L-641"><a href="#L-641"><span class="linenos" data-line="641"></span></a><span class="kr">end</span> </span><span id="L-642"><a href="#L-642"><span class="linenos" data-line="642"></span></a> </span><span id="L-643"><a href="#L-643"><span class="linenos" data-line="643"></span></a><span class="kd">local</span> <span class="n">State</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-644"><a href="#L-644"><span class="linenos" data-line="644"></span></a> </span><span id="L-645"><a href="#L-645"><span class="linenos" data-line="645"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">new</span><span class="p">(</span><span class="n">cfg</span><span class="p">,</span> <span class="nb">type</span><span class="p">)</span> </span><span id="L-646"><a href="#L-646"><span class="linenos" data-line="646"></span></a> <span class="kd">local</span> <span class="n">stt</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-647"><a href="#L-647"><span class="linenos" data-line="647"></span></a> <span class="nb">setmetatable</span><span class="p">(</span><span class="n">stt</span><span class="p">,</span> <span class="n">self</span><span class="p">)</span> </span><span id="L-648"><a href="#L-648"><span class="linenos" data-line="648"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">__index</span> <span class="o">=</span> <span class="n">self</span> </span><span id="L-649"><a href="#L-649"><span class="linenos" data-line="649"></span></a> </span><span id="L-650"><a href="#L-650"><span class="linenos" data-line="650"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">conf</span> <span class="o">=</span> <span class="n">cfg</span> </span><span id="L-651"><a href="#L-651"><span class="linenos" data-line="651"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">type</span> <span class="o">=</span> <span class="nb">type</span> </span><span id="L-652"><a href="#L-652"><span class="linenos" data-line="652"></span></a> </span><span id="L-653"><a href="#L-653"><span class="linenos" data-line="653"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">results</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-654"><a href="#L-654"><span class="linenos" data-line="654"></span></a> </span><span id="L-655"><a href="#L-655"><span class="linenos" data-line="655"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">parsedFormat</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-656"><a href="#L-656"><span class="linenos" data-line="656"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">separator</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-657"><a href="#L-657"><span class="linenos" data-line="657"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">movSeparator</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-658"><a href="#L-658"><span class="linenos" data-line="658"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">puncMark</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-659"><a href="#L-659"><span class="linenos" data-line="659"></span></a> </span><span id="L-660"><a href="#L-660"><span class="linenos" data-line="660"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">linked</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-661"><a href="#L-661"><span class="linenos" data-line="661"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">rawValue</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-662"><a href="#L-662"><span class="linenos" data-line="662"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">shortName</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-663"><a href="#L-663"><span class="linenos" data-line="663"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">anyLanguage</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-664"><a href="#L-664"><span class="linenos" data-line="664"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">unitOnly</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-665"><a href="#L-665"><span class="linenos" data-line="665"></span></a> <span class="n">stt</span><span class="p">.</span><span class="n">singleValue</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-666"><a href="#L-666"><span class="linenos" data-line="666"></span></a> </span><span id="L-667"><a href="#L-667"><span class="linenos" data-line="667"></span></a> <span class="kr">return</span> <span class="n">stt</span> </span><span id="L-668"><a href="#L-668"><span class="linenos" data-line="668"></span></a><span class="kr">end</span> </span><span id="L-669"><a href="#L-669"><span class="linenos" data-line="669"></span></a> </span><span id="L-670"><a href="#L-670"><span class="linenos" data-line="670"></span></a><span class="c1">-- if id == nil then item connected to current page is used</span> </span><span id="L-671"><a href="#L-671"><span class="linenos" data-line="671"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">getLabel</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">raw</span><span class="p">,</span> <span class="n">link</span><span class="p">,</span> <span class="n">short</span><span class="p">)</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">label</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-673"><a href="#L-673"><span class="linenos" data-line="673"></span></a> <span class="kd">local</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span> <span class="s2">""</span><span class="p">,</span> <span class="kc">nil</span> </span><span id="L-674"><a href="#L-674"><span class="linenos" data-line="674"></span></a> </span><span id="L-675"><a href="#L-675"><span class="linenos" data-line="675"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">id</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">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-677"><a href="#L-677"><span class="linenos" data-line="677"></span></a> </span><span id="L-678"><a href="#L-678"><span class="linenos" data-line="678"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">id</span> <span class="kr">then</span> </span><span id="L-679"><a href="#L-679"><span class="linenos" data-line="679"></span></a> <span class="kr">return</span> <span class="s2">""</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><span id="L-683"><a href="#L-683"><span class="linenos" data-line="683"></span></a> <span class="n">id</span> <span class="o">=</span> <span class="n">id</span><span class="p">:</span><span class="n">upper</span><span class="p">()</span> <span class="c1">-- just to be sure</span> </span><span id="L-684"><a href="#L-684"><span class="linenos" data-line="684"></span></a> </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">raw</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="c1">-- check if given id actually exists</span> </span><span id="L-687"><a href="#L-687"><span class="linenos" data-line="687"></span></a> <span class="kr">if</span> <span class="n">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="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span><span class="p">.</span><span class="n">entityExists</span><span class="p">(</span><span class="n">id</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-688"><a href="#L-688"><span class="linenos" data-line="688"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">id</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><span id="L-691"><a href="#L-691"><span class="linenos" data-line="691"></span></a> <span class="n">prefix</span><span class="p">,</span> <span class="n">title</span> <span class="o">=</span> <span class="s2">"d:Special:EntityPage/"</span><span class="p">,</span> <span class="n">label</span> <span class="c1">-- may be nil</span> </span><span id="L-692"><a href="#L-692"><span class="linenos" data-line="692"></span></a> <span class="kr">else</span> </span><span id="L-693"><a href="#L-693"><span class="linenos" data-line="693"></span></a> <span class="c1">-- try short name first if requested</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">short</span> <span class="kr">then</span> </span><span id="L-695"><a href="#L-695"><span class="linenos" data-line="695"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">_property</span><span class="p">{</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">shortName</span><span class="p">,</span> <span class="p">[</span><span class="n">p</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">eid</span><span class="p">]</span> <span class="o">=</span> <span class="n">id</span><span class="p">}</span> <span class="c1">-- get short name</span> </span><span id="L-696"><a href="#L-696"><span class="linenos" data-line="696"></span></a> </span><span id="L-697"><a href="#L-697"><span class="linenos" data-line="697"></span></a> <span class="kr">if</span> <span class="n">label</span> <span class="o">==</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-698"><a href="#L-698"><span class="linenos" data-line="698"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-699"><a href="#L-699"><span class="linenos" data-line="699"></span></a> <span class="kr">end</span> </span><span id="L-700"><a href="#L-700"><span class="linenos" data-line="700"></span></a> <span class="kr">end</span> </span><span id="L-701"><a href="#L-701"><span class="linenos" data-line="701"></span></a> </span><span id="L-702"><a href="#L-702"><span class="linenos" data-line="702"></span></a> <span class="c1">-- get label</span> </span><span id="L-703"><a href="#L-703"><span class="linenos" data-line="703"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">label</span> <span class="kr">then</span> </span><span id="L-704"><a href="#L-704"><span class="linenos" data-line="704"></span></a> <span class="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">getLabel</span><span class="p">(</span><span class="n">id</span><span class="p">)</span> </span><span id="L-705"><a href="#L-705"><span class="linenos" data-line="705"></span></a> <span class="kr">end</span> </span><span id="L-706"><a href="#L-706"><span class="linenos" data-line="706"></span></a> <span class="kr">end</span> </span><span id="L-707"><a href="#L-707"><span class="linenos" data-line="707"></span></a> </span><span id="L-708"><a href="#L-708"><span class="linenos" data-line="708"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">label</span> <span class="kr">then</span> </span><span id="L-709"><a href="#L-709"><span class="linenos" data-line="709"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-710"><a href="#L-710"><span class="linenos" data-line="710"></span></a> <span class="kr">elseif</span> <span class="n">link</span> <span class="kr">then</span> </span><span id="L-711"><a href="#L-711"><span class="linenos" data-line="711"></span></a> <span class="c1">-- build a link if requested</span> </span><span id="L-712"><a href="#L-712"><span class="linenos" data-line="712"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">title</span> <span class="kr">then</span> </span><span id="L-713"><a href="#L-713"><span class="linenos" data-line="713"></span></a> <span class="kr">if</span> <span class="n">id</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"Q"</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">title</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><span id="L-715"><a href="#L-715"><span class="linenos" data-line="715"></span></a> <span class="kr">elseif</span> <span class="n">id</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"P"</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="c1">-- properties have no sitelink, link to Wikidata instead</span> </span><span id="L-717"><a href="#L-717"><span class="linenos" data-line="717"></span></a> <span class="n">prefix</span><span class="p">,</span> <span class="n">title</span> <span class="o">=</span> <span class="s2">"d:Special:EntityPage/"</span><span class="p">,</span> <span class="n">id</span> </span><span id="L-718"><a href="#L-718"><span class="linenos" data-line="718"></span></a> <span class="kr">end</span> </span><span id="L-719"><a href="#L-719"><span class="linenos" data-line="719"></span></a> <span class="kr">end</span> </span><span id="L-720"><a href="#L-720"><span class="linenos" data-line="720"></span></a> </span><span id="L-721"><a href="#L-721"><span class="linenos" data-line="721"></span></a> <span class="n">label</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">nowiki</span><span class="p">(</span><span class="n">label</span><span class="p">)</span> <span class="c1">-- escape raw label text so it cannot be wikitext markup</span> </span><span id="L-722"><a href="#L-722"><span class="linenos" data-line="722"></span></a> <span class="kr">if</span> <span class="n">title</span> <span class="kr">then</span> </span><span id="L-723"><a href="#L-723"><span class="linenos" data-line="723"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">buildWikilink</span><span class="p">(</span><span class="n">prefix</span> <span class="o">..</span> <span class="n">title</span><span class="p">,</span> <span class="n">label</span><span class="p">)</span> </span><span id="L-724"><a href="#L-724"><span class="linenos" data-line="724"></span></a> <span class="kr">end</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><span id="L-727"><a href="#L-727"><span class="linenos" data-line="727"></span></a> <span class="kr">return</span> <span class="n">label</span> </span><span id="L-728"><a href="#L-728"><span class="linenos" data-line="728"></span></a><span class="kr">end</span> </span><span id="L-729"><a href="#L-729"><span class="linenos" data-line="729"></span></a> </span><span id="L-730"><a href="#L-730"><span class="linenos" data-line="730"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">getEditIcon</span><span class="p">()</span> </span><span id="L-731"><a href="#L-731"><span class="linenos" data-line="731"></span></a> <span class="kd">local</span> <span class="n">value</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-732"><a href="#L-732"><span class="linenos" data-line="732"></span></a> <span class="kd">local</span> <span class="n">prefix</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-733"><a href="#L-733"><span class="linenos" data-line="733"></span></a> <span class="kd">local</span> <span class="n">front</span> <span class="o">=</span> <span class="s2">"&nbsp;"</span> </span><span id="L-734"><a href="#L-734"><span class="linenos" data-line="734"></span></a> <span class="kd">local</span> <span class="n">back</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-735"><a href="#L-735"><span class="linenos" data-line="735"></span></a> </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">self</span><span class="p">.</span><span class="n">entityID</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"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="n">prefix</span> <span class="o">=</span> <span class="s2">"Property:"</span> </span><span id="L-738"><a href="#L-738"><span class="linenos" data-line="738"></span></a> <span class="kr">end</span> </span><span id="L-739"><a href="#L-739"><span class="linenos" data-line="739"></span></a> </span><span id="L-740"><a href="#L-740"><span class="linenos" data-line="740"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">editAtEnd</span> <span class="kr">then</span> </span><span id="L-741"><a href="#L-741"><span class="linenos" data-line="741"></span></a> <span class="n">front</span> <span class="o">=</span> <span class="s1">'<span style="float:'</span> </span><span id="L-742"><a href="#L-742"><span class="linenos" data-line="742"></span></a> </span><span id="L-743"><a href="#L-743"><span class="linenos" data-line="743"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">langObj</span><span class="p">:</span><span class="n">isRTL</span><span class="p">()</span> <span class="kr">then</span> </span><span id="L-744"><a href="#L-744"><span class="linenos" data-line="744"></span></a> <span class="n">front</span> <span class="o">=</span> <span class="n">front</span> <span class="o">..</span> <span class="s1">'left'</span> </span><span id="L-745"><a href="#L-745"><span class="linenos" data-line="745"></span></a> <span class="kr">else</span> </span><span id="L-746"><a href="#L-746"><span class="linenos" data-line="746"></span></a> <span class="n">front</span> <span class="o">=</span> <span class="n">front</span> <span class="o">..</span> <span class="s1">'right'</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="n">front</span> <span class="o">=</span> <span class="n">front</span> <span class="o">..</span> <span class="s1">'">'</span> </span><span id="L-750"><a href="#L-750"><span class="linenos" data-line="750"></span></a> <span class="n">back</span> <span class="o">=</span> <span class="s1">'</span>'</span> </span><span id="L-751"><a href="#L-751"><span class="linenos" data-line="751"></span></a> <span class="kr">end</span> </span><span id="L-752"><a href="#L-752"><span class="linenos" data-line="752"></span></a> </span><span id="L-753"><a href="#L-753"><span class="linenos" data-line="753"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="s2">"[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt="</span> <span class="o">..</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'info'</span><span class="p">][</span><span class="s1">'edit-on-wikidata'</span><span class="p">]</span> <span class="o">..</span> <span class="s2">"|link=https://www.wikidata.org/wiki/"</span> <span class="o">..</span> <span class="n">prefix</span> <span class="o">..</span> <span class="n">self</span><span class="p">.</span><span class="n">entityID</span> <span class="o">..</span> <span class="s2">"?uselang="</span> <span class="o">..</span> <span class="n">self</span><span class="p">.</span><span class="n">langCode</span> </span><span id="L-754"><a href="#L-754"><span class="linenos" data-line="754"></span></a> </span><span id="L-755"><a href="#L-755"><span class="linenos" data-line="755"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">propertyID</span> <span class="kr">then</span> </span><span id="L-756"><a href="#L-756"><span class="linenos" data-line="756"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span> <span class="o">..</span> <span class="s2">"#"</span> <span class="o">..</span> <span class="n">self</span><span class="p">.</span><span class="n">propertyID</span> </span><span id="L-757"><a href="#L-757"><span class="linenos" data-line="757"></span></a> <span class="kr">elseif</span> <span class="n">self</span><span class="p">.</span><span class="n">inSitelinks</span> <span class="kr">then</span> </span><span id="L-758"><a href="#L-758"><span class="linenos" data-line="758"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span> <span class="o">..</span> <span class="s2">"#sitelinks-wikipedia"</span> </span><span id="L-759"><a href="#L-759"><span class="linenos" data-line="759"></span></a> <span class="kr">end</span> </span><span id="L-760"><a href="#L-760"><span class="linenos" data-line="760"></span></a> </span><span id="L-761"><a href="#L-761"><span class="linenos" data-line="761"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span> <span class="o">..</span> <span class="s2">"|"</span> <span class="o">..</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'info'</span><span class="p">][</span><span class="s1">'edit-on-wikidata'</span><span class="p">]</span> <span class="o">..</span> <span class="s2">"]]"</span> </span><span id="L-762"><a href="#L-762"><span class="linenos" data-line="762"></span></a> </span><span id="L-763"><a href="#L-763"><span class="linenos" data-line="763"></span></a> <span class="kr">return</span> <span class="n">front</span> <span class="o">..</span> <span class="n">value</span> <span class="o">..</span> <span class="n">back</span> </span><span id="L-764"><a href="#L-764"><span class="linenos" data-line="764"></span></a><span class="kr">end</span> </span><span id="L-765"><a href="#L-765"><span class="linenos" data-line="765"></span></a> </span><span id="L-766"><a href="#L-766"><span class="linenos" data-line="766"></span></a><span class="c1">-- used to create the final output string when it's all done, so that for references the</span> </span><span id="L-767"><a href="#L-767"><span class="linenos" data-line="767"></span></a><span class="c1">-- function extensionTag("ref", ...) is only called when they really ended up in the final output</span> </span><span id="L-768"><a href="#L-768"><span class="linenos" data-line="768"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">concatValues</span><span class="p">(</span><span class="n">valuesArray</span><span class="p">)</span> </span><span id="L-769"><a href="#L-769"><span class="linenos" data-line="769"></span></a> <span class="kd">local</span> <span class="n">outString</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-770"><a href="#L-770"><span class="linenos" data-line="770"></span></a> <span class="kd">local</span> <span class="n">j</span><span class="p">,</span> <span class="n">skip</span> </span><span id="L-771"><a href="#L-771"><span class="linenos" data-line="771"></span></a> </span><span id="L-772"><a href="#L-772"><span class="linenos" data-line="772"></span></a> <span class="kr">for</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="o">#</span><span class="n">valuesArray</span> <span class="kr">do</span> </span><span id="L-773"><a href="#L-773"><span class="linenos" data-line="773"></span></a> <span class="c1">-- check if this is a reference</span> </span><span id="L-774"><a href="#L-774"><span class="linenos" data-line="774"></span></a> <span class="kr">if</span> <span class="n">valuesArray</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">refHash</span> <span class="kr">then</span> </span><span id="L-775"><a href="#L-775"><span class="linenos" data-line="775"></span></a> <span class="n">j</span> <span class="o">=</span> <span class="n">i</span> <span class="o">-</span> <span class="mi">1</span> </span><span id="L-776"><a href="#L-776"><span class="linenos" data-line="776"></span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-777"><a href="#L-777"><span class="linenos" data-line="777"></span></a> </span><span id="L-778"><a href="#L-778"><span class="linenos" data-line="778"></span></a> <span class="c1">-- skip this reference if it is part of a continuous row of references that already contains the exact same reference</span> </span><span id="L-779"><a href="#L-779"><span class="linenos" data-line="779"></span></a> <span class="kr">while</span> <span class="n">valuesArray</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="ow">and</span> <span class="n">valuesArray</span><span class="p">[</span><span class="n">j</span><span class="p">].</span><span class="n">refHash</span> <span class="kr">do</span> </span><span id="L-780"><a href="#L-780"><span class="linenos" data-line="780"></span></a> <span class="kr">if</span> <span class="n">valuesArray</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">refHash</span> <span class="o">==</span> <span class="n">valuesArray</span><span class="p">[</span><span class="n">j</span><span class="p">].</span><span class="n">refHash</span> <span class="kr">then</span> </span><span id="L-781"><a href="#L-781"><span class="linenos" data-line="781"></span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-782"><a href="#L-782"><span class="linenos" data-line="782"></span></a> <span class="kr">break</span> </span><span id="L-783"><a href="#L-783"><span class="linenos" data-line="783"></span></a> <span class="kr">end</span> </span><span id="L-784"><a href="#L-784"><span class="linenos" data-line="784"></span></a> <span class="n">j</span> <span class="o">=</span> <span class="n">j</span> <span class="o">-</span> <span class="mi">1</span> </span><span id="L-785"><a href="#L-785"><span class="linenos" data-line="785"></span></a> <span class="kr">end</span> </span><span id="L-786"><a href="#L-786"><span class="linenos" data-line="786"></span></a> </span><span id="L-787"><a href="#L-787"><span class="linenos" data-line="787"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">skip</span> <span class="kr">then</span> </span><span id="L-788"><a href="#L-788"><span class="linenos" data-line="788"></span></a> <span class="c1">-- add <ref> tag with the reference's hash as its name (to deduplicate references)</span> </span><span id="L-789"><a href="#L-789"><span class="linenos" data-line="789"></span></a> <span class="n">outString</span> <span class="o">=</span> <span class="n">outString</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">valuesArray</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="n">name</span> <span class="o">=</span> <span class="n">valuesArray</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">refHash</span><span class="p">})</span> </span><span id="L-790"><a href="#L-790"><span class="linenos" data-line="790"></span></a> <span class="kr">end</span> </span><span id="L-791"><a href="#L-791"><span class="linenos" data-line="791"></span></a> <span class="kr">else</span> </span><span id="L-792"><a href="#L-792"><span class="linenos" data-line="792"></span></a> <span class="n">outString</span> <span class="o">=</span> <span class="n">outString</span> <span class="o">..</span> <span class="n">valuesArray</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">1</span><span class="p">]</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 class="kr">end</span> </span><span id="L-795"><a href="#L-795"><span class="linenos" data-line="795"></span></a> </span><span id="L-796"><a href="#L-796"><span class="linenos" data-line="796"></span></a> <span class="kr">return</span> <span class="n">outString</span> </span><span id="L-797"><a href="#L-797"><span class="linenos" data-line="797"></span></a><span class="kr">end</span> </span><span id="L-798"><a href="#L-798"><span class="linenos" data-line="798"></span></a> </span><span id="L-799"><a href="#L-799"><span class="linenos" data-line="799"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">convertUnit</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">raw</span><span class="p">,</span> <span class="n">link</span><span class="p">,</span> <span class="n">short</span><span class="p">,</span> <span class="n">unitOnly</span><span class="p">)</span> </span><span id="L-800"><a href="#L-800"><span class="linenos" data-line="800"></span></a> <span class="kd">local</span> <span class="n">space</span> <span class="o">=</span> <span class="s2">" "</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">label</span> <span class="o">=</span> <span class="s2">""</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">itemID</span> </span><span id="L-803"><a href="#L-803"><span class="linenos" data-line="803"></span></a> </span><span id="L-804"><a href="#L-804"><span class="linenos" data-line="804"></span></a> <span class="kr">if</span> <span class="n">unit</span> <span class="o">==</span> <span class="s2">""</span> <span class="ow">or</span> <span class="n">unit</span> <span class="o">==</span> <span class="s2">"1"</span> <span class="kr">then</span> </span><span id="L-805"><a href="#L-805"><span class="linenos" data-line="805"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-806"><a href="#L-806"><span class="linenos" data-line="806"></span></a> <span class="kr">end</span> </span><span id="L-807"><a href="#L-807"><span class="linenos" data-line="807"></span></a> </span><span id="L-808"><a href="#L-808"><span class="linenos" data-line="808"></span></a> <span class="kr">if</span> <span class="n">unitOnly</span> <span class="kr">then</span> </span><span id="L-809"><a href="#L-809"><span class="linenos" data-line="809"></span></a> <span class="n">space</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-810"><a href="#L-810"><span class="linenos" data-line="810"></span></a> <span class="kr">end</span> </span><span id="L-811"><a href="#L-811"><span class="linenos" data-line="811"></span></a> </span><span id="L-812"><a href="#L-812"><span class="linenos" data-line="812"></span></a> <span class="n">itemID</span> <span class="o">=</span> <span class="n">parseWikidataURL</span><span class="p">(</span><span class="n">unit</span><span class="p">)</span> </span><span id="L-813"><a href="#L-813"><span class="linenos" data-line="813"></span></a> </span><span id="L-814"><a href="#L-814"><span class="linenos" data-line="814"></span></a> <span class="kr">if</span> <span class="n">itemID</span> <span class="kr">then</span> </span><span id="L-815"><a href="#L-815"><span class="linenos" data-line="815"></span></a> <span class="kr">if</span> <span class="n">itemID</span> <span class="o">==</span> <span class="n">aliasesQ</span><span class="p">.</span><span class="n">percentage</span> <span class="kr">then</span> </span><span id="L-816"><a href="#L-816"><span class="linenos" data-line="816"></span></a> <span class="kr">return</span> <span class="s2">"%"</span> </span><span id="L-817"><a href="#L-817"><span class="linenos" data-line="817"></span></a> <span class="kr">else</span> </span><span id="L-818"><a href="#L-818"><span class="linenos" data-line="818"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">self</span><span class="p">:</span><span class="n">getLabel</span><span class="p">(</span><span class="n">itemID</span><span class="p">,</span> <span class="n">raw</span><span class="p">,</span> <span class="n">link</span><span class="p">,</span> <span class="n">short</span><span class="p">)</span> </span><span id="L-819"><a href="#L-819"><span class="linenos" data-line="819"></span></a> </span><span id="L-820"><a href="#L-820"><span class="linenos" data-line="820"></span></a> <span class="kr">if</span> <span class="n">label</span> <span class="o">~=</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-821"><a href="#L-821"><span class="linenos" data-line="821"></span></a> <span class="kr">return</span> <span class="n">space</span> <span class="o">..</span> <span class="n">label</span> </span><span id="L-822"><a href="#L-822"><span class="linenos" data-line="822"></span></a> <span class="kr">end</span> </span><span id="L-823"><a href="#L-823"><span class="linenos" data-line="823"></span></a> <span class="kr">end</span> </span><span id="L-824"><a href="#L-824"><span class="linenos" data-line="824"></span></a> <span class="kr">end</span> </span><span id="L-825"><a href="#L-825"><span class="linenos" data-line="825"></span></a> </span><span id="L-826"><a href="#L-826"><span class="linenos" data-line="826"></span></a> <span class="kr">return</span> <span class="s2">""</span> </span><span id="L-827"><a href="#L-827"><span class="linenos" data-line="827"></span></a><span class="kr">end</span> </span><span id="L-828"><a href="#L-828"><span class="linenos" data-line="828"></span></a> </span><span id="L-829"><a href="#L-829"><span class="linenos" data-line="829"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">getValue</span><span class="p">(</span><span class="n">snak</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">return</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">:</span><span class="n">getValue</span><span class="p">(</span><span class="n">snak</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">rawValue</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">linked</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">shortName</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">anyLanguage</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">unitOnly</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">type</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">2</span><span class="p">))</span> </span><span id="L-831"><a href="#L-831"><span class="linenos" data-line="831"></span></a><span class="kr">end</span> </span><span id="L-832"><a href="#L-832"><span class="linenos" data-line="832"></span></a> </span><span id="L-833"><a href="#L-833"><span class="linenos" data-line="833"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">getValue</span><span class="p">(</span><span class="n">snak</span><span class="p">,</span> <span class="n">raw</span><span class="p">,</span> <span class="n">link</span><span class="p">,</span> <span class="n">short</span><span class="p">,</span> <span class="n">anyLang</span><span class="p">,</span> <span class="n">unitOnly</span><span class="p">,</span> <span class="n">noSpecial</span><span class="p">,</span> <span class="nb">type</span><span class="p">)</span> </span><span id="L-834"><a href="#L-834"><span class="linenos" data-line="834"></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><span id="L-835"><a href="#L-835"><span class="linenos" data-line="835"></span></a> <span class="kd">local</span> <span class="n">datatype</span> <span class="o">=</span> <span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="nb">type</span> </span><span id="L-836"><a href="#L-836"><span class="linenos" data-line="836"></span></a> <span class="kd">local</span> <span class="n">subtype</span> <span class="o">=</span> <span class="n">snak</span><span class="p">.</span><span class="n">datatype</span> </span><span id="L-837"><a href="#L-837"><span class="linenos" data-line="837"></span></a> <span class="kd">local</span> <span class="n">datavalue</span> <span class="o">=</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><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">datatype</span> <span class="o">==</span> <span class="s1">'string'</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="kr">if</span> <span class="n">subtype</span> <span class="o">==</span> <span class="s1">'url'</span> <span class="ow">and</span> <span class="n">link</span> <span class="kr">then</span> </span><span id="L-841"><a href="#L-841"><span class="linenos" data-line="841"></span></a> <span class="c1">-- create link explicitly</span> </span><span id="L-842"><a href="#L-842"><span class="linenos" data-line="842"></span></a> <span class="kr">if</span> <span class="n">raw</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="c1">-- will render as a linked number like [1]</span> </span><span id="L-844"><a href="#L-844"><span class="linenos" data-line="844"></span></a> <span class="kr">return</span> <span class="s2">"["</span> <span class="o">..</span> <span class="n">datavalue</span> <span class="o">..</span> <span class="s2">"]"</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="kr">return</span> <span class="s2">"["</span> <span class="o">..</span> <span class="n">datavalue</span> <span class="o">..</span> <span class="s2">" "</span> <span class="o">..</span> <span class="n">datavalue</span> <span class="o">..</span> <span class="s2">"]"</span> </span><span id="L-847"><a href="#L-847"><span class="linenos" data-line="847"></span></a> <span class="kr">end</span> </span><span id="L-848"><a href="#L-848"><span class="linenos" data-line="848"></span></a> <span class="kr">elseif</span> <span class="n">subtype</span> <span class="o">==</span> <span class="s1">'commonsMedia'</span> <span class="kr">then</span> </span><span id="L-849"><a href="#L-849"><span class="linenos" data-line="849"></span></a> <span class="kr">if</span> <span class="n">link</span> <span class="kr">then</span> </span><span id="L-850"><a href="#L-850"><span class="linenos" data-line="850"></span></a> <span class="kr">return</span> <span class="n">buildWikilink</span><span class="p">(</span><span class="s2">"c:File:"</span> <span class="o">..</span> <span class="n">datavalue</span><span class="p">,</span> <span class="n">datavalue</span><span class="p">)</span> </span><span id="L-851"><a href="#L-851"><span class="linenos" data-line="851"></span></a> <span class="kr">elseif</span> <span class="ow">not</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-852"><a href="#L-852"><span class="linenos" data-line="852"></span></a> <span class="kr">return</span> <span class="s2">"[[File:"</span> <span class="o">..</span> <span class="n">datavalue</span> <span class="o">..</span> <span class="s2">"]]"</span> </span><span id="L-853"><a href="#L-853"><span class="linenos" data-line="853"></span></a> <span class="kr">else</span> </span><span id="L-854"><a href="#L-854"><span class="linenos" data-line="854"></span></a> <span class="kr">return</span> <span class="n">datavalue</span> </span><span id="L-855"><a href="#L-855"><span class="linenos" data-line="855"></span></a> <span class="kr">end</span> </span><span id="L-856"><a href="#L-856"><span class="linenos" data-line="856"></span></a> <span class="kr">elseif</span> <span class="n">subtype</span> <span class="o">==</span> <span class="s1">'geo-shape'</span> <span class="ow">and</span> <span class="n">link</span> <span class="kr">then</span> </span><span id="L-857"><a href="#L-857"><span class="linenos" data-line="857"></span></a> <span class="kr">return</span> <span class="n">buildWikilink</span><span class="p">(</span><span class="s2">"c:"</span> <span class="o">..</span> <span class="n">datavalue</span><span class="p">,</span> <span class="n">datavalue</span><span class="p">)</span> </span><span id="L-858"><a href="#L-858"><span class="linenos" data-line="858"></span></a> <span class="kr">elseif</span> <span class="n">subtype</span> <span class="o">==</span> <span class="s1">'math'</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-859"><a href="#L-859"><span class="linenos" data-line="859"></span></a> <span class="kd">local</span> <span class="n">attribute</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-860"><a href="#L-860"><span class="linenos" data-line="860"></span></a> </span><span id="L-861"><a href="#L-861"><span class="linenos" data-line="861"></span></a> <span class="kr">if</span> <span class="p">(</span><span class="nb">type</span> <span class="o">==</span> <span class="n">parameters</span><span class="p">.</span><span class="n">property</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">type</span> <span class="o">==</span> <span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span> <span class="ow">and</span> <span class="n">self</span><span class="p">.</span><span class="n">propertyID</span> <span class="o">==</span> <span class="n">aliasesP</span><span class="p">.</span><span class="n">hasPart</span><span class="p">))</span> <span class="ow">and</span> <span class="n">snak</span><span class="p">.</span><span class="n">property</span> <span class="o">==</span> <span class="n">aliasesP</span><span class="p">.</span><span class="n">definingFormula</span> <span class="kr">then</span> </span><span id="L-862"><a href="#L-862"><span class="linenos" data-line="862"></span></a> <span class="n">attribute</span> <span class="o">=</span> <span class="p">{</span><span class="n">qid</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">entityID</span><span class="p">}</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><span id="L-865"><a href="#L-865"><span class="linenos" data-line="865"></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="s2">"math"</span><span class="p">,</span> <span class="n">datavalue</span><span class="p">,</span> <span class="n">attribute</span><span class="p">)</span> </span><span id="L-866"><a href="#L-866"><span class="linenos" data-line="866"></span></a> <span class="kr">elseif</span> <span class="n">subtype</span> <span class="o">==</span> <span class="s1">'external-id'</span> <span class="ow">and</span> <span class="n">link</span> <span class="kr">then</span> </span><span id="L-867"><a href="#L-867"><span class="linenos" data-line="867"></span></a> <span class="kd">local</span> <span class="n">url</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">_property</span><span class="p">{</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">formatterURL</span><span class="p">,</span> <span class="p">[</span><span class="n">p</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">eid</span><span class="p">]</span> <span class="o">=</span> <span class="n">snak</span><span class="p">.</span><span class="n">property</span><span class="p">}</span> <span class="c1">-- get formatter URL</span> </span><span id="L-868"><a href="#L-868"><span class="linenos" data-line="868"></span></a> </span><span id="L-869"><a href="#L-869"><span class="linenos" data-line="869"></span></a> <span class="kr">if</span> <span class="n">url</span> <span class="o">~=</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-870"><a href="#L-870"><span class="linenos" data-line="870"></span></a> <span class="n">url</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">url</span><span class="p">,</span> <span class="s2">"$1"</span><span class="p">,</span> <span class="n">datavalue</span><span class="p">)</span> </span><span id="L-871"><a href="#L-871"><span class="linenos" data-line="871"></span></a> <span class="kr">return</span> <span class="s2">"["</span> <span class="o">..</span> <span class="n">url</span> <span class="o">..</span> <span class="s2">" "</span> <span class="o">..</span> <span class="n">datavalue</span> <span class="o">..</span> <span class="s2">"]"</span> </span><span id="L-872"><a href="#L-872"><span class="linenos" data-line="872"></span></a> <span class="kr">else</span> </span><span id="L-873"><a href="#L-873"><span class="linenos" data-line="873"></span></a> <span class="kr">return</span> <span class="n">datavalue</span> </span><span id="L-874"><a href="#L-874"><span class="linenos" data-line="874"></span></a> <span class="kr">end</span> </span><span id="L-875"><a href="#L-875"><span class="linenos" data-line="875"></span></a> <span class="kr">else</span> </span><span id="L-876"><a href="#L-876"><span class="linenos" data-line="876"></span></a> <span class="kr">return</span> <span class="n">datavalue</span> </span><span id="L-877"><a href="#L-877"><span class="linenos" data-line="877"></span></a> <span class="kr">end</span> </span><span id="L-878"><a href="#L-878"><span class="linenos" data-line="878"></span></a> <span class="kr">elseif</span> <span class="n">datatype</span> <span class="o">==</span> <span class="s1">'monolingualtext'</span> <span class="kr">then</span> </span><span id="L-879"><a href="#L-879"><span class="linenos" data-line="879"></span></a> <span class="kr">if</span> <span class="n">anyLang</span> <span class="ow">or</span> <span class="n">datavalue</span><span class="p">[</span><span class="s1">'language'</span><span class="p">]</span> <span class="o">==</span> <span class="n">self</span><span class="p">.</span><span class="n">langCode</span> <span class="kr">then</span> </span><span id="L-880"><a href="#L-880"><span class="linenos" data-line="880"></span></a> <span class="kr">return</span> <span class="n">datavalue</span><span class="p">[</span><span class="s1">'text'</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">else</span> </span><span id="L-882"><a href="#L-882"><span class="linenos" data-line="882"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-883"><a href="#L-883"><span class="linenos" data-line="883"></span></a> <span class="kr">end</span> </span><span id="L-884"><a href="#L-884"><span class="linenos" data-line="884"></span></a> <span class="kr">elseif</span> <span class="n">datatype</span> <span class="o">==</span> <span class="s1">'quantity'</span> <span class="kr">then</span> </span><span id="L-885"><a href="#L-885"><span class="linenos" data-line="885"></span></a> <span class="kd">local</span> <span class="n">value</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-886"><a href="#L-886"><span class="linenos" data-line="886"></span></a> <span class="kd">local</span> <span class="n">unit</span> </span><span id="L-887"><a href="#L-887"><span class="linenos" data-line="887"></span></a> </span><span id="L-888"><a href="#L-888"><span class="linenos" data-line="888"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">unitOnly</span> <span class="kr">then</span> </span><span id="L-889"><a href="#L-889"><span class="linenos" data-line="889"></span></a> <span class="c1">-- get value and strip + signs from front</span> </span><span id="L-890"><a href="#L-890"><span class="linenos" data-line="890"></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">datavalue</span><span class="p">[</span><span class="s1">'amount'</span><span class="p">],</span> <span class="s2">"^%+(.+)$"</span><span class="p">,</span> <span class="s2">"%1"</span><span class="p">)</span> </span><span id="L-891"><a href="#L-891"><span class="linenos" data-line="891"></span></a> </span><span id="L-892"><a href="#L-892"><span class="linenos" data-line="892"></span></a> <span class="kr">if</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-893"><a href="#L-893"><span class="linenos" data-line="893"></span></a> <span class="kr">return</span> <span class="n">value</span> </span><span id="L-894"><a href="#L-894"><span class="linenos" data-line="894"></span></a> <span class="kr">end</span> </span><span id="L-895"><a href="#L-895"><span class="linenos" data-line="895"></span></a> </span><span id="L-896"><a href="#L-896"><span class="linenos" data-line="896"></span></a> <span class="c1">-- replace decimal mark based on locale</span> </span><span id="L-897"><a href="#L-897"><span class="linenos" data-line="897"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">replaceDecimalMark</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> </span><span id="L-898"><a href="#L-898"><span class="linenos" data-line="898"></span></a> </span><span id="L-899"><a href="#L-899"><span class="linenos" data-line="899"></span></a> <span class="c1">-- add delimiters for readability</span> </span><span id="L-900"><a href="#L-900"><span class="linenos" data-line="900"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">.</span><span class="n">addDelimiters</span><span class="p">(</span><span class="n">value</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">end</span> </span><span id="L-902"><a href="#L-902"><span class="linenos" data-line="902"></span></a> </span><span id="L-903"><a href="#L-903"><span class="linenos" data-line="903"></span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">self</span><span class="p">:</span><span class="n">convertUnit</span><span class="p">(</span><span class="n">datavalue</span><span class="p">[</span><span class="s1">'unit'</span><span class="p">],</span> <span class="n">raw</span><span class="p">,</span> <span class="n">link</span><span class="p">,</span> <span class="n">short</span><span class="p">,</span> <span class="n">unitOnly</span><span class="p">)</span> </span><span id="L-904"><a href="#L-904"><span class="linenos" data-line="904"></span></a> </span><span id="L-905"><a href="#L-905"><span class="linenos" data-line="905"></span></a> <span class="kr">if</span> <span class="n">unit</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="n">value</span> <span class="o">=</span> <span class="n">value</span> <span class="o">..</span> <span class="n">unit</span> </span><span id="L-907"><a href="#L-907"><span class="linenos" data-line="907"></span></a> <span class="kr">end</span> </span><span id="L-908"><a href="#L-908"><span class="linenos" data-line="908"></span></a> </span><span id="L-909"><a href="#L-909"><span class="linenos" data-line="909"></span></a> <span class="kr">return</span> <span class="n">value</span> </span><span id="L-910"><a href="#L-910"><span class="linenos" data-line="910"></span></a> <span class="kr">elseif</span> <span class="n">datatype</span> <span class="o">==</span> <span class="s1">'time'</span> <span class="kr">then</span> </span><span id="L-911"><a href="#L-911"><span class="linenos" data-line="911"></span></a> <span class="kd">local</span> <span class="n">y</span><span class="p">,</span> <span class="n">m</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">yDiv</span><span class="p">,</span> <span class="n">yRound</span><span class="p">,</span> <span class="n">yFull</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">calendarID</span><span class="p">,</span> <span class="n">dateStr</span> </span><span id="L-912"><a href="#L-912"><span class="linenos" data-line="912"></span></a> <span class="kd">local</span> <span class="n">yFactor</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-913"><a href="#L-913"><span class="linenos" data-line="913"></span></a> <span class="kd">local</span> <span class="n">sign</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-914"><a href="#L-914"><span class="linenos" data-line="914"></span></a> <span class="kd">local</span> <span class="n">prefix</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-915"><a href="#L-915"><span class="linenos" data-line="915"></span></a> <span class="kd">local</span> <span class="n">suffix</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-916"><a href="#L-916"><span class="linenos" data-line="916"></span></a> <span class="kd">local</span> <span class="n">mayAddCalendar</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-917"><a href="#L-917"><span class="linenos" data-line="917"></span></a> <span class="kd">local</span> <span class="n">calendar</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-918"><a href="#L-918"><span class="linenos" data-line="918"></span></a> <span class="kd">local</span> <span class="n">precision</span> <span class="o">=</span> <span class="n">datavalue</span><span class="p">[</span><span class="s1">'precision'</span><span class="p">]</span> </span><span id="L-919"><a href="#L-919"><span class="linenos" data-line="919"></span></a> </span><span id="L-920"><a href="#L-920"><span class="linenos" data-line="920"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o">==</span> <span class="mi">11</span> <span class="kr">then</span> </span><span id="L-921"><a href="#L-921"><span class="linenos" data-line="921"></span></a> <span class="n">p</span> <span class="o">=</span> <span class="s2">"d"</span> </span><span id="L-922"><a href="#L-922"><span class="linenos" data-line="922"></span></a> <span class="kr">elseif</span> <span class="n">precision</span> <span class="o">==</span> <span class="mi">10</span> <span class="kr">then</span> </span><span id="L-923"><a href="#L-923"><span class="linenos" data-line="923"></span></a> <span class="n">p</span> <span class="o">=</span> <span class="s2">"m"</span> </span><span id="L-924"><a href="#L-924"><span class="linenos" data-line="924"></span></a> <span class="kr">else</span> </span><span id="L-925"><a href="#L-925"><span class="linenos" data-line="925"></span></a> <span class="n">p</span> <span class="o">=</span> <span class="s2">"y"</span> </span><span id="L-926"><a href="#L-926"><span class="linenos" data-line="926"></span></a> <span class="n">yFactor</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><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><span id="L-929"><a href="#L-929"><span class="linenos" data-line="929"></span></a> <span class="n">y</span><span class="p">,</span> <span class="n">m</span><span class="p">,</span> <span class="n">d</span> <span class="o">=</span> <span class="n">parseDate</span><span class="p">(</span><span class="n">datavalue</span><span class="p">[</span><span class="s1">'time'</span><span class="p">],</span> <span class="n">p</span><span class="p">)</span> </span><span id="L-930"><a href="#L-930"><span class="linenos" data-line="930"></span></a> </span><span id="L-931"><a href="#L-931"><span class="linenos" data-line="931"></span></a> <span class="kr">if</span> <span class="n">y</span> <span class="o"><</span> <span class="mi">0</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="n">sign</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> </span><span id="L-933"><a href="#L-933"><span class="linenos" data-line="933"></span></a> <span class="n">y</span> <span class="o">=</span> <span class="n">y</span> <span class="o">*</span> <span class="n">sign</span> </span><span id="L-934"><a href="#L-934"><span class="linenos" data-line="934"></span></a> <span class="kr">end</span> </span><span id="L-935"><a href="#L-935"><span class="linenos" data-line="935"></span></a> </span><span id="L-936"><a href="#L-936"><span class="linenos" data-line="936"></span></a> <span class="c1">-- if precision is tens/hundreds/thousands/millions/billions of years</span> </span><span id="L-937"><a href="#L-937"><span class="linenos" data-line="937"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o"><=</span> <span class="mi">8</span> <span class="kr">then</span> </span><span id="L-938"><a href="#L-938"><span class="linenos" data-line="938"></span></a> <span class="n">yDiv</span> <span class="o">=</span> <span class="n">y</span> <span class="o">/</span> <span class="n">yFactor</span> </span><span id="L-939"><a href="#L-939"><span class="linenos" data-line="939"></span></a> </span><span id="L-940"><a href="#L-940"><span class="linenos" data-line="940"></span></a> <span class="c1">-- if precision is tens/hundreds/thousands of years</span> </span><span id="L-941"><a href="#L-941"><span class="linenos" data-line="941"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o">>=</span> <span class="mi">6</span> <span class="kr">then</span> </span><span id="L-942"><a href="#L-942"><span class="linenos" data-line="942"></span></a> <span class="n">mayAddCalendar</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-943"><a href="#L-943"><span class="linenos" data-line="943"></span></a> </span><span id="L-944"><a href="#L-944"><span class="linenos" data-line="944"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o"><=</span> <span class="mi">7</span> <span class="kr">then</span> </span><span id="L-945"><a href="#L-945"><span class="linenos" data-line="945"></span></a> <span class="c1">-- round centuries/millenniums up (e.g. 20th century or 3rd millennium)</span> </span><span id="L-946"><a href="#L-946"><span class="linenos" data-line="946"></span></a> <span class="n">yRound</span> <span class="o">=</span> <span class="nb">math.ceil</span><span class="p">(</span><span class="n">yDiv</span><span class="p">)</span> </span><span id="L-947"><a href="#L-947"><span class="linenos" data-line="947"></span></a> </span><span id="L-948"><a href="#L-948"><span class="linenos" data-line="948"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-949"><a href="#L-949"><span class="linenos" data-line="949"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o">==</span> <span class="mi">6</span> <span class="kr">then</span> </span><span id="L-950"><a href="#L-950"><span class="linenos" data-line="950"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'suffixes'</span><span class="p">][</span><span class="s1">'millennium'</span><span class="p">]</span> </span><span id="L-951"><a href="#L-951"><span class="linenos" data-line="951"></span></a> <span class="kr">else</span> </span><span id="L-952"><a href="#L-952"><span class="linenos" data-line="952"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'suffixes'</span><span class="p">][</span><span class="s1">'century'</span><span class="p">]</span> </span><span id="L-953"><a href="#L-953"><span class="linenos" data-line="953"></span></a> <span class="kr">end</span> </span><span id="L-954"><a href="#L-954"><span class="linenos" data-line="954"></span></a> </span><span id="L-955"><a href="#L-955"><span class="linenos" data-line="955"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">.</span><span class="n">getOrdinalSuffix</span><span class="p">(</span><span class="n">yRound</span><span class="p">)</span> <span class="o">..</span> <span class="n">suffix</span> </span><span id="L-956"><a href="#L-956"><span class="linenos" data-line="956"></span></a> <span class="kr">else</span> </span><span id="L-957"><a href="#L-957"><span class="linenos" data-line="957"></span></a> <span class="c1">-- if not verbose, take the first year of the century/millennium</span> </span><span id="L-958"><a href="#L-958"><span class="linenos" data-line="958"></span></a> <span class="c1">-- (e.g. 1901 for 20th century or 2001 for 3rd millennium)</span> </span><span id="L-959"><a href="#L-959"><span class="linenos" data-line="959"></span></a> <span class="n">yRound</span> <span class="o">=</span> <span class="p">(</span><span class="n">yRound</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">yFactor</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-960"><a href="#L-960"><span class="linenos" data-line="960"></span></a> <span class="kr">end</span> </span><span id="L-961"><a href="#L-961"><span class="linenos" data-line="961"></span></a> <span class="kr">else</span> </span><span id="L-962"><a href="#L-962"><span class="linenos" data-line="962"></span></a> <span class="c1">-- precision == 8</span> </span><span id="L-963"><a href="#L-963"><span class="linenos" data-line="963"></span></a> <span class="c1">-- round decades down (e.g. 2010s)</span> </span><span id="L-964"><a href="#L-964"><span class="linenos" data-line="964"></span></a> <span class="n">yRound</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">yDiv</span><span class="p">)</span> <span class="o">*</span> <span class="n">yFactor</span> </span><span id="L-965"><a href="#L-965"><span class="linenos" data-line="965"></span></a> </span><span id="L-966"><a href="#L-966"><span class="linenos" data-line="966"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-967"><a href="#L-967"><span class="linenos" data-line="967"></span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'prefixes'</span><span class="p">][</span><span class="s1">'decade-period'</span><span class="p">]</span> </span><span id="L-968"><a href="#L-968"><span class="linenos" data-line="968"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'suffixes'</span><span class="p">][</span><span class="s1">'decade-period'</span><span class="p">]</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="kr">if</span> <span class="n">raw</span> <span class="ow">and</span> <span class="n">sign</span> <span class="o"><</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-973"><a href="#L-973"><span class="linenos" data-line="973"></span></a> <span class="c1">-- if BCE then compensate for "counting backwards"</span> </span><span id="L-974"><a href="#L-974"><span class="linenos" data-line="974"></span></a> <span class="c1">-- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE)</span> </span><span id="L-975"><a href="#L-975"><span class="linenos" data-line="975"></span></a> <span class="n">yRound</span> <span class="o">=</span> <span class="n">yRound</span> <span class="o">+</span> <span class="n">yFactor</span> <span class="o">-</span> <span class="mi">1</span> </span><span id="L-976"><a href="#L-976"><span class="linenos" data-line="976"></span></a> <span class="kr">end</span> </span><span id="L-977"><a href="#L-977"><span class="linenos" data-line="977"></span></a> <span class="kr">else</span> </span><span id="L-978"><a href="#L-978"><span class="linenos" data-line="978"></span></a> <span class="kd">local</span> <span class="n">yReFactor</span><span class="p">,</span> <span class="n">yReDiv</span><span class="p">,</span> <span class="n">yReRound</span> </span><span id="L-979"><a href="#L-979"><span class="linenos" data-line="979"></span></a> </span><span id="L-980"><a href="#L-980"><span class="linenos" data-line="980"></span></a> <span class="c1">-- round to nearest for tens of thousands of years or more</span> </span><span id="L-981"><a href="#L-981"><span class="linenos" data-line="981"></span></a> <span class="n">yRound</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">yDiv</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> </span><span id="L-982"><a href="#L-982"><span class="linenos" data-line="982"></span></a> </span><span id="L-983"><a href="#L-983"><span class="linenos" data-line="983"></span></a> <span class="kr">if</span> <span class="n">yRound</span> <span class="o">==</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-984"><a href="#L-984"><span class="linenos" data-line="984"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o"><=</span> <span class="mi">2</span> <span class="ow">and</span> <span class="n">y</span> <span class="o">~=</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-985"><a href="#L-985"><span class="linenos" data-line="985"></span></a> <span class="n">yReFactor</span> <span class="o">=</span> <span class="mf">1e6</span> </span><span id="L-986"><a href="#L-986"><span class="linenos" data-line="986"></span></a> <span class="n">yReDiv</span> <span class="o">=</span> <span class="n">y</span> <span class="o">/</span> <span class="n">yReFactor</span> </span><span id="L-987"><a href="#L-987"><span class="linenos" data-line="987"></span></a> <span class="n">yReRound</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">yReDiv</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</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="kr">if</span> <span class="n">yReDiv</span> <span class="o">==</span> <span class="n">yReRound</span> <span class="kr">then</span> </span><span id="L-990"><a href="#L-990"><span class="linenos" data-line="990"></span></a> <span class="c1">-- change precision to millions of years only if we have a whole number of them</span> </span><span id="L-991"><a href="#L-991"><span class="linenos" data-line="991"></span></a> <span class="n">precision</span> <span class="o">=</span> <span class="mi">3</span> </span><span id="L-992"><a href="#L-992"><span class="linenos" data-line="992"></span></a> <span class="n">yFactor</span> <span class="o">=</span> <span class="n">yReFactor</span> </span><span id="L-993"><a href="#L-993"><span class="linenos" data-line="993"></span></a> <span class="n">yRound</span> <span class="o">=</span> <span class="n">yReRound</span> </span><span id="L-994"><a href="#L-994"><span class="linenos" data-line="994"></span></a> <span class="kr">end</span> </span><span id="L-995"><a href="#L-995"><span class="linenos" data-line="995"></span></a> <span class="kr">end</span> </span><span id="L-996"><a href="#L-996"><span class="linenos" data-line="996"></span></a> </span><span id="L-997"><a href="#L-997"><span class="linenos" data-line="997"></span></a> <span class="kr">if</span> <span class="n">yRound</span> <span class="o">==</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-998"><a href="#L-998"><span class="linenos" data-line="998"></span></a> <span class="c1">-- otherwise, take the unrounded (original) number of years</span> </span><span id="L-999"><a href="#L-999"><span class="linenos" data-line="999"></span></a> <span class="n">precision</span> <span class="o">=</span> <span class="mi">5</span> </span><span id="L-1000"><a href="#L-1000"><span class="linenos" data-line="1000"></span></a> <span class="n">yFactor</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-1001"><a href="#L-1001"><span class="linenos" data-line="1001"></span></a> <span class="n">yRound</span> <span class="o">=</span> <span class="n">y</span> </span><span id="L-1002"><a href="#L-1002"><span class="linenos" data-line="1002"></span></a> <span class="n">mayAddCalendar</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1003"><a href="#L-1003"><span class="linenos" data-line="1003"></span></a> <span class="kr">end</span> </span><span id="L-1004"><a href="#L-1004"><span class="linenos" data-line="1004"></span></a> <span class="kr">end</span> </span><span id="L-1005"><a href="#L-1005"><span class="linenos" data-line="1005"></span></a> </span><span id="L-1006"><a href="#L-1006"><span class="linenos" data-line="1006"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o">>=</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">y</span> <span class="o">~=</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1007"><a href="#L-1007"><span class="linenos" data-line="1007"></span></a> <span class="n">yFull</span> <span class="o">=</span> <span class="n">yRound</span> <span class="o">*</span> <span class="n">yFactor</span> </span><span id="L-1008"><a href="#L-1008"><span class="linenos" data-line="1008"></span></a> </span><span id="L-1009"><a href="#L-1009"><span class="linenos" data-line="1009"></span></a> <span class="n">yReFactor</span> <span class="o">=</span> <span class="mf">1e9</span> </span><span id="L-1010"><a href="#L-1010"><span class="linenos" data-line="1010"></span></a> <span class="n">yReDiv</span> <span class="o">=</span> <span class="n">yFull</span> <span class="o">/</span> <span class="n">yReFactor</span> </span><span id="L-1011"><a href="#L-1011"><span class="linenos" data-line="1011"></span></a> <span class="n">yReRound</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">yReDiv</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> </span><span id="L-1012"><a href="#L-1012"><span class="linenos" data-line="1012"></span></a> </span><span id="L-1013"><a href="#L-1013"><span class="linenos" data-line="1013"></span></a> <span class="kr">if</span> <span class="n">yReDiv</span> <span class="o">==</span> <span class="n">yReRound</span> <span class="kr">then</span> </span><span id="L-1014"><a href="#L-1014"><span class="linenos" data-line="1014"></span></a> <span class="c1">-- change precision to billions of years if we're in that range</span> </span><span id="L-1015"><a href="#L-1015"><span class="linenos" data-line="1015"></span></a> <span class="n">precision</span> <span class="o">=</span> <span class="mi">0</span> </span><span id="L-1016"><a href="#L-1016"><span class="linenos" data-line="1016"></span></a> <span class="n">yFactor</span> <span class="o">=</span> <span class="n">yReFactor</span> </span><span id="L-1017"><a href="#L-1017"><span class="linenos" data-line="1017"></span></a> <span class="n">yRound</span> <span class="o">=</span> <span class="n">yReRound</span> </span><span id="L-1018"><a href="#L-1018"><span class="linenos" data-line="1018"></span></a> <span class="kr">else</span> </span><span id="L-1019"><a href="#L-1019"><span class="linenos" data-line="1019"></span></a> <span class="n">yReFactor</span> <span class="o">=</span> <span class="mf">1e6</span> </span><span id="L-1020"><a href="#L-1020"><span class="linenos" data-line="1020"></span></a> <span class="n">yReDiv</span> <span class="o">=</span> <span class="n">yFull</span> <span class="o">/</span> <span class="n">yReFactor</span> </span><span id="L-1021"><a href="#L-1021"><span class="linenos" data-line="1021"></span></a> <span class="n">yReRound</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">yReDiv</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> </span><span id="L-1022"><a href="#L-1022"><span class="linenos" data-line="1022"></span></a> </span><span id="L-1023"><a href="#L-1023"><span class="linenos" data-line="1023"></span></a> <span class="kr">if</span> <span class="n">yReDiv</span> <span class="o">==</span> <span class="n">yReRound</span> <span class="kr">then</span> </span><span id="L-1024"><a href="#L-1024"><span class="linenos" data-line="1024"></span></a> <span class="c1">-- change precision to millions of years if we're in that range</span> </span><span id="L-1025"><a href="#L-1025"><span class="linenos" data-line="1025"></span></a> <span class="n">precision</span> <span class="o">=</span> <span class="mi">3</span> </span><span id="L-1026"><a href="#L-1026"><span class="linenos" data-line="1026"></span></a> <span class="n">yFactor</span> <span class="o">=</span> <span class="n">yReFactor</span> </span><span id="L-1027"><a href="#L-1027"><span class="linenos" data-line="1027"></span></a> <span class="n">yRound</span> <span class="o">=</span> <span class="n">yReRound</span> </span><span id="L-1028"><a href="#L-1028"><span class="linenos" data-line="1028"></span></a> <span class="kr">end</span> </span><span id="L-1029"><a href="#L-1029"><span class="linenos" data-line="1029"></span></a> <span class="kr">end</span> </span><span id="L-1030"><a href="#L-1030"><span class="linenos" data-line="1030"></span></a> <span class="kr">end</span> </span><span id="L-1031"><a href="#L-1031"><span class="linenos" data-line="1031"></span></a> </span><span id="L-1032"><a href="#L-1032"><span class="linenos" data-line="1032"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-1033"><a href="#L-1033"><span class="linenos" data-line="1033"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o">==</span> <span class="mi">3</span> <span class="kr">then</span> </span><span id="L-1034"><a href="#L-1034"><span class="linenos" data-line="1034"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'suffixes'</span><span class="p">][</span><span class="s1">'million-years'</span><span class="p">]</span> </span><span id="L-1035"><a href="#L-1035"><span class="linenos" data-line="1035"></span></a> <span class="kr">elseif</span> <span class="n">precision</span> <span class="o">==</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1036"><a href="#L-1036"><span class="linenos" data-line="1036"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'suffixes'</span><span class="p">][</span><span class="s1">'billion-years'</span><span class="p">]</span> </span><span id="L-1037"><a href="#L-1037"><span class="linenos" data-line="1037"></span></a> <span class="kr">else</span> </span><span id="L-1038"><a href="#L-1038"><span class="linenos" data-line="1038"></span></a> <span class="n">yRound</span> <span class="o">=</span> <span class="n">yRound</span> <span class="o">*</span> <span class="n">yFactor</span> </span><span id="L-1039"><a href="#L-1039"><span class="linenos" data-line="1039"></span></a> <span class="kr">if</span> <span class="n">yRound</span> <span class="o">==</span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-1040"><a href="#L-1040"><span class="linenos" data-line="1040"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'suffixes'</span><span class="p">][</span><span class="s1">'year'</span><span class="p">]</span> </span><span id="L-1041"><a href="#L-1041"><span class="linenos" data-line="1041"></span></a> <span class="kr">else</span> </span><span id="L-1042"><a href="#L-1042"><span class="linenos" data-line="1042"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'suffixes'</span><span class="p">][</span><span class="s1">'years'</span><span class="p">]</span> </span><span id="L-1043"><a href="#L-1043"><span class="linenos" data-line="1043"></span></a> <span class="kr">end</span> </span><span id="L-1044"><a href="#L-1044"><span class="linenos" data-line="1044"></span></a> <span class="kr">end</span> </span><span id="L-1045"><a href="#L-1045"><span class="linenos" data-line="1045"></span></a> <span class="kr">else</span> </span><span id="L-1046"><a href="#L-1046"><span class="linenos" data-line="1046"></span></a> <span class="n">yRound</span> <span class="o">=</span> <span class="n">yRound</span> <span class="o">*</span> <span class="n">yFactor</span> </span><span id="L-1047"><a href="#L-1047"><span class="linenos" data-line="1047"></span></a> <span class="kr">end</span> </span><span id="L-1048"><a href="#L-1048"><span class="linenos" data-line="1048"></span></a> <span class="kr">end</span> </span><span id="L-1049"><a href="#L-1049"><span class="linenos" data-line="1049"></span></a> <span class="kr">else</span> </span><span id="L-1050"><a href="#L-1050"><span class="linenos" data-line="1050"></span></a> <span class="n">yRound</span> <span class="o">=</span> <span class="n">y</span> </span><span id="L-1051"><a href="#L-1051"><span class="linenos" data-line="1051"></span></a> <span class="n">mayAddCalendar</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1052"><a href="#L-1052"><span class="linenos" data-line="1052"></span></a> <span class="kr">end</span> </span><span id="L-1053"><a href="#L-1053"><span class="linenos" data-line="1053"></span></a> </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">mayAddCalendar</span> <span class="kr">then</span> </span><span id="L-1055"><a href="#L-1055"><span class="linenos" data-line="1055"></span></a> <span class="n">calendarID</span> <span class="o">=</span> <span class="n">parseWikidataURL</span><span class="p">(</span><span class="n">datavalue</span><span class="p">[</span><span class="s1">'calendarmodel'</span><span class="p">])</span> </span><span id="L-1056"><a href="#L-1056"><span class="linenos" data-line="1056"></span></a> </span><span id="L-1057"><a href="#L-1057"><span class="linenos" data-line="1057"></span></a> <span class="kr">if</span> <span class="n">calendarID</span> <span class="ow">and</span> <span class="n">calendarID</span> <span class="o">==</span> <span class="n">aliasesQ</span><span class="p">.</span><span class="n">prolepticJulianCalendar</span> <span class="kr">then</span> </span><span id="L-1058"><a href="#L-1058"><span class="linenos" data-line="1058"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-1059"><a href="#L-1059"><span class="linenos" data-line="1059"></span></a> <span class="kr">if</span> <span class="n">link</span> <span class="kr">then</span> </span><span id="L-1060"><a href="#L-1060"><span class="linenos" data-line="1060"></span></a> <span class="n">calendar</span> <span class="o">=</span> <span class="s2">" ("</span><span class="o">..</span><span class="n">buildWikilink</span><span class="p">(</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'julian-calendar'</span><span class="p">],</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'julian'</span><span class="p">])</span><span class="o">..</span><span class="s2">")"</span> </span><span id="L-1061"><a href="#L-1061"><span class="linenos" data-line="1061"></span></a> <span class="kr">else</span> </span><span id="L-1062"><a href="#L-1062"><span class="linenos" data-line="1062"></span></a> <span class="n">calendar</span> <span class="o">=</span> <span class="s2">" ("</span><span class="o">..</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'julian'</span><span class="p">]</span><span class="o">..</span><span class="s2">")"</span> </span><span id="L-1063"><a href="#L-1063"><span class="linenos" data-line="1063"></span></a> <span class="kr">end</span> </span><span id="L-1064"><a href="#L-1064"><span class="linenos" data-line="1064"></span></a> <span class="kr">else</span> </span><span id="L-1065"><a href="#L-1065"><span class="linenos" data-line="1065"></span></a> <span class="n">calendar</span> <span class="o">=</span> <span class="s2">"/"</span><span class="o">..</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'julian'</span><span class="p">]</span> </span><span id="L-1066"><a href="#L-1066"><span class="linenos" data-line="1066"></span></a> <span class="kr">end</span> </span><span id="L-1067"><a href="#L-1067"><span class="linenos" data-line="1067"></span></a> <span class="kr">end</span> </span><span id="L-1068"><a href="#L-1068"><span class="linenos" data-line="1068"></span></a> <span class="kr">end</span> </span><span id="L-1069"><a href="#L-1069"><span class="linenos" data-line="1069"></span></a> </span><span id="L-1070"><a href="#L-1070"><span class="linenos" data-line="1070"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-1071"><a href="#L-1071"><span class="linenos" data-line="1071"></span></a> <span class="kd">local</span> <span class="n">ce</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1072"><a href="#L-1072"><span class="linenos" data-line="1072"></span></a> </span><span id="L-1073"><a href="#L-1073"><span class="linenos" data-line="1073"></span></a> <span class="kr">if</span> <span class="n">sign</span> <span class="o"><</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1074"><a href="#L-1074"><span class="linenos" data-line="1074"></span></a> <span class="n">ce</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'BCE'</span><span class="p">]</span> </span><span id="L-1075"><a href="#L-1075"><span class="linenos" data-line="1075"></span></a> <span class="kr">elseif</span> <span class="n">precision</span> <span class="o"><=</span> <span class="mi">5</span> <span class="kr">then</span> </span><span id="L-1076"><a href="#L-1076"><span class="linenos" data-line="1076"></span></a> <span class="n">ce</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'CE'</span><span class="p">]</span> </span><span id="L-1077"><a href="#L-1077"><span class="linenos" data-line="1077"></span></a> <span class="kr">end</span> </span><span id="L-1078"><a href="#L-1078"><span class="linenos" data-line="1078"></span></a> </span><span id="L-1079"><a href="#L-1079"><span class="linenos" data-line="1079"></span></a> <span class="kr">if</span> <span class="n">ce</span> <span class="kr">then</span> </span><span id="L-1080"><a href="#L-1080"><span class="linenos" data-line="1080"></span></a> <span class="kr">if</span> <span class="n">link</span> <span class="kr">then</span> </span><span id="L-1081"><a href="#L-1081"><span class="linenos" data-line="1081"></span></a> <span class="n">ce</span> <span class="o">=</span> <span class="n">buildWikilink</span><span class="p">(</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'datetime'</span><span class="p">][</span><span class="s1">'common-era'</span><span class="p">],</span> <span class="n">ce</span><span class="p">)</span> </span><span id="L-1082"><a href="#L-1082"><span class="linenos" data-line="1082"></span></a> <span class="kr">end</span> </span><span id="L-1083"><a href="#L-1083"><span class="linenos" data-line="1083"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">suffix</span> <span class="o">..</span> <span class="s2">" "</span> <span class="o">..</span> <span class="n">ce</span> </span><span id="L-1084"><a href="#L-1084"><span class="linenos" data-line="1084"></span></a> <span class="kr">end</span> </span><span id="L-1085"><a href="#L-1085"><span class="linenos" data-line="1085"></span></a> </span><span id="L-1086"><a href="#L-1086"><span class="linenos" data-line="1086"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">yRound</span><span class="p">)</span> </span><span id="L-1087"><a href="#L-1087"><span class="linenos" data-line="1087"></span></a> </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">m</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">dateStr</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">langObj</span><span class="p">:</span><span class="n">formatDate</span><span class="p">(</span><span class="s2">"F"</span><span class="p">,</span> <span class="s2">"1-"</span><span class="o">..</span><span class="n">m</span><span class="o">..</span><span class="s2">"-1"</span><span class="p">)</span> </span><span id="L-1090"><a href="#L-1090"><span class="linenos" data-line="1090"></span></a> </span><span id="L-1091"><a href="#L-1091"><span class="linenos" data-line="1091"></span></a> <span class="kr">if</span> <span class="n">d</span> <span class="kr">then</span> </span><span id="L-1092"><a href="#L-1092"><span class="linenos" data-line="1092"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">mdyDate</span> <span class="kr">then</span> </span><span id="L-1093"><a href="#L-1093"><span class="linenos" data-line="1093"></span></a> <span class="n">dateStr</span> <span class="o">=</span> <span class="n">dateStr</span> <span class="o">..</span> <span class="s2">" "</span> <span class="o">..</span> <span class="n">d</span> <span class="o">..</span> <span class="s2">","</span> </span><span id="L-1094"><a href="#L-1094"><span class="linenos" data-line="1094"></span></a> <span class="kr">else</span> </span><span id="L-1095"><a href="#L-1095"><span class="linenos" data-line="1095"></span></a> <span class="n">dateStr</span> <span class="o">=</span> <span class="n">d</span> <span class="o">..</span> <span class="s2">" "</span> <span class="o">..</span> <span class="n">dateStr</span> </span><span id="L-1096"><a href="#L-1096"><span class="linenos" data-line="1096"></span></a> <span class="kr">end</span> </span><span id="L-1097"><a href="#L-1097"><span class="linenos" data-line="1097"></span></a> <span class="kr">end</span> </span><span id="L-1098"><a href="#L-1098"><span class="linenos" data-line="1098"></span></a> </span><span id="L-1099"><a href="#L-1099"><span class="linenos" data-line="1099"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">dateStr</span> <span class="o">..</span> <span class="s2">" "</span> <span class="o">..</span> <span class="n">value</span> </span><span id="L-1100"><a href="#L-1100"><span class="linenos" data-line="1100"></span></a> <span class="kr">end</span> </span><span id="L-1101"><a href="#L-1101"><span class="linenos" data-line="1101"></span></a> </span><span id="L-1102"><a href="#L-1102"><span class="linenos" data-line="1102"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">..</span> <span class="n">value</span> <span class="o">..</span> <span class="n">suffix</span> <span class="o">..</span> <span class="n">calendar</span> </span><span id="L-1103"><a href="#L-1103"><span class="linenos" data-line="1103"></span></a> <span class="kr">else</span> </span><span id="L-1104"><a href="#L-1104"><span class="linenos" data-line="1104"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">padZeros</span><span class="p">(</span><span class="n">yRound</span> <span class="o">*</span> <span class="n">sign</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span> </span><span id="L-1105"><a href="#L-1105"><span class="linenos" data-line="1105"></span></a> </span><span id="L-1106"><a href="#L-1106"><span class="linenos" data-line="1106"></span></a> <span class="kr">if</span> <span class="n">m</span> <span class="kr">then</span> </span><span id="L-1107"><a href="#L-1107"><span class="linenos" data-line="1107"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span> <span class="o">..</span> <span class="s2">"-"</span> <span class="o">..</span> <span class="n">padZeros</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-1108"><a href="#L-1108"><span class="linenos" data-line="1108"></span></a> </span><span id="L-1109"><a href="#L-1109"><span class="linenos" data-line="1109"></span></a> <span class="kr">if</span> <span class="n">d</span> <span class="kr">then</span> </span><span id="L-1110"><a href="#L-1110"><span class="linenos" data-line="1110"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span> <span class="o">..</span> <span class="s2">"-"</span> <span class="o">..</span> <span class="n">padZeros</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-1111"><a href="#L-1111"><span class="linenos" data-line="1111"></span></a> <span class="kr">end</span> </span><span id="L-1112"><a href="#L-1112"><span class="linenos" data-line="1112"></span></a> <span class="kr">end</span> </span><span id="L-1113"><a href="#L-1113"><span class="linenos" data-line="1113"></span></a> </span><span id="L-1114"><a href="#L-1114"><span class="linenos" data-line="1114"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span> <span class="o">..</span> <span class="n">calendar</span> </span><span id="L-1115"><a href="#L-1115"><span class="linenos" data-line="1115"></span></a> <span class="kr">end</span> </span><span id="L-1116"><a href="#L-1116"><span class="linenos" data-line="1116"></span></a> </span><span id="L-1117"><a href="#L-1117"><span class="linenos" data-line="1117"></span></a> <span class="kr">return</span> <span class="n">value</span> </span><span id="L-1118"><a href="#L-1118"><span class="linenos" data-line="1118"></span></a> <span class="kr">elseif</span> <span class="n">datatype</span> <span class="o">==</span> <span class="s1">'globecoordinate'</span> <span class="kr">then</span> </span><span id="L-1119"><a href="#L-1119"><span class="linenos" data-line="1119"></span></a> <span class="c1">-- logic from https://github.com/DataValues/Geo (v4.0.1)</span> </span><span id="L-1120"><a href="#L-1120"><span class="linenos" data-line="1120"></span></a> </span><span id="L-1121"><a href="#L-1121"><span class="linenos" data-line="1121"></span></a> <span class="kd">local</span> <span class="n">precision</span><span class="p">,</span> <span class="n">unitsPerDegree</span><span class="p">,</span> <span class="n">numDigits</span><span class="p">,</span> <span class="n">strFormat</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">globe</span> </span><span id="L-1122"><a href="#L-1122"><span class="linenos" data-line="1122"></span></a> <span class="kd">local</span> <span class="n">latitude</span><span class="p">,</span> <span class="n">latConv</span><span class="p">,</span> <span class="n">latValue</span><span class="p">,</span> <span class="n">latLink</span> </span><span id="L-1123"><a href="#L-1123"><span class="linenos" data-line="1123"></span></a> <span class="kd">local</span> <span class="n">longitude</span><span class="p">,</span> <span class="n">lonConv</span><span class="p">,</span> <span class="n">lonValue</span><span class="p">,</span> <span class="n">lonLink</span> </span><span id="L-1124"><a href="#L-1124"><span class="linenos" data-line="1124"></span></a> <span class="kd">local</span> <span class="n">latDirection</span><span class="p">,</span> <span class="n">latDirectionN</span><span class="p">,</span> <span class="n">latDirectionS</span><span class="p">,</span> <span class="n">latDirectionEN</span> </span><span id="L-1125"><a href="#L-1125"><span class="linenos" data-line="1125"></span></a> <span class="kd">local</span> <span class="n">lonDirection</span><span class="p">,</span> <span class="n">lonDirectionE</span><span class="p">,</span> <span class="n">lonDirectionW</span><span class="p">,</span> <span class="n">lonDirectionEN</span> </span><span id="L-1126"><a href="#L-1126"><span class="linenos" data-line="1126"></span></a> <span class="kd">local</span> <span class="n">degSymbol</span><span class="p">,</span> <span class="n">minSymbol</span><span class="p">,</span> <span class="n">secSymbol</span><span class="p">,</span> <span class="n">separator</span> </span><span id="L-1127"><a href="#L-1127"><span class="linenos" data-line="1127"></span></a> </span><span id="L-1128"><a href="#L-1128"><span class="linenos" data-line="1128"></span></a> <span class="kd">local</span> <span class="n">latDegrees</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1129"><a href="#L-1129"><span class="linenos" data-line="1129"></span></a> <span class="kd">local</span> <span class="n">latMinutes</span> <span class="o">=</span> <span class="kc">nil</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">latSeconds</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1131"><a href="#L-1131"><span class="linenos" data-line="1131"></span></a> <span class="kd">local</span> <span class="n">lonDegrees</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1132"><a href="#L-1132"><span class="linenos" data-line="1132"></span></a> <span class="kd">local</span> <span class="n">lonMinutes</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1133"><a href="#L-1133"><span class="linenos" data-line="1133"></span></a> <span class="kd">local</span> <span class="n">lonSeconds</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1134"><a href="#L-1134"><span class="linenos" data-line="1134"></span></a> </span><span id="L-1135"><a href="#L-1135"><span class="linenos" data-line="1135"></span></a> <span class="kd">local</span> <span class="n">latDegSym</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="kd">local</span> <span class="n">latMinSym</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="kd">local</span> <span class="n">latSecSym</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-1138"><a href="#L-1138"><span class="linenos" data-line="1138"></span></a> <span class="kd">local</span> <span class="n">lonDegSym</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-1139"><a href="#L-1139"><span class="linenos" data-line="1139"></span></a> <span class="kd">local</span> <span class="n">lonMinSym</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-1140"><a href="#L-1140"><span class="linenos" data-line="1140"></span></a> <span class="kd">local</span> <span class="n">lonSecSym</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-1141"><a href="#L-1141"><span class="linenos" data-line="1141"></span></a> </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">latDirectionEN_N</span> <span class="o">=</span> <span class="s2">"N"</span> </span><span id="L-1143"><a href="#L-1143"><span class="linenos" data-line="1143"></span></a> <span class="kd">local</span> <span class="n">latDirectionEN_S</span> <span class="o">=</span> <span class="s2">"S"</span> </span><span id="L-1144"><a href="#L-1144"><span class="linenos" data-line="1144"></span></a> <span class="kd">local</span> <span class="n">lonDirectionEN_E</span> <span class="o">=</span> <span class="s2">"E"</span> </span><span id="L-1145"><a href="#L-1145"><span class="linenos" data-line="1145"></span></a> <span class="kd">local</span> <span class="n">lonDirectionEN_W</span> <span class="o">=</span> <span class="s2">"W"</span> </span><span id="L-1146"><a href="#L-1146"><span class="linenos" data-line="1146"></span></a> </span><span id="L-1147"><a href="#L-1147"><span class="linenos" data-line="1147"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-1148"><a href="#L-1148"><span class="linenos" data-line="1148"></span></a> <span class="n">latDirectionN</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'coord'</span><span class="p">][</span><span class="s1">'latitude-north'</span><span class="p">]</span> </span><span id="L-1149"><a href="#L-1149"><span class="linenos" data-line="1149"></span></a> <span class="n">latDirectionS</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'coord'</span><span class="p">][</span><span class="s1">'latitude-south'</span><span class="p">]</span> </span><span id="L-1150"><a href="#L-1150"><span class="linenos" data-line="1150"></span></a> <span class="n">lonDirectionE</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'coord'</span><span class="p">][</span><span class="s1">'longitude-east'</span><span class="p">]</span> </span><span id="L-1151"><a href="#L-1151"><span class="linenos" data-line="1151"></span></a> <span class="n">lonDirectionW</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'coord'</span><span class="p">][</span><span class="s1">'longitude-west'</span><span class="p">]</span> </span><span id="L-1152"><a href="#L-1152"><span class="linenos" data-line="1152"></span></a> </span><span id="L-1153"><a href="#L-1153"><span class="linenos" data-line="1153"></span></a> <span class="n">degSymbol</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'coord'</span><span class="p">][</span><span class="s1">'degrees'</span><span class="p">]</span> </span><span id="L-1154"><a href="#L-1154"><span class="linenos" data-line="1154"></span></a> <span class="n">minSymbol</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'coord'</span><span class="p">][</span><span class="s1">'minutes'</span><span class="p">]</span> </span><span id="L-1155"><a href="#L-1155"><span class="linenos" data-line="1155"></span></a> <span class="n">secSymbol</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'coord'</span><span class="p">][</span><span class="s1">'seconds'</span><span class="p">]</span> </span><span id="L-1156"><a href="#L-1156"><span class="linenos" data-line="1156"></span></a> <span class="n">separator</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'coord'</span><span class="p">][</span><span class="s1">'separator'</span><span class="p">]</span> </span><span id="L-1157"><a href="#L-1157"><span class="linenos" data-line="1157"></span></a> <span class="kr">else</span> </span><span id="L-1158"><a href="#L-1158"><span class="linenos" data-line="1158"></span></a> <span class="n">latDirectionN</span> <span class="o">=</span> <span class="n">latDirectionEN_N</span> </span><span id="L-1159"><a href="#L-1159"><span class="linenos" data-line="1159"></span></a> <span class="n">latDirectionS</span> <span class="o">=</span> <span class="n">latDirectionEN_S</span> </span><span id="L-1160"><a href="#L-1160"><span class="linenos" data-line="1160"></span></a> <span class="n">lonDirectionE</span> <span class="o">=</span> <span class="n">lonDirectionEN_E</span> </span><span id="L-1161"><a href="#L-1161"><span class="linenos" data-line="1161"></span></a> <span class="n">lonDirectionW</span> <span class="o">=</span> <span class="n">lonDirectionEN_W</span> </span><span id="L-1162"><a href="#L-1162"><span class="linenos" data-line="1162"></span></a> </span><span id="L-1163"><a href="#L-1163"><span class="linenos" data-line="1163"></span></a> <span class="n">degSymbol</span> <span class="o">=</span> <span class="s2">"/"</span> </span><span id="L-1164"><a href="#L-1164"><span class="linenos" data-line="1164"></span></a> <span class="n">minSymbol</span> <span class="o">=</span> <span class="s2">"/"</span> </span><span id="L-1165"><a href="#L-1165"><span class="linenos" data-line="1165"></span></a> <span class="n">secSymbol</span> <span class="o">=</span> <span class="s2">"/"</span> </span><span id="L-1166"><a href="#L-1166"><span class="linenos" data-line="1166"></span></a> <span class="n">separator</span> <span class="o">=</span> <span class="s2">"/"</span> </span><span id="L-1167"><a href="#L-1167"><span class="linenos" data-line="1167"></span></a> <span class="kr">end</span> </span><span id="L-1168"><a href="#L-1168"><span class="linenos" data-line="1168"></span></a> </span><span id="L-1169"><a href="#L-1169"><span class="linenos" data-line="1169"></span></a> <span class="n">latitude</span> <span class="o">=</span> <span class="n">datavalue</span><span class="p">[</span><span class="s1">'latitude'</span><span class="p">]</span> </span><span id="L-1170"><a href="#L-1170"><span class="linenos" data-line="1170"></span></a> <span class="n">longitude</span> <span class="o">=</span> <span class="n">datavalue</span><span class="p">[</span><span class="s1">'longitude'</span><span class="p">]</span> </span><span id="L-1171"><a href="#L-1171"><span class="linenos" data-line="1171"></span></a> </span><span id="L-1172"><a href="#L-1172"><span class="linenos" data-line="1172"></span></a> <span class="kr">if</span> <span class="n">latitude</span> <span class="o"><</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1173"><a href="#L-1173"><span class="linenos" data-line="1173"></span></a> <span class="n">latDirection</span> <span class="o">=</span> <span class="n">latDirectionS</span> </span><span id="L-1174"><a href="#L-1174"><span class="linenos" data-line="1174"></span></a> <span class="n">latDirectionEN</span> <span class="o">=</span> <span class="n">latDirectionEN_S</span> </span><span id="L-1175"><a href="#L-1175"><span class="linenos" data-line="1175"></span></a> <span class="n">latitude</span> <span class="o">=</span> <span class="nb">math.abs</span><span class="p">(</span><span class="n">latitude</span><span class="p">)</span> </span><span id="L-1176"><a href="#L-1176"><span class="linenos" data-line="1176"></span></a> <span class="kr">else</span> </span><span id="L-1177"><a href="#L-1177"><span class="linenos" data-line="1177"></span></a> <span class="n">latDirection</span> <span class="o">=</span> <span class="n">latDirectionN</span> </span><span id="L-1178"><a href="#L-1178"><span class="linenos" data-line="1178"></span></a> <span class="n">latDirectionEN</span> <span class="o">=</span> <span class="n">latDirectionEN_N</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="kr">if</span> <span class="n">longitude</span> <span class="o"><</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1182"><a href="#L-1182"><span class="linenos" data-line="1182"></span></a> <span class="n">lonDirection</span> <span class="o">=</span> <span class="n">lonDirectionW</span> </span><span id="L-1183"><a href="#L-1183"><span class="linenos" data-line="1183"></span></a> <span class="n">lonDirectionEN</span> <span class="o">=</span> <span class="n">lonDirectionEN_W</span> </span><span id="L-1184"><a href="#L-1184"><span class="linenos" data-line="1184"></span></a> <span class="n">longitude</span> <span class="o">=</span> <span class="nb">math.abs</span><span class="p">(</span><span class="n">longitude</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">else</span> </span><span id="L-1186"><a href="#L-1186"><span class="linenos" data-line="1186"></span></a> <span class="n">lonDirection</span> <span class="o">=</span> <span class="n">lonDirectionE</span> </span><span id="L-1187"><a href="#L-1187"><span class="linenos" data-line="1187"></span></a> <span class="n">lonDirectionEN</span> <span class="o">=</span> <span class="n">lonDirectionEN_E</span> </span><span id="L-1188"><a href="#L-1188"><span class="linenos" data-line="1188"></span></a> <span class="kr">end</span> </span><span id="L-1189"><a href="#L-1189"><span class="linenos" data-line="1189"></span></a> </span><span id="L-1190"><a href="#L-1190"><span class="linenos" data-line="1190"></span></a> <span class="n">precision</span> <span class="o">=</span> <span class="n">datavalue</span><span class="p">[</span><span class="s1">'precision'</span><span class="p">]</span> </span><span id="L-1191"><a href="#L-1191"><span class="linenos" data-line="1191"></span></a> </span><span id="L-1192"><a href="#L-1192"><span class="linenos" data-line="1192"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">precision</span> <span class="ow">or</span> <span class="n">precision</span> <span class="o"><=</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1193"><a href="#L-1193"><span class="linenos" data-line="1193"></span></a> <span class="n">precision</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">/</span> <span class="mi">3600</span> <span class="c1">-- precision not set (correctly), set to arcsecond</span> </span><span id="L-1194"><a href="#L-1194"><span class="linenos" data-line="1194"></span></a> <span class="kr">end</span> </span><span id="L-1195"><a href="#L-1195"><span class="linenos" data-line="1195"></span></a> </span><span id="L-1196"><a href="#L-1196"><span class="linenos" data-line="1196"></span></a> <span class="c1">-- remove insignificant detail</span> </span><span id="L-1197"><a href="#L-1197"><span class="linenos" data-line="1197"></span></a> <span class="n">latitude</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">latitude</span> <span class="o">/</span> <span class="n">precision</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">*</span> <span class="n">precision</span> </span><span id="L-1198"><a href="#L-1198"><span class="linenos" data-line="1198"></span></a> <span class="n">longitude</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">longitude</span> <span class="o">/</span> <span class="n">precision</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">*</span> <span class="n">precision</span> </span><span id="L-1199"><a href="#L-1199"><span class="linenos" data-line="1199"></span></a> </span><span id="L-1200"><a href="#L-1200"><span class="linenos" data-line="1200"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o">>=</span> <span class="mi">1</span> <span class="o">-</span> <span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">60</span><span class="p">)</span> <span class="ow">and</span> <span class="n">precision</span> <span class="o"><</span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-1201"><a href="#L-1201"><span class="linenos" data-line="1201"></span></a> <span class="n">precision</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-1202"><a href="#L-1202"><span class="linenos" data-line="1202"></span></a> <span class="kr">elseif</span> <span class="n">precision</span> <span class="o">>=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">60</span><span class="p">)</span> <span class="o">-</span> <span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">3600</span><span class="p">)</span> <span class="ow">and</span> <span class="n">precision</span> <span class="o"><</span> <span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">60</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1203"><a href="#L-1203"><span class="linenos" data-line="1203"></span></a> <span class="n">precision</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">/</span> <span class="mi">60</span> </span><span id="L-1204"><a href="#L-1204"><span class="linenos" data-line="1204"></span></a> <span class="kr">end</span> </span><span id="L-1205"><a href="#L-1205"><span class="linenos" data-line="1205"></span></a> </span><span id="L-1206"><a href="#L-1206"><span class="linenos" data-line="1206"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o">>=</span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-1207"><a href="#L-1207"><span class="linenos" data-line="1207"></span></a> <span class="n">unitsPerDegree</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-1208"><a href="#L-1208"><span class="linenos" data-line="1208"></span></a> <span class="kr">elseif</span> <span class="n">precision</span> <span class="o">>=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">60</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1209"><a href="#L-1209"><span class="linenos" data-line="1209"></span></a> <span class="n">unitsPerDegree</span> <span class="o">=</span> <span class="mi">60</span> </span><span id="L-1210"><a href="#L-1210"><span class="linenos" data-line="1210"></span></a> <span class="kr">else</span> </span><span id="L-1211"><a href="#L-1211"><span class="linenos" data-line="1211"></span></a> <span class="n">unitsPerDegree</span> <span class="o">=</span> <span class="mi">3600</span> </span><span id="L-1212"><a href="#L-1212"><span class="linenos" data-line="1212"></span></a> <span class="kr">end</span> </span><span id="L-1213"><a href="#L-1213"><span class="linenos" data-line="1213"></span></a> </span><span id="L-1214"><a href="#L-1214"><span class="linenos" data-line="1214"></span></a> <span class="n">numDigits</span> <span class="o">=</span> <span class="nb">math.ceil</span><span class="p">(</span><span class="o">-</span><span class="n">math</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">unitsPerDegree</span> <span class="o">*</span> <span class="n">precision</span><span class="p">))</span> </span><span id="L-1215"><a href="#L-1215"><span class="linenos" data-line="1215"></span></a> </span><span id="L-1216"><a href="#L-1216"><span class="linenos" data-line="1216"></span></a> <span class="kr">if</span> <span class="n">numDigits</span> <span class="o"><=</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1217"><a href="#L-1217"><span class="linenos" data-line="1217"></span></a> <span class="n">numDigits</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="s2">"0"</span><span class="p">)</span> <span class="c1">-- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead</span> </span><span id="L-1218"><a href="#L-1218"><span class="linenos" data-line="1218"></span></a> <span class="kr">end</span> </span><span id="L-1219"><a href="#L-1219"><span class="linenos" data-line="1219"></span></a> </span><span id="L-1220"><a href="#L-1220"><span class="linenos" data-line="1220"></span></a> <span class="n">strFormat</span> <span class="o">=</span> <span class="s2">"%."</span> <span class="o">..</span> <span class="n">numDigits</span> <span class="o">..</span> <span class="s2">"f"</span> </span><span id="L-1221"><a href="#L-1221"><span class="linenos" data-line="1221"></span></a> </span><span id="L-1222"><a href="#L-1222"><span class="linenos" data-line="1222"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o">>=</span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-1223"><a href="#L-1223"><span class="linenos" data-line="1223"></span></a> <span class="n">latDegrees</span> <span class="o">=</span> <span class="n">strFormat</span><span class="p">:</span><span class="n">format</span><span class="p">(</span><span class="n">latitude</span><span class="p">)</span> </span><span id="L-1224"><a href="#L-1224"><span class="linenos" data-line="1224"></span></a> <span class="n">lonDegrees</span> <span class="o">=</span> <span class="n">strFormat</span><span class="p">:</span><span class="n">format</span><span class="p">(</span><span class="n">longitude</span><span class="p">)</span> </span><span id="L-1225"><a href="#L-1225"><span class="linenos" data-line="1225"></span></a> </span><span id="L-1226"><a href="#L-1226"><span class="linenos" data-line="1226"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-1227"><a href="#L-1227"><span class="linenos" data-line="1227"></span></a> <span class="n">latDegSym</span> <span class="o">=</span> <span class="n">replaceDecimalMark</span><span class="p">(</span><span class="n">latDegrees</span><span class="p">)</span> <span class="o">..</span> <span class="n">degSymbol</span> </span><span id="L-1228"><a href="#L-1228"><span class="linenos" data-line="1228"></span></a> <span class="n">lonDegSym</span> <span class="o">=</span> <span class="n">replaceDecimalMark</span><span class="p">(</span><span class="n">lonDegrees</span><span class="p">)</span> <span class="o">..</span> <span class="n">degSymbol</span> </span><span id="L-1229"><a href="#L-1229"><span class="linenos" data-line="1229"></span></a> <span class="kr">else</span> </span><span id="L-1230"><a href="#L-1230"><span class="linenos" data-line="1230"></span></a> <span class="n">latDegSym</span> <span class="o">=</span> <span class="n">latDegrees</span> <span class="o">..</span> <span class="n">degSymbol</span> </span><span id="L-1231"><a href="#L-1231"><span class="linenos" data-line="1231"></span></a> <span class="n">lonDegSym</span> <span class="o">=</span> <span class="n">lonDegrees</span> <span class="o">..</span> <span class="n">degSymbol</span> </span><span id="L-1232"><a href="#L-1232"><span class="linenos" data-line="1232"></span></a> <span class="kr">end</span> </span><span id="L-1233"><a href="#L-1233"><span class="linenos" data-line="1233"></span></a> <span class="kr">else</span> </span><span id="L-1234"><a href="#L-1234"><span class="linenos" data-line="1234"></span></a> <span class="n">latConv</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">latitude</span> <span class="o">*</span> <span class="n">unitsPerDegree</span> <span class="o">*</span> <span class="mi">10</span><span class="o">^</span><span class="n">numDigits</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">/</span> <span class="mi">10</span><span class="o">^</span><span class="n">numDigits</span> </span><span id="L-1235"><a href="#L-1235"><span class="linenos" data-line="1235"></span></a> <span class="n">lonConv</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">longitude</span> <span class="o">*</span> <span class="n">unitsPerDegree</span> <span class="o">*</span> <span class="mi">10</span><span class="o">^</span><span class="n">numDigits</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">/</span> <span class="mi">10</span><span class="o">^</span><span class="n">numDigits</span> </span><span id="L-1236"><a href="#L-1236"><span class="linenos" data-line="1236"></span></a> </span><span id="L-1237"><a href="#L-1237"><span class="linenos" data-line="1237"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o">>=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">60</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1238"><a href="#L-1238"><span class="linenos" data-line="1238"></span></a> <span class="n">latMinutes</span> <span class="o">=</span> <span class="n">latConv</span> </span><span id="L-1239"><a href="#L-1239"><span class="linenos" data-line="1239"></span></a> <span class="n">lonMinutes</span> <span class="o">=</span> <span class="n">lonConv</span> </span><span id="L-1240"><a href="#L-1240"><span class="linenos" data-line="1240"></span></a> <span class="kr">else</span> </span><span id="L-1241"><a href="#L-1241"><span class="linenos" data-line="1241"></span></a> <span class="n">latSeconds</span> <span class="o">=</span> <span class="n">latConv</span> </span><span id="L-1242"><a href="#L-1242"><span class="linenos" data-line="1242"></span></a> <span class="n">lonSeconds</span> <span class="o">=</span> <span class="n">lonConv</span> </span><span id="L-1243"><a href="#L-1243"><span class="linenos" data-line="1243"></span></a> </span><span id="L-1244"><a href="#L-1244"><span class="linenos" data-line="1244"></span></a> <span class="n">latMinutes</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">latSeconds</span> <span class="o">/</span> <span class="mi">60</span><span class="p">)</span> </span><span id="L-1245"><a href="#L-1245"><span class="linenos" data-line="1245"></span></a> <span class="n">lonMinutes</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">lonSeconds</span> <span class="o">/</span> <span class="mi">60</span><span class="p">)</span> </span><span id="L-1246"><a href="#L-1246"><span class="linenos" data-line="1246"></span></a> </span><span id="L-1247"><a href="#L-1247"><span class="linenos" data-line="1247"></span></a> <span class="n">latSeconds</span> <span class="o">=</span> <span class="n">strFormat</span><span class="p">:</span><span class="n">format</span><span class="p">(</span><span class="n">latSeconds</span> <span class="o">-</span> <span class="p">(</span><span class="n">latMinutes</span> <span class="o">*</span> <span class="mi">60</span><span class="p">))</span> </span><span id="L-1248"><a href="#L-1248"><span class="linenos" data-line="1248"></span></a> <span class="n">lonSeconds</span> <span class="o">=</span> <span class="n">strFormat</span><span class="p">:</span><span class="n">format</span><span class="p">(</span><span class="n">lonSeconds</span> <span class="o">-</span> <span class="p">(</span><span class="n">lonMinutes</span> <span class="o">*</span> <span class="mi">60</span><span class="p">))</span> </span><span id="L-1249"><a href="#L-1249"><span class="linenos" data-line="1249"></span></a> </span><span id="L-1250"><a href="#L-1250"><span class="linenos" data-line="1250"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-1251"><a href="#L-1251"><span class="linenos" data-line="1251"></span></a> <span class="n">latSecSym</span> <span class="o">=</span> <span class="n">replaceDecimalMark</span><span class="p">(</span><span class="n">latSeconds</span><span class="p">)</span> <span class="o">..</span> <span class="n">secSymbol</span> </span><span id="L-1252"><a href="#L-1252"><span class="linenos" data-line="1252"></span></a> <span class="n">lonSecSym</span> <span class="o">=</span> <span class="n">replaceDecimalMark</span><span class="p">(</span><span class="n">lonSeconds</span><span class="p">)</span> <span class="o">..</span> <span class="n">secSymbol</span> </span><span id="L-1253"><a href="#L-1253"><span class="linenos" data-line="1253"></span></a> <span class="kr">else</span> </span><span id="L-1254"><a href="#L-1254"><span class="linenos" data-line="1254"></span></a> <span class="n">latSecSym</span> <span class="o">=</span> <span class="n">latSeconds</span> <span class="o">..</span> <span class="n">secSymbol</span> </span><span id="L-1255"><a href="#L-1255"><span class="linenos" data-line="1255"></span></a> <span class="n">lonSecSym</span> <span class="o">=</span> <span class="n">lonSeconds</span> <span class="o">..</span> <span class="n">secSymbol</span> </span><span id="L-1256"><a href="#L-1256"><span class="linenos" data-line="1256"></span></a> <span class="kr">end</span> </span><span id="L-1257"><a href="#L-1257"><span class="linenos" data-line="1257"></span></a> <span class="kr">end</span> </span><span id="L-1258"><a href="#L-1258"><span class="linenos" data-line="1258"></span></a> </span><span id="L-1259"><a href="#L-1259"><span class="linenos" data-line="1259"></span></a> <span class="n">latDegrees</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">latMinutes</span> <span class="o">/</span> <span class="mi">60</span><span class="p">)</span> </span><span id="L-1260"><a href="#L-1260"><span class="linenos" data-line="1260"></span></a> <span class="n">lonDegrees</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span><span class="n">lonMinutes</span> <span class="o">/</span> <span class="mi">60</span><span class="p">)</span> </span><span id="L-1261"><a href="#L-1261"><span class="linenos" data-line="1261"></span></a> </span><span id="L-1262"><a href="#L-1262"><span class="linenos" data-line="1262"></span></a> <span class="n">latDegSym</span> <span class="o">=</span> <span class="n">latDegrees</span> <span class="o">..</span> <span class="n">degSymbol</span> </span><span id="L-1263"><a href="#L-1263"><span class="linenos" data-line="1263"></span></a> <span class="n">lonDegSym</span> <span class="o">=</span> <span class="n">lonDegrees</span> <span class="o">..</span> <span class="n">degSymbol</span> </span><span id="L-1264"><a href="#L-1264"><span class="linenos" data-line="1264"></span></a> </span><span id="L-1265"><a href="#L-1265"><span class="linenos" data-line="1265"></span></a> <span class="n">latMinutes</span> <span class="o">=</span> <span class="n">latMinutes</span> <span class="o">-</span> <span class="p">(</span><span class="n">latDegrees</span> <span class="o">*</span> <span class="mi">60</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">lonMinutes</span> <span class="o">=</span> <span class="n">lonMinutes</span> <span class="o">-</span> <span class="p">(</span><span class="n">lonDegrees</span> <span class="o">*</span> <span class="mi">60</span><span class="p">)</span> </span><span id="L-1267"><a href="#L-1267"><span class="linenos" data-line="1267"></span></a> </span><span id="L-1268"><a href="#L-1268"><span class="linenos" data-line="1268"></span></a> <span class="kr">if</span> <span class="n">precision</span> <span class="o">>=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">60</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1269"><a href="#L-1269"><span class="linenos" data-line="1269"></span></a> <span class="n">latMinutes</span> <span class="o">=</span> <span class="n">strFormat</span><span class="p">:</span><span class="n">format</span><span class="p">(</span><span class="n">latMinutes</span><span class="p">)</span> </span><span id="L-1270"><a href="#L-1270"><span class="linenos" data-line="1270"></span></a> <span class="n">lonMinutes</span> <span class="o">=</span> <span class="n">strFormat</span><span class="p">:</span><span class="n">format</span><span class="p">(</span><span class="n">lonMinutes</span><span class="p">)</span> </span><span id="L-1271"><a href="#L-1271"><span class="linenos" data-line="1271"></span></a> </span><span id="L-1272"><a href="#L-1272"><span class="linenos" data-line="1272"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-1273"><a href="#L-1273"><span class="linenos" data-line="1273"></span></a> <span class="n">latMinSym</span> <span class="o">=</span> <span class="n">replaceDecimalMark</span><span class="p">(</span><span class="n">latMinutes</span><span class="p">)</span> <span class="o">..</span> <span class="n">minSymbol</span> </span><span id="L-1274"><a href="#L-1274"><span class="linenos" data-line="1274"></span></a> <span class="n">lonMinSym</span> <span class="o">=</span> <span class="n">replaceDecimalMark</span><span class="p">(</span><span class="n">lonMinutes</span><span class="p">)</span> <span class="o">..</span> <span class="n">minSymbol</span> </span><span id="L-1275"><a href="#L-1275"><span class="linenos" data-line="1275"></span></a> <span class="kr">else</span> </span><span id="L-1276"><a href="#L-1276"><span class="linenos" data-line="1276"></span></a> <span class="n">latMinSym</span> <span class="o">=</span> <span class="n">latMinutes</span> <span class="o">..</span> <span class="n">minSymbol</span> </span><span id="L-1277"><a href="#L-1277"><span class="linenos" data-line="1277"></span></a> <span class="n">lonMinSym</span> <span class="o">=</span> <span class="n">lonMinutes</span> <span class="o">..</span> <span class="n">minSymbol</span> </span><span id="L-1278"><a href="#L-1278"><span class="linenos" data-line="1278"></span></a> <span class="kr">end</span> </span><span id="L-1279"><a href="#L-1279"><span class="linenos" data-line="1279"></span></a> <span class="kr">else</span> </span><span id="L-1280"><a href="#L-1280"><span class="linenos" data-line="1280"></span></a> <span class="n">latMinSym</span> <span class="o">=</span> <span class="n">latMinutes</span> <span class="o">..</span> <span class="n">minSymbol</span> </span><span id="L-1281"><a href="#L-1281"><span class="linenos" data-line="1281"></span></a> <span class="n">lonMinSym</span> <span class="o">=</span> <span class="n">lonMinutes</span> <span class="o">..</span> <span class="n">minSymbol</span> </span><span id="L-1282"><a href="#L-1282"><span class="linenos" data-line="1282"></span></a> <span class="kr">end</span> </span><span id="L-1283"><a href="#L-1283"><span class="linenos" data-line="1283"></span></a> <span class="kr">end</span> </span><span id="L-1284"><a href="#L-1284"><span class="linenos" data-line="1284"></span></a> </span><span id="L-1285"><a href="#L-1285"><span class="linenos" data-line="1285"></span></a> <span class="n">latValue</span> <span class="o">=</span> <span class="n">latDegSym</span> <span class="o">..</span> <span class="n">latMinSym</span> <span class="o">..</span> <span class="n">latSecSym</span> <span class="o">..</span> <span class="n">latDirection</span> </span><span id="L-1286"><a href="#L-1286"><span class="linenos" data-line="1286"></span></a> <span class="n">lonValue</span> <span class="o">=</span> <span class="n">lonDegSym</span> <span class="o">..</span> <span class="n">lonMinSym</span> <span class="o">..</span> <span class="n">lonSecSym</span> <span class="o">..</span> <span class="n">lonDirection</span> </span><span id="L-1287"><a href="#L-1287"><span class="linenos" data-line="1287"></span></a> </span><span id="L-1288"><a href="#L-1288"><span class="linenos" data-line="1288"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">latValue</span> <span class="o">..</span> <span class="n">separator</span> <span class="o">..</span> <span class="n">lonValue</span> </span><span id="L-1289"><a href="#L-1289"><span class="linenos" data-line="1289"></span></a> </span><span id="L-1290"><a href="#L-1290"><span class="linenos" data-line="1290"></span></a> <span class="kr">if</span> <span class="n">link</span> <span class="kr">then</span> </span><span id="L-1291"><a href="#L-1291"><span class="linenos" data-line="1291"></span></a> <span class="n">globe</span> <span class="o">=</span> <span class="n">parseWikidataURL</span><span class="p">(</span><span class="n">datavalue</span><span class="p">[</span><span class="s1">'globe'</span><span class="p">])</span> </span><span id="L-1292"><a href="#L-1292"><span class="linenos" data-line="1292"></span></a> </span><span id="L-1293"><a href="#L-1293"><span class="linenos" data-line="1293"></span></a> <span class="kr">if</span> <span class="n">globe</span> <span class="kr">then</span> </span><span id="L-1294"><a href="#L-1294"><span class="linenos" data-line="1294"></span></a> <span class="n">globe</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">globe</span><span class="p">,</span> <span class="s2">"en"</span><span class="p">):</span><span class="n">lower</span><span class="p">()</span> </span><span id="L-1295"><a href="#L-1295"><span class="linenos" data-line="1295"></span></a> <span class="kr">else</span> </span><span id="L-1296"><a href="#L-1296"><span class="linenos" data-line="1296"></span></a> <span class="n">globe</span> <span class="o">=</span> <span class="s2">"earth"</span> </span><span id="L-1297"><a href="#L-1297"><span class="linenos" data-line="1297"></span></a> <span class="kr">end</span> </span><span id="L-1298"><a href="#L-1298"><span class="linenos" data-line="1298"></span></a> </span><span id="L-1299"><a href="#L-1299"><span class="linenos" data-line="1299"></span></a> <span class="n">latLink</span> <span class="o">=</span> <span class="nb">table.concat</span><span class="p">({</span><span class="n">latDegrees</span><span class="p">,</span> <span class="n">latMinutes</span><span class="p">,</span> <span class="n">latSeconds</span><span class="p">},</span> <span class="s2">"_"</span><span class="p">)</span> </span><span id="L-1300"><a href="#L-1300"><span class="linenos" data-line="1300"></span></a> <span class="n">lonLink</span> <span class="o">=</span> <span class="nb">table.concat</span><span class="p">({</span><span class="n">lonDegrees</span><span class="p">,</span> <span class="n">lonMinutes</span><span class="p">,</span> <span class="n">lonSeconds</span><span class="p">},</span> <span class="s2">"_"</span><span class="p">)</span> </span><span id="L-1301"><a href="#L-1301"><span class="linenos" data-line="1301"></span></a> </span><span id="L-1302"><a href="#L-1302"><span class="linenos" data-line="1302"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="s2">"[https://geohack.toolforge.org/geohack.php?language="</span><span class="o">..</span><span class="n">self</span><span class="p">.</span><span class="n">langCode</span><span class="o">..</span><span class="s2">"&params="</span><span class="o">..</span><span class="n">latLink</span><span class="o">..</span><span class="s2">"_"</span><span class="o">..</span><span class="n">latDirectionEN</span><span class="o">..</span><span class="s2">"_"</span><span class="o">..</span><span class="n">lonLink</span><span class="o">..</span><span class="s2">"_"</span><span class="o">..</span><span class="n">lonDirectionEN</span><span class="o">..</span><span class="s2">"_globe:"</span><span class="o">..</span><span class="n">globe</span><span class="o">..</span><span class="s2">" "</span><span class="o">..</span><span class="n">value</span><span class="o">..</span><span class="s2">"]"</span> </span><span id="L-1303"><a href="#L-1303"><span class="linenos" data-line="1303"></span></a> <span class="kr">end</span> </span><span id="L-1304"><a href="#L-1304"><span class="linenos" data-line="1304"></span></a> </span><span id="L-1305"><a href="#L-1305"><span class="linenos" data-line="1305"></span></a> <span class="kr">return</span> <span class="n">value</span> </span><span id="L-1306"><a href="#L-1306"><span class="linenos" data-line="1306"></span></a> <span class="kr">elseif</span> <span class="n">datatype</span> <span class="o">==</span> <span class="s1">'wikibase-entityid'</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="kd">local</span> <span class="n">label</span> </span><span id="L-1308"><a href="#L-1308"><span class="linenos" data-line="1308"></span></a> <span class="kd">local</span> <span class="n">itemID</span> <span class="o">=</span> <span class="n">datavalue</span><span class="p">[</span><span class="s1">'numeric-id'</span><span class="p">]</span> </span><span id="L-1309"><a href="#L-1309"><span class="linenos" data-line="1309"></span></a> </span><span id="L-1310"><a href="#L-1310"><span class="linenos" data-line="1310"></span></a> <span class="kr">if</span> <span class="n">subtype</span> <span class="o">==</span> <span class="s1">'wikibase-item'</span> <span class="kr">then</span> </span><span id="L-1311"><a href="#L-1311"><span class="linenos" data-line="1311"></span></a> <span class="n">itemID</span> <span class="o">=</span> <span class="s2">"Q"</span> <span class="o">..</span> <span class="n">itemID</span> </span><span id="L-1312"><a href="#L-1312"><span class="linenos" data-line="1312"></span></a> <span class="kr">elseif</span> <span class="n">subtype</span> <span class="o">==</span> <span class="s1">'wikibase-property'</span> <span class="kr">then</span> </span><span id="L-1313"><a href="#L-1313"><span class="linenos" data-line="1313"></span></a> <span class="n">itemID</span> <span class="o">=</span> <span class="s2">"P"</span> <span class="o">..</span> <span class="n">itemID</span> </span><span id="L-1314"><a href="#L-1314"><span class="linenos" data-line="1314"></span></a> <span class="kr">else</span> </span><span id="L-1315"><a href="#L-1315"><span class="linenos" data-line="1315"></span></a> <span class="kr">return</span> <span class="s1">'<strong class="error">'</span> <span class="o">..</span> <span class="n">errorText</span><span class="p">(</span><span class="s1">'unknown-data-type'</span><span class="p">,</span> <span class="n">subtype</span><span class="p">)</span> <span class="o">..</span> <span class="s1">'</strong>'</span> </span><span id="L-1316"><a href="#L-1316"><span class="linenos" data-line="1316"></span></a> <span class="kr">end</span> </span><span id="L-1317"><a href="#L-1317"><span class="linenos" data-line="1317"></span></a> </span><span id="L-1318"><a href="#L-1318"><span class="linenos" data-line="1318"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">self</span><span class="p">:</span><span class="n">getLabel</span><span class="p">(</span><span class="n">itemID</span><span class="p">,</span> <span class="n">raw</span><span class="p">,</span> <span class="n">link</span><span class="p">,</span> <span class="n">short</span><span class="p">)</span> </span><span id="L-1319"><a href="#L-1319"><span class="linenos" data-line="1319"></span></a> </span><span id="L-1320"><a href="#L-1320"><span class="linenos" data-line="1320"></span></a> <span class="kr">if</span> <span class="n">label</span> <span class="o">==</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-1321"><a href="#L-1321"><span class="linenos" data-line="1321"></span></a> <span class="n">label</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1322"><a href="#L-1322"><span class="linenos" data-line="1322"></span></a> <span class="kr">end</span> </span><span id="L-1323"><a href="#L-1323"><span class="linenos" data-line="1323"></span></a> </span><span id="L-1324"><a href="#L-1324"><span class="linenos" data-line="1324"></span></a> <span class="kr">return</span> <span class="n">label</span> </span><span id="L-1325"><a href="#L-1325"><span class="linenos" data-line="1325"></span></a> <span class="kr">else</span> </span><span id="L-1326"><a href="#L-1326"><span class="linenos" data-line="1326"></span></a> <span class="kr">return</span> <span class="s1">'<strong class="error">'</span> <span class="o">..</span> <span class="n">errorText</span><span class="p">(</span><span class="s1">'unknown-data-type'</span><span class="p">,</span> <span class="n">datatype</span><span class="p">)</span> <span class="o">..</span> <span class="s1">'</strong>'</span> </span><span id="L-1327"><a href="#L-1327"><span class="linenos" data-line="1327"></span></a> <span class="kr">end</span> </span><span id="L-1328"><a href="#L-1328"><span class="linenos" data-line="1328"></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="ow">and</span> <span class="ow">not</span> <span class="n">noSpecial</span> <span class="kr">then</span> </span><span id="L-1329"><a href="#L-1329"><span class="linenos" data-line="1329"></span></a> <span class="kr">if</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-1330"><a href="#L-1330"><span class="linenos" data-line="1330"></span></a> <span class="kr">return</span> <span class="s2">" "</span> <span class="c1">-- single space represents 'somevalue'</span> </span><span id="L-1331"><a href="#L-1331"><span class="linenos" data-line="1331"></span></a> <span class="kr">else</span> </span><span id="L-1332"><a href="#L-1332"><span class="linenos" data-line="1332"></span></a> <span class="kr">return</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'values'</span><span class="p">][</span><span class="s1">'unknown'</span><span class="p">]</span> </span><span id="L-1333"><a href="#L-1333"><span class="linenos" data-line="1333"></span></a> <span class="kr">end</span> </span><span id="L-1334"><a href="#L-1334"><span class="linenos" data-line="1334"></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="ow">and</span> <span class="ow">not</span> <span class="n">noSpecial</span> <span class="kr">then</span> </span><span id="L-1335"><a href="#L-1335"><span class="linenos" data-line="1335"></span></a> <span class="kr">if</span> <span class="n">raw</span> <span class="kr">then</span> </span><span id="L-1336"><a href="#L-1336"><span class="linenos" data-line="1336"></span></a> <span class="kr">return</span> <span class="s2">""</span> <span class="c1">-- empty string represents 'novalue'</span> </span><span id="L-1337"><a href="#L-1337"><span class="linenos" data-line="1337"></span></a> <span class="kr">else</span> </span><span id="L-1338"><a href="#L-1338"><span class="linenos" data-line="1338"></span></a> <span class="kr">return</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'values'</span><span class="p">][</span><span class="s1">'none'</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">end</span> </span><span id="L-1340"><a href="#L-1340"><span class="linenos" data-line="1340"></span></a> <span class="kr">else</span> </span><span id="L-1341"><a href="#L-1341"><span class="linenos" data-line="1341"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-1342"><a href="#L-1342"><span class="linenos" data-line="1342"></span></a> <span class="kr">end</span> </span><span id="L-1343"><a href="#L-1343"><span class="linenos" data-line="1343"></span></a><span class="kr">end</span> </span><span id="L-1344"><a href="#L-1344"><span class="linenos" data-line="1344"></span></a> </span><span id="L-1345"><a href="#L-1345"><span class="linenos" data-line="1345"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">getSingleRawQualifier</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">qualifierID</span><span class="p">)</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">qualifiers</span> </span><span id="L-1347"><a href="#L-1347"><span class="linenos" data-line="1347"></span></a> </span><span id="L-1348"><a href="#L-1348"><span class="linenos" data-line="1348"></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 class="n">qualifiers</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 class="kr">end</span> </span><span id="L-1349"><a href="#L-1349"><span class="linenos" data-line="1349"></span></a> </span><span id="L-1350"><a href="#L-1350"><span class="linenos" data-line="1350"></span></a> <span class="kr">if</span> <span class="n">qualifiers</span> <span class="ow">and</span> <span class="n">qualifiers</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1351"><a href="#L-1351"><span class="linenos" data-line="1351"></span></a> <span class="kr">return</span> <span class="n">self</span><span class="p">:</span><span class="n">getValue</span><span class="p">(</span><span class="n">qualifiers</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="c1">-- raw = true</span> </span><span id="L-1352"><a href="#L-1352"><span class="linenos" data-line="1352"></span></a> <span class="kr">else</span> </span><span id="L-1353"><a href="#L-1353"><span class="linenos" data-line="1353"></span></a> <span class="kr">return</span> <span class="kc">nil</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><span id="L-1357"><a href="#L-1357"><span class="linenos" data-line="1357"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">snakEqualsValue</span><span class="p">(</span><span class="n">snak</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> </span><span id="L-1358"><a href="#L-1358"><span class="linenos" data-line="1358"></span></a> <span class="kd">local</span> <span class="n">snakValue</span> <span class="o">=</span> <span class="n">self</span><span class="p">:</span><span class="n">getValue</span><span class="p">(</span><span class="n">snak</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> <span class="c1">-- raw = true</span> </span><span id="L-1359"><a href="#L-1359"><span class="linenos" data-line="1359"></span></a> </span><span id="L-1360"><a href="#L-1360"><span class="linenos" data-line="1360"></span></a> <span class="kr">if</span> <span class="n">snakValue</span> <span class="ow">and</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="ow">and</span> <span class="n">snak</span><span class="p">.</span><span class="n">datavalue</span><span class="p">.</span><span class="nb">type</span> <span class="o">==</span> <span class="s1">'wikibase-entityid'</span> <span class="kr">then</span> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="p">:</span><span class="n">upper</span><span class="p">()</span> <span class="kr">end</span> </span><span id="L-1361"><a href="#L-1361"><span class="linenos" data-line="1361"></span></a> </span><span id="L-1362"><a href="#L-1362"><span class="linenos" data-line="1362"></span></a> <span class="kr">return</span> <span class="n">snakValue</span> <span class="o">==</span> <span class="n">value</span> </span><span id="L-1363"><a href="#L-1363"><span class="linenos" data-line="1363"></span></a><span class="kr">end</span> </span><span id="L-1364"><a href="#L-1364"><span class="linenos" data-line="1364"></span></a> </span><span id="L-1365"><a href="#L-1365"><span class="linenos" data-line="1365"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">setRank</span><span class="p">(</span><span class="n">rank</span><span class="p">)</span> </span><span id="L-1366"><a href="#L-1366"><span class="linenos" data-line="1366"></span></a> <span class="kd">local</span> <span class="n">rankPos</span> </span><span id="L-1367"><a href="#L-1367"><span class="linenos" data-line="1367"></span></a> </span><span id="L-1368"><a href="#L-1368"><span class="linenos" data-line="1368"></span></a> <span class="kr">if</span> <span class="n">rank</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">best</span> <span class="kr">then</span> </span><span id="L-1369"><a href="#L-1369"><span class="linenos" data-line="1369"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">bestRank</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1370"><a href="#L-1370"><span class="linenos" data-line="1370"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">flagBest</span> <span class="o">=</span> <span class="kc">true</span> <span class="c1">-- mark that 'best' flag was given</span> </span><span id="L-1371"><a href="#L-1371"><span class="linenos" data-line="1371"></span></a> <span class="kr">return</span> </span><span id="L-1372"><a href="#L-1372"><span class="linenos" data-line="1372"></span></a> <span class="kr">end</span> </span><span id="L-1373"><a href="#L-1373"><span class="linenos" data-line="1373"></span></a> </span><span id="L-1374"><a href="#L-1374"><span class="linenos" data-line="1374"></span></a> <span class="kr">if</span> <span class="n">rank</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">9</span><span class="p">)</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">preferred</span> <span class="kr">then</span> </span><span id="L-1375"><a href="#L-1375"><span class="linenos" data-line="1375"></span></a> <span class="n">rankPos</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-1376"><a href="#L-1376"><span class="linenos" data-line="1376"></span></a> <span class="kr">elseif</span> <span class="n">rank</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">6</span><span class="p">)</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">normal</span> <span class="kr">then</span> </span><span id="L-1377"><a href="#L-1377"><span class="linenos" data-line="1377"></span></a> <span class="n">rankPos</span> <span class="o">=</span> <span class="mi">2</span> </span><span id="L-1378"><a href="#L-1378"><span class="linenos" data-line="1378"></span></a> <span class="kr">elseif</span> <span class="n">rank</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">10</span><span class="p">)</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">deprecated</span> <span class="kr">then</span> </span><span id="L-1379"><a href="#L-1379"><span class="linenos" data-line="1379"></span></a> <span class="n">rankPos</span> <span class="o">=</span> <span class="mi">3</span> </span><span id="L-1380"><a href="#L-1380"><span class="linenos" data-line="1380"></span></a> <span class="kr">else</span> </span><span id="L-1381"><a href="#L-1381"><span class="linenos" data-line="1381"></span></a> <span class="kr">return</span> </span><span id="L-1382"><a href="#L-1382"><span class="linenos" data-line="1382"></span></a> <span class="kr">end</span> </span><span id="L-1383"><a href="#L-1383"><span class="linenos" data-line="1383"></span></a> </span><span id="L-1384"><a href="#L-1384"><span class="linenos" data-line="1384"></span></a> <span class="c1">-- one of the rank flags was given, check if another one was given before</span> </span><span id="L-1385"><a href="#L-1385"><span class="linenos" data-line="1385"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">self</span><span class="p">.</span><span class="n">flagRank</span> <span class="kr">then</span> </span><span id="L-1386"><a href="#L-1386"><span class="linenos" data-line="1386"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">ranks</span> <span class="o">=</span> <span class="p">{</span><span class="kc">false</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="kc">false</span><span class="p">}</span> <span class="c1">-- no other rank flag given before, so unset ranks</span> </span><span id="L-1387"><a href="#L-1387"><span class="linenos" data-line="1387"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">bestRank</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">flagBest</span> <span class="c1">-- unsets bestRank only if 'best' flag was not given before</span> </span><span id="L-1388"><a href="#L-1388"><span class="linenos" data-line="1388"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">flagRank</span> <span class="o">=</span> <span class="kc">true</span> <span class="c1">-- mark that a rank flag was given</span> </span><span id="L-1389"><a href="#L-1389"><span class="linenos" data-line="1389"></span></a> <span class="kr">end</span> </span><span id="L-1390"><a href="#L-1390"><span class="linenos" data-line="1390"></span></a> </span><span id="L-1391"><a href="#L-1391"><span class="linenos" data-line="1391"></span></a> <span class="kr">if</span> <span class="n">rank</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"+"</span> <span class="kr">then</span> </span><span id="L-1392"><a href="#L-1392"><span class="linenos" data-line="1392"></span></a> <span class="kr">for</span> <span class="n">i</span> <span class="o">=</span> <span class="n">rankPos</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span> <span class="kr">do</span> </span><span id="L-1393"><a href="#L-1393"><span class="linenos" data-line="1393"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">ranks</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1394"><a href="#L-1394"><span class="linenos" data-line="1394"></span></a> <span class="kr">end</span> </span><span id="L-1395"><a href="#L-1395"><span class="linenos" data-line="1395"></span></a> <span class="kr">elseif</span> <span class="n">rank</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"-"</span> <span class="kr">then</span> </span><span id="L-1396"><a href="#L-1396"><span class="linenos" data-line="1396"></span></a> <span class="kr">for</span> <span class="n">i</span> <span class="o">=</span> <span class="n">rankPos</span><span class="p">,</span> <span class="o">#</span><span class="n">self</span><span class="p">.</span><span class="n">ranks</span> <span class="kr">do</span> </span><span id="L-1397"><a href="#L-1397"><span class="linenos" data-line="1397"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">ranks</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1398"><a href="#L-1398"><span class="linenos" data-line="1398"></span></a> <span class="kr">end</span> </span><span id="L-1399"><a href="#L-1399"><span class="linenos" data-line="1399"></span></a> <span class="kr">else</span> </span><span id="L-1400"><a href="#L-1400"><span class="linenos" data-line="1400"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">ranks</span><span class="p">[</span><span class="n">rankPos</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1401"><a href="#L-1401"><span class="linenos" data-line="1401"></span></a> <span class="kr">end</span> </span><span id="L-1402"><a href="#L-1402"><span class="linenos" data-line="1402"></span></a><span class="kr">end</span> </span><span id="L-1403"><a href="#L-1403"><span class="linenos" data-line="1403"></span></a> </span><span id="L-1404"><a href="#L-1404"><span class="linenos" data-line="1404"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">setPeriod</span><span class="p">(</span><span class="n">period</span><span class="p">)</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">periodPos</span> </span><span id="L-1406"><a href="#L-1406"><span class="linenos" data-line="1406"></span></a> </span><span id="L-1407"><a href="#L-1407"><span class="linenos" data-line="1407"></span></a> <span class="kr">if</span> <span class="n">period</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">future</span> <span class="kr">then</span> </span><span id="L-1408"><a href="#L-1408"><span class="linenos" data-line="1408"></span></a> <span class="n">periodPos</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-1409"><a href="#L-1409"><span class="linenos" data-line="1409"></span></a> <span class="kr">elseif</span> <span class="n">period</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">current</span> <span class="kr">then</span> </span><span id="L-1410"><a href="#L-1410"><span class="linenos" data-line="1410"></span></a> <span class="n">periodPos</span> <span class="o">=</span> <span class="mi">2</span> </span><span id="L-1411"><a href="#L-1411"><span class="linenos" data-line="1411"></span></a> <span class="kr">elseif</span> <span class="n">period</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">former</span> <span class="kr">then</span> </span><span id="L-1412"><a href="#L-1412"><span class="linenos" data-line="1412"></span></a> <span class="n">periodPos</span> <span class="o">=</span> <span class="mi">3</span> </span><span id="L-1413"><a href="#L-1413"><span class="linenos" data-line="1413"></span></a> <span class="kr">else</span> </span><span id="L-1414"><a href="#L-1414"><span class="linenos" data-line="1414"></span></a> <span class="kr">return</span> </span><span id="L-1415"><a href="#L-1415"><span class="linenos" data-line="1415"></span></a> <span class="kr">end</span> </span><span id="L-1416"><a href="#L-1416"><span class="linenos" data-line="1416"></span></a> </span><span id="L-1417"><a href="#L-1417"><span class="linenos" data-line="1417"></span></a> <span class="c1">-- one of the period flags was given, check if another one was given before</span> </span><span id="L-1418"><a href="#L-1418"><span class="linenos" data-line="1418"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">self</span><span class="p">.</span><span class="n">flagPeriod</span> <span class="kr">then</span> </span><span id="L-1419"><a href="#L-1419"><span class="linenos" data-line="1419"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">periods</span> <span class="o">=</span> <span class="p">{</span><span class="kc">false</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="kc">false</span><span class="p">}</span> <span class="c1">-- no other period flag given before, so unset periods</span> </span><span id="L-1420"><a href="#L-1420"><span class="linenos" data-line="1420"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">flagPeriod</span> <span class="o">=</span> <span class="kc">true</span> <span class="c1">-- mark that a period flag was given</span> </span><span id="L-1421"><a href="#L-1421"><span class="linenos" data-line="1421"></span></a> <span class="kr">end</span> </span><span id="L-1422"><a href="#L-1422"><span class="linenos" data-line="1422"></span></a> </span><span id="L-1423"><a href="#L-1423"><span class="linenos" data-line="1423"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">periods</span><span class="p">[</span><span class="n">periodPos</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1424"><a href="#L-1424"><span class="linenos" data-line="1424"></span></a><span class="kr">end</span> </span><span id="L-1425"><a href="#L-1425"><span class="linenos" data-line="1425"></span></a> </span><span id="L-1426"><a href="#L-1426"><span class="linenos" data-line="1426"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">qualifierMatches</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">id</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> </span><span id="L-1427"><a href="#L-1427"><span class="linenos" data-line="1427"></span></a> <span class="kd">local</span> <span class="n">qualifiers</span> </span><span id="L-1428"><a href="#L-1428"><span class="linenos" data-line="1428"></span></a> </span><span id="L-1429"><a href="#L-1429"><span class="linenos" data-line="1429"></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 class="n">qualifiers</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">id</span><span class="p">]</span> <span class="kr">end</span> </span><span id="L-1430"><a href="#L-1430"><span class="linenos" data-line="1430"></span></a> <span class="kr">if</span> <span class="n">qualifiers</span> <span class="kr">then</span> </span><span id="L-1431"><a href="#L-1431"><span class="linenos" data-line="1431"></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">pairs</span><span class="p">(</span><span class="n">qualifiers</span><span class="p">)</span> <span class="kr">do</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">self</span><span class="p">:</span><span class="n">snakEqualsValue</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">value</span><span class="p">)</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="kr">return</span> <span class="kc">true</span> </span><span id="L-1434"><a href="#L-1434"><span class="linenos" data-line="1434"></span></a> <span class="kr">end</span> </span><span id="L-1435"><a href="#L-1435"><span class="linenos" data-line="1435"></span></a> <span class="kr">end</span> </span><span id="L-1436"><a href="#L-1436"><span class="linenos" data-line="1436"></span></a> <span class="kr">elseif</span> <span class="n">value</span> <span class="o">==</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-1437"><a href="#L-1437"><span class="linenos" data-line="1437"></span></a> <span class="c1">-- if the qualifier is not present then treat it the same as the special value 'novalue'</span> </span><span id="L-1438"><a href="#L-1438"><span class="linenos" data-line="1438"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1439"><a href="#L-1439"><span class="linenos" data-line="1439"></span></a> <span class="kr">end</span> </span><span id="L-1440"><a href="#L-1440"><span class="linenos" data-line="1440"></span></a> </span><span id="L-1441"><a href="#L-1441"><span class="linenos" data-line="1441"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-1442"><a href="#L-1442"><span class="linenos" data-line="1442"></span></a><span class="kr">end</span> </span><span id="L-1443"><a href="#L-1443"><span class="linenos" data-line="1443"></span></a> </span><span id="L-1444"><a href="#L-1444"><span class="linenos" data-line="1444"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">rankMatches</span><span class="p">(</span><span class="n">rankPos</span><span class="p">)</span> </span><span id="L-1445"><a href="#L-1445"><span class="linenos" data-line="1445"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">bestRank</span> <span class="kr">then</span> </span><span id="L-1446"><a href="#L-1446"><span class="linenos" data-line="1446"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">ranks</span><span class="p">[</span><span class="n">rankPos</span><span class="p">]</span> <span class="ow">and</span> <span class="n">self</span><span class="p">.</span><span class="n">foundRank</span> <span class="o">>=</span> <span class="n">rankPos</span><span class="p">)</span> </span><span id="L-1447"><a href="#L-1447"><span class="linenos" data-line="1447"></span></a> <span class="kr">else</span> </span><span id="L-1448"><a href="#L-1448"><span class="linenos" data-line="1448"></span></a> <span class="kr">return</span> <span class="n">self</span><span class="p">.</span><span class="n">ranks</span><span class="p">[</span><span class="n">rankPos</span><span class="p">]</span> </span><span id="L-1449"><a href="#L-1449"><span class="linenos" data-line="1449"></span></a> <span class="kr">end</span> </span><span id="L-1450"><a href="#L-1450"><span class="linenos" data-line="1450"></span></a><span class="kr">end</span> </span><span id="L-1451"><a href="#L-1451"><span class="linenos" data-line="1451"></span></a> </span><span id="L-1452"><a href="#L-1452"><span class="linenos" data-line="1452"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">timeMatches</span><span class="p">(</span><span class="n">claim</span><span class="p">)</span> </span><span id="L-1453"><a href="#L-1453"><span class="linenos" data-line="1453"></span></a> <span class="kd">local</span> <span class="n">startTime</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1454"><a href="#L-1454"><span class="linenos" data-line="1454"></span></a> <span class="kd">local</span> <span class="n">startTimeY</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1455"><a href="#L-1455"><span class="linenos" data-line="1455"></span></a> <span class="kd">local</span> <span class="n">startTimeM</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1456"><a href="#L-1456"><span class="linenos" data-line="1456"></span></a> <span class="kd">local</span> <span class="n">startTimeD</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1457"><a href="#L-1457"><span class="linenos" data-line="1457"></span></a> <span class="kd">local</span> <span class="n">endTime</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1458"><a href="#L-1458"><span class="linenos" data-line="1458"></span></a> <span class="kd">local</span> <span class="n">endTimeY</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1459"><a href="#L-1459"><span class="linenos" data-line="1459"></span></a> <span class="kd">local</span> <span class="n">endTimeM</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1460"><a href="#L-1460"><span class="linenos" data-line="1460"></span></a> <span class="kd">local</span> <span class="n">endTimeD</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1461"><a href="#L-1461"><span class="linenos" data-line="1461"></span></a> </span><span id="L-1462"><a href="#L-1462"><span class="linenos" data-line="1462"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">periods</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">and</span> <span class="n">self</span><span class="p">.</span><span class="n">periods</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="ow">and</span> <span class="n">self</span><span class="p">.</span><span class="n">periods</span><span class="p">[</span><span class="mi">3</span><span class="p">]</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="c1">-- any time</span> </span><span id="L-1464"><a href="#L-1464"><span class="linenos" data-line="1464"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1465"><a href="#L-1465"><span class="linenos" data-line="1465"></span></a> <span class="kr">end</span> </span><span id="L-1466"><a href="#L-1466"><span class="linenos" data-line="1466"></span></a> </span><span id="L-1467"><a href="#L-1467"><span class="linenos" data-line="1467"></span></a> <span class="n">startTime</span> <span class="o">=</span> <span class="n">self</span><span class="p">:</span><span class="n">getSingleRawQualifier</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">aliasesP</span><span class="p">.</span><span class="n">startTime</span><span class="p">)</span> </span><span id="L-1468"><a href="#L-1468"><span class="linenos" data-line="1468"></span></a> <span class="kr">if</span> <span class="n">startTime</span> <span class="ow">and</span> <span class="n">startTime</span> <span class="o">~=</span> <span class="s2">""</span> <span class="ow">and</span> <span class="n">startTime</span> <span class="o">~=</span> <span class="s2">" "</span> <span class="kr">then</span> </span><span id="L-1469"><a href="#L-1469"><span class="linenos" data-line="1469"></span></a> <span class="n">startTimeY</span><span class="p">,</span> <span class="n">startTimeM</span><span class="p">,</span> <span class="n">startTimeD</span> <span class="o">=</span> <span class="n">parseDate</span><span class="p">(</span><span class="n">startTime</span><span class="p">)</span> </span><span id="L-1470"><a href="#L-1470"><span class="linenos" data-line="1470"></span></a> <span class="kr">end</span> </span><span id="L-1471"><a href="#L-1471"><span class="linenos" data-line="1471"></span></a> </span><span id="L-1472"><a href="#L-1472"><span class="linenos" data-line="1472"></span></a> <span class="n">endTime</span> <span class="o">=</span> <span class="n">self</span><span class="p">:</span><span class="n">getSingleRawQualifier</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">aliasesP</span><span class="p">.</span><span class="n">endTime</span><span class="p">)</span> </span><span id="L-1473"><a href="#L-1473"><span class="linenos" data-line="1473"></span></a> <span class="kr">if</span> <span class="n">endTime</span> <span class="ow">and</span> <span class="n">endTime</span> <span class="o">~=</span> <span class="s2">""</span> <span class="ow">and</span> <span class="n">endTime</span> <span class="o">~=</span> <span class="s2">" "</span> <span class="kr">then</span> </span><span id="L-1474"><a href="#L-1474"><span class="linenos" data-line="1474"></span></a> <span class="n">endTimeY</span><span class="p">,</span> <span class="n">endTimeM</span><span class="p">,</span> <span class="n">endTimeD</span> <span class="o">=</span> <span class="n">parseDate</span><span class="p">(</span><span class="n">endTime</span><span class="p">)</span> </span><span id="L-1475"><a href="#L-1475"><span class="linenos" data-line="1475"></span></a> <span class="kr">end</span> </span><span id="L-1476"><a href="#L-1476"><span class="linenos" data-line="1476"></span></a> </span><span id="L-1477"><a href="#L-1477"><span class="linenos" data-line="1477"></span></a> <span class="kr">if</span> <span class="n">startTimeY</span> <span class="o">~=</span> <span class="kc">nil</span> <span class="ow">and</span> <span class="n">endTimeY</span> <span class="o">~=</span> <span class="kc">nil</span> <span class="ow">and</span> <span class="n">datePrecedesDate</span><span class="p">(</span><span class="n">endTimeY</span><span class="p">,</span> <span class="n">endTimeM</span><span class="p">,</span> <span class="n">endTimeD</span><span class="p">,</span> <span class="n">startTimeY</span><span class="p">,</span> <span class="n">startTimeM</span><span class="p">,</span> <span class="n">startTimeD</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1478"><a href="#L-1478"><span class="linenos" data-line="1478"></span></a> <span class="c1">-- invalidate end time if it precedes start time</span> </span><span id="L-1479"><a href="#L-1479"><span class="linenos" data-line="1479"></span></a> <span class="n">endTimeY</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1480"><a href="#L-1480"><span class="linenos" data-line="1480"></span></a> <span class="n">endTimeM</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1481"><a href="#L-1481"><span class="linenos" data-line="1481"></span></a> <span class="n">endTimeD</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1482"><a href="#L-1482"><span class="linenos" data-line="1482"></span></a> <span class="kr">end</span> </span><span id="L-1483"><a href="#L-1483"><span class="linenos" data-line="1483"></span></a> </span><span id="L-1484"><a href="#L-1484"><span class="linenos" data-line="1484"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">periods</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1485"><a href="#L-1485"><span class="linenos" data-line="1485"></span></a> <span class="c1">-- future</span> </span><span id="L-1486"><a href="#L-1486"><span class="linenos" data-line="1486"></span></a> <span class="kr">if</span> <span class="n">startTimeY</span> <span class="ow">and</span> <span class="n">datePrecedesDate</span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">atDate</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">self</span><span class="p">.</span><span class="n">atDate</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">self</span><span class="p">.</span><span class="n">atDate</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">startTimeY</span><span class="p">,</span> <span class="n">startTimeM</span><span class="p">,</span> <span class="n">startTimeD</span><span class="p">)</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="kc">true</span> </span><span id="L-1488"><a href="#L-1488"><span class="linenos" data-line="1488"></span></a> <span class="kr">end</span> </span><span id="L-1489"><a href="#L-1489"><span class="linenos" data-line="1489"></span></a> <span class="kr">end</span> </span><span id="L-1490"><a href="#L-1490"><span class="linenos" data-line="1490"></span></a> </span><span id="L-1491"><a href="#L-1491"><span class="linenos" data-line="1491"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">periods</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1492"><a href="#L-1492"><span class="linenos" data-line="1492"></span></a> <span class="c1">-- current</span> </span><span id="L-1493"><a href="#L-1493"><span class="linenos" data-line="1493"></span></a> <span class="kr">if</span> <span class="p">(</span><span class="n">startTimeY</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">datePrecedesDate</span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">atDate</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">self</span><span class="p">.</span><span class="n">atDate</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">self</span><span class="p">.</span><span class="n">atDate</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">startTimeY</span><span class="p">,</span> <span class="n">startTimeM</span><span class="p">,</span> <span class="n">startTimeD</span><span class="p">))</span> <span class="ow">and</span> </span><span id="L-1494"><a href="#L-1494"><span class="linenos" data-line="1494"></span></a> <span class="p">(</span><span class="n">endTimeY</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="n">datePrecedesDate</span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">atDate</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">self</span><span class="p">.</span><span class="n">atDate</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">self</span><span class="p">.</span><span class="n">atDate</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">endTimeY</span><span class="p">,</span> <span class="n">endTimeM</span><span class="p">,</span> <span class="n">endTimeD</span><span class="p">))</span> <span class="kr">then</span> </span><span id="L-1495"><a href="#L-1495"><span class="linenos" data-line="1495"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1496"><a href="#L-1496"><span class="linenos" data-line="1496"></span></a> <span class="kr">end</span> </span><span id="L-1497"><a href="#L-1497"><span class="linenos" data-line="1497"></span></a> <span class="kr">end</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="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">periods</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1500"><a href="#L-1500"><span class="linenos" data-line="1500"></span></a> <span class="c1">-- former</span> </span><span id="L-1501"><a href="#L-1501"><span class="linenos" data-line="1501"></span></a> <span class="kr">if</span> <span class="n">endTimeY</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">datePrecedesDate</span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">atDate</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">self</span><span class="p">.</span><span class="n">atDate</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">self</span><span class="p">.</span><span class="n">atDate</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">endTimeY</span><span class="p">,</span> <span class="n">endTimeM</span><span class="p">,</span> <span class="n">endTimeD</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="kr">return</span> <span class="kc">true</span> </span><span id="L-1503"><a href="#L-1503"><span class="linenos" data-line="1503"></span></a> <span class="kr">end</span> </span><span id="L-1504"><a href="#L-1504"><span class="linenos" data-line="1504"></span></a> <span class="kr">end</span> </span><span id="L-1505"><a href="#L-1505"><span class="linenos" data-line="1505"></span></a> </span><span id="L-1506"><a href="#L-1506"><span class="linenos" data-line="1506"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-1507"><a href="#L-1507"><span class="linenos" data-line="1507"></span></a><span class="kr">end</span> </span><span id="L-1508"><a href="#L-1508"><span class="linenos" data-line="1508"></span></a> </span><span id="L-1509"><a href="#L-1509"><span class="linenos" data-line="1509"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">processFlag</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span> </span><span id="L-1510"><a href="#L-1510"><span class="linenos" data-line="1510"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">flag</span> <span class="kr">then</span> </span><span id="L-1511"><a href="#L-1511"><span class="linenos" data-line="1511"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-1512"><a href="#L-1512"><span class="linenos" data-line="1512"></span></a> <span class="kr">end</span> </span><span id="L-1513"><a href="#L-1513"><span class="linenos" data-line="1513"></span></a> </span><span id="L-1514"><a href="#L-1514"><span class="linenos" data-line="1514"></span></a> <span class="kr">if</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">linked</span> <span class="kr">then</span> </span><span id="L-1515"><a href="#L-1515"><span class="linenos" data-line="1515"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">curState</span><span class="p">.</span><span class="n">linked</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1516"><a href="#L-1516"><span class="linenos" data-line="1516"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1517"><a href="#L-1517"><span class="linenos" data-line="1517"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">raw</span> <span class="kr">then</span> </span><span id="L-1518"><a href="#L-1518"><span class="linenos" data-line="1518"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">curState</span><span class="p">.</span><span class="n">rawValue</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1519"><a href="#L-1519"><span class="linenos" data-line="1519"></span></a> </span><span id="L-1520"><a href="#L-1520"><span class="linenos" data-line="1520"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">curState</span> <span class="o">==</span> <span class="n">self</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">reference</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1521"><a href="#L-1521"><span class="linenos" data-line="1521"></span></a> <span class="c1">-- raw reference values end with periods and require a separator (other than none)</span> </span><span id="L-1522"><a href="#L-1522"><span class="linenos" data-line="1522"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">separators</span><span class="p">[</span><span class="s2">"sep%r"</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">" "</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><span id="L-1525"><a href="#L-1525"><span class="linenos" data-line="1525"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1526"><a href="#L-1526"><span class="linenos" data-line="1526"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">short</span> <span class="kr">then</span> </span><span id="L-1527"><a href="#L-1527"><span class="linenos" data-line="1527"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">curState</span><span class="p">.</span><span class="n">shortName</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1528"><a href="#L-1528"><span class="linenos" data-line="1528"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1529"><a href="#L-1529"><span class="linenos" data-line="1529"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">multilanguage</span> <span class="kr">then</span> </span><span id="L-1530"><a href="#L-1530"><span class="linenos" data-line="1530"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">curState</span><span class="p">.</span><span class="n">anyLanguage</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1531"><a href="#L-1531"><span class="linenos" data-line="1531"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1532"><a href="#L-1532"><span class="linenos" data-line="1532"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">unit</span> <span class="kr">then</span> </span><span id="L-1533"><a href="#L-1533"><span class="linenos" data-line="1533"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">curState</span><span class="p">.</span><span class="n">unitOnly</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1534"><a href="#L-1534"><span class="linenos" data-line="1534"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1535"><a href="#L-1535"><span class="linenos" data-line="1535"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">mdy</span> <span class="kr">then</span> </span><span id="L-1536"><a href="#L-1536"><span class="linenos" data-line="1536"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">mdyDate</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1537"><a href="#L-1537"><span class="linenos" data-line="1537"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1538"><a href="#L-1538"><span class="linenos" data-line="1538"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">single</span> <span class="kr">then</span> </span><span id="L-1539"><a href="#L-1539"><span class="linenos" data-line="1539"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">singleClaim</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1540"><a href="#L-1540"><span class="linenos" data-line="1540"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1541"><a href="#L-1541"><span class="linenos" data-line="1541"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">sourced</span> <span class="kr">then</span> </span><span id="L-1542"><a href="#L-1542"><span class="linenos" data-line="1542"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">sourcedOnly</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1543"><a href="#L-1543"><span class="linenos" data-line="1543"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1544"><a href="#L-1544"><span class="linenos" data-line="1544"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">edit</span> <span class="kr">then</span> </span><span id="L-1545"><a href="#L-1545"><span class="linenos" data-line="1545"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">editable</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1546"><a href="#L-1546"><span class="linenos" data-line="1546"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1547"><a href="#L-1547"><span class="linenos" data-line="1547"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">editAtEnd</span> <span class="kr">then</span> </span><span id="L-1548"><a href="#L-1548"><span class="linenos" data-line="1548"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">editable</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1549"><a href="#L-1549"><span class="linenos" data-line="1549"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">editAtEnd</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1550"><a href="#L-1550"><span class="linenos" data-line="1550"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1551"><a href="#L-1551"><span class="linenos" data-line="1551"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">best</span> <span class="ow">or</span> <span class="n">flag</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">'^'</span><span class="o">..</span><span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">preferred</span><span class="o">..</span><span class="s1">'[+-]?$'</span><span class="p">)</span> <span class="ow">or</span> <span class="n">flag</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">'^'</span><span class="o">..</span><span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">normal</span><span class="o">..</span><span class="s1">'[+-]?$'</span><span class="p">)</span> <span class="ow">or</span> <span class="n">flag</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">'^'</span><span class="o">..</span><span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">deprecated</span><span class="o">..</span><span class="s1">'[+-]?$'</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-1552"><a href="#L-1552"><span class="linenos" data-line="1552"></span></a> <span class="n">self</span><span class="p">:</span><span class="n">setRank</span><span class="p">(</span><span class="n">flag</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">return</span> <span class="kc">true</span> </span><span id="L-1554"><a href="#L-1554"><span class="linenos" data-line="1554"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">future</span> <span class="ow">or</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">current</span> <span class="ow">or</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">former</span> <span class="kr">then</span> </span><span id="L-1555"><a href="#L-1555"><span class="linenos" data-line="1555"></span></a> <span class="n">self</span><span class="p">:</span><span class="n">setPeriod</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span> </span><span id="L-1556"><a href="#L-1556"><span class="linenos" data-line="1556"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1557"><a href="#L-1557"><span class="linenos" data-line="1557"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-1558"><a href="#L-1558"><span class="linenos" data-line="1558"></span></a> <span class="c1">-- ignore empty flags and carry on</span> </span><span id="L-1559"><a href="#L-1559"><span class="linenos" data-line="1559"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1560"><a href="#L-1560"><span class="linenos" data-line="1560"></span></a> <span class="kr">else</span> </span><span id="L-1561"><a href="#L-1561"><span class="linenos" data-line="1561"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-1562"><a href="#L-1562"><span class="linenos" data-line="1562"></span></a> <span class="kr">end</span> </span><span id="L-1563"><a href="#L-1563"><span class="linenos" data-line="1563"></span></a><span class="kr">end</span> </span><span id="L-1564"><a href="#L-1564"><span class="linenos" data-line="1564"></span></a> </span><span id="L-1565"><a href="#L-1565"><span class="linenos" data-line="1565"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">processFlagOrCommand</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span> </span><span id="L-1566"><a href="#L-1566"><span class="linenos" data-line="1566"></span></a> <span class="kd">local</span> <span class="n">param</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-1567"><a href="#L-1567"><span class="linenos" data-line="1567"></span></a> </span><span id="L-1568"><a href="#L-1568"><span class="linenos" data-line="1568"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">flag</span> <span class="kr">then</span> </span><span id="L-1569"><a href="#L-1569"><span class="linenos" data-line="1569"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-1570"><a href="#L-1570"><span class="linenos" data-line="1570"></span></a> <span class="kr">end</span> </span><span id="L-1571"><a href="#L-1571"><span class="linenos" data-line="1571"></span></a> </span><span id="L-1572"><a href="#L-1572"><span class="linenos" data-line="1572"></span></a> <span class="kr">if</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">claimCommands</span><span class="p">.</span><span class="n">property</span> <span class="ow">or</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">claimCommands</span><span class="p">.</span><span class="n">properties</span> <span class="kr">then</span> </span><span id="L-1573"><a href="#L-1573"><span class="linenos" data-line="1573"></span></a> <span class="n">param</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">property</span> </span><span id="L-1574"><a href="#L-1574"><span class="linenos" data-line="1574"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">claimCommands</span><span class="p">.</span><span class="n">qualifier</span> <span class="ow">or</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">claimCommands</span><span class="p">.</span><span class="n">qualifiers</span> <span class="kr">then</span> </span><span id="L-1575"><a href="#L-1575"><span class="linenos" data-line="1575"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-1576"><a href="#L-1576"><span class="linenos" data-line="1576"></span></a> <span class="n">param</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span> <span class="o">..</span> <span class="n">self</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> </span><span id="L-1577"><a href="#L-1577"><span class="linenos" data-line="1577"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">separators</span><span class="p">[</span><span class="s2">"sep"</span><span class="o">..</span><span class="n">param</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="n">copyTable</span><span class="p">(</span><span class="n">defaultSeparators</span><span class="p">[</span><span class="s2">"sep%q</span><span class="se">\\</span><span class="s2">d"</span><span class="p">])}</span> </span><span id="L-1578"><a href="#L-1578"><span class="linenos" data-line="1578"></span></a> <span class="kr">elseif</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">claimCommands</span><span class="p">.</span><span class="n">reference</span> <span class="ow">or</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">claimCommands</span><span class="p">.</span><span class="n">references</span> <span class="kr">then</span> </span><span id="L-1579"><a href="#L-1579"><span class="linenos" data-line="1579"></span></a> <span class="n">param</span> <span class="o">=</span> <span class="n">parameters</span><span class="p">.</span><span class="n">reference</span> </span><span id="L-1580"><a href="#L-1580"><span class="linenos" data-line="1580"></span></a> <span class="kr">else</span> </span><span id="L-1581"><a href="#L-1581"><span class="linenos" data-line="1581"></span></a> <span class="kr">return</span> <span class="n">self</span><span class="p">:</span><span class="n">processFlag</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span> </span><span id="L-1582"><a href="#L-1582"><span class="linenos" data-line="1582"></span></a> <span class="kr">end</span> </span><span id="L-1583"><a href="#L-1583"><span class="linenos" data-line="1583"></span></a> </span><span id="L-1584"><a href="#L-1584"><span class="linenos" data-line="1584"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">param</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1585"><a href="#L-1585"><span class="linenos" data-line="1585"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-1586"><a href="#L-1586"><span class="linenos" data-line="1586"></span></a> <span class="kr">end</span> </span><span id="L-1587"><a href="#L-1587"><span class="linenos" data-line="1587"></span></a> </span><span id="L-1588"><a href="#L-1588"><span class="linenos" data-line="1588"></span></a> <span class="c1">-- create a new state for each command</span> </span><span id="L-1589"><a href="#L-1589"><span class="linenos" data-line="1589"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">param</span><span class="p">]</span> <span class="o">=</span> <span class="n">State</span><span class="p">:</span><span class="n">new</span><span class="p">(</span><span class="n">self</span><span class="p">,</span> <span class="n">param</span><span class="p">)</span> </span><span id="L-1590"><a href="#L-1590"><span class="linenos" data-line="1590"></span></a> </span><span id="L-1591"><a href="#L-1591"><span class="linenos" data-line="1591"></span></a> <span class="c1">-- use "%x" as the general parameter name</span> </span><span id="L-1592"><a href="#L-1592"><span class="linenos" data-line="1592"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">param</span><span class="p">].</span><span class="n">parsedFormat</span> <span class="o">=</span> <span class="n">parseFormat</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">general</span><span class="p">)</span> <span class="c1">-- will be overwritten for param=="%p"</span> </span><span id="L-1593"><a href="#L-1593"><span class="linenos" data-line="1593"></span></a> </span><span id="L-1594"><a href="#L-1594"><span class="linenos" data-line="1594"></span></a> <span class="c1">-- set the separator</span> </span><span id="L-1595"><a href="#L-1595"><span class="linenos" data-line="1595"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">param</span><span class="p">].</span><span class="n">separator</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">separators</span><span class="p">[</span><span class="s2">"sep"</span><span class="o">..</span><span class="n">param</span><span class="p">]</span> <span class="c1">-- will be nil for param=="%p", which will be set separately</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">if</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">claimCommands</span><span class="p">.</span><span class="n">property</span> <span class="ow">or</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">claimCommands</span><span class="p">.</span><span class="n">qualifier</span> <span class="ow">or</span> <span class="n">flag</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">claimCommands</span><span class="p">.</span><span class="n">reference</span> <span class="kr">then</span> </span><span id="L-1598"><a href="#L-1598"><span class="linenos" data-line="1598"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">param</span><span class="p">].</span><span class="n">singleValue</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1599"><a href="#L-1599"><span class="linenos" data-line="1599"></span></a> <span class="kr">end</span> </span><span id="L-1600"><a href="#L-1600"><span class="linenos" data-line="1600"></span></a> </span><span id="L-1601"><a href="#L-1601"><span class="linenos" data-line="1601"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">curState</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">param</span><span class="p">]</span> </span><span id="L-1602"><a href="#L-1602"><span class="linenos" data-line="1602"></span></a> </span><span id="L-1603"><a href="#L-1603"><span class="linenos" data-line="1603"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-1604"><a href="#L-1604"><span class="linenos" data-line="1604"></span></a><span class="kr">end</span> </span><span id="L-1605"><a href="#L-1605"><span class="linenos" data-line="1605"></span></a> </span><span id="L-1606"><a href="#L-1606"><span class="linenos" data-line="1606"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">processSeparators</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-1607"><a href="#L-1607"><span class="linenos" data-line="1607"></span></a> <span class="kd">local</span> <span class="n">sep</span> </span><span id="L-1608"><a href="#L-1608"><span class="linenos" data-line="1608"></span></a> </span><span id="L-1609"><a href="#L-1609"><span class="linenos" data-line="1609"></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">pairs</span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">separators</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1610"><a href="#L-1610"><span class="linenos" data-line="1610"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1611"><a href="#L-1611"><span class="linenos" data-line="1611"></span></a> <span class="n">sep</span> <span class="o">=</span> <span class="n">replaceSpecialChars</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> </span><span id="L-1612"><a href="#L-1612"><span class="linenos" data-line="1612"></span></a> </span><span id="L-1613"><a href="#L-1613"><span class="linenos" data-line="1613"></span></a> <span class="kr">if</span> <span class="n">sep</span> <span class="o">~=</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-1614"><a href="#L-1614"><span class="linenos" data-line="1614"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">separators</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="o">=</span> <span class="p">{</span><span class="n">sep</span><span class="p">}</span> </span><span id="L-1615"><a href="#L-1615"><span class="linenos" data-line="1615"></span></a> <span class="kr">else</span> </span><span id="L-1616"><a href="#L-1616"><span class="linenos" data-line="1616"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">separators</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="o">=</span> <span class="kc">nil</span> </span><span id="L-1617"><a href="#L-1617"><span class="linenos" data-line="1617"></span></a> <span class="kr">end</span> </span><span id="L-1618"><a href="#L-1618"><span class="linenos" data-line="1618"></span></a> <span class="kr">end</span> </span><span id="L-1619"><a href="#L-1619"><span class="linenos" data-line="1619"></span></a> <span class="kr">end</span> </span><span id="L-1620"><a href="#L-1620"><span class="linenos" data-line="1620"></span></a><span class="kr">end</span> </span><span id="L-1621"><a href="#L-1621"><span class="linenos" data-line="1621"></span></a> </span><span id="L-1622"><a href="#L-1622"><span class="linenos" data-line="1622"></span></a><span class="kr">function</span> <span class="nc">Config</span><span class="p">:</span><span class="nf">setFormatAndSeparators</span><span class="p">(</span><span class="n">state</span><span class="p">,</span> <span class="n">parsedFormat</span><span class="p">)</span> </span><span id="L-1623"><a href="#L-1623"><span class="linenos" data-line="1623"></span></a> <span class="n">state</span><span class="p">.</span><span class="n">parsedFormat</span> <span class="o">=</span> <span class="n">parsedFormat</span> </span><span id="L-1624"><a href="#L-1624"><span class="linenos" data-line="1624"></span></a> <span class="n">state</span><span class="p">.</span><span class="n">separator</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">separators</span><span class="p">[</span><span class="s2">"sep"</span><span class="p">]</span> </span><span id="L-1625"><a href="#L-1625"><span class="linenos" data-line="1625"></span></a> <span class="n">state</span><span class="p">.</span><span class="n">movSeparator</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">separators</span><span class="p">[</span><span class="s2">"sep"</span><span class="o">..</span><span class="n">parameters</span><span class="p">.</span><span class="n">separator</span><span class="p">]</span> </span><span id="L-1626"><a href="#L-1626"><span class="linenos" data-line="1626"></span></a> <span class="n">state</span><span class="p">.</span><span class="n">puncMark</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">separators</span><span class="p">[</span><span class="s2">"punc"</span><span class="p">]</span> </span><span id="L-1627"><a href="#L-1627"><span class="linenos" data-line="1627"></span></a><span class="kr">end</span> </span><span id="L-1628"><a href="#L-1628"><span class="linenos" data-line="1628"></span></a> </span><span id="L-1629"><a href="#L-1629"><span class="linenos" data-line="1629"></span></a><span class="c1">-- determines if a claim has references by prefetching them from the claim using getReferences,</span> </span><span id="L-1630"><a href="#L-1630"><span class="linenos" data-line="1630"></span></a><span class="c1">-- which applies some filtering that determines if a reference is actually returned,</span> </span><span id="L-1631"><a href="#L-1631"><span class="linenos" data-line="1631"></span></a><span class="c1">-- and caches the references for later use</span> </span><span id="L-1632"><a href="#L-1632"><span class="linenos" data-line="1632"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">isSourced</span><span class="p">(</span><span class="n">claim</span><span class="p">)</span> </span><span id="L-1633"><a href="#L-1633"><span class="linenos" data-line="1633"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">prefetchedRefs</span> <span class="o">=</span> <span class="n">self</span><span class="p">:</span><span class="n">getReferences</span><span class="p">(</span><span class="n">claim</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">return</span> <span class="p">(</span><span class="o">#</span><span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">prefetchedRefs</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> </span><span id="L-1635"><a href="#L-1635"><span class="linenos" data-line="1635"></span></a><span class="kr">end</span> </span><span id="L-1636"><a href="#L-1636"><span class="linenos" data-line="1636"></span></a> </span><span id="L-1637"><a href="#L-1637"><span class="linenos" data-line="1637"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">resetCaches</span><span class="p">()</span> </span><span id="L-1638"><a href="#L-1638"><span class="linenos" data-line="1638"></span></a> <span class="c1">-- any prefetched references of the previous claim must not be used</span> </span><span id="L-1639"><a href="#L-1639"><span class="linenos" data-line="1639"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">prefetchedRefs</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1640"><a href="#L-1640"><span class="linenos" data-line="1640"></span></a><span class="kr">end</span> </span><span id="L-1641"><a href="#L-1641"><span class="linenos" data-line="1641"></span></a> </span><span id="L-1642"><a href="#L-1642"><span class="linenos" data-line="1642"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">claimMatches</span><span class="p">(</span><span class="n">claim</span><span class="p">)</span> </span><span id="L-1643"><a href="#L-1643"><span class="linenos" data-line="1643"></span></a> <span class="kd">local</span> <span class="n">matches</span><span class="p">,</span> <span class="n">rankPos</span> </span><span id="L-1644"><a href="#L-1644"><span class="linenos" data-line="1644"></span></a> </span><span id="L-1645"><a href="#L-1645"><span class="linenos" data-line="1645"></span></a> <span class="c1">-- first of all, reset any cached values used for the previous claim</span> </span><span id="L-1646"><a href="#L-1646"><span class="linenos" data-line="1646"></span></a> <span class="n">self</span><span class="p">:</span><span class="n">resetCaches</span><span class="p">()</span> </span><span id="L-1647"><a href="#L-1647"><span class="linenos" data-line="1647"></span></a> </span><span id="L-1648"><a href="#L-1648"><span class="linenos" data-line="1648"></span></a> <span class="c1">-- if a property value was given, check if it matches the claim's property value</span> </span><span id="L-1649"><a href="#L-1649"><span class="linenos" data-line="1649"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">propertyValue</span> <span class="kr">then</span> </span><span id="L-1650"><a href="#L-1650"><span class="linenos" data-line="1650"></span></a> <span class="n">matches</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">:</span><span class="n">snakEqualsValue</span><span class="p">(</span><span class="n">claim</span><span class="p">.</span><span class="n">mainsnak</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">propertyValue</span><span class="p">)</span> </span><span id="L-1651"><a href="#L-1651"><span class="linenos" data-line="1651"></span></a> <span class="kr">else</span> </span><span id="L-1652"><a href="#L-1652"><span class="linenos" data-line="1652"></span></a> <span class="n">matches</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1653"><a href="#L-1653"><span class="linenos" data-line="1653"></span></a> <span class="kr">end</span> </span><span id="L-1654"><a href="#L-1654"><span class="linenos" data-line="1654"></span></a> </span><span id="L-1655"><a href="#L-1655"><span class="linenos" data-line="1655"></span></a> <span class="c1">-- if any qualifier values were given, check if each matches one of the claim's qualifier values</span> </span><span id="L-1656"><a href="#L-1656"><span class="linenos" data-line="1656"></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">pairs</span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">qualifierIDsAndValues</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1657"><a href="#L-1657"><span class="linenos" data-line="1657"></span></a> <span class="n">matches</span> <span class="o">=</span> <span class="p">(</span><span class="n">matches</span> <span class="ow">and</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">:</span><span class="n">qualifierMatches</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">v</span><span class="p">))</span> </span><span id="L-1658"><a href="#L-1658"><span class="linenos" data-line="1658"></span></a> <span class="kr">end</span> </span><span id="L-1659"><a href="#L-1659"><span class="linenos" data-line="1659"></span></a> </span><span id="L-1660"><a href="#L-1660"><span class="linenos" data-line="1660"></span></a> <span class="c1">-- check if the claim's rank and time period match</span> </span><span id="L-1661"><a href="#L-1661"><span class="linenos" data-line="1661"></span></a> <span class="n">rankPos</span> <span class="o">=</span> <span class="n">rankTable</span><span class="p">[</span><span class="n">claim</span><span class="p">.</span><span class="n">rank</span><span class="p">]</span> <span class="ow">or</span> <span class="mi">4</span> </span><span id="L-1662"><a href="#L-1662"><span class="linenos" data-line="1662"></span></a> <span class="n">matches</span> <span class="o">=</span> <span class="p">(</span><span class="n">matches</span> <span class="ow">and</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">:</span><span class="n">rankMatches</span><span class="p">(</span><span class="n">rankPos</span><span class="p">)</span> <span class="ow">and</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">:</span><span class="n">timeMatches</span><span class="p">(</span><span class="n">claim</span><span class="p">))</span> </span><span id="L-1663"><a href="#L-1663"><span class="linenos" data-line="1663"></span></a> </span><span id="L-1664"><a href="#L-1664"><span class="linenos" data-line="1664"></span></a> <span class="c1">-- if only claims with references must be returned, check if this one has any</span> </span><span id="L-1665"><a href="#L-1665"><span class="linenos" data-line="1665"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">sourcedOnly</span> <span class="kr">then</span> </span><span id="L-1666"><a href="#L-1666"><span class="linenos" data-line="1666"></span></a> <span class="n">matches</span> <span class="o">=</span> <span class="p">(</span><span class="n">matches</span> <span class="ow">and</span> <span class="n">self</span><span class="p">:</span><span class="n">isSourced</span><span class="p">(</span><span class="n">claim</span><span class="p">))</span> <span class="c1">-- prefetches and caches references</span> </span><span id="L-1667"><a href="#L-1667"><span class="linenos" data-line="1667"></span></a> <span class="kr">end</span> </span><span id="L-1668"><a href="#L-1668"><span class="linenos" data-line="1668"></span></a> </span><span id="L-1669"><a href="#L-1669"><span class="linenos" data-line="1669"></span></a> <span class="kr">return</span> <span class="n">matches</span><span class="p">,</span> <span class="n">rankPos</span> </span><span id="L-1670"><a href="#L-1670"><span class="linenos" data-line="1670"></span></a><span class="kr">end</span> </span><span id="L-1671"><a href="#L-1671"><span class="linenos" data-line="1671"></span></a> </span><span id="L-1672"><a href="#L-1672"><span class="linenos" data-line="1672"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">out</span><span class="p">()</span> </span><span id="L-1673"><a href="#L-1673"><span class="linenos" data-line="1673"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="c1">-- collection of arrays with value objects</span> </span><span id="L-1674"><a href="#L-1674"><span class="linenos" data-line="1674"></span></a> <span class="kd">local</span> <span class="n">valuesArray</span> <span class="c1">-- array with value objects</span> </span><span id="L-1675"><a href="#L-1675"><span class="linenos" data-line="1675"></span></a> <span class="kd">local</span> <span class="n">sep</span> <span class="o">=</span> <span class="kc">nil</span> <span class="c1">-- value object</span> </span><span id="L-1676"><a href="#L-1676"><span class="linenos" data-line="1676"></span></a> <span class="kd">local</span> <span class="n">out</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1">-- array with value objects</span> </span><span id="L-1677"><a href="#L-1677"><span class="linenos" data-line="1677"></span></a> </span><span id="L-1678"><a href="#L-1678"><span class="linenos" data-line="1678"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">walk</span><span class="p">(</span><span class="n">formatTable</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> </span><span id="L-1679"><a href="#L-1679"><span class="linenos" data-line="1679"></span></a> <span class="kd">local</span> <span class="n">valuesArray</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1">-- array with value objects</span> </span><span id="L-1680"><a href="#L-1680"><span class="linenos" data-line="1680"></span></a> </span><span id="L-1681"><a href="#L-1681"><span class="linenos" data-line="1681"></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">pairs</span><span class="p">(</span><span class="n">formatTable</span><span class="p">.</span><span class="n">req</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1682"><a href="#L-1682"><span class="linenos" data-line="1682"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="ow">or</span> <span class="ow">not</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="kr">then</span> </span><span id="L-1683"><a href="#L-1683"><span class="linenos" data-line="1683"></span></a> <span class="c1">-- we've got no result for a parameter that is required on this level,</span> </span><span id="L-1684"><a href="#L-1684"><span class="linenos" data-line="1684"></span></a> <span class="c1">-- so skip this level (and its children) by returning an empty result</span> </span><span id="L-1685"><a href="#L-1685"><span class="linenos" data-line="1685"></span></a> <span class="kr">return</span> <span class="p">{}</span> </span><span id="L-1686"><a href="#L-1686"><span class="linenos" data-line="1686"></span></a> <span class="kr">end</span> </span><span id="L-1687"><a href="#L-1687"><span class="linenos" data-line="1687"></span></a> <span class="kr">end</span> </span><span id="L-1688"><a href="#L-1688"><span class="linenos" data-line="1688"></span></a> </span><span id="L-1689"><a href="#L-1689"><span class="linenos" data-line="1689"></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">formatTable</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1690"><a href="#L-1690"><span class="linenos" data-line="1690"></span></a> <span class="kr">if</span> <span class="n">v</span><span class="p">.</span><span class="n">param</span> <span class="kr">then</span> </span><span id="L-1691"><a href="#L-1691"><span class="linenos" data-line="1691"></span></a> <span class="n">valuesArray</span> <span class="o">=</span> <span class="n">mergeArrays</span><span class="p">(</span><span class="n">valuesArray</span><span class="p">,</span> <span class="n">result</span><span class="p">[</span><span class="n">v</span><span class="p">.</span><span class="n">str</span><span class="p">])</span> </span><span id="L-1692"><a href="#L-1692"><span class="linenos" data-line="1692"></span></a> <span class="kr">elseif</span> <span class="n">v</span><span class="p">.</span><span class="n">str</span> <span class="o">~=</span> <span class="s2">""</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="n">valuesArray</span><span class="p">[</span><span class="o">#</span><span class="n">valuesArray</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">v</span><span class="p">.</span><span class="n">str</span><span class="p">}</span> </span><span id="L-1694"><a href="#L-1694"><span class="linenos" data-line="1694"></span></a> <span class="kr">end</span> </span><span id="L-1695"><a href="#L-1695"><span class="linenos" data-line="1695"></span></a> </span><span id="L-1696"><a href="#L-1696"><span class="linenos" data-line="1696"></span></a> <span class="kr">if</span> <span class="n">v</span><span class="p">.</span><span class="n">child</span> <span class="kr">then</span> </span><span id="L-1697"><a href="#L-1697"><span class="linenos" data-line="1697"></span></a> <span class="n">valuesArray</span> <span class="o">=</span> <span class="n">mergeArrays</span><span class="p">(</span><span class="n">valuesArray</span><span class="p">,</span> <span class="n">walk</span><span class="p">(</span><span class="n">v</span><span class="p">.</span><span class="n">child</span><span class="p">,</span> <span class="n">result</span><span class="p">))</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="kr">end</span> </span><span id="L-1700"><a href="#L-1700"><span class="linenos" data-line="1700"></span></a> </span><span id="L-1701"><a href="#L-1701"><span class="linenos" data-line="1701"></span></a> <span class="kr">return</span> <span class="n">valuesArray</span> </span><span id="L-1702"><a href="#L-1702"><span class="linenos" data-line="1702"></span></a> <span class="kr">end</span> </span><span id="L-1703"><a href="#L-1703"><span class="linenos" data-line="1703"></span></a> </span><span id="L-1704"><a href="#L-1704"><span class="linenos" data-line="1704"></span></a> <span class="c1">-- iterate through the results from back to front, so that we know when to add separators</span> </span><span id="L-1705"><a href="#L-1705"><span class="linenos" data-line="1705"></span></a> <span class="kr">for</span> <span class="n">i</span> <span class="o">=</span> <span class="o">#</span><span class="n">self</span><span class="p">.</span><span class="n">results</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span> <span class="kr">do</span> </span><span id="L-1706"><a href="#L-1706"><span class="linenos" data-line="1706"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">results</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> </span><span id="L-1707"><a href="#L-1707"><span class="linenos" data-line="1707"></span></a> </span><span id="L-1708"><a href="#L-1708"><span class="linenos" data-line="1708"></span></a> <span class="c1">-- if there is already some output, then add the separators</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="o">#</span><span class="n">out</span> <span class="o">></span> <span class="mi">0</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="n">sep</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">separator</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="c1">-- fixed separator</span> </span><span id="L-1711"><a href="#L-1711"><span class="linenos" data-line="1711"></span></a> <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="o">=</span> <span class="p">{</span><span class="n">self</span><span class="p">.</span><span class="n">movSeparator</span><span class="p">[</span><span class="mi">1</span><span class="p">]}</span> <span class="c1">-- movable separator</span> </span><span id="L-1712"><a href="#L-1712"><span class="linenos" data-line="1712"></span></a> <span class="kr">else</span> </span><span id="L-1713"><a href="#L-1713"><span class="linenos" data-line="1713"></span></a> <span class="n">sep</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1714"><a href="#L-1714"><span class="linenos" data-line="1714"></span></a> <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="o">=</span> <span class="p">{</span><span class="n">self</span><span class="p">.</span><span class="n">puncMark</span><span class="p">[</span><span class="mi">1</span><span class="p">]}</span> <span class="c1">-- optional punctuation mark</span> </span><span id="L-1715"><a href="#L-1715"><span class="linenos" data-line="1715"></span></a> <span class="kr">end</span> </span><span id="L-1716"><a href="#L-1716"><span class="linenos" data-line="1716"></span></a> </span><span id="L-1717"><a href="#L-1717"><span class="linenos" data-line="1717"></span></a> <span class="n">valuesArray</span> <span class="o">=</span> <span class="n">walk</span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">parsedFormat</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> </span><span id="L-1718"><a href="#L-1718"><span class="linenos" data-line="1718"></span></a> </span><span id="L-1719"><a href="#L-1719"><span class="linenos" data-line="1719"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">valuesArray</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1720"><a href="#L-1720"><span class="linenos" data-line="1720"></span></a> <span class="kr">if</span> <span class="n">sep</span> <span class="kr">then</span> </span><span id="L-1721"><a href="#L-1721"><span class="linenos" data-line="1721"></span></a> <span class="n">valuesArray</span><span class="p">[</span><span class="o">#</span><span class="n">valuesArray</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">sep</span> </span><span id="L-1722"><a href="#L-1722"><span class="linenos" data-line="1722"></span></a> <span class="kr">end</span> </span><span id="L-1723"><a href="#L-1723"><span class="linenos" data-line="1723"></span></a> </span><span id="L-1724"><a href="#L-1724"><span class="linenos" data-line="1724"></span></a> <span class="n">out</span> <span class="o">=</span> <span class="n">mergeArrays</span><span class="p">(</span><span class="n">valuesArray</span><span class="p">,</span> <span class="n">out</span><span class="p">)</span> </span><span id="L-1725"><a href="#L-1725"><span class="linenos" data-line="1725"></span></a> <span class="kr">end</span> </span><span id="L-1726"><a href="#L-1726"><span class="linenos" data-line="1726"></span></a> <span class="kr">end</span> </span><span id="L-1727"><a href="#L-1727"><span class="linenos" data-line="1727"></span></a> </span><span id="L-1728"><a href="#L-1728"><span class="linenos" data-line="1728"></span></a> <span class="c1">-- reset state before next iteration</span> </span><span id="L-1729"><a href="#L-1729"><span class="linenos" data-line="1729"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">results</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1730"><a href="#L-1730"><span class="linenos" data-line="1730"></span></a> </span><span id="L-1731"><a href="#L-1731"><span class="linenos" data-line="1731"></span></a> <span class="kr">return</span> <span class="n">out</span> </span><span id="L-1732"><a href="#L-1732"><span class="linenos" data-line="1732"></span></a><span class="kr">end</span> </span><span id="L-1733"><a href="#L-1733"><span class="linenos" data-line="1733"></span></a> </span><span id="L-1734"><a href="#L-1734"><span class="linenos" data-line="1734"></span></a><span class="c1">-- level 1 hook</span> </span><span id="L-1735"><a href="#L-1735"><span class="linenos" data-line="1735"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">getProperty</span><span class="p">(</span><span class="n">claim</span><span class="p">)</span> </span><span id="L-1736"><a href="#L-1736"><span class="linenos" data-line="1736"></span></a> <span class="kd">local</span> <span class="n">value</span> <span class="o">=</span> <span class="p">{</span><span class="n">self</span><span class="p">:</span><span class="n">getValue</span><span class="p">(</span><span class="n">claim</span><span class="p">.</span><span class="n">mainsnak</span><span class="p">)}</span> <span class="c1">-- create one value object</span> </span><span id="L-1737"><a href="#L-1737"><span class="linenos" data-line="1737"></span></a> </span><span id="L-1738"><a href="#L-1738"><span class="linenos" data-line="1738"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">value</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1739"><a href="#L-1739"><span class="linenos" data-line="1739"></span></a> <span class="kr">return</span> <span class="p">{</span><span class="n">value</span><span class="p">}</span> <span class="c1">-- wrap the value object in an array and return it</span> </span><span id="L-1740"><a href="#L-1740"><span class="linenos" data-line="1740"></span></a> <span class="kr">else</span> </span><span id="L-1741"><a href="#L-1741"><span class="linenos" data-line="1741"></span></a> <span class="kr">return</span> <span class="p">{}</span> <span class="c1">-- return empty array if there was no value</span> </span><span id="L-1742"><a href="#L-1742"><span class="linenos" data-line="1742"></span></a> <span class="kr">end</span> </span><span id="L-1743"><a href="#L-1743"><span class="linenos" data-line="1743"></span></a><span class="kr">end</span> </span><span id="L-1744"><a href="#L-1744"><span class="linenos" data-line="1744"></span></a> </span><span id="L-1745"><a href="#L-1745"><span class="linenos" data-line="1745"></span></a><span class="c1">-- level 1 hook</span> </span><span id="L-1746"><a href="#L-1746"><span class="linenos" data-line="1746"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">getQualifiers</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">param</span><span class="p">)</span> </span><span id="L-1747"><a href="#L-1747"><span class="linenos" data-line="1747"></span></a> <span class="kd">local</span> <span class="n">qualifiers</span> </span><span id="L-1748"><a href="#L-1748"><span class="linenos" data-line="1748"></span></a> </span><span id="L-1749"><a href="#L-1749"><span class="linenos" data-line="1749"></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 class="n">qualifiers</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">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">qualifierIDs</span><span class="p">[</span><span class="n">param</span><span class="p">]]</span> <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">if</span> <span class="n">qualifiers</span> <span class="kr">then</span> </span><span id="L-1751"><a href="#L-1751"><span class="linenos" data-line="1751"></span></a> <span class="c1">-- iterate through claim's qualifier statements to collect their values;</span> </span><span id="L-1752"><a href="#L-1752"><span class="linenos" data-line="1752"></span></a> <span class="c1">-- return array with multiple value objects</span> </span><span id="L-1753"><a href="#L-1753"><span class="linenos" data-line="1753"></span></a> <span class="kr">return</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">param</span><span class="p">]:</span><span class="n">iterate</span><span class="p">(</span><span class="n">qualifiers</span><span class="p">,</span> <span class="p">{[</span><span class="n">parameters</span><span class="p">.</span><span class="n">general</span><span class="p">]</span> <span class="o">=</span> <span class="n">hookNames</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="o">..</span><span class="s2">"</span><span class="se">\\</span><span class="s2">d"</span><span class="p">][</span><span class="mi">2</span><span class="p">],</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">1</span><span class="p">})</span> <span class="c1">-- pass qualifier state with level 2 hook</span> </span><span id="L-1754"><a href="#L-1754"><span class="linenos" data-line="1754"></span></a> <span class="kr">else</span> </span><span id="L-1755"><a href="#L-1755"><span class="linenos" data-line="1755"></span></a> <span class="kr">return</span> <span class="p">{}</span> <span class="c1">-- return empty array</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 class="kr">end</span> </span><span id="L-1758"><a href="#L-1758"><span class="linenos" data-line="1758"></span></a> </span><span id="L-1759"><a href="#L-1759"><span class="linenos" data-line="1759"></span></a><span class="c1">-- level 2 hook</span> </span><span id="L-1760"><a href="#L-1760"><span class="linenos" data-line="1760"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">getQualifier</span><span class="p">(</span><span class="n">snak</span><span class="p">)</span> </span><span id="L-1761"><a href="#L-1761"><span class="linenos" data-line="1761"></span></a> <span class="kd">local</span> <span class="n">value</span> <span class="o">=</span> <span class="p">{</span><span class="n">self</span><span class="p">:</span><span class="n">getValue</span><span class="p">(</span><span class="n">snak</span><span class="p">)}</span> <span class="c1">-- create one value object</span> </span><span id="L-1762"><a href="#L-1762"><span class="linenos" data-line="1762"></span></a> </span><span id="L-1763"><a href="#L-1763"><span class="linenos" data-line="1763"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">value</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1764"><a href="#L-1764"><span class="linenos" data-line="1764"></span></a> <span class="kr">return</span> <span class="p">{</span><span class="n">value</span><span class="p">}</span> <span class="c1">-- wrap the value object in an array and return it</span> </span><span id="L-1765"><a href="#L-1765"><span class="linenos" data-line="1765"></span></a> <span class="kr">else</span> </span><span id="L-1766"><a href="#L-1766"><span class="linenos" data-line="1766"></span></a> <span class="kr">return</span> <span class="p">{}</span> <span class="c1">-- return empty array if there was no value</span> </span><span id="L-1767"><a href="#L-1767"><span class="linenos" data-line="1767"></span></a> <span class="kr">end</span> </span><span id="L-1768"><a href="#L-1768"><span class="linenos" data-line="1768"></span></a><span class="kr">end</span> </span><span id="L-1769"><a href="#L-1769"><span class="linenos" data-line="1769"></span></a> </span><span id="L-1770"><a href="#L-1770"><span class="linenos" data-line="1770"></span></a><span class="c1">-- level 1 hook</span> </span><span id="L-1771"><a href="#L-1771"><span class="linenos" data-line="1771"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">getAllQualifiers</span><span class="p">(</span><span class="n">claim</span><span class="p">,</span> <span class="n">param</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">hooks</span><span class="p">)</span> </span><span id="L-1772"><a href="#L-1772"><span class="linenos" data-line="1772"></span></a> <span class="kd">local</span> <span class="n">out</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1">-- array with value objects</span> </span><span id="L-1773"><a href="#L-1773"><span class="linenos" data-line="1773"></span></a> <span class="kd">local</span> <span class="n">sep</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">separators</span><span class="p">[</span><span class="s2">"sep"</span><span class="o">..</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="c1">-- value object</span> </span><span id="L-1774"><a href="#L-1774"><span class="linenos" data-line="1774"></span></a> </span><span id="L-1775"><a href="#L-1775"><span class="linenos" data-line="1775"></span></a> <span class="c1">-- iterate through the output of the separate "qualifier(s)" commands</span> </span><span id="L-1776"><a href="#L-1776"><span class="linenos" data-line="1776"></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="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> <span class="kr">do</span> </span><span id="L-1777"><a href="#L-1777"><span class="linenos" data-line="1777"></span></a> </span><span id="L-1778"><a href="#L-1778"><span class="linenos" data-line="1778"></span></a> <span class="c1">-- if a hook has not been called yet, call it now</span> </span><span id="L-1779"><a href="#L-1779"><span class="linenos" data-line="1779"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="o">..</span><span class="n">i</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1780"><a href="#L-1780"><span class="linenos" data-line="1780"></span></a> <span class="n">self</span><span class="p">:</span><span class="n">callHook</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="o">..</span><span class="n">i</span><span class="p">,</span> <span class="n">hooks</span><span class="p">,</span> <span class="n">claim</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="kr">end</span> </span><span id="L-1782"><a href="#L-1782"><span class="linenos" data-line="1782"></span></a> </span><span id="L-1783"><a href="#L-1783"><span class="linenos" data-line="1783"></span></a> <span class="c1">-- if there is output for this particular "qualifier(s)" command, then add it</span> </span><span id="L-1784"><a href="#L-1784"><span class="linenos" data-line="1784"></span></a> <span class="kr">if</span> <span class="n">result</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="o">..</span><span class="n">i</span><span class="p">]</span> <span class="ow">and</span> <span class="n">result</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</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="kr">then</span> </span><span id="L-1785"><a href="#L-1785"><span class="linenos" data-line="1785"></span></a> </span><span id="L-1786"><a href="#L-1786"><span class="linenos" data-line="1786"></span></a> <span class="c1">-- if there is already some output, then add the separator</span> </span><span id="L-1787"><a href="#L-1787"><span class="linenos" data-line="1787"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">out</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">sep</span> <span class="kr">then</span> </span><span id="L-1788"><a href="#L-1788"><span class="linenos" data-line="1788"></span></a> <span class="n">out</span><span class="p">[</span><span class="o">#</span><span class="n">out</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">sep</span> </span><span id="L-1789"><a href="#L-1789"><span class="linenos" data-line="1789"></span></a> <span class="kr">end</span> </span><span id="L-1790"><a href="#L-1790"><span class="linenos" data-line="1790"></span></a> </span><span id="L-1791"><a href="#L-1791"><span class="linenos" data-line="1791"></span></a> <span class="n">out</span> <span class="o">=</span> <span class="n">mergeArrays</span><span class="p">(</span><span class="n">out</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">qualifier</span><span class="o">..</span><span class="n">i</span><span class="p">])</span> </span><span id="L-1792"><a href="#L-1792"><span class="linenos" data-line="1792"></span></a> <span class="kr">end</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><span id="L-1795"><a href="#L-1795"><span class="linenos" data-line="1795"></span></a> <span class="kr">return</span> <span class="n">out</span> </span><span id="L-1796"><a href="#L-1796"><span class="linenos" data-line="1796"></span></a><span class="kr">end</span> </span><span id="L-1797"><a href="#L-1797"><span class="linenos" data-line="1797"></span></a> </span><span id="L-1798"><a href="#L-1798"><span class="linenos" data-line="1798"></span></a><span class="c1">-- level 1 hook</span> </span><span id="L-1799"><a href="#L-1799"><span class="linenos" data-line="1799"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">getReferences</span><span class="p">(</span><span class="n">claim</span><span class="p">)</span> </span><span id="L-1800"><a href="#L-1800"><span class="linenos" data-line="1800"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">prefetchedRefs</span> <span class="kr">then</span> </span><span id="L-1801"><a href="#L-1801"><span class="linenos" data-line="1801"></span></a> <span class="c1">-- return references that have been prefetched by isSourced</span> </span><span id="L-1802"><a href="#L-1802"><span class="linenos" data-line="1802"></span></a> <span class="kr">return</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">prefetchedRefs</span> </span><span id="L-1803"><a href="#L-1803"><span class="linenos" data-line="1803"></span></a> <span class="kr">end</span> </span><span id="L-1804"><a href="#L-1804"><span class="linenos" data-line="1804"></span></a> </span><span id="L-1805"><a href="#L-1805"><span class="linenos" data-line="1805"></span></a> <span class="kr">if</span> <span class="n">claim</span><span class="p">.</span><span class="n">references</span> <span class="kr">then</span> </span><span id="L-1806"><a href="#L-1806"><span class="linenos" data-line="1806"></span></a> <span class="c1">-- iterate through claim's reference statements to collect their values;</span> </span><span id="L-1807"><a href="#L-1807"><span class="linenos" data-line="1807"></span></a> <span class="c1">-- return array with multiple value objects</span> </span><span id="L-1808"><a href="#L-1808"><span class="linenos" data-line="1808"></span></a> <span class="kr">return</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">reference</span><span class="p">]:</span><span class="n">iterate</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="p">{[</span><span class="n">parameters</span><span class="p">.</span><span class="n">general</span><span class="p">]</span> <span class="o">=</span> <span class="n">hookNames</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">reference</span><span class="p">][</span><span class="mi">2</span><span class="p">],</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">1</span><span class="p">})</span> <span class="c1">-- pass reference state with level 2 hook</span> </span><span id="L-1809"><a href="#L-1809"><span class="linenos" data-line="1809"></span></a> <span class="kr">else</span> </span><span id="L-1810"><a href="#L-1810"><span class="linenos" data-line="1810"></span></a> <span class="kr">return</span> <span class="p">{}</span> <span class="c1">-- return empty array</span> </span><span id="L-1811"><a href="#L-1811"><span class="linenos" data-line="1811"></span></a> <span class="kr">end</span> </span><span id="L-1812"><a href="#L-1812"><span class="linenos" data-line="1812"></span></a><span class="kr">end</span> </span><span id="L-1813"><a href="#L-1813"><span class="linenos" data-line="1813"></span></a> </span><span id="L-1814"><a href="#L-1814"><span class="linenos" data-line="1814"></span></a><span class="c1">-- level 2 hook</span> </span><span id="L-1815"><a href="#L-1815"><span class="linenos" data-line="1815"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">getReference</span><span class="p">(</span><span class="n">statement</span><span class="p">)</span> </span><span id="L-1816"><a href="#L-1816"><span class="linenos" data-line="1816"></span></a> <span class="kd">local</span> <span class="n">citeParamMapping</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'param-mapping'</span><span class="p">]</span> </span><span id="L-1817"><a href="#L-1817"><span class="linenos" data-line="1817"></span></a> <span class="kd">local</span> <span class="n">citeConfig</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'config'</span><span class="p">]</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">citeTypes</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">[</span><span class="s1">'cite'</span><span class="p">][</span><span class="s1">'output-types'</span><span class="p">]</span> </span><span id="L-1819"><a href="#L-1819"><span class="linenos" data-line="1819"></span></a> </span><span id="L-1820"><a href="#L-1820"><span class="linenos" data-line="1820"></span></a> <span class="c1">-- will hold rendered properties of the reference which are not directly from statement.snaks, </span> </span><span id="L-1821"><a href="#L-1821"><span class="linenos" data-line="1821"></span></a> <span class="c1">-- Namely, these are a backup title from "subject named as" and a URL generated from an external ID.</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">additionalProcessedProperties</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1823"><a href="#L-1823"><span class="linenos" data-line="1823"></span></a> <span class="c1">-- for each citation type, there will be an associative array that associates lists of rendered properties</span> </span><span id="L-1824"><a href="#L-1824"><span class="linenos" data-line="1824"></span></a> <span class="c1">-- to citation-template parameters</span> </span><span id="L-1825"><a href="#L-1825"><span class="linenos" data-line="1825"></span></a> <span class="kd">local</span> <span class="n">groupedProcessedProperties</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1826"><a href="#L-1826"><span class="linenos" data-line="1826"></span></a> <span class="c1">-- like above, but only associates one rendered property to each parameter; if the above variable</span> </span><span id="L-1827"><a href="#L-1827"><span class="linenos" data-line="1827"></span></a> <span class="c1">-- contains more strings for a parameter, the strings will be assigned to numbered params (e.g. "author1")</span> </span><span id="L-1828"><a href="#L-1828"><span class="linenos" data-line="1828"></span></a> <span class="kd">local</span> <span class="n">citeParams</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1829"><a href="#L-1829"><span class="linenos" data-line="1829"></span></a> </span><span id="L-1830"><a href="#L-1830"><span class="linenos" data-line="1830"></span></a> <span class="kd">local</span> <span class="n">citeErrors</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1831"><a href="#L-1831"><span class="linenos" data-line="1831"></span></a> <span class="kd">local</span> <span class="n">referenceEmpty</span> <span class="o">=</span> <span class="kc">true</span> <span class="c1">-- will be set to false if at least one parameter is left unremoved</span> </span><span id="L-1832"><a href="#L-1832"><span class="linenos" data-line="1832"></span></a> </span><span id="L-1833"><a href="#L-1833"><span class="linenos" data-line="1833"></span></a> <span class="kd">local</span> <span class="n">version</span> <span class="o">=</span> <span class="mi">11</span> <span class="c1">-- increment this each time the below logic is changed to avoid conflict errors</span> </span><span id="L-1834"><a href="#L-1834"><span class="linenos" data-line="1834"></span></a> </span><span id="L-1835"><a href="#L-1835"><span class="linenos" data-line="1835"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</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="kr">return</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><span id="L-1839"><a href="#L-1839"><span class="linenos" data-line="1839"></span></a> <span class="c1">-- don't use bot-added references referencing Wikimedia projects or containing "inferred from" (such references are not usable on Wikipedia)</span> </span><span id="L-1840"><a href="#L-1840"><span class="linenos" data-line="1840"></span></a> <span class="kr">if</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">importedFrom</span><span class="p">]</span> <span class="ow">or</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">wikimediaImportURL</span><span class="p">]</span> <span class="ow">or</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">inferredFrom</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1841"><a href="#L-1841"><span class="linenos" data-line="1841"></span></a> <span class="kr">return</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">end</span> </span><span id="L-1843"><a href="#L-1843"><span class="linenos" data-line="1843"></span></a> </span><span id="L-1844"><a href="#L-1844"><span class="linenos" data-line="1844"></span></a> <span class="c1">-- don't include "type of reference"</span> </span><span id="L-1845"><a href="#L-1845"><span class="linenos" data-line="1845"></span></a> <span class="kr">if</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">typeOfReference</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1846"><a href="#L-1846"><span class="linenos" data-line="1846"></span></a> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">typeOfReference</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1847"><a href="#L-1847"><span class="linenos" data-line="1847"></span></a> <span class="kr">end</span> </span><span id="L-1848"><a href="#L-1848"><span class="linenos" data-line="1848"></span></a> </span><span id="L-1849"><a href="#L-1849"><span class="linenos" data-line="1849"></span></a> <span class="c1">-- don't include "image" to prevent littering</span> </span><span id="L-1850"><a href="#L-1850"><span class="linenos" data-line="1850"></span></a> <span class="kr">if</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">image</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1851"><a href="#L-1851"><span class="linenos" data-line="1851"></span></a> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">image</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1852"><a href="#L-1852"><span class="linenos" data-line="1852"></span></a> <span class="kr">end</span> </span><span id="L-1853"><a href="#L-1853"><span class="linenos" data-line="1853"></span></a> </span><span id="L-1854"><a href="#L-1854"><span class="linenos" data-line="1854"></span></a> <span class="c1">-- don't include "language" if it is equal to the local one</span> </span><span id="L-1855"><a href="#L-1855"><span class="linenos" data-line="1855"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">:</span><span class="n">getReferenceDetail</span><span class="p">(</span><span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">,</span> <span class="n">aliasesP</span><span class="p">.</span><span class="n">language</span><span class="p">)</span> <span class="o">==</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">langName</span> <span class="kr">then</span> </span><span id="L-1856"><a href="#L-1856"><span class="linenos" data-line="1856"></span></a> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">language</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1857"><a href="#L-1857"><span class="linenos" data-line="1857"></span></a> <span class="kr">end</span> </span><span id="L-1858"><a href="#L-1858"><span class="linenos" data-line="1858"></span></a> </span><span id="L-1859"><a href="#L-1859"><span class="linenos" data-line="1859"></span></a> <span class="kr">if</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">statedIn</span><span class="p">]</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">referenceURL</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1860"><a href="#L-1860"><span class="linenos" data-line="1860"></span></a> <span class="c1">-- "stated in" was given but "reference URL" was not.</span> </span><span id="L-1861"><a href="#L-1861"><span class="linenos" data-line="1861"></span></a> <span class="c1">-- get "Wikidata property" properties from the item in "stated in"</span> </span><span id="L-1862"><a href="#L-1862"><span class="linenos" data-line="1862"></span></a> <span class="c1">-- if any of the returned properties of the external-id datatype is in statement.snaks, generate a link from it and use the link in the reference</span> </span><span id="L-1863"><a href="#L-1863"><span class="linenos" data-line="1863"></span></a> </span><span id="L-1864"><a href="#L-1864"><span class="linenos" data-line="1864"></span></a> <span class="c1">-- find the "Wikidata property" properties in the item from "stated in"</span> </span><span id="L-1865"><a href="#L-1865"><span class="linenos" data-line="1865"></span></a> <span class="kd">local</span> <span class="n">wikidataPropertiesOfSource</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">p</span><span class="p">.</span><span class="n">_properties</span><span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">flags</span><span class="p">.</span><span class="n">raw</span><span class="p">,</span> <span class="n">aliasesP</span><span class="p">.</span><span class="n">wikidataProperty</span><span class="p">,</span> <span class="p">[</span><span class="n">p</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">eid</span><span class="p">]</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">:</span><span class="n">getValue</span><span class="p">(</span><span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">statedIn</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="kc">false</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-1866"><a href="#L-1866"><span class="linenos" data-line="1866"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">wikidataPropertyOfSource</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">wikidataPropertiesOfSource</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1867"><a href="#L-1867"><span class="linenos" data-line="1867"></span></a> <span class="kr">if</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">wikidataPropertyOfSource</span><span class="p">]</span> <span class="ow">and</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">wikidataPropertyOfSource</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">"external-id"</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="kd">local</span> <span class="n">tempLink</span> <span class="o">=</span> <span class="n">self</span><span class="p">:</span><span class="n">getReferenceDetail</span><span class="p">(</span><span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">,</span> <span class="n">wikidataPropertyOfSource</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> <span class="c1">-- not raw, linked</span> </span><span id="L-1869"><a href="#L-1869"><span class="linenos" data-line="1869"></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">tempLink</span><span class="p">,</span> <span class="s2">"^%[%Z- %Z+%]$"</span><span class="p">)</span> <span class="kr">then</span> <span class="c1">-- getValue returned a URL in square brackets.</span> </span><span id="L-1870"><a href="#L-1870"><span class="linenos" data-line="1870"></span></a> <span class="c1">-- the link is in wiki markup, so strip the square brackets and the display text</span> </span><span id="L-1871"><a href="#L-1871"><span class="linenos" data-line="1871"></span></a> <span class="c1">-- gsub also returns another, discarted value, therefore the result is assigned to tempLink first</span> </span><span id="L-1872"><a href="#L-1872"><span class="linenos" data-line="1872"></span></a> <span class="n">tempLink</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">tempLink</span><span class="p">,</span> <span class="s2">"^%[(%Z-) %Z+%]$"</span><span class="p">,</span> <span class="s2">"%1"</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">additionalProcessedProperties</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">referenceURL</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="n">tempLink</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">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">wikidataPropertyOfSource</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1875"><a href="#L-1875"><span class="linenos" data-line="1875"></span></a> <span class="kr">break</span> </span><span id="L-1876"><a href="#L-1876"><span class="linenos" data-line="1876"></span></a> <span class="kr">end</span> </span><span id="L-1877"><a href="#L-1877"><span class="linenos" data-line="1877"></span></a> <span class="kr">end</span> </span><span id="L-1878"><a href="#L-1878"><span class="linenos" data-line="1878"></span></a> <span class="kr">end</span> </span><span id="L-1879"><a href="#L-1879"><span class="linenos" data-line="1879"></span></a> <span class="kr">end</span> </span><span id="L-1880"><a href="#L-1880"><span class="linenos" data-line="1880"></span></a> </span><span id="L-1881"><a href="#L-1881"><span class="linenos" data-line="1881"></span></a> <span class="c1">-- don't include "subject named as", but use it as the title when "title" is not present but a URL is</span> </span><span id="L-1882"><a href="#L-1882"><span class="linenos" data-line="1882"></span></a> <span class="kr">if</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">subjectNamedAs</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1883"><a href="#L-1883"><span class="linenos" data-line="1883"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">title</span><span class="p">]</span> <span class="ow">and</span> <span class="p">(</span><span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">referenceURL</span><span class="p">]</span> <span class="ow">or</span> <span class="n">additionalProcessedProperties</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">referenceURL</span><span class="p">])</span> <span class="kr">then</span> </span><span id="L-1884"><a href="#L-1884"><span class="linenos" data-line="1884"></span></a> <span class="n">additionalProcessedProperties</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">title</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="n">self</span><span class="p">:</span><span class="n">getReferenceDetail</span><span class="p">(</span><span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">,</span> <span class="n">aliasesP</span><span class="p">.</span><span class="n">subjectNamedAs</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="kc">true</span><span class="p">)}</span> <span class="c1">-- not raw, not linked, anyLang</span> </span><span id="L-1885"><a href="#L-1885"><span class="linenos" data-line="1885"></span></a> <span class="kr">end</span> </span><span id="L-1886"><a href="#L-1886"><span class="linenos" data-line="1886"></span></a> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">aliasesP</span><span class="p">.</span><span class="n">subjectNamedAs</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-1887"><a href="#L-1887"><span class="linenos" data-line="1887"></span></a> <span class="kr">end</span> </span><span id="L-1888"><a href="#L-1888"><span class="linenos" data-line="1888"></span></a> </span><span id="L-1889"><a href="#L-1889"><span class="linenos" data-line="1889"></span></a> <span class="c1">-- initialize groupedProcessedProperties and citeParams</span> </span><span id="L-1890"><a href="#L-1890"><span class="linenos" data-line="1890"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">citeType</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">citeTypes</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1891"><a href="#L-1891"><span class="linenos" data-line="1891"></span></a> <span class="n">groupedProcessedProperties</span><span class="p">[</span><span class="n">citeType</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1892"><a href="#L-1892"><span class="linenos" data-line="1892"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">citeType</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1893"><a href="#L-1893"><span class="linenos" data-line="1893"></span></a> <span class="kr">end</span> </span><span id="L-1894"><a href="#L-1894"><span class="linenos" data-line="1894"></span></a> </span><span id="L-1895"><a href="#L-1895"><span class="linenos" data-line="1895"></span></a> <span class="c1">-- fill groupedProcessedProperties</span> </span><span id="L-1896"><a href="#L-1896"><span class="linenos" data-line="1896"></span></a> <span class="kr">for</span> <span class="n">refProperty</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1897"><a href="#L-1897"><span class="linenos" data-line="1897"></span></a> <span class="c1">-- add the parameter to each matching type of citation</span> </span><span id="L-1898"><a href="#L-1898"><span class="linenos" data-line="1898"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">citeType</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">citeTypes</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1899"><a href="#L-1899"><span class="linenos" data-line="1899"></span></a> <span class="kr">repeat</span> <span class="c1">-- just a simple wrapper to emulate "continue"</span> </span><span id="L-1900"><a href="#L-1900"><span class="linenos" data-line="1900"></span></a> <span class="c1">-- skip if there already have been errors</span> </span><span id="L-1901"><a href="#L-1901"><span class="linenos" data-line="1901"></span></a> <span class="kr">if</span> <span class="n">citeErrors</span><span class="p">[</span><span class="n">citeType</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1902"><a href="#L-1902"><span class="linenos" data-line="1902"></span></a> <span class="kr">break</span> </span><span id="L-1903"><a href="#L-1903"><span class="linenos" data-line="1903"></span></a> <span class="kr">end</span> </span><span id="L-1904"><a href="#L-1904"><span class="linenos" data-line="1904"></span></a> </span><span id="L-1905"><a href="#L-1905"><span class="linenos" data-line="1905"></span></a> <span class="c1">-- set mappingKey and prefix</span> </span><span id="L-1906"><a href="#L-1906"><span class="linenos" data-line="1906"></span></a> <span class="kd">local</span> <span class="n">mappingKey</span> </span><span id="L-1907"><a href="#L-1907"><span class="linenos" data-line="1907"></span></a> <span class="kd">local</span> <span class="n">prefix</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-1908"><a href="#L-1908"><span class="linenos" data-line="1908"></span></a> <span class="kr">if</span> <span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">refProperty</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="s1">'external-id'</span> <span class="kr">then</span> </span><span id="L-1909"><a href="#L-1909"><span class="linenos" data-line="1909"></span></a> <span class="n">mappingKey</span> <span class="o">=</span> <span class="s2">"external-id"</span> </span><span id="L-1910"><a href="#L-1910"><span class="linenos" data-line="1910"></span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">:</span><span class="n">getLabel</span><span class="p">(</span><span class="n">refProperty</span><span class="p">)</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="kr">if</span> <span class="n">prefix</span> <span class="o">~=</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-1913"><a href="#L-1913"><span class="linenos" data-line="1913"></span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">..</span> <span class="s2">" "</span> </span><span id="L-1914"><a href="#L-1914"><span class="linenos" data-line="1914"></span></a> <span class="kr">end</span> </span><span id="L-1915"><a href="#L-1915"><span class="linenos" data-line="1915"></span></a> <span class="kr">else</span> </span><span id="L-1916"><a href="#L-1916"><span class="linenos" data-line="1916"></span></a> <span class="n">mappingKey</span> <span class="o">=</span> <span class="n">refProperty</span> </span><span id="L-1917"><a href="#L-1917"><span class="linenos" data-line="1917"></span></a> <span class="kr">end</span> </span><span id="L-1918"><a href="#L-1918"><span class="linenos" data-line="1918"></span></a> </span><span id="L-1919"><a href="#L-1919"><span class="linenos" data-line="1919"></span></a> <span class="kd">local</span> <span class="n">paramName</span> <span class="o">=</span> <span class="n">citeParamMapping</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="n">mappingKey</span><span class="p">]</span> </span><span id="L-1920"><a href="#L-1920"><span class="linenos" data-line="1920"></span></a> <span class="c1">-- skip properties with empty parameter name</span> </span><span id="L-1921"><a href="#L-1921"><span class="linenos" data-line="1921"></span></a> <span class="kr">if</span> <span class="n">paramName</span> <span class="o">==</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-1922"><a href="#L-1922"><span class="linenos" data-line="1922"></span></a> <span class="kr">break</span> </span><span id="L-1923"><a href="#L-1923"><span class="linenos" data-line="1923"></span></a> <span class="kr">end</span> </span><span id="L-1924"><a href="#L-1924"><span class="linenos" data-line="1924"></span></a> </span><span id="L-1925"><a href="#L-1925"><span class="linenos" data-line="1925"></span></a> <span class="n">referenceEmpty</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1926"><a href="#L-1926"><span class="linenos" data-line="1926"></span></a> </span><span id="L-1927"><a href="#L-1927"><span class="linenos" data-line="1927"></span></a> <span class="c1">-- handle unknown properties in the reference</span> </span><span id="L-1928"><a href="#L-1928"><span class="linenos" data-line="1928"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">paramName</span> <span class="kr">then</span> </span><span id="L-1929"><a href="#L-1929"><span class="linenos" data-line="1929"></span></a> <span class="kd">local</span> <span class="n">error_message</span> <span class="o">=</span> <span class="n">errorText</span><span class="p">(</span><span class="s2">"unknown-property-in-ref"</span><span class="p">,</span> <span class="n">refProperty</span><span class="p">)</span> </span><span id="L-1930"><a href="#L-1930"><span class="linenos" data-line="1930"></span></a> <span class="nb">assert</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> <span class="c1">-- Should not be nil</span> </span><span id="L-1931"><a href="#L-1931"><span class="linenos" data-line="1931"></span></a> <span class="n">citeErrors</span><span class="p">[</span><span class="n">citeType</span><span class="p">]</span> <span class="o">=</span> <span class="n">error_message</span> </span><span id="L-1932"><a href="#L-1932"><span class="linenos" data-line="1932"></span></a> <span class="kr">break</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><span id="L-1935"><a href="#L-1935"><span class="linenos" data-line="1935"></span></a> <span class="c1">-- set processedProperty</span> </span><span id="L-1936"><a href="#L-1936"><span class="linenos" data-line="1936"></span></a> <span class="kd">local</span> <span class="n">processedProperty</span> </span><span id="L-1937"><a href="#L-1937"><span class="linenos" data-line="1937"></span></a> <span class="kd">local</span> <span class="n">raw</span> <span class="o">=</span> <span class="kc">false</span> <span class="c1">-- if the value is wanted raw</span> </span><span id="L-1938"><a href="#L-1938"><span class="linenos" data-line="1938"></span></a> <span class="kr">if</span> <span class="n">isValueInTable</span><span class="p">(</span><span class="n">paramName</span><span class="p">,</span> <span class="n">citeConfig</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="s2">"raw-value-params"</span><span class="p">]</span> <span class="ow">or</span> <span class="p">{})</span> <span class="kr">then</span> </span><span id="L-1939"><a href="#L-1939"><span class="linenos" data-line="1939"></span></a> <span class="n">raw</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-1940"><a href="#L-1940"><span class="linenos" data-line="1940"></span></a> <span class="kr">end</span> </span><span id="L-1941"><a href="#L-1941"><span class="linenos" data-line="1941"></span></a> <span class="kr">if</span> <span class="n">isValueInTable</span><span class="p">(</span><span class="n">paramName</span><span class="p">,</span> <span class="n">citeConfig</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="s2">"numbered-params"</span><span class="p">]</span> <span class="ow">or</span> <span class="p">{})</span> <span class="kr">then</span> </span><span id="L-1942"><a href="#L-1942"><span class="linenos" data-line="1942"></span></a> <span class="c1">-- Multiple values may be given.</span> </span><span id="L-1943"><a href="#L-1943"><span class="linenos" data-line="1943"></span></a> <span class="n">processedProperty</span> <span class="o">=</span> <span class="n">self</span><span class="p">:</span><span class="n">getReferenceDetails</span><span class="p">(</span><span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">,</span> <span class="n">refProperty</span><span class="p">,</span> <span class="n">raw</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">linked</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> <span class="c1">-- anyLang = true</span> </span><span id="L-1944"><a href="#L-1944"><span class="linenos" data-line="1944"></span></a> <span class="kr">else</span> </span><span id="L-1945"><a href="#L-1945"><span class="linenos" data-line="1945"></span></a> <span class="c1">-- If multiple values are given, all but the first suitable one are discarted.</span> </span><span id="L-1946"><a href="#L-1946"><span class="linenos" data-line="1946"></span></a> <span class="n">processedProperty</span> <span class="o">=</span> <span class="p">{</span><span class="n">self</span><span class="p">:</span><span class="n">getReferenceDetail</span><span class="p">(</span><span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">,</span> <span class="n">refProperty</span><span class="p">,</span> <span class="n">raw</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">linked</span> <span class="ow">and</span> <span class="p">(</span><span class="n">statement</span><span class="p">.</span><span class="n">snaks</span><span class="p">[</span><span class="n">refProperty</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="s1">'url'</span><span class="p">),</span> <span class="kc">true</span><span class="p">)}</span> <span class="c1">-- link = true/false, anyLang = true</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="kr">if</span> <span class="o">#</span><span class="n">processedProperty</span> <span class="o">==</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-1950"><a href="#L-1950"><span class="linenos" data-line="1950"></span></a> <span class="kr">break</span> </span><span id="L-1951"><a href="#L-1951"><span class="linenos" data-line="1951"></span></a> <span class="kr">end</span> </span><span id="L-1952"><a href="#L-1952"><span class="linenos" data-line="1952"></span></a> </span><span id="L-1953"><a href="#L-1953"><span class="linenos" data-line="1953"></span></a> <span class="c1">-- add an entry to groupedProcessedProperties</span> </span><span id="L-1954"><a href="#L-1954"><span class="linenos" data-line="1954"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">groupedProcessedProperties</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="n">paramName</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1955"><a href="#L-1955"><span class="linenos" data-line="1955"></span></a> <span class="n">groupedProcessedProperties</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="n">paramName</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1956"><a href="#L-1956"><span class="linenos" data-line="1956"></span></a> <span class="kr">end</span> </span><span id="L-1957"><a href="#L-1957"><span class="linenos" data-line="1957"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">propertyValue</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">processedProperty</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1958"><a href="#L-1958"><span class="linenos" data-line="1958"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">groupedProcessedProperties</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="n">paramName</span><span class="p">],</span> <span class="n">prefix</span> <span class="o">..</span> <span class="n">propertyValue</span><span class="p">)</span> </span><span id="L-1959"><a href="#L-1959"><span class="linenos" data-line="1959"></span></a> <span class="kr">end</span> </span><span id="L-1960"><a href="#L-1960"><span class="linenos" data-line="1960"></span></a> <span class="kr">until</span> <span class="kc">true</span> </span><span id="L-1961"><a href="#L-1961"><span class="linenos" data-line="1961"></span></a> <span class="kr">end</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="c1">-- handle additional properties</span> </span><span id="L-1965"><a href="#L-1965"><span class="linenos" data-line="1965"></span></a> <span class="kr">for</span> <span class="n">refProperty</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">additionalProcessedProperties</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1966"><a href="#L-1966"><span class="linenos" data-line="1966"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">citeType</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">citeTypes</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1967"><a href="#L-1967"><span class="linenos" data-line="1967"></span></a> <span class="kr">repeat</span> </span><span id="L-1968"><a href="#L-1968"><span class="linenos" data-line="1968"></span></a> <span class="c1">-- skip if there already have been errors</span> </span><span id="L-1969"><a href="#L-1969"><span class="linenos" data-line="1969"></span></a> <span class="kr">if</span> <span class="n">citeErrors</span><span class="p">[</span><span class="n">citeType</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1970"><a href="#L-1970"><span class="linenos" data-line="1970"></span></a> <span class="kr">break</span> </span><span id="L-1971"><a href="#L-1971"><span class="linenos" data-line="1971"></span></a> <span class="kr">end</span> </span><span id="L-1972"><a href="#L-1972"><span class="linenos" data-line="1972"></span></a> </span><span id="L-1973"><a href="#L-1973"><span class="linenos" data-line="1973"></span></a> <span class="kd">local</span> <span class="n">paramName</span> <span class="o">=</span> <span class="n">citeParamMapping</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="n">refProperty</span><span class="p">]</span> </span><span id="L-1974"><a href="#L-1974"><span class="linenos" data-line="1974"></span></a> <span class="c1">-- handle unknown properties in the reference</span> </span><span id="L-1975"><a href="#L-1975"><span class="linenos" data-line="1975"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">paramName</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="c1">-- Skip this additional property, but do not cause an error.</span> </span><span id="L-1977"><a href="#L-1977"><span class="linenos" data-line="1977"></span></a> <span class="kr">break</span> </span><span id="L-1978"><a href="#L-1978"><span class="linenos" data-line="1978"></span></a> <span class="kr">end</span> </span><span id="L-1979"><a href="#L-1979"><span class="linenos" data-line="1979"></span></a> <span class="kr">if</span> <span class="n">paramName</span> <span class="o">==</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-1980"><a href="#L-1980"><span class="linenos" data-line="1980"></span></a> <span class="kr">break</span> </span><span id="L-1981"><a href="#L-1981"><span class="linenos" data-line="1981"></span></a> <span class="kr">end</span> </span><span id="L-1982"><a href="#L-1982"><span class="linenos" data-line="1982"></span></a> </span><span id="L-1983"><a href="#L-1983"><span class="linenos" data-line="1983"></span></a> <span class="n">referenceEmpty</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-1984"><a href="#L-1984"><span class="linenos" data-line="1984"></span></a> </span><span id="L-1985"><a href="#L-1985"><span class="linenos" data-line="1985"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">groupedProcessedProperties</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="n">paramName</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-1986"><a href="#L-1986"><span class="linenos" data-line="1986"></span></a> <span class="n">groupedProcessedProperties</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="n">paramName</span><span class="p">]</span> <span class="o">=</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">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">propertyValue</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">additionalProcessedProperties</span><span class="p">[</span><span class="n">refProperty</span><span class="p">])</span> <span class="kr">do</span> </span><span id="L-1989"><a href="#L-1989"><span class="linenos" data-line="1989"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">groupedProcessedProperties</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="n">paramName</span><span class="p">],</span> <span class="n">propertyValue</span><span class="p">)</span> </span><span id="L-1990"><a href="#L-1990"><span class="linenos" data-line="1990"></span></a> <span class="kr">end</span> </span><span id="L-1991"><a href="#L-1991"><span class="linenos" data-line="1991"></span></a> <span class="kr">until</span> <span class="kc">true</span> </span><span id="L-1992"><a href="#L-1992"><span class="linenos" data-line="1992"></span></a> <span class="kr">end</span> </span><span id="L-1993"><a href="#L-1993"><span class="linenos" data-line="1993"></span></a> <span class="kr">end</span> </span><span id="L-1994"><a href="#L-1994"><span class="linenos" data-line="1994"></span></a> </span><span id="L-1995"><a href="#L-1995"><span class="linenos" data-line="1995"></span></a> <span class="c1">-- fill citeParams</span> </span><span id="L-1996"><a href="#L-1996"><span class="linenos" data-line="1996"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">citeType</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">citeTypes</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-1997"><a href="#L-1997"><span class="linenos" data-line="1997"></span></a> <span class="kr">for</span> <span class="n">paramName</span><span class="p">,</span> <span class="n">paramValues</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">groupedProcessedProperties</span><span class="p">[</span><span class="n">citeType</span><span class="p">])</span> <span class="kr">do</span> </span><span id="L-1998"><a href="#L-1998"><span class="linenos" data-line="1998"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">paramValues</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">isValueInTable</span><span class="p">(</span><span class="n">paramName</span><span class="p">,</span> <span class="n">citeConfig</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="s2">"numbered-params"</span><span class="p">]</span> <span class="ow">or</span> <span class="p">{})</span> <span class="kr">then</span> </span><span id="L-1999"><a href="#L-1999"><span class="linenos" data-line="1999"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="n">paramName</span><span class="p">]</span> <span class="o">=</span> <span class="n">paramValues</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-2000"><a href="#L-2000"><span class="linenos" data-line="2000"></span></a> <span class="kr">else</span> </span><span id="L-2001"><a href="#L-2001"><span class="linenos" data-line="2001"></span></a> <span class="c1">-- There is more than one value for this parameter - the values will</span> </span><span id="L-2002"><a href="#L-2002"><span class="linenos" data-line="2002"></span></a> <span class="c1">-- go into separate numbered parameters (e.g. "author1", "author2")</span> </span><span id="L-2003"><a href="#L-2003"><span class="linenos" data-line="2003"></span></a> <span class="kr">for</span> <span class="n">paramNum</span><span class="p">,</span> <span class="n">paramValue</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">paramValues</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-2004"><a href="#L-2004"><span class="linenos" data-line="2004"></span></a> <span class="n">citeParams</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="n">paramName</span> <span class="o">..</span> <span class="n">paramNum</span><span class="p">]</span> <span class="o">=</span> <span class="n">paramValue</span> </span><span id="L-2005"><a href="#L-2005"><span class="linenos" data-line="2005"></span></a> <span class="kr">end</span> </span><span id="L-2006"><a href="#L-2006"><span class="linenos" data-line="2006"></span></a> <span class="kr">end</span> </span><span id="L-2007"><a href="#L-2007"><span class="linenos" data-line="2007"></span></a> <span class="kr">end</span> </span><span id="L-2008"><a href="#L-2008"><span class="linenos" data-line="2008"></span></a> <span class="kr">end</span> </span><span id="L-2009"><a href="#L-2009"><span class="linenos" data-line="2009"></span></a> </span><span id="L-2010"><a href="#L-2010"><span class="linenos" data-line="2010"></span></a> <span class="c1">-- handle missing mandatory parameters for the templates</span> </span><span id="L-2011"><a href="#L-2011"><span class="linenos" data-line="2011"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">citeType</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">citeTypes</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-2012"><a href="#L-2012"><span class="linenos" data-line="2012"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">requiredCiteParam</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">citeConfig</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="s2">"mandatory-params"</span><span class="p">]</span> <span class="ow">or</span> <span class="p">{})</span> <span class="kr">do</span> </span><span id="L-2013"><a href="#L-2013"><span class="linenos" data-line="2013"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">citeParams</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="n">requiredCiteParam</span><span class="p">]</span> <span class="kr">then</span> <span class="c1">-- The required param is not present.</span> </span><span id="L-2014"><a href="#L-2014"><span class="linenos" data-line="2014"></span></a> <span class="kr">if</span> <span class="n">citeErrors</span><span class="p">[</span><span class="n">citeType</span><span class="p">]</span> <span class="kr">then</span> <span class="c1">-- Do not override the previous error, if it exists.</span> </span><span id="L-2015"><a href="#L-2015"><span class="linenos" data-line="2015"></span></a> <span class="kr">break</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 class="kd">local</span> <span class="n">error_message</span> <span class="o">=</span> <span class="n">errorText</span><span class="p">(</span><span class="s2">"missing-mandatory-param"</span><span class="p">,</span> <span class="n">requiredCiteParam</span><span class="p">)</span> </span><span id="L-2018"><a href="#L-2018"><span class="linenos" data-line="2018"></span></a> <span class="nb">assert</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> <span class="c1">-- Should not be nil</span> </span><span id="L-2019"><a href="#L-2019"><span class="linenos" data-line="2019"></span></a> <span class="n">citeErrors</span><span class="p">[</span><span class="n">citeType</span><span class="p">]</span> <span class="o">=</span> <span class="n">error_message</span> </span><span id="L-2020"><a href="#L-2020"><span class="linenos" data-line="2020"></span></a> <span class="kr">end</span> </span><span id="L-2021"><a href="#L-2021"><span class="linenos" data-line="2021"></span></a> <span class="kr">end</span> </span><span id="L-2022"><a href="#L-2022"><span class="linenos" data-line="2022"></span></a> <span class="kr">end</span> </span><span id="L-2023"><a href="#L-2023"><span class="linenos" data-line="2023"></span></a> </span><span id="L-2024"><a href="#L-2024"><span class="linenos" data-line="2024"></span></a> <span class="kd">local</span> <span class="n">citeTypeToUse</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-2025"><a href="#L-2025"><span class="linenos" data-line="2025"></span></a> </span><span id="L-2026"><a href="#L-2026"><span class="linenos" data-line="2026"></span></a> <span class="c1">-- choose the output template</span> </span><span id="L-2027"><a href="#L-2027"><span class="linenos" data-line="2027"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">citeType</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">citeTypes</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-2028"><a href="#L-2028"><span class="linenos" data-line="2028"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">citeErrors</span><span class="p">[</span><span class="n">citeType</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2029"><a href="#L-2029"><span class="linenos" data-line="2029"></span></a> <span class="n">citeTypeToUse</span> <span class="o">=</span> <span class="n">citeType</span> </span><span id="L-2030"><a href="#L-2030"><span class="linenos" data-line="2030"></span></a> <span class="kr">break</span> </span><span id="L-2031"><a href="#L-2031"><span class="linenos" data-line="2031"></span></a> <span class="kr">end</span> </span><span id="L-2032"><a href="#L-2032"><span class="linenos" data-line="2032"></span></a> <span class="kr">end</span> </span><span id="L-2033"><a href="#L-2033"><span class="linenos" data-line="2033"></span></a> </span><span id="L-2034"><a href="#L-2034"><span class="linenos" data-line="2034"></span></a> <span class="c1">-- set refContent</span> </span><span id="L-2035"><a href="#L-2035"><span class="linenos" data-line="2035"></span></a> <span class="kd">local</span> <span class="n">refContent</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-2036"><a href="#L-2036"><span class="linenos" data-line="2036"></span></a> <span class="kr">if</span> <span class="n">citeTypeToUse</span> <span class="kr">then</span> </span><span id="L-2037"><a href="#L-2037"><span class="linenos" data-line="2037"></span></a> <span class="kd">local</span> <span class="n">templateToUse</span> <span class="o">=</span> <span class="n">citeConfig</span><span class="p">[</span><span class="n">citeTypeToUse</span><span class="p">][</span><span class="s2">"template"</span><span class="p">]</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">paramsToUse</span> <span class="o">=</span> <span class="n">citeParams</span><span class="p">[</span><span class="n">citeTypeToUse</span><span class="p">]</span> </span><span id="L-2039"><a href="#L-2039"><span class="linenos" data-line="2039"></span></a> </span><span id="L-2040"><a href="#L-2040"><span class="linenos" data-line="2040"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">templateToUse</span> <span class="ow">or</span> <span class="n">templateToUse</span> <span class="o">==</span> <span class="s2">""</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">throwError</span><span class="p">(</span><span class="s2">"no-such-reference-template"</span><span class="p">,</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">templateToUse</span><span class="p">),</span> <span class="n">i18nPath</span><span class="p">,</span> <span class="n">citeTypeToUse</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><span id="L-2044"><a href="#L-2044"><span class="linenos" data-line="2044"></span></a> <span class="c1">-- if this module is being substituted then build a regular template call, otherwise expand the template</span> </span><span id="L-2045"><a href="#L-2045"><span class="linenos" data-line="2045"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">isSubsting</span><span class="p">()</span> <span class="kr">then</span> </span><span id="L-2046"><a href="#L-2046"><span class="linenos" data-line="2046"></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">pairs</span><span class="p">(</span><span class="n">paramsToUse</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-2047"><a href="#L-2047"><span class="linenos" data-line="2047"></span></a> <span class="n">refContent</span> <span class="o">=</span> <span class="n">refContent</span> <span class="o">..</span> <span class="s2">"|"</span> <span class="o">..</span> <span class="n">i</span> <span class="o">..</span> <span class="s2">"="</span> <span class="o">..</span> <span class="n">v</span> </span><span id="L-2048"><a href="#L-2048"><span class="linenos" data-line="2048"></span></a> <span class="kr">end</span> </span><span id="L-2049"><a href="#L-2049"><span class="linenos" data-line="2049"></span></a> </span><span id="L-2050"><a href="#L-2050"><span class="linenos" data-line="2050"></span></a> <span class="n">refContent</span> <span class="o">=</span> <span class="s2">"{{"</span> <span class="o">..</span> <span class="n">templateToUse</span> <span class="o">..</span> <span class="n">refContent</span> <span class="o">..</span> <span class="s2">"}}"</span> </span><span id="L-2051"><a href="#L-2051"><span class="linenos" data-line="2051"></span></a> <span class="kr">else</span> </span><span id="L-2052"><a href="#L-2052"><span class="linenos" data-line="2052"></span></a> <span class="nb">xpcall</span><span class="p">(</span> </span><span id="L-2053"><a href="#L-2053"><span class="linenos" data-line="2053"></span></a> <span class="kr">function</span> <span class="p">()</span> <span class="n">refContent</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">templateToUse</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="n">paramsToUse</span><span class="p">}</span> <span class="kr">end</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">function</span> <span class="p">()</span> <span class="n">throwError</span><span class="p">(</span><span class="s2">"no-such-reference-template"</span><span class="p">,</span> <span class="n">templateToUse</span><span class="p">,</span> <span class="n">i18nPath</span><span class="p">,</span> <span class="n">citeTypeToUse</span><span class="p">)</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="p">)</span> </span><span id="L-2056"><a href="#L-2056"><span class="linenos" data-line="2056"></span></a> <span class="kr">end</span> </span><span id="L-2057"><a href="#L-2057"><span class="linenos" data-line="2057"></span></a> </span><span id="L-2058"><a href="#L-2058"><span class="linenos" data-line="2058"></span></a> <span class="c1">-- If the citation couldn't be displayed using any template, but is not empty (barring ignored propeties), throw an error.</span> </span><span id="L-2059"><a href="#L-2059"><span class="linenos" data-line="2059"></span></a> <span class="kr">elseif</span> <span class="ow">not</span> <span class="n">referenceEmpty</span> <span class="kr">then</span> </span><span id="L-2060"><a href="#L-2060"><span class="linenos" data-line="2060"></span></a> <span class="n">refContent</span> <span class="o">=</span> <span class="n">errorText</span><span class="p">(</span><span class="s2">"malformed-reference-header"</span><span class="p">)</span> </span><span id="L-2061"><a href="#L-2061"><span class="linenos" data-line="2061"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">citeType</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">citeTypes</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-2062"><a href="#L-2062"><span class="linenos" data-line="2062"></span></a> <span class="n">refContent</span> <span class="o">=</span> <span class="n">refContent</span> <span class="o">..</span> <span class="n">errorText</span><span class="p">(</span><span class="s2">"template-failure-reason"</span><span class="p">,</span> <span class="n">citeConfig</span><span class="p">[</span><span class="n">citeType</span><span class="p">][</span><span class="s2">"template"</span><span class="p">],</span> <span class="n">citeErrors</span><span class="p">[</span><span class="n">citeType</span><span class="p">])</span> </span><span id="L-2063"><a href="#L-2063"><span class="linenos" data-line="2063"></span></a> <span class="kr">end</span> </span><span id="L-2064"><a href="#L-2064"><span class="linenos" data-line="2064"></span></a> <span class="n">refContent</span> <span class="o">=</span> <span class="n">refContent</span> <span class="o">..</span> <span class="n">errorText</span><span class="p">(</span><span class="s2">"malformed-reference-footer"</span><span class="p">)</span> </span><span id="L-2065"><a href="#L-2065"><span class="linenos" data-line="2065"></span></a> <span class="kr">end</span> </span><span id="L-2066"><a href="#L-2066"><span class="linenos" data-line="2066"></span></a> </span><span id="L-2067"><a href="#L-2067"><span class="linenos" data-line="2067"></span></a> <span class="c1">-- wrap refContent</span> </span><span id="L-2068"><a href="#L-2068"><span class="linenos" data-line="2068"></span></a> <span class="kd">local</span> <span class="n">ref</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-2069"><a href="#L-2069"><span class="linenos" data-line="2069"></span></a> <span class="kr">if</span> <span class="n">refContent</span> <span class="o">~=</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-2070"><a href="#L-2070"><span class="linenos" data-line="2070"></span></a> <span class="n">ref</span> <span class="o">=</span> <span class="p">{</span><span class="n">refContent</span><span class="p">}</span> </span><span id="L-2071"><a href="#L-2071"><span class="linenos" data-line="2071"></span></a> </span><span id="L-2072"><a href="#L-2072"><span class="linenos" data-line="2072"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">self</span><span class="p">.</span><span class="n">rawValue</span> <span class="kr">then</span> </span><span id="L-2073"><a href="#L-2073"><span class="linenos" data-line="2073"></span></a> <span class="c1">-- this should become a <ref> tag, so save the reference's hash for later</span> </span><span id="L-2074"><a href="#L-2074"><span class="linenos" data-line="2074"></span></a> <span class="n">ref</span><span class="p">.</span><span class="n">refHash</span> <span class="o">=</span> <span class="s2">"wikidata-"</span> <span class="o">..</span> <span class="n">statement</span><span class="p">.</span><span class="n">hash</span> <span class="o">..</span> <span class="s2">"-v"</span> <span class="o">..</span> <span class="p">(</span><span class="nb">tonumber</span><span class="p">(</span><span class="n">i18n</span><span class="p">[</span><span class="s1">'version'</span><span class="p">])</span> <span class="o">+</span> <span class="n">version</span><span class="p">)</span> </span><span id="L-2075"><a href="#L-2075"><span class="linenos" data-line="2075"></span></a> <span class="kr">end</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="p">{</span><span class="n">ref</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">else</span> </span><span id="L-2078"><a href="#L-2078"><span class="linenos" data-line="2078"></span></a> <span class="kr">return</span> <span class="p">{}</span> </span><span id="L-2079"><a href="#L-2079"><span class="linenos" data-line="2079"></span></a> <span class="kr">end</span> </span><span id="L-2080"><a href="#L-2080"><span class="linenos" data-line="2080"></span></a><span class="kr">end</span> </span><span id="L-2081"><a href="#L-2081"><span class="linenos" data-line="2081"></span></a> </span><span id="L-2082"><a href="#L-2082"><span class="linenos" data-line="2082"></span></a><span class="c1">-- gets a detail of one particular type for a reference</span> </span><span id="L-2083"><a href="#L-2083"><span class="linenos" data-line="2083"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">getReferenceDetail</span><span class="p">(</span><span class="n">snaks</span><span class="p">,</span> <span class="n">dType</span><span class="p">,</span> <span class="n">raw</span><span class="p">,</span> <span class="n">link</span><span class="p">,</span> <span class="n">anyLang</span><span class="p">)</span> </span><span id="L-2084"><a href="#L-2084"><span class="linenos" data-line="2084"></span></a> <span class="kd">local</span> <span class="n">switchLang</span> <span class="o">=</span> <span class="n">anyLang</span> </span><span id="L-2085"><a href="#L-2085"><span class="linenos" data-line="2085"></span></a> <span class="kd">local</span> <span class="n">value</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-2086"><a href="#L-2086"><span class="linenos" data-line="2086"></span></a> </span><span id="L-2087"><a href="#L-2087"><span class="linenos" data-line="2087"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">snaks</span><span class="p">[</span><span class="n">dType</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2088"><a href="#L-2088"><span class="linenos" data-line="2088"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-2089"><a href="#L-2089"><span class="linenos" data-line="2089"></span></a> <span class="kr">end</span> </span><span id="L-2090"><a href="#L-2090"><span class="linenos" data-line="2090"></span></a> </span><span id="L-2091"><a href="#L-2091"><span class="linenos" data-line="2091"></span></a> <span class="c1">-- if anyLang, first try the local language and otherwise any language</span> </span><span id="L-2092"><a href="#L-2092"><span class="linenos" data-line="2092"></span></a> <span class="kr">repeat</span> </span><span id="L-2093"><a href="#L-2093"><span class="linenos" data-line="2093"></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">snaks</span><span class="p">[</span><span class="n">dType</span><span class="p">])</span> <span class="kr">do</span> </span><span id="L-2094"><a href="#L-2094"><span class="linenos" data-line="2094"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">:</span><span class="n">getValue</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">raw</span><span class="p">,</span> <span class="n">link</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="n">anyLang</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">switchLang</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> <span class="c1">-- noSpecial = true</span> </span><span id="L-2095"><a href="#L-2095"><span class="linenos" data-line="2095"></span></a> </span><span id="L-2096"><a href="#L-2096"><span class="linenos" data-line="2096"></span></a> <span class="kr">if</span> <span class="n">value</span> <span class="kr">then</span> </span><span id="L-2097"><a href="#L-2097"><span class="linenos" data-line="2097"></span></a> <span class="kr">break</span> </span><span id="L-2098"><a href="#L-2098"><span class="linenos" data-line="2098"></span></a> <span class="kr">end</span> </span><span id="L-2099"><a href="#L-2099"><span class="linenos" data-line="2099"></span></a> <span class="kr">end</span> </span><span id="L-2100"><a href="#L-2100"><span class="linenos" data-line="2100"></span></a> </span><span id="L-2101"><a href="#L-2101"><span class="linenos" data-line="2101"></span></a> <span class="kr">if</span> <span class="n">value</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">anyLang</span> <span class="kr">then</span> </span><span id="L-2102"><a href="#L-2102"><span class="linenos" data-line="2102"></span></a> <span class="kr">break</span> </span><span id="L-2103"><a href="#L-2103"><span class="linenos" data-line="2103"></span></a> <span class="kr">end</span> </span><span id="L-2104"><a href="#L-2104"><span class="linenos" data-line="2104"></span></a> </span><span id="L-2105"><a href="#L-2105"><span class="linenos" data-line="2105"></span></a> <span class="n">switchLang</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">switchLang</span> </span><span id="L-2106"><a href="#L-2106"><span class="linenos" data-line="2106"></span></a> <span class="kr">until</span> <span class="n">anyLang</span> <span class="ow">and</span> <span class="n">switchLang</span> </span><span id="L-2107"><a href="#L-2107"><span class="linenos" data-line="2107"></span></a> </span><span id="L-2108"><a href="#L-2108"><span class="linenos" data-line="2108"></span></a> <span class="kr">return</span> <span class="n">value</span> </span><span id="L-2109"><a href="#L-2109"><span class="linenos" data-line="2109"></span></a><span class="kr">end</span> </span><span id="L-2110"><a href="#L-2110"><span class="linenos" data-line="2110"></span></a> </span><span id="L-2111"><a href="#L-2111"><span class="linenos" data-line="2111"></span></a><span class="c1">-- gets the details of one particular type for a reference</span> </span><span id="L-2112"><a href="#L-2112"><span class="linenos" data-line="2112"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">getReferenceDetails</span><span class="p">(</span><span class="n">snaks</span><span class="p">,</span> <span class="n">dType</span><span class="p">,</span> <span class="n">raw</span><span class="p">,</span> <span class="n">link</span><span class="p">,</span> <span class="n">anyLang</span><span class="p">)</span> </span><span id="L-2113"><a href="#L-2113"><span class="linenos" data-line="2113"></span></a> <span class="kd">local</span> <span class="n">values</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-2114"><a href="#L-2114"><span class="linenos" data-line="2114"></span></a> </span><span id="L-2115"><a href="#L-2115"><span class="linenos" data-line="2115"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">snaks</span><span class="p">[</span><span class="n">dType</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2116"><a href="#L-2116"><span class="linenos" data-line="2116"></span></a> <span class="kr">return</span> <span class="p">{}</span> </span><span id="L-2117"><a href="#L-2117"><span class="linenos" data-line="2117"></span></a> <span class="kr">end</span> </span><span id="L-2118"><a href="#L-2118"><span class="linenos" data-line="2118"></span></a> </span><span id="L-2119"><a href="#L-2119"><span class="linenos" data-line="2119"></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">snaks</span><span class="p">[</span><span class="n">dType</span><span class="p">])</span> <span class="kr">do</span> </span><span id="L-2120"><a href="#L-2120"><span class="linenos" data-line="2120"></span></a> <span class="c1">-- if nil is returned then it will not be added to the table</span> </span><span id="L-2121"><a href="#L-2121"><span class="linenos" data-line="2121"></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="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">:</span><span class="n">getValue</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">raw</span><span class="p">,</span> <span class="n">link</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="n">anyLang</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> <span class="c1">-- noSpecial = true</span> </span><span id="L-2122"><a href="#L-2122"><span class="linenos" data-line="2122"></span></a> <span class="kr">end</span> </span><span id="L-2123"><a href="#L-2123"><span class="linenos" data-line="2123"></span></a> </span><span id="L-2124"><a href="#L-2124"><span class="linenos" data-line="2124"></span></a> <span class="kr">return</span> <span class="n">values</span> </span><span id="L-2125"><a href="#L-2125"><span class="linenos" data-line="2125"></span></a><span class="kr">end</span> </span><span id="L-2126"><a href="#L-2126"><span class="linenos" data-line="2126"></span></a> </span><span id="L-2127"><a href="#L-2127"><span class="linenos" data-line="2127"></span></a><span class="c1">-- level 1 hook</span> </span><span id="L-2128"><a href="#L-2128"><span class="linenos" data-line="2128"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">getAlias</span><span class="p">(</span><span class="n">object</span><span class="p">)</span> </span><span id="L-2129"><a href="#L-2129"><span class="linenos" data-line="2129"></span></a> <span class="kd">local</span> <span class="n">value</span> <span class="o">=</span> <span class="n">object</span><span class="p">.</span><span class="n">value</span> </span><span id="L-2130"><a href="#L-2130"><span class="linenos" data-line="2130"></span></a> <span class="kd">local</span> <span class="n">title</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-2131"><a href="#L-2131"><span class="linenos" data-line="2131"></span></a> </span><span id="L-2132"><a href="#L-2132"><span class="linenos" data-line="2132"></span></a> <span class="kr">if</span> <span class="n">value</span> <span class="ow">and</span> <span class="n">self</span><span class="p">.</span><span class="n">linked</span> <span class="kr">then</span> </span><span id="L-2133"><a href="#L-2133"><span class="linenos" data-line="2133"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">entityID</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"Q"</span> <span class="kr">then</span> </span><span id="L-2134"><a href="#L-2134"><span class="linenos" data-line="2134"></span></a> <span class="n">title</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">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">entityID</span><span class="p">)</span> </span><span id="L-2135"><a href="#L-2135"><span class="linenos" data-line="2135"></span></a> <span class="kr">elseif</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">entityID</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"P"</span> <span class="kr">then</span> </span><span id="L-2136"><a href="#L-2136"><span class="linenos" data-line="2136"></span></a> <span class="n">title</span> <span class="o">=</span> <span class="s2">"d:Property:"</span> <span class="o">..</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">entityID</span> </span><span id="L-2137"><a href="#L-2137"><span class="linenos" data-line="2137"></span></a> <span class="kr">end</span> </span><span id="L-2138"><a href="#L-2138"><span class="linenos" data-line="2138"></span></a> </span><span id="L-2139"><a href="#L-2139"><span class="linenos" data-line="2139"></span></a> <span class="kr">if</span> <span class="n">title</span> <span class="kr">then</span> </span><span id="L-2140"><a href="#L-2140"><span class="linenos" data-line="2140"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">buildWikilink</span><span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> </span><span id="L-2141"><a href="#L-2141"><span class="linenos" data-line="2141"></span></a> <span class="kr">end</span> </span><span id="L-2142"><a href="#L-2142"><span class="linenos" data-line="2142"></span></a> <span class="kr">end</span> </span><span id="L-2143"><a href="#L-2143"><span class="linenos" data-line="2143"></span></a> </span><span id="L-2144"><a href="#L-2144"><span class="linenos" data-line="2144"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="p">{</span><span class="n">value</span><span class="p">}</span> <span class="c1">-- create one value object</span> </span><span id="L-2145"><a href="#L-2145"><span class="linenos" data-line="2145"></span></a> </span><span id="L-2146"><a href="#L-2146"><span class="linenos" data-line="2146"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">value</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-2147"><a href="#L-2147"><span class="linenos" data-line="2147"></span></a> <span class="kr">return</span> <span class="p">{</span><span class="n">value</span><span class="p">}</span> <span class="c1">-- wrap the value object in an array and return it</span> </span><span id="L-2148"><a href="#L-2148"><span class="linenos" data-line="2148"></span></a> <span class="kr">else</span> </span><span id="L-2149"><a href="#L-2149"><span class="linenos" data-line="2149"></span></a> <span class="kr">return</span> <span class="p">{}</span> <span class="c1">-- return empty array if there was no value</span> </span><span id="L-2150"><a href="#L-2150"><span class="linenos" data-line="2150"></span></a> <span class="kr">end</span> </span><span id="L-2151"><a href="#L-2151"><span class="linenos" data-line="2151"></span></a><span class="kr">end</span> </span><span id="L-2152"><a href="#L-2152"><span class="linenos" data-line="2152"></span></a> </span><span id="L-2153"><a href="#L-2153"><span class="linenos" data-line="2153"></span></a><span class="c1">-- level 1 hook</span> </span><span id="L-2154"><a href="#L-2154"><span class="linenos" data-line="2154"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">getBadge</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> </span><span id="L-2155"><a href="#L-2155"><span class="linenos" data-line="2155"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">:</span><span class="n">getLabel</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">rawValue</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">linked</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">shortName</span><span class="p">)</span> </span><span id="L-2156"><a href="#L-2156"><span class="linenos" data-line="2156"></span></a> </span><span id="L-2157"><a href="#L-2157"><span class="linenos" data-line="2157"></span></a> <span class="kr">if</span> <span class="n">value</span> <span class="o">==</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-2158"><a href="#L-2158"><span class="linenos" data-line="2158"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-2159"><a href="#L-2159"><span class="linenos" data-line="2159"></span></a> <span class="kr">end</span> </span><span id="L-2160"><a href="#L-2160"><span class="linenos" data-line="2160"></span></a> </span><span id="L-2161"><a href="#L-2161"><span class="linenos" data-line="2161"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="p">{</span><span class="n">value</span><span class="p">}</span> <span class="c1">-- create one value object</span> </span><span id="L-2162"><a href="#L-2162"><span class="linenos" data-line="2162"></span></a> </span><span id="L-2163"><a href="#L-2163"><span class="linenos" data-line="2163"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">value</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-2164"><a href="#L-2164"><span class="linenos" data-line="2164"></span></a> <span class="kr">return</span> <span class="p">{</span><span class="n">value</span><span class="p">}</span> <span class="c1">-- wrap the value object in an array and return it</span> </span><span id="L-2165"><a href="#L-2165"><span class="linenos" data-line="2165"></span></a> <span class="kr">else</span> </span><span id="L-2166"><a href="#L-2166"><span class="linenos" data-line="2166"></span></a> <span class="kr">return</span> <span class="p">{}</span> <span class="c1">-- return empty array if there was no value</span> </span><span id="L-2167"><a href="#L-2167"><span class="linenos" data-line="2167"></span></a> <span class="kr">end</span> </span><span id="L-2168"><a href="#L-2168"><span class="linenos" data-line="2168"></span></a><span class="kr">end</span> </span><span id="L-2169"><a href="#L-2169"><span class="linenos" data-line="2169"></span></a> </span><span id="L-2170"><a href="#L-2170"><span class="linenos" data-line="2170"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">callHook</span><span class="p">(</span><span class="n">param</span><span class="p">,</span> <span class="n">hooks</span><span class="p">,</span> <span class="n">statement</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> </span><span id="L-2171"><a href="#L-2171"><span class="linenos" data-line="2171"></span></a> <span class="c1">-- call a parameter's hook if it has been defined and if it has not been called before</span> </span><span id="L-2172"><a href="#L-2172"><span class="linenos" data-line="2172"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">[</span><span class="n">param</span><span class="p">]</span> <span class="ow">and</span> <span class="n">hooks</span><span class="p">[</span><span class="n">param</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2173"><a href="#L-2173"><span class="linenos" data-line="2173"></span></a> <span class="kd">local</span> <span class="n">valuesArray</span> <span class="o">=</span> <span class="n">self</span><span class="p">[</span><span class="n">hooks</span><span class="p">[</span><span class="n">param</span><span class="p">]](</span><span class="n">self</span><span class="p">,</span> <span class="n">statement</span><span class="p">,</span> <span class="n">param</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">hooks</span><span class="p">)</span> <span class="c1">-- array with value objects</span> </span><span id="L-2174"><a href="#L-2174"><span class="linenos" data-line="2174"></span></a> </span><span id="L-2175"><a href="#L-2175"><span class="linenos" data-line="2175"></span></a> <span class="c1">-- add to the result</span> </span><span id="L-2176"><a href="#L-2176"><span class="linenos" data-line="2176"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">valuesArray</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-2177"><a href="#L-2177"><span class="linenos" data-line="2177"></span></a> <span class="n">result</span><span class="p">[</span><span class="n">param</span><span class="p">]</span> <span class="o">=</span> <span class="n">valuesArray</span> </span><span id="L-2178"><a href="#L-2178"><span class="linenos" data-line="2178"></span></a> <span class="n">result</span><span class="p">.</span><span class="n">count</span> <span class="o">=</span> <span class="n">result</span><span class="p">.</span><span class="n">count</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-2179"><a href="#L-2179"><span class="linenos" data-line="2179"></span></a> <span class="kr">else</span> </span><span id="L-2180"><a href="#L-2180"><span class="linenos" data-line="2180"></span></a> <span class="n">result</span><span class="p">[</span><span class="n">param</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1">-- an empty array to indicate that we've tried this hook already</span> </span><span id="L-2181"><a href="#L-2181"><span class="linenos" data-line="2181"></span></a> <span class="kr">return</span> <span class="kc">true</span> <span class="c1">-- miss == true</span> </span><span id="L-2182"><a href="#L-2182"><span class="linenos" data-line="2182"></span></a> <span class="kr">end</span> </span><span id="L-2183"><a href="#L-2183"><span class="linenos" data-line="2183"></span></a> <span class="kr">end</span> </span><span id="L-2184"><a href="#L-2184"><span class="linenos" data-line="2184"></span></a> </span><span id="L-2185"><a href="#L-2185"><span class="linenos" data-line="2185"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-2186"><a href="#L-2186"><span class="linenos" data-line="2186"></span></a><span class="kr">end</span> </span><span id="L-2187"><a href="#L-2187"><span class="linenos" data-line="2187"></span></a> </span><span id="L-2188"><a href="#L-2188"><span class="linenos" data-line="2188"></span></a><span class="c1">-- iterate through claims, claim's qualifiers or claim's references to collect values</span> </span><span id="L-2189"><a href="#L-2189"><span class="linenos" data-line="2189"></span></a><span class="kr">function</span> <span class="nc">State</span><span class="p">:</span><span class="nf">iterate</span><span class="p">(</span><span class="n">statements</span><span class="p">,</span> <span class="n">hooks</span><span class="p">,</span> <span class="n">matchHook</span><span class="p">)</span> </span><span id="L-2190"><a href="#L-2190"><span class="linenos" data-line="2190"></span></a> <span class="n">matchHook</span> <span class="o">=</span> <span class="n">matchHook</span> <span class="ow">or</span> <span class="n">alwaysTrue</span> </span><span id="L-2191"><a href="#L-2191"><span class="linenos" data-line="2191"></span></a> </span><span id="L-2192"><a href="#L-2192"><span class="linenos" data-line="2192"></span></a> <span class="kd">local</span> <span class="n">matches</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-2193"><a href="#L-2193"><span class="linenos" data-line="2193"></span></a> <span class="kd">local</span> <span class="n">rankPos</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-2194"><a href="#L-2194"><span class="linenos" data-line="2194"></span></a> <span class="kd">local</span> <span class="n">result</span><span class="p">,</span> <span class="n">gotRequired</span> </span><span id="L-2195"><a href="#L-2195"><span class="linenos" data-line="2195"></span></a> </span><span id="L-2196"><a href="#L-2196"><span class="linenos" data-line="2196"></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">statements</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-2197"><a href="#L-2197"><span class="linenos" data-line="2197"></span></a> <span class="c1">-- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.)</span> </span><span id="L-2198"><a href="#L-2198"><span class="linenos" data-line="2198"></span></a> <span class="n">matches</span><span class="p">,</span> <span class="n">rankPos</span> <span class="o">=</span> <span class="n">matchHook</span><span class="p">(</span><span class="n">self</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> </span><span id="L-2199"><a href="#L-2199"><span class="linenos" data-line="2199"></span></a> </span><span id="L-2200"><a href="#L-2200"><span class="linenos" data-line="2200"></span></a> <span class="kr">if</span> <span class="n">matches</span> <span class="kr">then</span> </span><span id="L-2201"><a href="#L-2201"><span class="linenos" data-line="2201"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="p">{</span><span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">}</span> <span class="c1">-- collection of arrays with value objects</span> </span><span id="L-2202"><a href="#L-2202"><span class="linenos" data-line="2202"></span></a> </span><span id="L-2203"><a href="#L-2203"><span class="linenos" data-line="2203"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">walk</span><span class="p">(</span><span class="n">formatTable</span><span class="p">)</span> </span><span id="L-2204"><a href="#L-2204"><span class="linenos" data-line="2204"></span></a> <span class="kd">local</span> <span class="n">miss</span> </span><span id="L-2205"><a href="#L-2205"><span class="linenos" data-line="2205"></span></a> </span><span id="L-2206"><a href="#L-2206"><span class="linenos" data-line="2206"></span></a> <span class="kr">for</span> <span class="n">i2</span><span class="p">,</span> <span class="n">v2</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">formatTable</span><span class="p">.</span><span class="n">req</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-2207"><a href="#L-2207"><span class="linenos" data-line="2207"></span></a> <span class="c1">-- call a hook, adding its return value to the result</span> </span><span id="L-2208"><a href="#L-2208"><span class="linenos" data-line="2208"></span></a> <span class="n">miss</span> <span class="o">=</span> <span class="n">self</span><span class="p">:</span><span class="n">callHook</span><span class="p">(</span><span class="n">i2</span><span class="p">,</span> <span class="n">hooks</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> </span><span id="L-2209"><a href="#L-2209"><span class="linenos" data-line="2209"></span></a> </span><span id="L-2210"><a href="#L-2210"><span class="linenos" data-line="2210"></span></a> <span class="kr">if</span> <span class="n">miss</span> <span class="kr">then</span> </span><span id="L-2211"><a href="#L-2211"><span class="linenos" data-line="2211"></span></a> <span class="c1">-- we miss a required value for this level, so return false</span> </span><span id="L-2212"><a href="#L-2212"><span class="linenos" data-line="2212"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-2213"><a href="#L-2213"><span class="linenos" data-line="2213"></span></a> <span class="kr">end</span> </span><span id="L-2214"><a href="#L-2214"><span class="linenos" data-line="2214"></span></a> </span><span id="L-2215"><a href="#L-2215"><span class="linenos" data-line="2215"></span></a> <span class="kr">if</span> <span class="n">result</span><span class="p">.</span><span class="n">count</span> <span class="o">==</span> <span class="n">hooks</span><span class="p">.</span><span class="n">count</span> <span class="kr">then</span> </span><span id="L-2216"><a href="#L-2216"><span class="linenos" data-line="2216"></span></a> <span class="c1">-- we're done if all hooks have been called;</span> </span><span id="L-2217"><a href="#L-2217"><span class="linenos" data-line="2217"></span></a> <span class="c1">-- returning at this point breaks the loop</span> </span><span id="L-2218"><a href="#L-2218"><span class="linenos" data-line="2218"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-2219"><a href="#L-2219"><span class="linenos" data-line="2219"></span></a> <span class="kr">end</span> </span><span id="L-2220"><a href="#L-2220"><span class="linenos" data-line="2220"></span></a> <span class="kr">end</span> </span><span id="L-2221"><a href="#L-2221"><span class="linenos" data-line="2221"></span></a> </span><span id="L-2222"><a href="#L-2222"><span class="linenos" data-line="2222"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">v2</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">formatTable</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-2223"><a href="#L-2223"><span class="linenos" data-line="2223"></span></a> <span class="kr">if</span> <span class="n">result</span><span class="p">.</span><span class="n">count</span> <span class="o">==</span> <span class="n">hooks</span><span class="p">.</span><span class="n">count</span> <span class="kr">then</span> </span><span id="L-2224"><a href="#L-2224"><span class="linenos" data-line="2224"></span></a> <span class="c1">-- we're done if all hooks have been called;</span> </span><span id="L-2225"><a href="#L-2225"><span class="linenos" data-line="2225"></span></a> <span class="c1">-- returning at this point prevents further childs from being processed</span> </span><span id="L-2226"><a href="#L-2226"><span class="linenos" data-line="2226"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-2227"><a href="#L-2227"><span class="linenos" data-line="2227"></span></a> <span class="kr">end</span> </span><span id="L-2228"><a href="#L-2228"><span class="linenos" data-line="2228"></span></a> </span><span id="L-2229"><a href="#L-2229"><span class="linenos" data-line="2229"></span></a> <span class="kr">if</span> <span class="n">v2</span><span class="p">.</span><span class="n">child</span> <span class="kr">then</span> </span><span id="L-2230"><a href="#L-2230"><span class="linenos" data-line="2230"></span></a> <span class="n">walk</span><span class="p">(</span><span class="n">v2</span><span class="p">.</span><span class="n">child</span><span class="p">)</span> </span><span id="L-2231"><a href="#L-2231"><span class="linenos" data-line="2231"></span></a> <span class="kr">end</span> </span><span id="L-2232"><a href="#L-2232"><span class="linenos" data-line="2232"></span></a> <span class="kr">end</span> </span><span id="L-2233"><a href="#L-2233"><span class="linenos" data-line="2233"></span></a> </span><span id="L-2234"><a href="#L-2234"><span class="linenos" data-line="2234"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-2235"><a href="#L-2235"><span class="linenos" data-line="2235"></span></a> <span class="kr">end</span> </span><span id="L-2236"><a href="#L-2236"><span class="linenos" data-line="2236"></span></a> <span class="n">gotRequired</span> <span class="o">=</span> <span class="n">walk</span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">parsedFormat</span><span class="p">)</span> </span><span id="L-2237"><a href="#L-2237"><span class="linenos" data-line="2237"></span></a> </span><span id="L-2238"><a href="#L-2238"><span class="linenos" data-line="2238"></span></a> <span class="c1">-- only append the result if we got values for all required parameters on the root level</span> </span><span id="L-2239"><a href="#L-2239"><span class="linenos" data-line="2239"></span></a> <span class="kr">if</span> <span class="n">gotRequired</span> <span class="kr">then</span> </span><span id="L-2240"><a href="#L-2240"><span class="linenos" data-line="2240"></span></a> <span class="c1">-- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank</span> </span><span id="L-2241"><a href="#L-2241"><span class="linenos" data-line="2241"></span></a> <span class="kr">if</span> <span class="n">rankPos</span> <span class="ow">and</span> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">foundRank</span> <span class="o">></span> <span class="n">rankPos</span> <span class="kr">then</span> </span><span id="L-2242"><a href="#L-2242"><span class="linenos" data-line="2242"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">foundRank</span> <span class="o">=</span> <span class="n">rankPos</span> </span><span id="L-2243"><a href="#L-2243"><span class="linenos" data-line="2243"></span></a> <span class="kr">end</span> </span><span id="L-2244"><a href="#L-2244"><span class="linenos" data-line="2244"></span></a> </span><span id="L-2245"><a href="#L-2245"><span class="linenos" data-line="2245"></span></a> <span class="c1">-- append the result</span> </span><span id="L-2246"><a href="#L-2246"><span class="linenos" data-line="2246"></span></a> <span class="n">self</span><span class="p">.</span><span class="n">results</span><span class="p">[</span><span class="o">#</span><span class="n">self</span><span class="p">.</span><span class="n">results</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">result</span> </span><span id="L-2247"><a href="#L-2247"><span class="linenos" data-line="2247"></span></a> </span><span id="L-2248"><a href="#L-2248"><span class="linenos" data-line="2248"></span></a> <span class="c1">-- break if we only need a single value</span> </span><span id="L-2249"><a href="#L-2249"><span class="linenos" data-line="2249"></span></a> <span class="kr">if</span> <span class="n">self</span><span class="p">.</span><span class="n">singleValue</span> <span class="kr">then</span> </span><span id="L-2250"><a href="#L-2250"><span class="linenos" data-line="2250"></span></a> <span class="kr">break</span> </span><span id="L-2251"><a href="#L-2251"><span class="linenos" data-line="2251"></span></a> <span class="kr">end</span> </span><span id="L-2252"><a href="#L-2252"><span class="linenos" data-line="2252"></span></a> <span class="kr">end</span> </span><span id="L-2253"><a href="#L-2253"><span class="linenos" data-line="2253"></span></a> <span class="kr">end</span> </span><span id="L-2254"><a href="#L-2254"><span class="linenos" data-line="2254"></span></a> <span class="kr">end</span> </span><span id="L-2255"><a href="#L-2255"><span class="linenos" data-line="2255"></span></a> </span><span id="L-2256"><a href="#L-2256"><span class="linenos" data-line="2256"></span></a> <span class="kr">return</span> <span class="n">self</span><span class="p">:</span><span class="n">out</span><span class="p">()</span> </span><span id="L-2257"><a href="#L-2257"><span class="linenos" data-line="2257"></span></a><span class="kr">end</span> </span><span id="L-2258"><a href="#L-2258"><span class="linenos" data-line="2258"></span></a> </span><span id="L-2259"><a href="#L-2259"><span class="linenos" data-line="2259"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">getEntityId</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">eid</span><span class="p">,</span> <span class="n">page</span><span class="p">,</span> <span class="n">allowOmitPropPrefix</span><span class="p">,</span> <span class="n">globalSiteId</span><span class="p">)</span> </span><span id="L-2260"><a href="#L-2260"><span class="linenos" data-line="2260"></span></a> <span class="kd">local</span> <span class="n">id</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-2261"><a href="#L-2261"><span class="linenos" data-line="2261"></span></a> <span class="kd">local</span> <span class="n">prop</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-2262"><a href="#L-2262"><span class="linenos" data-line="2262"></span></a> </span><span id="L-2263"><a href="#L-2263"><span class="linenos" data-line="2263"></span></a> <span class="kr">if</span> <span class="n">arg</span> <span class="kr">then</span> </span><span id="L-2264"><a href="#L-2264"><span class="linenos" data-line="2264"></span></a> <span class="kr">if</span> <span class="n">arg</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s2">":"</span> <span class="kr">then</span> </span><span id="L-2265"><a href="#L-2265"><span class="linenos" data-line="2265"></span></a> <span class="n">page</span> <span class="o">=</span> <span class="n">arg</span> </span><span id="L-2266"><a href="#L-2266"><span class="linenos" data-line="2266"></span></a> <span class="n">eid</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-2267"><a href="#L-2267"><span class="linenos" data-line="2267"></span></a> <span class="kr">elseif</span> <span class="n">arg</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">):</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"Q"</span> <span class="ow">or</span> <span class="n">arg</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">9</span><span class="p">):</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"property:"</span> <span class="ow">or</span> <span class="n">allowOmitPropPrefix</span> <span class="kr">then</span> </span><span id="L-2268"><a href="#L-2268"><span class="linenos" data-line="2268"></span></a> <span class="n">eid</span> <span class="o">=</span> <span class="n">arg</span> </span><span id="L-2269"><a href="#L-2269"><span class="linenos" data-line="2269"></span></a> <span class="n">page</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-2270"><a href="#L-2270"><span class="linenos" data-line="2270"></span></a> <span class="kr">else</span> </span><span id="L-2271"><a href="#L-2271"><span class="linenos" data-line="2271"></span></a> <span class="n">prop</span> <span class="o">=</span> <span class="n">arg</span> </span><span id="L-2272"><a href="#L-2272"><span class="linenos" data-line="2272"></span></a> <span class="kr">end</span> </span><span id="L-2273"><a href="#L-2273"><span class="linenos" data-line="2273"></span></a> <span class="kr">end</span> </span><span id="L-2274"><a href="#L-2274"><span class="linenos" data-line="2274"></span></a> </span><span id="L-2275"><a href="#L-2275"><span class="linenos" data-line="2275"></span></a> <span class="kr">if</span> <span class="n">eid</span> <span class="kr">then</span> </span><span id="L-2276"><a href="#L-2276"><span class="linenos" data-line="2276"></span></a> <span class="kr">if</span> <span class="n">eid</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">9</span><span class="p">):</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"property:"</span> <span class="kr">then</span> </span><span id="L-2277"><a href="#L-2277"><span class="linenos" data-line="2277"></span></a> <span class="n">id</span> <span class="o">=</span> <span class="n">replaceAlias</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">eid</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">10</span><span class="p">)))</span> </span><span id="L-2278"><a href="#L-2278"><span class="linenos" data-line="2278"></span></a> </span><span id="L-2279"><a href="#L-2279"><span class="linenos" data-line="2279"></span></a> <span class="kr">if</span> <span class="n">id</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">):</span><span class="n">upper</span><span class="p">()</span> <span class="o">~=</span> <span class="s2">"P"</span> <span class="kr">then</span> </span><span id="L-2280"><a href="#L-2280"><span class="linenos" data-line="2280"></span></a> <span class="n">id</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-2281"><a href="#L-2281"><span class="linenos" data-line="2281"></span></a> <span class="kr">end</span> </span><span id="L-2282"><a href="#L-2282"><span class="linenos" data-line="2282"></span></a> <span class="kr">else</span> </span><span id="L-2283"><a href="#L-2283"><span class="linenos" data-line="2283"></span></a> <span class="n">id</span> <span class="o">=</span> <span class="n">replaceAlias</span><span class="p">(</span><span class="n">eid</span><span class="p">)</span> </span><span id="L-2284"><a href="#L-2284"><span class="linenos" data-line="2284"></span></a> <span class="kr">end</span> </span><span id="L-2285"><a href="#L-2285"><span class="linenos" data-line="2285"></span></a> <span class="kr">elseif</span> <span class="n">page</span> <span class="kr">then</span> </span><span id="L-2286"><a href="#L-2286"><span class="linenos" data-line="2286"></span></a> <span class="kr">if</span> <span class="n">page</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s2">":"</span> <span class="kr">then</span> </span><span id="L-2287"><a href="#L-2287"><span class="linenos" data-line="2287"></span></a> <span class="n">page</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">page</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-2288"><a href="#L-2288"><span class="linenos" data-line="2288"></span></a> <span class="kr">end</span> </span><span id="L-2289"><a href="#L-2289"><span class="linenos" data-line="2289"></span></a> </span><span id="L-2290"><a href="#L-2290"><span class="linenos" data-line="2290"></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">getEntityIdForTitle</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">globalSiteId</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> </span><span id="L-2291"><a href="#L-2291"><span class="linenos" data-line="2291"></span></a> <span class="kr">end</span> </span><span id="L-2292"><a href="#L-2292"><span class="linenos" data-line="2292"></span></a> </span><span id="L-2293"><a href="#L-2293"><span class="linenos" data-line="2293"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">id</span> <span class="kr">then</span> </span><span id="L-2294"><a href="#L-2294"><span class="linenos" data-line="2294"></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 class="ow">or</span> <span class="s2">""</span> </span><span id="L-2295"><a href="#L-2295"><span class="linenos" data-line="2295"></span></a> <span class="kr">end</span> </span><span id="L-2296"><a href="#L-2296"><span class="linenos" data-line="2296"></span></a> </span><span id="L-2297"><a href="#L-2297"><span class="linenos" data-line="2297"></span></a> <span class="n">id</span> <span class="o">=</span> <span class="n">id</span><span class="p">:</span><span class="n">upper</span><span class="p">()</span> </span><span id="L-2298"><a href="#L-2298"><span class="linenos" data-line="2298"></span></a> </span><span id="L-2299"><a href="#L-2299"><span class="linenos" data-line="2299"></span></a> <span class="kr">if</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">isValidEntityId</span><span class="p">(</span><span class="n">id</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-2300"><a href="#L-2300"><span class="linenos" data-line="2300"></span></a> <span class="n">id</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-2301"><a href="#L-2301"><span class="linenos" data-line="2301"></span></a> <span class="kr">end</span> </span><span id="L-2302"><a href="#L-2302"><span class="linenos" data-line="2302"></span></a> </span><span id="L-2303"><a href="#L-2303"><span class="linenos" data-line="2303"></span></a> <span class="kr">return</span> <span class="n">id</span><span class="p">,</span> <span class="n">prop</span> </span><span id="L-2304"><a href="#L-2304"><span class="linenos" data-line="2304"></span></a><span class="kr">end</span> </span><span id="L-2305"><a href="#L-2305"><span class="linenos" data-line="2305"></span></a> </span><span id="L-2306"><a href="#L-2306"><span class="linenos" data-line="2306"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">nextArg</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2307"><a href="#L-2307"><span class="linenos" data-line="2307"></span></a> <span class="kd">local</span> <span class="n">arg</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pointer</span><span class="p">]</span> </span><span id="L-2308"><a href="#L-2308"><span class="linenos" data-line="2308"></span></a> </span><span id="L-2309"><a href="#L-2309"><span class="linenos" data-line="2309"></span></a> <span class="kr">if</span> <span class="n">arg</span> <span class="kr">then</span> </span><span id="L-2310"><a href="#L-2310"><span class="linenos" data-line="2310"></span></a> <span class="n">args</span><span class="p">.</span><span class="n">pointer</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">pointer</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-2311"><a href="#L-2311"><span class="linenos" data-line="2311"></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">trim</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> </span><span id="L-2312"><a href="#L-2312"><span class="linenos" data-line="2312"></span></a> <span class="kr">else</span> </span><span id="L-2313"><a href="#L-2313"><span class="linenos" data-line="2313"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-2314"><a href="#L-2314"><span class="linenos" data-line="2314"></span></a> <span class="kr">end</span> </span><span id="L-2315"><a href="#L-2315"><span class="linenos" data-line="2315"></span></a><span class="kr">end</span> </span><span id="L-2316"><a href="#L-2316"><span class="linenos" data-line="2316"></span></a> </span><span id="L-2317"><a href="#L-2317"><span class="linenos" data-line="2317"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">claimCommand</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">funcName</span><span class="p">)</span> </span><span id="L-2318"><a href="#L-2318"><span class="linenos" data-line="2318"></span></a> <span class="kd">local</span> <span class="n">cfg</span> <span class="o">=</span> <span class="n">Config</span><span class="p">:</span><span class="n">new</span><span class="p">()</span> </span><span id="L-2319"><a href="#L-2319"><span class="linenos" data-line="2319"></span></a> <span class="n">cfg</span><span class="p">:</span><span class="n">processFlagOrCommand</span><span class="p">(</span><span class="n">funcName</span><span class="p">)</span> <span class="c1">-- process first command (== function name)</span> </span><span id="L-2320"><a href="#L-2320"><span class="linenos" data-line="2320"></span></a> </span><span id="L-2321"><a href="#L-2321"><span class="linenos" data-line="2321"></span></a> <span class="kd">local</span> <span class="n">lastArg</span><span class="p">,</span> <span class="n">parsedFormat</span><span class="p">,</span> <span class="n">formatParams</span><span class="p">,</span> <span class="n">claims</span><span class="p">,</span> <span class="n">value</span> </span><span id="L-2322"><a href="#L-2322"><span class="linenos" data-line="2322"></span></a> <span class="kd">local</span> <span class="n">hooks</span> <span class="o">=</span> <span class="p">{</span><span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">}</span> </span><span id="L-2323"><a href="#L-2323"><span class="linenos" data-line="2323"></span></a> </span><span id="L-2324"><a href="#L-2324"><span class="linenos" data-line="2324"></span></a> <span class="c1">-- set the date if given;</span> </span><span id="L-2325"><a href="#L-2325"><span class="linenos" data-line="2325"></span></a> <span class="c1">-- must come BEFORE processing the flags</span> </span><span id="L-2326"><a href="#L-2326"><span class="linenos" data-line="2326"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">[</span><span class="n">p</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">date</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2327"><a href="#L-2327"><span class="linenos" data-line="2327"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">atDate</span> <span class="o">=</span> <span class="p">{</span><span class="n">parseDate</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="n">p</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">date</span><span class="p">])}</span> </span><span id="L-2328"><a href="#L-2328"><span class="linenos" data-line="2328"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">periods</span> <span class="o">=</span> <span class="p">{</span><span class="kc">false</span><span class="p">,</span> <span class="kc">true</span><span class="p">,</span> <span class="kc">false</span><span class="p">}</span> <span class="c1">-- change default time constraint to 'current'</span> </span><span id="L-2329"><a href="#L-2329"><span class="linenos" data-line="2329"></span></a> <span class="kr">end</span> </span><span id="L-2330"><a href="#L-2330"><span class="linenos" data-line="2330"></span></a> </span><span id="L-2331"><a href="#L-2331"><span class="linenos" data-line="2331"></span></a> <span class="c1">-- process flags and commands</span> </span><span id="L-2332"><a href="#L-2332"><span class="linenos" data-line="2332"></span></a> <span class="kr">repeat</span> </span><span id="L-2333"><a href="#L-2333"><span class="linenos" data-line="2333"></span></a> <span class="n">lastArg</span> <span class="o">=</span> <span class="n">nextArg</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2334"><a href="#L-2334"><span class="linenos" data-line="2334"></span></a> <span class="kr">until</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">:</span><span class="n">processFlagOrCommand</span><span class="p">(</span><span class="n">lastArg</span><span class="p">)</span> </span><span id="L-2335"><a href="#L-2335"><span class="linenos" data-line="2335"></span></a> </span><span id="L-2336"><a href="#L-2336"><span class="linenos" data-line="2336"></span></a> <span class="c1">-- get the entity ID from either the positional argument, the eid argument or the page argument</span> </span><span id="L-2337"><a href="#L-2337"><span class="linenos" data-line="2337"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">entityID</span><span class="p">,</span> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyID</span> <span class="o">=</span> <span class="n">getEntityId</span><span class="p">(</span><span class="n">lastArg</span><span class="p">,</span> <span class="n">args</span><span class="p">[</span><span class="n">p</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">eid</span><span class="p">],</span> <span class="n">args</span><span class="p">[</span><span class="n">p</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">page</span><span class="p">],</span> <span class="kc">false</span><span class="p">,</span> <span class="n">args</span><span class="p">[</span><span class="n">p</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">globalSiteId</span><span class="p">])</span> </span><span id="L-2338"><a href="#L-2338"><span class="linenos" data-line="2338"></span></a> </span><span id="L-2339"><a href="#L-2339"><span class="linenos" data-line="2339"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entityID</span> <span class="o">==</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-2340"><a href="#L-2340"><span class="linenos" data-line="2340"></span></a> <span class="kr">return</span> <span class="s2">""</span> <span class="c1">-- we cannot continue without a valid entity ID</span> </span><span id="L-2341"><a href="#L-2341"><span class="linenos" data-line="2341"></span></a> <span class="kr">end</span> </span><span id="L-2342"><a href="#L-2342"><span class="linenos" data-line="2342"></span></a> </span><span id="L-2343"><a href="#L-2343"><span class="linenos" data-line="2343"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</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">cfg</span><span class="p">.</span><span class="n">entityID</span><span class="p">)</span> </span><span id="L-2344"><a href="#L-2344"><span class="linenos" data-line="2344"></span></a> </span><span id="L-2345"><a href="#L-2345"><span class="linenos" data-line="2345"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyID</span> <span class="kr">then</span> </span><span id="L-2346"><a href="#L-2346"><span class="linenos" data-line="2346"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyID</span> <span class="o">=</span> <span class="n">nextArg</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2347"><a href="#L-2347"><span class="linenos" data-line="2347"></span></a> <span class="kr">end</span> </span><span id="L-2348"><a href="#L-2348"><span class="linenos" data-line="2348"></span></a> </span><span id="L-2349"><a href="#L-2349"><span class="linenos" data-line="2349"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyID</span> <span class="o">=</span> <span class="n">replaceAlias</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">propertyID</span><span class="p">)</span> </span><span id="L-2350"><a href="#L-2350"><span class="linenos" data-line="2350"></span></a> </span><span id="L-2351"><a href="#L-2351"><span class="linenos" data-line="2351"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyID</span> <span class="kr">then</span> </span><span id="L-2352"><a href="#L-2352"><span class="linenos" data-line="2352"></span></a> <span class="kr">return</span> <span class="s2">""</span> <span class="c1">-- we cannot continue without an entity or a property ID</span> </span><span id="L-2353"><a href="#L-2353"><span class="linenos" data-line="2353"></span></a> <span class="kr">end</span> </span><span id="L-2354"><a href="#L-2354"><span class="linenos" data-line="2354"></span></a> </span><span id="L-2355"><a href="#L-2355"><span class="linenos" data-line="2355"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyID</span> <span class="o">=</span> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyID</span><span class="p">:</span><span class="n">upper</span><span class="p">()</span> </span><span id="L-2356"><a href="#L-2356"><span class="linenos" data-line="2356"></span></a> </span><span id="L-2357"><a href="#L-2357"><span class="linenos" data-line="2357"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</span><span class="p">.</span><span class="n">claims</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</span><span class="p">.</span><span class="n">claims</span><span class="p">[</span><span class="n">cfg</span><span class="p">.</span><span class="n">propertyID</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2358"><a href="#L-2358"><span class="linenos" data-line="2358"></span></a> <span class="kr">return</span> <span class="s2">""</span> <span class="c1">-- there is no use to continue without any claims</span> </span><span id="L-2359"><a href="#L-2359"><span class="linenos" data-line="2359"></span></a> <span class="kr">end</span> </span><span id="L-2360"><a href="#L-2360"><span class="linenos" data-line="2360"></span></a> </span><span id="L-2361"><a href="#L-2361"><span class="linenos" data-line="2361"></span></a> <span class="n">claims</span> <span class="o">=</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</span><span class="p">.</span><span class="n">claims</span><span class="p">[</span><span class="n">cfg</span><span class="p">.</span><span class="n">propertyID</span><span class="p">]</span> </span><span id="L-2362"><a href="#L-2362"><span class="linenos" data-line="2362"></span></a> </span><span id="L-2363"><a href="#L-2363"><span class="linenos" data-line="2363"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-2364"><a href="#L-2364"><span class="linenos" data-line="2364"></span></a> <span class="c1">-- do further processing if "qualifier(s)" command was given</span> </span><span id="L-2365"><a href="#L-2365"><span class="linenos" data-line="2365"></span></a> </span><span id="L-2366"><a href="#L-2366"><span class="linenos" data-line="2366"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">args</span> <span class="o">-</span> <span class="n">args</span><span class="p">.</span><span class="n">pointer</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">></span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> <span class="kr">then</span> </span><span id="L-2367"><a href="#L-2367"><span class="linenos" data-line="2367"></span></a> <span class="c1">-- claim ID or literal value has been given</span> </span><span id="L-2368"><a href="#L-2368"><span class="linenos" data-line="2368"></span></a> </span><span id="L-2369"><a href="#L-2369"><span class="linenos" data-line="2369"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyValue</span> <span class="o">=</span> <span class="n">nextArg</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2370"><a href="#L-2370"><span class="linenos" data-line="2370"></span></a> <span class="kr">end</span> </span><span id="L-2371"><a href="#L-2371"><span class="linenos" data-line="2371"></span></a> </span><span id="L-2372"><a href="#L-2372"><span class="linenos" data-line="2372"></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="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> <span class="kr">do</span> </span><span id="L-2373"><a href="#L-2373"><span class="linenos" data-line="2373"></span></a> <span class="c1">-- check if given qualifier ID is an alias and add it</span> </span><span id="L-2374"><a href="#L-2374"><span class="linenos" data-line="2374"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">qualifierIDs</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="o">..</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">replaceAlias</span><span class="p">(</span><span class="n">nextArg</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">):</span><span class="n">upper</span><span class="p">()</span> </span><span id="L-2375"><a href="#L-2375"><span class="linenos" data-line="2375"></span></a> <span class="kr">end</span> </span><span id="L-2376"><a href="#L-2376"><span class="linenos" data-line="2376"></span></a> <span class="kr">elseif</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">reference</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2377"><a href="#L-2377"><span class="linenos" data-line="2377"></span></a> <span class="c1">-- do further processing if "reference(s)" command was given</span> </span><span id="L-2378"><a href="#L-2378"><span class="linenos" data-line="2378"></span></a> </span><span id="L-2379"><a href="#L-2379"><span class="linenos" data-line="2379"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyValue</span> <span class="o">=</span> <span class="n">nextArg</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2380"><a href="#L-2380"><span class="linenos" data-line="2380"></span></a> <span class="kr">end</span> </span><span id="L-2381"><a href="#L-2381"><span class="linenos" data-line="2381"></span></a> </span><span id="L-2382"><a href="#L-2382"><span class="linenos" data-line="2382"></span></a> <span class="c1">-- check for special property value 'somevalue' or 'novalue'</span> </span><span id="L-2383"><a href="#L-2383"><span class="linenos" data-line="2383"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyValue</span> <span class="kr">then</span> </span><span id="L-2384"><a href="#L-2384"><span class="linenos" data-line="2384"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyValue</span> <span class="o">=</span> <span class="n">replaceSpecialChars</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">propertyValue</span><span class="p">)</span> </span><span id="L-2385"><a href="#L-2385"><span class="linenos" data-line="2385"></span></a> </span><span id="L-2386"><a href="#L-2386"><span class="linenos" data-line="2386"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyValue</span> <span class="o">~=</span> <span class="s2">""</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">cfg</span><span class="p">.</span><span class="n">propertyValue</span><span class="p">)</span> <span class="o">==</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-2387"><a href="#L-2387"><span class="linenos" data-line="2387"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyValue</span> <span class="o">=</span> <span class="s2">" "</span> <span class="c1">-- single space represents 'somevalue', whereas empty string represents 'novalue'</span> </span><span id="L-2388"><a href="#L-2388"><span class="linenos" data-line="2388"></span></a> <span class="kr">else</span> </span><span id="L-2389"><a href="#L-2389"><span class="linenos" data-line="2389"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">propertyValue</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">cfg</span><span class="p">.</span><span class="n">propertyValue</span><span class="p">)</span> </span><span id="L-2390"><a href="#L-2390"><span class="linenos" data-line="2390"></span></a> <span class="kr">end</span> </span><span id="L-2391"><a href="#L-2391"><span class="linenos" data-line="2391"></span></a> <span class="kr">end</span> </span><span id="L-2392"><a href="#L-2392"><span class="linenos" data-line="2392"></span></a> </span><span id="L-2393"><a href="#L-2393"><span class="linenos" data-line="2393"></span></a> <span class="c1">-- parse the desired format, or choose an appropriate format</span> </span><span id="L-2394"><a href="#L-2394"><span class="linenos" data-line="2394"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">[</span><span class="s2">"format"</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2395"><a href="#L-2395"><span class="linenos" data-line="2395"></span></a> <span class="n">parsedFormat</span><span class="p">,</span> <span class="n">formatParams</span> <span class="o">=</span> <span class="n">parseFormat</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="s2">"format"</span><span class="p">])</span> </span><span id="L-2396"><a href="#L-2396"><span class="linenos" data-line="2396"></span></a> <span class="kr">elseif</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> <span class="c1">-- "qualifier(s)" command given</span> </span><span id="L-2397"><a href="#L-2397"><span class="linenos" data-line="2397"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</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="kr">then</span> <span class="c1">-- "propert(y|ies)" command given</span> </span><span id="L-2398"><a href="#L-2398"><span class="linenos" data-line="2398"></span></a> <span class="n">parsedFormat</span><span class="p">,</span> <span class="n">formatParams</span> <span class="o">=</span> <span class="n">parseFormat</span><span class="p">(</span><span class="n">formats</span><span class="p">.</span><span class="n">propertyWithQualifier</span><span class="p">)</span> </span><span id="L-2399"><a href="#L-2399"><span class="linenos" data-line="2399"></span></a> <span class="kr">else</span> </span><span id="L-2400"><a href="#L-2400"><span class="linenos" data-line="2400"></span></a> <span class="n">parsedFormat</span><span class="p">,</span> <span class="n">formatParams</span> <span class="o">=</span> <span class="n">parseFormat</span><span class="p">(</span><span class="n">formats</span><span class="p">.</span><span class="n">qualifier</span><span class="p">)</span> </span><span id="L-2401"><a href="#L-2401"><span class="linenos" data-line="2401"></span></a> <span class="kr">end</span> </span><span id="L-2402"><a href="#L-2402"><span class="linenos" data-line="2402"></span></a> <span class="kr">elseif</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</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="kr">then</span> <span class="c1">-- "propert(y|ies)" command given</span> </span><span id="L-2403"><a href="#L-2403"><span class="linenos" data-line="2403"></span></a> <span class="n">parsedFormat</span><span class="p">,</span> <span class="n">formatParams</span> <span class="o">=</span> <span class="n">parseFormat</span><span class="p">(</span><span class="n">formats</span><span class="p">.</span><span class="n">property</span><span class="p">)</span> </span><span id="L-2404"><a href="#L-2404"><span class="linenos" data-line="2404"></span></a> <span class="kr">else</span> <span class="c1">-- "reference(s)" command given</span> </span><span id="L-2405"><a href="#L-2405"><span class="linenos" data-line="2405"></span></a> <span class="n">parsedFormat</span><span class="p">,</span> <span class="n">formatParams</span> <span class="o">=</span> <span class="n">parseFormat</span><span class="p">(</span><span class="n">formats</span><span class="p">.</span><span class="n">reference</span><span class="p">)</span> </span><span id="L-2406"><a href="#L-2406"><span class="linenos" data-line="2406"></span></a> <span class="kr">end</span> </span><span id="L-2407"><a href="#L-2407"><span class="linenos" data-line="2407"></span></a> </span><span id="L-2408"><a href="#L-2408"><span class="linenos" data-line="2408"></span></a> <span class="c1">-- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon</span> </span><span id="L-2409"><a href="#L-2409"><span class="linenos" data-line="2409"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</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="kr">then</span> </span><span id="L-2410"><a href="#L-2410"><span class="linenos" data-line="2410"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">separators</span><span class="p">[</span><span class="s2">"sep"</span><span class="o">..</span><span class="n">parameters</span><span class="p">.</span><span class="n">separator</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">";"</span><span class="p">}</span> </span><span id="L-2411"><a href="#L-2411"><span class="linenos" data-line="2411"></span></a> <span class="kr">end</span> </span><span id="L-2412"><a href="#L-2412"><span class="linenos" data-line="2412"></span></a> </span><span id="L-2413"><a href="#L-2413"><span class="linenos" data-line="2413"></span></a> <span class="c1">-- if only "reference(s)" has been given, set the default separator to none (except when raw)</span> </span><span id="L-2414"><a href="#L-2414"><span class="linenos" data-line="2414"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">reference</span><span class="p">]</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</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="ow">and</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> <span class="o">==</span> <span class="mi">0</span> </span><span id="L-2415"><a href="#L-2415"><span class="linenos" data-line="2415"></span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">reference</span><span class="p">].</span><span class="n">rawValue</span> <span class="kr">then</span> </span><span id="L-2416"><a href="#L-2416"><span class="linenos" data-line="2416"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">separators</span><span class="p">[</span><span class="s2">"sep"</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-2417"><a href="#L-2417"><span class="linenos" data-line="2417"></span></a> <span class="kr">end</span> </span><span id="L-2418"><a href="#L-2418"><span class="linenos" data-line="2418"></span></a> </span><span id="L-2419"><a href="#L-2419"><span class="linenos" data-line="2419"></span></a> <span class="c1">-- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent</span> </span><span id="L-2420"><a href="#L-2420"><span class="linenos" data-line="2420"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> <span class="o">==</span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-2421"><a href="#L-2421"><span class="linenos" data-line="2421"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">separators</span><span class="p">[</span><span class="s2">"sep"</span><span class="o">..</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="p">]</span> <span class="o">=</span> <span class="n">cfg</span><span class="p">.</span><span class="n">separators</span><span class="p">[</span><span class="s2">"sep"</span><span class="o">..</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="o">..</span><span class="s2">"1"</span><span class="p">]</span> </span><span id="L-2422"><a href="#L-2422"><span class="linenos" data-line="2422"></span></a> <span class="kr">end</span> </span><span id="L-2423"><a href="#L-2423"><span class="linenos" data-line="2423"></span></a> </span><span id="L-2424"><a href="#L-2424"><span class="linenos" data-line="2424"></span></a> <span class="c1">-- process overridden separator values;</span> </span><span id="L-2425"><a href="#L-2425"><span class="linenos" data-line="2425"></span></a> <span class="c1">-- must come AFTER tweaking the default separators</span> </span><span id="L-2426"><a href="#L-2426"><span class="linenos" data-line="2426"></span></a> <span class="n">cfg</span><span class="p">:</span><span class="n">processSeparators</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2427"><a href="#L-2427"><span class="linenos" data-line="2427"></span></a> </span><span id="L-2428"><a href="#L-2428"><span class="linenos" data-line="2428"></span></a> <span class="c1">-- define the hooks that should be called (getProperty, getQualifiers, getReferences);</span> </span><span id="L-2429"><a href="#L-2429"><span class="linenos" data-line="2429"></span></a> <span class="c1">-- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given</span> </span><span id="L-2430"><a href="#L-2430"><span class="linenos" data-line="2430"></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">pairs</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-2431"><a href="#L-2431"><span class="linenos" data-line="2431"></span></a> <span class="c1">-- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q"</span> </span><span id="L-2432"><a href="#L-2432"><span class="linenos" data-line="2432"></span></a> <span class="kr">if</span> <span class="n">formatParams</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="ow">or</span> <span class="n">formatParams</span><span class="p">[</span><span class="n">i</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">2</span><span class="p">)]</span> <span class="kr">then</span> </span><span id="L-2433"><a href="#L-2433"><span class="linenos" data-line="2433"></span></a> <span class="n">hooks</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">getHookName</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-2434"><a href="#L-2434"><span class="linenos" data-line="2434"></span></a> <span class="n">hooks</span><span class="p">.</span><span class="n">count</span> <span class="o">=</span> <span class="n">hooks</span><span class="p">.</span><span class="n">count</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-2435"><a href="#L-2435"><span class="linenos" data-line="2435"></span></a> <span class="kr">end</span> </span><span id="L-2436"><a href="#L-2436"><span class="linenos" data-line="2436"></span></a> <span class="kr">end</span> </span><span id="L-2437"><a href="#L-2437"><span class="linenos" data-line="2437"></span></a> </span><span id="L-2438"><a href="#L-2438"><span class="linenos" data-line="2438"></span></a> <span class="c1">-- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...);</span> </span><span id="L-2439"><a href="#L-2439"><span class="linenos" data-line="2439"></span></a> <span class="c1">-- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given</span> </span><span id="L-2440"><a href="#L-2440"><span class="linenos" data-line="2440"></span></a> <span class="kr">if</span> <span class="n">formatParams</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="p">]</span> <span class="ow">and</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">.</span><span class="n">qualifiersCount</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-2441"><a href="#L-2441"><span class="linenos" data-line="2441"></span></a> <span class="n">hooks</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="p">]</span> <span class="o">=</span> <span class="n">getHookName</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">qualifier</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-2442"><a href="#L-2442"><span class="linenos" data-line="2442"></span></a> <span class="n">hooks</span><span class="p">.</span><span class="n">count</span> <span class="o">=</span> <span class="n">hooks</span><span class="p">.</span><span class="n">count</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-2443"><a href="#L-2443"><span class="linenos" data-line="2443"></span></a> <span class="kr">end</span> </span><span id="L-2444"><a href="#L-2444"><span class="linenos" data-line="2444"></span></a> </span><span id="L-2445"><a href="#L-2445"><span class="linenos" data-line="2445"></span></a> <span class="c1">-- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration;</span> </span><span id="L-2446"><a href="#L-2446"><span class="linenos" data-line="2446"></span></a> <span class="c1">-- must come AFTER defining the hooks</span> </span><span id="L-2447"><a href="#L-2447"><span class="linenos" data-line="2447"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</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="kr">then</span> </span><span id="L-2448"><a href="#L-2448"><span class="linenos" data-line="2448"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">states</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="n">State</span><span class="p">:</span><span class="n">new</span><span class="p">(</span><span class="n">cfg</span><span class="p">,</span> <span class="n">parameters</span><span class="p">.</span><span class="n">property</span><span class="p">)</span> </span><span id="L-2449"><a href="#L-2449"><span class="linenos" data-line="2449"></span></a> </span><span id="L-2450"><a href="#L-2450"><span class="linenos" data-line="2450"></span></a> <span class="c1">-- if the "single" flag has been given then this state should be equivalent to "property" (singular)</span> </span><span id="L-2451"><a href="#L-2451"><span class="linenos" data-line="2451"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">singleClaim</span> <span class="kr">then</span> </span><span id="L-2452"><a href="#L-2452"><span class="linenos" data-line="2452"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">states</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="n">singleValue</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-2453"><a href="#L-2453"><span class="linenos" data-line="2453"></span></a> <span class="kr">end</span> </span><span id="L-2454"><a href="#L-2454"><span class="linenos" data-line="2454"></span></a> <span class="kr">end</span> </span><span id="L-2455"><a href="#L-2455"><span class="linenos" data-line="2455"></span></a> </span><span id="L-2456"><a href="#L-2456"><span class="linenos" data-line="2456"></span></a> <span class="c1">-- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values,</span> </span><span id="L-2457"><a href="#L-2457"><span class="linenos" data-line="2457"></span></a> <span class="c1">-- which must exist in order to be able to determine if a claim has any references;</span> </span><span id="L-2458"><a href="#L-2458"><span class="linenos" data-line="2458"></span></a> <span class="c1">-- must come AFTER defining the hooks</span> </span><span id="L-2459"><a href="#L-2459"><span class="linenos" data-line="2459"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">sourcedOnly</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">states</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">reference</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2460"><a href="#L-2460"><span class="linenos" data-line="2460"></span></a> <span class="n">cfg</span><span class="p">:</span><span class="n">processFlagOrCommand</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">claimCommands</span><span class="p">.</span><span class="n">reference</span><span class="p">)</span> <span class="c1">-- use singular "reference" to minimize overhead</span> </span><span id="L-2461"><a href="#L-2461"><span class="linenos" data-line="2461"></span></a> <span class="kr">end</span> </span><span id="L-2462"><a href="#L-2462"><span class="linenos" data-line="2462"></span></a> </span><span id="L-2463"><a href="#L-2463"><span class="linenos" data-line="2463"></span></a> <span class="c1">-- set the parsed format and the separators (and optional punctuation mark);</span> </span><span id="L-2464"><a href="#L-2464"><span class="linenos" data-line="2464"></span></a> <span class="c1">-- must come AFTER creating the additonal states</span> </span><span id="L-2465"><a href="#L-2465"><span class="linenos" data-line="2465"></span></a> <span class="n">cfg</span><span class="p">:</span><span class="n">setFormatAndSeparators</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">states</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="n">parsedFormat</span><span class="p">)</span> </span><span id="L-2466"><a href="#L-2466"><span class="linenos" data-line="2466"></span></a> </span><span id="L-2467"><a href="#L-2467"><span class="linenos" data-line="2467"></span></a> <span class="c1">-- process qualifier matching values, analogous to cfg.propertyValue</span> </span><span id="L-2468"><a href="#L-2468"><span class="linenos" data-line="2468"></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">pairs</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-2469"><a href="#L-2469"><span class="linenos" data-line="2469"></span></a> <span class="n">i</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-2470"><a href="#L-2470"><span class="linenos" data-line="2470"></span></a> </span><span id="L-2471"><a href="#L-2471"><span class="linenos" data-line="2471"></span></a> <span class="kr">if</span> <span class="n">i</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">'^[Pp]%d+$'</span><span class="p">)</span> <span class="ow">or</span> <span class="n">aliasesP</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2472"><a href="#L-2472"><span class="linenos" data-line="2472"></span></a> <span class="n">v</span> <span class="o">=</span> <span class="n">replaceSpecialChars</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> </span><span id="L-2473"><a href="#L-2473"><span class="linenos" data-line="2473"></span></a> </span><span id="L-2474"><a href="#L-2474"><span class="linenos" data-line="2474"></span></a> <span class="c1">-- check for special qualifier value 'somevalue'</span> </span><span id="L-2475"><a href="#L-2475"><span class="linenos" data-line="2475"></span></a> <span class="kr">if</span> <span class="n">v</span> <span class="o">~=</span> <span class="s2">""</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">v</span><span class="p">)</span> <span class="o">==</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-2476"><a href="#L-2476"><span class="linenos" data-line="2476"></span></a> <span class="n">v</span> <span class="o">=</span> <span class="s2">" "</span> <span class="c1">-- single space represents 'somevalue'</span> </span><span id="L-2477"><a href="#L-2477"><span class="linenos" data-line="2477"></span></a> <span class="kr">end</span> </span><span id="L-2478"><a href="#L-2478"><span class="linenos" data-line="2478"></span></a> </span><span id="L-2479"><a href="#L-2479"><span class="linenos" data-line="2479"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">qualifierIDsAndValues</span><span class="p">[</span><span class="n">replaceAlias</span><span class="p">(</span><span class="n">i</span><span class="p">):</span><span class="n">upper</span><span class="p">()]</span> <span class="o">=</span> <span class="n">v</span> </span><span id="L-2480"><a href="#L-2480"><span class="linenos" data-line="2480"></span></a> <span class="kr">end</span> </span><span id="L-2481"><a href="#L-2481"><span class="linenos" data-line="2481"></span></a> <span class="kr">end</span> </span><span id="L-2482"><a href="#L-2482"><span class="linenos" data-line="2482"></span></a> </span><span id="L-2483"><a href="#L-2483"><span class="linenos" data-line="2483"></span></a> <span class="c1">-- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated)</span> </span><span id="L-2484"><a href="#L-2484"><span class="linenos" data-line="2484"></span></a> <span class="n">claims</span> <span class="o">=</span> <span class="n">sortOnRank</span><span class="p">(</span><span class="n">claims</span><span class="p">)</span> </span><span id="L-2485"><a href="#L-2485"><span class="linenos" data-line="2485"></span></a> </span><span id="L-2486"><a href="#L-2486"><span class="linenos" data-line="2486"></span></a> <span class="c1">-- then iterate through the claims to collect values</span> </span><span id="L-2487"><a href="#L-2487"><span class="linenos" data-line="2487"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">cfg</span><span class="p">:</span><span class="n">concatValues</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">states</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="n">iterate</span><span class="p">(</span><span class="n">claims</span><span class="p">,</span> <span class="n">hooks</span><span class="p">,</span> <span class="n">State</span><span class="p">.</span><span class="n">claimMatches</span><span class="p">))</span> <span class="c1">-- pass property state with level 1 hooks and matchHook</span> </span><span id="L-2488"><a href="#L-2488"><span class="linenos" data-line="2488"></span></a> </span><span id="L-2489"><a href="#L-2489"><span class="linenos" data-line="2489"></span></a> <span class="c1">-- if desired, add a clickable icon that may be used to edit the returned values on Wikidata</span> </span><span id="L-2490"><a href="#L-2490"><span class="linenos" data-line="2490"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">editable</span> <span class="ow">and</span> <span class="n">value</span> <span class="o">~=</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-2491"><a href="#L-2491"><span class="linenos" data-line="2491"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span> <span class="o">..</span> <span class="n">cfg</span><span class="p">:</span><span class="n">getEditIcon</span><span class="p">()</span> </span><span id="L-2492"><a href="#L-2492"><span class="linenos" data-line="2492"></span></a> <span class="kr">end</span> </span><span id="L-2493"><a href="#L-2493"><span class="linenos" data-line="2493"></span></a> </span><span id="L-2494"><a href="#L-2494"><span class="linenos" data-line="2494"></span></a> <span class="kr">return</span> <span class="n">value</span> </span><span id="L-2495"><a href="#L-2495"><span class="linenos" data-line="2495"></span></a><span class="kr">end</span> </span><span id="L-2496"><a href="#L-2496"><span class="linenos" data-line="2496"></span></a> </span><span id="L-2497"><a href="#L-2497"><span class="linenos" data-line="2497"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">generalCommand</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">funcName</span><span class="p">)</span> </span><span id="L-2498"><a href="#L-2498"><span class="linenos" data-line="2498"></span></a> <span class="kd">local</span> <span class="n">cfg</span> <span class="o">=</span> <span class="n">Config</span><span class="p">:</span><span class="n">new</span><span class="p">()</span> </span><span id="L-2499"><a href="#L-2499"><span class="linenos" data-line="2499"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">curState</span> <span class="o">=</span> <span class="n">State</span><span class="p">:</span><span class="n">new</span><span class="p">(</span><span class="n">cfg</span><span class="p">)</span> </span><span id="L-2500"><a href="#L-2500"><span class="linenos" data-line="2500"></span></a> </span><span id="L-2501"><a href="#L-2501"><span class="linenos" data-line="2501"></span></a> <span class="kd">local</span> <span class="n">lastArg</span> </span><span id="L-2502"><a href="#L-2502"><span class="linenos" data-line="2502"></span></a> <span class="kd">local</span> <span class="n">value</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-2503"><a href="#L-2503"><span class="linenos" data-line="2503"></span></a> </span><span id="L-2504"><a href="#L-2504"><span class="linenos" data-line="2504"></span></a> <span class="kr">repeat</span> </span><span id="L-2505"><a href="#L-2505"><span class="linenos" data-line="2505"></span></a> <span class="n">lastArg</span> <span class="o">=</span> <span class="n">nextArg</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2506"><a href="#L-2506"><span class="linenos" data-line="2506"></span></a> <span class="kr">until</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">:</span><span class="n">processFlag</span><span class="p">(</span><span class="n">lastArg</span><span class="p">)</span> </span><span id="L-2507"><a href="#L-2507"><span class="linenos" data-line="2507"></span></a> </span><span id="L-2508"><a href="#L-2508"><span class="linenos" data-line="2508"></span></a> <span class="c1">-- get the entity ID from either the positional argument, the eid argument or the page argument</span> </span><span id="L-2509"><a href="#L-2509"><span class="linenos" data-line="2509"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">entityID</span> <span class="o">=</span> <span class="n">getEntityId</span><span class="p">(</span><span class="n">lastArg</span><span class="p">,</span> <span class="n">args</span><span class="p">[</span><span class="n">p</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">eid</span><span class="p">],</span> <span class="n">args</span><span class="p">[</span><span class="n">p</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">page</span><span class="p">],</span> <span class="kc">true</span><span class="p">,</span> <span class="n">args</span><span class="p">[</span><span class="n">p</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">globalSiteId</span><span class="p">])</span> </span><span id="L-2510"><a href="#L-2510"><span class="linenos" data-line="2510"></span></a> </span><span id="L-2511"><a href="#L-2511"><span class="linenos" data-line="2511"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entityID</span> <span class="o">==</span> <span class="s2">""</span> <span class="ow">or</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">entityExists</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">entityID</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-2512"><a href="#L-2512"><span class="linenos" data-line="2512"></span></a> <span class="kr">return</span> <span class="s2">""</span> <span class="c1">-- we cannot continue without an entity</span> </span><span id="L-2513"><a href="#L-2513"><span class="linenos" data-line="2513"></span></a> <span class="kr">end</span> </span><span id="L-2514"><a href="#L-2514"><span class="linenos" data-line="2514"></span></a> </span><span id="L-2515"><a href="#L-2515"><span class="linenos" data-line="2515"></span></a> <span class="c1">-- serve according to the given command</span> </span><span id="L-2516"><a href="#L-2516"><span class="linenos" data-line="2516"></span></a> <span class="kr">if</span> <span class="n">funcName</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">generalCommands</span><span class="p">.</span><span class="n">label</span> <span class="kr">then</span> </span><span id="L-2517"><a href="#L-2517"><span class="linenos" data-line="2517"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">cfg</span><span class="p">:</span><span class="n">getLabel</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">entityID</span><span class="p">,</span> <span class="n">cfg</span><span class="p">.</span><span class="n">curState</span><span class="p">.</span><span class="n">rawValue</span><span class="p">,</span> <span class="n">cfg</span><span class="p">.</span><span class="n">curState</span><span class="p">.</span><span class="n">linked</span><span class="p">,</span> <span class="n">cfg</span><span class="p">.</span><span class="n">curState</span><span class="p">.</span><span class="n">shortName</span><span class="p">)</span> </span><span id="L-2518"><a href="#L-2518"><span class="linenos" data-line="2518"></span></a> <span class="kr">elseif</span> <span class="n">funcName</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">generalCommands</span><span class="p">.</span><span class="n">title</span> <span class="kr">then</span> </span><span id="L-2519"><a href="#L-2519"><span class="linenos" data-line="2519"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">inSitelinks</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-2520"><a href="#L-2520"><span class="linenos" data-line="2520"></span></a> </span><span id="L-2521"><a href="#L-2521"><span class="linenos" data-line="2521"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entityID</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"Q"</span> <span class="kr">then</span> </span><span id="L-2522"><a href="#L-2522"><span class="linenos" data-line="2522"></span></a> <span class="n">value</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">cfg</span><span class="p">.</span><span class="n">entityID</span><span class="p">)</span> </span><span id="L-2523"><a href="#L-2523"><span class="linenos" data-line="2523"></span></a> <span class="kr">end</span> </span><span id="L-2524"><a href="#L-2524"><span class="linenos" data-line="2524"></span></a> </span><span id="L-2525"><a href="#L-2525"><span class="linenos" data-line="2525"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">curState</span><span class="p">.</span><span class="n">linked</span> <span class="ow">and</span> <span class="n">value</span> <span class="kr">then</span> </span><span id="L-2526"><a href="#L-2526"><span class="linenos" data-line="2526"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">buildWikilink</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> </span><span id="L-2527"><a href="#L-2527"><span class="linenos" data-line="2527"></span></a> <span class="kr">end</span> </span><span id="L-2528"><a href="#L-2528"><span class="linenos" data-line="2528"></span></a> <span class="kr">elseif</span> <span class="n">funcName</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">generalCommands</span><span class="p">.</span><span class="n">description</span> <span class="kr">then</span> </span><span id="L-2529"><a href="#L-2529"><span class="linenos" data-line="2529"></span></a> <span class="n">value</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">getDescription</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">entityID</span><span class="p">)</span> </span><span id="L-2530"><a href="#L-2530"><span class="linenos" data-line="2530"></span></a> <span class="kr">else</span> </span><span id="L-2531"><a href="#L-2531"><span class="linenos" data-line="2531"></span></a> <span class="kd">local</span> <span class="n">parsedFormat</span><span class="p">,</span> <span class="n">formatParams</span> </span><span id="L-2532"><a href="#L-2532"><span class="linenos" data-line="2532"></span></a> <span class="kd">local</span> <span class="n">hooks</span> <span class="o">=</span> <span class="p">{</span><span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">}</span> </span><span id="L-2533"><a href="#L-2533"><span class="linenos" data-line="2533"></span></a> </span><span id="L-2534"><a href="#L-2534"><span class="linenos" data-line="2534"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</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">cfg</span><span class="p">.</span><span class="n">entityID</span><span class="p">)</span> </span><span id="L-2535"><a href="#L-2535"><span class="linenos" data-line="2535"></span></a> </span><span id="L-2536"><a href="#L-2536"><span class="linenos" data-line="2536"></span></a> <span class="kr">if</span> <span class="n">funcName</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">generalCommands</span><span class="p">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">funcName</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">generalCommands</span><span class="p">.</span><span class="n">badge</span> <span class="kr">then</span> </span><span id="L-2537"><a href="#L-2537"><span class="linenos" data-line="2537"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">curState</span><span class="p">.</span><span class="n">singleValue</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-2538"><a href="#L-2538"><span class="linenos" data-line="2538"></span></a> <span class="kr">end</span> </span><span id="L-2539"><a href="#L-2539"><span class="linenos" data-line="2539"></span></a> </span><span id="L-2540"><a href="#L-2540"><span class="linenos" data-line="2540"></span></a> <span class="kr">if</span> <span class="n">funcName</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">generalCommands</span><span class="p">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">funcName</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">generalCommands</span><span class="p">.</span><span class="n">aliases</span> <span class="kr">then</span> </span><span id="L-2541"><a href="#L-2541"><span class="linenos" data-line="2541"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</span><span class="p">.</span><span class="n">aliases</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</span><span class="p">.</span><span class="n">aliases</span><span class="p">[</span><span class="n">cfg</span><span class="p">.</span><span class="n">langCode</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2542"><a href="#L-2542"><span class="linenos" data-line="2542"></span></a> <span class="kr">return</span> <span class="s2">""</span> <span class="c1">-- there is no use to continue without any aliasses</span> </span><span id="L-2543"><a href="#L-2543"><span class="linenos" data-line="2543"></span></a> <span class="kr">end</span> </span><span id="L-2544"><a href="#L-2544"><span class="linenos" data-line="2544"></span></a> </span><span id="L-2545"><a href="#L-2545"><span class="linenos" data-line="2545"></span></a> <span class="kd">local</span> <span class="n">aliases</span> <span class="o">=</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</span><span class="p">.</span><span class="n">aliases</span><span class="p">[</span><span class="n">cfg</span><span class="p">.</span><span class="n">langCode</span><span class="p">]</span> </span><span id="L-2546"><a href="#L-2546"><span class="linenos" data-line="2546"></span></a> </span><span id="L-2547"><a href="#L-2547"><span class="linenos" data-line="2547"></span></a> <span class="c1">-- parse the desired format, or parse the default aliases format</span> </span><span id="L-2548"><a href="#L-2548"><span class="linenos" data-line="2548"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">[</span><span class="s2">"format"</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2549"><a href="#L-2549"><span class="linenos" data-line="2549"></span></a> <span class="n">parsedFormat</span><span class="p">,</span> <span class="n">formatParams</span> <span class="o">=</span> <span class="n">parseFormat</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="s2">"format"</span><span class="p">])</span> </span><span id="L-2550"><a href="#L-2550"><span class="linenos" data-line="2550"></span></a> <span class="kr">else</span> </span><span id="L-2551"><a href="#L-2551"><span class="linenos" data-line="2551"></span></a> <span class="n">parsedFormat</span><span class="p">,</span> <span class="n">formatParams</span> <span class="o">=</span> <span class="n">parseFormat</span><span class="p">(</span><span class="n">formats</span><span class="p">.</span><span class="n">alias</span><span class="p">)</span> </span><span id="L-2552"><a href="#L-2552"><span class="linenos" data-line="2552"></span></a> <span class="kr">end</span> </span><span id="L-2553"><a href="#L-2553"><span class="linenos" data-line="2553"></span></a> </span><span id="L-2554"><a href="#L-2554"><span class="linenos" data-line="2554"></span></a> <span class="c1">-- process overridden separator values;</span> </span><span id="L-2555"><a href="#L-2555"><span class="linenos" data-line="2555"></span></a> <span class="c1">-- must come AFTER tweaking the default separators</span> </span><span id="L-2556"><a href="#L-2556"><span class="linenos" data-line="2556"></span></a> <span class="n">cfg</span><span class="p">:</span><span class="n">processSeparators</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2557"><a href="#L-2557"><span class="linenos" data-line="2557"></span></a> </span><span id="L-2558"><a href="#L-2558"><span class="linenos" data-line="2558"></span></a> <span class="c1">-- define the hook that should be called (getAlias);</span> </span><span id="L-2559"><a href="#L-2559"><span class="linenos" data-line="2559"></span></a> <span class="c1">-- only define the hook if the parameter ("%a") has been given</span> </span><span id="L-2560"><a href="#L-2560"><span class="linenos" data-line="2560"></span></a> <span class="kr">if</span> <span class="n">formatParams</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">alias</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2561"><a href="#L-2561"><span class="linenos" data-line="2561"></span></a> <span class="n">hooks</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">alias</span><span class="p">]</span> <span class="o">=</span> <span class="n">getHookName</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">alias</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-2562"><a href="#L-2562"><span class="linenos" data-line="2562"></span></a> <span class="n">hooks</span><span class="p">.</span><span class="n">count</span> <span class="o">=</span> <span class="n">hooks</span><span class="p">.</span><span class="n">count</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-2563"><a href="#L-2563"><span class="linenos" data-line="2563"></span></a> <span class="kr">end</span> </span><span id="L-2564"><a href="#L-2564"><span class="linenos" data-line="2564"></span></a> </span><span id="L-2565"><a href="#L-2565"><span class="linenos" data-line="2565"></span></a> <span class="c1">-- set the parsed format and the separators (and optional punctuation mark)</span> </span><span id="L-2566"><a href="#L-2566"><span class="linenos" data-line="2566"></span></a> <span class="n">cfg</span><span class="p">:</span><span class="n">setFormatAndSeparators</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">curState</span><span class="p">,</span> <span class="n">parsedFormat</span><span class="p">)</span> </span><span id="L-2567"><a href="#L-2567"><span class="linenos" data-line="2567"></span></a> </span><span id="L-2568"><a href="#L-2568"><span class="linenos" data-line="2568"></span></a> <span class="c1">-- iterate to collect values</span> </span><span id="L-2569"><a href="#L-2569"><span class="linenos" data-line="2569"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">cfg</span><span class="p">:</span><span class="n">concatValues</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">curState</span><span class="p">:</span><span class="n">iterate</span><span class="p">(</span><span class="n">aliases</span><span class="p">,</span> <span class="n">hooks</span><span class="p">))</span> </span><span id="L-2570"><a href="#L-2570"><span class="linenos" data-line="2570"></span></a> <span class="kr">elseif</span> <span class="n">funcName</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">generalCommands</span><span class="p">.</span><span class="n">badge</span> <span class="ow">or</span> <span class="n">funcName</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">generalCommands</span><span class="p">.</span><span class="n">badges</span> <span class="kr">then</span> </span><span id="L-2571"><a href="#L-2571"><span class="linenos" data-line="2571"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</span><span class="p">.</span><span class="n">sitelinks</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</span><span class="p">.</span><span class="n">sitelinks</span><span class="p">[</span><span class="n">cfg</span><span class="p">.</span><span class="n">siteID</span><span class="p">]</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</span><span class="p">.</span><span class="n">sitelinks</span><span class="p">[</span><span class="n">cfg</span><span class="p">.</span><span class="n">siteID</span><span class="p">].</span><span class="n">badges</span> <span class="kr">then</span> </span><span id="L-2572"><a href="#L-2572"><span class="linenos" data-line="2572"></span></a> <span class="kr">return</span> <span class="s2">""</span> <span class="c1">-- there is no use to continue without any badges</span> </span><span id="L-2573"><a href="#L-2573"><span class="linenos" data-line="2573"></span></a> <span class="kr">end</span> </span><span id="L-2574"><a href="#L-2574"><span class="linenos" data-line="2574"></span></a> </span><span id="L-2575"><a href="#L-2575"><span class="linenos" data-line="2575"></span></a> <span class="kd">local</span> <span class="n">badges</span> <span class="o">=</span> <span class="n">cfg</span><span class="p">.</span><span class="n">entity</span><span class="p">.</span><span class="n">sitelinks</span><span class="p">[</span><span class="n">cfg</span><span class="p">.</span><span class="n">siteID</span><span class="p">].</span><span class="n">badges</span> </span><span id="L-2576"><a href="#L-2576"><span class="linenos" data-line="2576"></span></a> </span><span id="L-2577"><a href="#L-2577"><span class="linenos" data-line="2577"></span></a> <span class="n">cfg</span><span class="p">.</span><span class="n">inSitelinks</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-2578"><a href="#L-2578"><span class="linenos" data-line="2578"></span></a> </span><span id="L-2579"><a href="#L-2579"><span class="linenos" data-line="2579"></span></a> <span class="c1">-- parse the desired format, or parse the default aliases format</span> </span><span id="L-2580"><a href="#L-2580"><span class="linenos" data-line="2580"></span></a> <span class="kr">if</span> <span class="n">args</span><span class="p">[</span><span class="s2">"format"</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2581"><a href="#L-2581"><span class="linenos" data-line="2581"></span></a> <span class="n">parsedFormat</span><span class="p">,</span> <span class="n">formatParams</span> <span class="o">=</span> <span class="n">parseFormat</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="s2">"format"</span><span class="p">])</span> </span><span id="L-2582"><a href="#L-2582"><span class="linenos" data-line="2582"></span></a> <span class="kr">else</span> </span><span id="L-2583"><a href="#L-2583"><span class="linenos" data-line="2583"></span></a> <span class="n">parsedFormat</span><span class="p">,</span> <span class="n">formatParams</span> <span class="o">=</span> <span class="n">parseFormat</span><span class="p">(</span><span class="n">formats</span><span class="p">.</span><span class="n">badge</span><span class="p">)</span> </span><span id="L-2584"><a href="#L-2584"><span class="linenos" data-line="2584"></span></a> <span class="kr">end</span> </span><span id="L-2585"><a href="#L-2585"><span class="linenos" data-line="2585"></span></a> </span><span id="L-2586"><a href="#L-2586"><span class="linenos" data-line="2586"></span></a> <span class="c1">-- process overridden separator values;</span> </span><span id="L-2587"><a href="#L-2587"><span class="linenos" data-line="2587"></span></a> <span class="c1">-- must come AFTER tweaking the default separators</span> </span><span id="L-2588"><a href="#L-2588"><span class="linenos" data-line="2588"></span></a> <span class="n">cfg</span><span class="p">:</span><span class="n">processSeparators</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2589"><a href="#L-2589"><span class="linenos" data-line="2589"></span></a> </span><span id="L-2590"><a href="#L-2590"><span class="linenos" data-line="2590"></span></a> <span class="c1">-- define the hook that should be called (getBadge);</span> </span><span id="L-2591"><a href="#L-2591"><span class="linenos" data-line="2591"></span></a> <span class="c1">-- only define the hook if the parameter ("%b") has been given</span> </span><span id="L-2592"><a href="#L-2592"><span class="linenos" data-line="2592"></span></a> <span class="kr">if</span> <span class="n">formatParams</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">badge</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-2593"><a href="#L-2593"><span class="linenos" data-line="2593"></span></a> <span class="n">hooks</span><span class="p">[</span><span class="n">parameters</span><span class="p">.</span><span class="n">badge</span><span class="p">]</span> <span class="o">=</span> <span class="n">getHookName</span><span class="p">(</span><span class="n">parameters</span><span class="p">.</span><span class="n">badge</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-2594"><a href="#L-2594"><span class="linenos" data-line="2594"></span></a> <span class="n">hooks</span><span class="p">.</span><span class="n">count</span> <span class="o">=</span> <span class="n">hooks</span><span class="p">.</span><span class="n">count</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-2595"><a href="#L-2595"><span class="linenos" data-line="2595"></span></a> <span class="kr">end</span> </span><span id="L-2596"><a href="#L-2596"><span class="linenos" data-line="2596"></span></a> </span><span id="L-2597"><a href="#L-2597"><span class="linenos" data-line="2597"></span></a> <span class="c1">-- set the parsed format and the separators (and optional punctuation mark)</span> </span><span id="L-2598"><a href="#L-2598"><span class="linenos" data-line="2598"></span></a> <span class="n">cfg</span><span class="p">:</span><span class="n">setFormatAndSeparators</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">curState</span><span class="p">,</span> <span class="n">parsedFormat</span><span class="p">)</span> </span><span id="L-2599"><a href="#L-2599"><span class="linenos" data-line="2599"></span></a> </span><span id="L-2600"><a href="#L-2600"><span class="linenos" data-line="2600"></span></a> <span class="c1">-- iterate to collect values</span> </span><span id="L-2601"><a href="#L-2601"><span class="linenos" data-line="2601"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">cfg</span><span class="p">:</span><span class="n">concatValues</span><span class="p">(</span><span class="n">cfg</span><span class="p">.</span><span class="n">curState</span><span class="p">:</span><span class="n">iterate</span><span class="p">(</span><span class="n">badges</span><span class="p">,</span> <span class="n">hooks</span><span class="p">))</span> </span><span id="L-2602"><a href="#L-2602"><span class="linenos" data-line="2602"></span></a> <span class="kr">end</span> </span><span id="L-2603"><a href="#L-2603"><span class="linenos" data-line="2603"></span></a> <span class="kr">end</span> </span><span id="L-2604"><a href="#L-2604"><span class="linenos" data-line="2604"></span></a> </span><span id="L-2605"><a href="#L-2605"><span class="linenos" data-line="2605"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span> <span class="ow">or</span> <span class="s2">""</span> </span><span id="L-2606"><a href="#L-2606"><span class="linenos" data-line="2606"></span></a> </span><span id="L-2607"><a href="#L-2607"><span class="linenos" data-line="2607"></span></a> <span class="kr">if</span> <span class="n">cfg</span><span class="p">.</span><span class="n">editable</span> <span class="ow">and</span> <span class="n">value</span> <span class="o">~=</span> <span class="s2">""</span> <span class="kr">then</span> </span><span id="L-2608"><a href="#L-2608"><span class="linenos" data-line="2608"></span></a> <span class="c1">-- if desired, add a clickable icon that may be used to edit the returned value on Wikidata</span> </span><span id="L-2609"><a href="#L-2609"><span class="linenos" data-line="2609"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span> <span class="o">..</span> <span class="n">cfg</span><span class="p">:</span><span class="n">getEditIcon</span><span class="p">()</span> </span><span id="L-2610"><a href="#L-2610"><span class="linenos" data-line="2610"></span></a> <span class="kr">end</span> </span><span id="L-2611"><a href="#L-2611"><span class="linenos" data-line="2611"></span></a> </span><span id="L-2612"><a href="#L-2612"><span class="linenos" data-line="2612"></span></a> <span class="kr">return</span> <span class="n">value</span> </span><span id="L-2613"><a href="#L-2613"><span class="linenos" data-line="2613"></span></a><span class="kr">end</span> </span><span id="L-2614"><a href="#L-2614"><span class="linenos" data-line="2614"></span></a> </span><span id="L-2615"><a href="#L-2615"><span class="linenos" data-line="2615"></span></a><span class="c1">-- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args)</span> </span><span id="L-2616"><a href="#L-2616"><span class="linenos" data-line="2616"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">establishCommands</span><span class="p">(</span><span class="n">commandList</span><span class="p">,</span> <span class="n">commandFunc</span><span class="p">)</span> </span><span id="L-2617"><a href="#L-2617"><span class="linenos" data-line="2617"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">commandName</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">commandList</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-2618"><a href="#L-2618"><span class="linenos" data-line="2618"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">wikitextWrapper</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-2619"><a href="#L-2619"><span class="linenos" data-line="2619"></span></a> <span class="kd">local</span> <span class="n">args</span> <span class="o">=</span> <span class="n">copyTable</span><span class="p">(</span><span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2620"><a href="#L-2620"><span class="linenos" data-line="2620"></span></a> <span class="n">args</span><span class="p">.</span><span class="n">pointer</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-2621"><a href="#L-2621"><span class="linenos" data-line="2621"></span></a> <span class="n">loadI18n</span><span class="p">(</span><span class="n">aliasesP</span><span class="p">,</span> <span class="n">frame</span><span class="p">)</span> </span><span id="L-2622"><a href="#L-2622"><span class="linenos" data-line="2622"></span></a> <span class="kr">return</span> <span class="n">commandFunc</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">commandName</span><span class="p">)</span> </span><span id="L-2623"><a href="#L-2623"><span class="linenos" data-line="2623"></span></a> <span class="kr">end</span> </span><span id="L-2624"><a href="#L-2624"><span class="linenos" data-line="2624"></span></a> <span class="n">p</span><span class="p">[</span><span class="n">commandName</span><span class="p">]</span> <span class="o">=</span> <span class="n">wikitextWrapper</span> </span><span id="L-2625"><a href="#L-2625"><span class="linenos" data-line="2625"></span></a> </span><span id="L-2626"><a href="#L-2626"><span class="linenos" data-line="2626"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">luaWrapper</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2627"><a href="#L-2627"><span class="linenos" data-line="2627"></span></a> <span class="n">args</span> <span class="o">=</span> <span class="n">copyTable</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2628"><a href="#L-2628"><span class="linenos" data-line="2628"></span></a> <span class="n">args</span><span class="p">.</span><span class="n">pointer</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-2629"><a href="#L-2629"><span class="linenos" data-line="2629"></span></a> <span class="n">loadI18n</span><span class="p">(</span><span class="n">aliasesP</span><span class="p">)</span> </span><span id="L-2630"><a href="#L-2630"><span class="linenos" data-line="2630"></span></a> <span class="kr">return</span> <span class="n">commandFunc</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">commandName</span><span class="p">)</span> </span><span id="L-2631"><a href="#L-2631"><span class="linenos" data-line="2631"></span></a> <span class="kr">end</span> </span><span id="L-2632"><a href="#L-2632"><span class="linenos" data-line="2632"></span></a> <span class="n">p</span><span class="p">[</span><span class="s2">"_"</span> <span class="o">..</span> <span class="n">commandName</span><span class="p">]</span> <span class="o">=</span> <span class="n">luaWrapper</span> </span><span id="L-2633"><a href="#L-2633"><span class="linenos" data-line="2633"></span></a> <span class="kr">end</span> </span><span id="L-2634"><a href="#L-2634"><span class="linenos" data-line="2634"></span></a><span class="kr">end</span> </span><span id="L-2635"><a href="#L-2635"><span class="linenos" data-line="2635"></span></a> </span><span id="L-2636"><a href="#L-2636"><span class="linenos" data-line="2636"></span></a><span class="n">establishCommands</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">claimCommands</span><span class="p">,</span> <span class="n">claimCommand</span><span class="p">)</span> </span><span id="L-2637"><a href="#L-2637"><span class="linenos" data-line="2637"></span></a><span class="n">establishCommands</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">generalCommands</span><span class="p">,</span> <span class="n">generalCommand</span><span class="p">)</span> </span><span id="L-2638"><a href="#L-2638"><span class="linenos" data-line="2638"></span></a> </span><span id="L-2639"><a href="#L-2639"><span class="linenos" data-line="2639"></span></a><span class="c1">-- main function that is supposed to be used by wrapper templates</span> </span><span id="L-2640"><a href="#L-2640"><span class="linenos" data-line="2640"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">main</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-2641"><a href="#L-2641"><span class="linenos" data-line="2641"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">mw</span><span class="p">.</span><span class="n">wikibase</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kc">nil</span> <span class="kr">end</span> </span><span id="L-2642"><a href="#L-2642"><span class="linenos" data-line="2642"></span></a> </span><span id="L-2643"><a href="#L-2643"><span class="linenos" data-line="2643"></span></a> <span class="kd">local</span> <span class="n">f</span><span class="p">,</span> <span class="n">args</span> </span><span id="L-2644"><a href="#L-2644"><span class="linenos" data-line="2644"></span></a> </span><span id="L-2645"><a href="#L-2645"><span class="linenos" data-line="2645"></span></a> <span class="n">loadI18n</span><span class="p">(</span><span class="n">aliasesP</span><span class="p">,</span> <span class="n">frame</span><span class="p">)</span> </span><span id="L-2646"><a href="#L-2646"><span class="linenos" data-line="2646"></span></a> </span><span id="L-2647"><a href="#L-2647"><span class="linenos" data-line="2647"></span></a> <span class="c1">-- get the parent frame to take the arguments that were passed to the wrapper template</span> </span><span id="L-2648"><a href="#L-2648"><span class="linenos" data-line="2648"></span></a> <span class="n">frame</span> <span class="o">=</span> <span class="n">frame</span><span class="p">:</span><span class="n">getParent</span><span class="p">()</span> <span class="ow">or</span> <span class="n">frame</span> </span><span id="L-2649"><a href="#L-2649"><span class="linenos" data-line="2649"></span></a> </span><span id="L-2650"><a href="#L-2650"><span class="linenos" data-line="2650"></span></a> <span class="kr">if</span> <span class="ow">not</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="kr">then</span> </span><span id="L-2651"><a href="#L-2651"><span class="linenos" data-line="2651"></span></a> <span class="n">throwError</span><span class="p">(</span><span class="s2">"no-function-specified"</span><span class="p">)</span> </span><span id="L-2652"><a href="#L-2652"><span class="linenos" data-line="2652"></span></a> <span class="kr">end</span> </span><span id="L-2653"><a href="#L-2653"><span class="linenos" data-line="2653"></span></a> </span><span id="L-2654"><a href="#L-2654"><span class="linenos" data-line="2654"></span></a> <span class="n">f</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">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-2655"><a href="#L-2655"><span class="linenos" data-line="2655"></span></a> </span><span id="L-2656"><a href="#L-2656"><span class="linenos" data-line="2656"></span></a> <span class="kr">if</span> <span class="n">f</span> <span class="o">==</span> <span class="s2">"main"</span> <span class="kr">then</span> </span><span id="L-2657"><a href="#L-2657"><span class="linenos" data-line="2657"></span></a> <span class="n">throwError</span><span class="p">(</span><span class="s2">"main-called-twice"</span><span class="p">)</span> </span><span id="L-2658"><a href="#L-2658"><span class="linenos" data-line="2658"></span></a> <span class="kr">end</span> </span><span id="L-2659"><a href="#L-2659"><span class="linenos" data-line="2659"></span></a> </span><span id="L-2660"><a href="#L-2660"><span class="linenos" data-line="2660"></span></a> <span class="nb">assert</span><span class="p">(</span><span class="n">p</span><span class="p">[</span><span class="s2">"_"</span><span class="o">..</span><span class="n">f</span><span class="p">],</span> <span class="n">errorText</span><span class="p">(</span><span class="s1">'no-such-function'</span><span class="p">,</span> <span class="n">f</span><span class="p">))</span> </span><span id="L-2661"><a href="#L-2661"><span class="linenos" data-line="2661"></span></a> </span><span id="L-2662"><a href="#L-2662"><span class="linenos" data-line="2662"></span></a> <span class="c1">-- copy arguments from immutable to mutable table</span> </span><span id="L-2663"><a href="#L-2663"><span class="linenos" data-line="2663"></span></a> <span class="n">args</span> <span class="o">=</span> <span class="n">copyTable</span><span class="p">(</span><span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2664"><a href="#L-2664"><span class="linenos" data-line="2664"></span></a> </span><span id="L-2665"><a href="#L-2665"><span class="linenos" data-line="2665"></span></a> <span class="c1">-- remove the function name from the list</span> </span><span id="L-2666"><a href="#L-2666"><span class="linenos" data-line="2666"></span></a> <span class="nb">table.remove</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-2667"><a href="#L-2667"><span class="linenos" data-line="2667"></span></a> </span><span id="L-2668"><a href="#L-2668"><span class="linenos" data-line="2668"></span></a> <span class="kr">return</span> <span class="n">p</span><span class="p">[</span><span class="s2">"_"</span><span class="o">..</span><span class="n">f</span><span class="p">](</span><span class="n">args</span><span class="p">)</span> </span><span id="L-2669"><a href="#L-2669"><span class="linenos" data-line="2669"></span></a><span class="kr">end</span> </span><span id="L-2670"><a href="#L-2670"><span class="linenos" data-line="2670"></span></a> </span><span id="L-2671"><a href="#L-2671"><span class="linenos" data-line="2671"></span></a><span class="kr">return</span> <span class="n">p</span> </span></pre></div></div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Module:Wd&oldid=1258646059">https://en.wikipedia.org/w/index.php?title=Module:Wd&oldid=1258646059</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Modules_subject_to_page_protection" title="Category:Modules subject to page protection">Modules subject to page protection</a></li><li><a href="/wiki/Category:Wikidata_modules" title="Category:Wikidata modules">Wikidata modules</a></li><li><a href="/wiki/Category:Modules_using_data_from_Wikidata" title="Category:Modules using data from Wikidata">Modules using data from Wikidata</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden category: <ul><li><a href="/wiki/Category:Wikipedia_template-protected_modules" title="Category:Wikipedia template-protected modules">Wikipedia template-protected modules</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 20 November 2024, at 21:00<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Module:Wd&curid=51376229&diff=1258646059&oldid=1249550606&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </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-rbhzv","wgBackendResponseTime":1255,"wgPageParseReport":{"limitreport":{"cputime":"0.851","walltime":"1.016","ppvisitednodes":{"value":9634,"limit":1000000},"postexpandincludesize":{"value":405740,"limit":2097152},"templateargumentsize":{"value":21074,"limit":2097152},"expansiondepth":{"value":15,"limit":100},"expensivefunctioncount":{"value":6,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":101478,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 716.112 1 -total","100.00% 716.112 1 Module:Wd/doc"," 91.50% 655.239 1 Template:Wikidata/doc"," 19.81% 141.838 9 Template:Cite_web"," 16.71% 119.664 96 Template:Tnull"," 14.94% 107.013 38 Template:Property"," 14.63% 104.802 43 Template:Wikidata"," 9.47% 67.848 3 Template:Reflist"," 6.55% 46.888 105 Template:Ifsubst"," 6.00% 42.970 98 Template:Smallcaps"]},"scribunto":{"limitreport-timeusage":{"value":"0.334","limit":"10.000"},"limitreport-memusage":{"value":6567759,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-rbhzv","timestamp":"20241124041240","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>