CINXE.COM

Module:Documentation/sandbox - Wikipedia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Module:Documentation/sandbox - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled 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":"9737c705-8e31-4378-839c-5c855264697d","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Module:Documentation/sandbox","wgTitle":"Documentation/sandbox","wgCurRevisionId":1263392455,"wgRevisionId":1263392455,"wgArticleId":41798483,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Module sandboxes"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"Scribunto","wgRelevantPageName":"Module:Documentation/sandbox","wgRelevantArticleId":41798483,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"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":40000,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.pygments":"ready", "skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","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","ext.checkUser.clientHints"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=ext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.17"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Module:Documentation/sandbox - 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:Documentation/sandbox"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Module:Documentation/sandbox&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (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:Documentation/sandbox"> <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&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject mw-editable page-Module_Documentation_sandbox rootpage-Module_Documentation 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" title="Main menu" > <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><li id="n-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages"><span>Special pages</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&#039;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/?wmf_source=donate&amp;wmf_medium=sidebar&amp;wmf_campaign=en.wikipedia.org&amp;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&amp;returnto=Module%3ADocumentation%2Fsandbox" 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&amp;returnto=Module%3ADocumentation%2Fsandbox" title="You&#039;re encouraged to log in; however, it&#039;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/?wmf_source=donate&amp;wmf_medium=sidebar&amp;wmf_campaign=en.wikipedia.org&amp;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&amp;returnto=Module%3ADocumentation%2Fsandbox" 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&amp;returnto=Module%3ADocumentation%2Fsandbox" title="You&#039;re encouraged to log in; however, it&#039;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-Normal_usage" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Normal_usage"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Normal usage</span> </div> </a> <ul id="toc-Normal_usage-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Use_in_other_modules" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Use_in_other_modules"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Use in other modules</span> </div> </a> <ul id="toc-Use_in_other_modules-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Porting_to_other_wikis" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Porting_to_other_wikis"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Porting to other wikis</span> </div> </a> <ul id="toc-Porting_to_other_wikis-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" title="Table of Contents" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-namespace">Module</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">Documentation/sandbox</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="This article exist only in this language. Add the article for other 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-0" 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">Add languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="uls-after-portlet-link"></span><span class="wb-langlinks-add wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:NewItem?site=enwiki&amp;page=Module%3ADocumentation%2Fsandbox" title="Add interlanguage links" class="wbc-editpage">Add 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:Documentation/sandbox" 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:Documentation/sandbox" rel="discussion" class="mw-redirect" 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:Documentation/sandbox"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Documentation/sandbox&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Documentation/sandbox&amp;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:Documentation/sandbox"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Module:Documentation/sandbox&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Module:Documentation/sandbox&amp;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:Documentation/sandbox" 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:Documentation/sandbox" 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="//en.wikipedia.org/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Module:Documentation/sandbox&amp;oldid=1263392455" 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:Documentation/sandbox&amp;action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FModule%3ADocumentation%2Fsandbox"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FModule%3ADocumentation%2Fsandbox"><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&amp;page=Module%3ADocumentation%2Fsandbox&amp;action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects emptyPortlet" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </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> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"><div class="subpages">&lt; <bdi dir="ltr"><a href="/wiki/Module:Documentation" title="Module:Documentation">Module:Documentation</a></bdi></div></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r1277038544">.mw-parser-output .documentation,.mw-parser-output .documentation-metadata{border:1px solid var(--border-color-base,#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 var(--border-color-base,#a2a9b1);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-clear"></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="" src="//upload.wikimedia.org/wikipedia/commons/thumb/8/88/Sandbox.svg/50px-Sandbox.svg.png" decoding="async" width="50" height="33" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/8/88/Sandbox.svg/75px-Sandbox.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/8/88/Sandbox.svg/100px-Sandbox.svg.png 2x" data-file-width="650" data-file-height="424" /></span></span></td><td class="mbox-text">This is the <a href="/wiki/Wikipedia:Template_test_cases" class="mw-redirect" title="Wikipedia:Template test cases">module sandbox</a> page for <a href="/wiki/Module:Documentation" title="Module:Documentation">Module:Documentation</a> (<a class="external text" href="https://en.wikipedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Module%3ADocumentation&amp;page2=Module%3ADocumentation%2Fsandbox">diff</a>).<br />See also the companion subpage for <a href="/wiki/Module:Documentation/testcases" title="Module:Documentation/testcases">test cases</a> (<a href="/wiki/Module_talk:Documentation/testcases" title="Module talk:Documentation/testcases">run</a>).</td></tr></tbody></table><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">&#91;<a href="/wiki/Module:Documentation/doc" title="Module:Documentation/doc">view</a>&#93; &#91;<a href="/wiki/Special:EditPage/Module:Documentation/doc" title="Special:EditPage/Module:Documentation/doc">edit</a>&#93; &#91;<a href="/wiki/Special:PageHistory/Module:Documentation/doc" title="Special:PageHistory/Module:Documentation/doc">history</a>&#93; &#91;<a href="/wiki/Special:Purge/Module:Documentation/sandbox" title="Special:Purge/Module:Documentation/sandbox">purge</a>&#93;</span></div> <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/b/b4/Ambox_important.svg/40px-Ambox_important.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/60px-Ambox_important.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/80px-Ambox_important.svg.png 2x" data-file-width="40" data-file-height="40" /></span></span></td><td class="mbox-text"><b>This Lua module is used in <a href="/wiki/MediaWiki:Scribunto-doc-page-show" title="MediaWiki:Scribunto-doc-page-show">MediaWiki:Scribunto-doc-page-show</a>, in <a href="/wiki/MediaWiki:Scribunto-doc-page-does-not-exist" title="MediaWiki:Scribunto-doc-page-does-not-exist">MediaWiki:Scribunto-doc-page-does-not-exist</a></b>, and on <a class="external text" href="https://linkcount.toolforge.org/?project=en.wikipedia.org&amp;page=Module%3ADocumentation#transclusions">approximately&#x20;181,000 pages</a>.<br />Changes to it can cause immediate changes to the Wikipedia user interface.<br /> To avoid major disruption and server load, any changes should be tested in the module's <a class="mw-selflink selflink">/sandbox</a> or <a href="/wiki/Module:Documentation/testcases" title="Module:Documentation/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. Please discuss changes on the <a href="/wiki/Module_talk:Documentation" class="mw-redirect" title="Module talk:Documentation">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="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 mbox-small ombox-notice" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Lua-Logo.svg/30px-Lua-Logo.svg.png" decoding="async" width="30" height="30" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Lua-Logo.svg/45px-Lua-Logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Lua-Logo.svg/60px-Lua-Logo.svg.png 2x" data-file-width="947" data-file-height="947" /></span></span></td><td class="mbox-text">This module depends on the following other modules:<div><ul><li><a href="/wiki/Module:Documentation/config" title="Module:Documentation/config">Module:Documentation/config</a> (<a href="/wiki/Module:Documentation/config/sandbox" title="Module:Documentation/config/sandbox">sandbox</a>)</li><li><a href="/wiki/Module:Arguments" title="Module:Arguments">Module:Arguments</a> (<a href="/wiki/Module:Arguments/sandbox" title="Module:Arguments/sandbox">sandbox</a>)</li><li><a href="/wiki/Module:Message_box" title="Module:Message box">Module:Message box</a> (<a href="/wiki/Module:Message_box/sandbox" title="Module:Message box/sandbox">sandbox</a>)</li><li><a href="/wiki/Module:Module_wikitext" title="Module:Module wikitext">Module:Module wikitext</a> (<a href="/wiki/Module:Module_wikitext/sandbox" title="Module:Module wikitext/sandbox">sandbox</a>)</li><li><a href="/wiki/Module:Protection_banner" title="Module:Protection banner">Module:Protection banner</a> (<a href="/wiki/Module:Protection_banner/sandbox" title="Module:Protection banner/sandbox">sandbox</a>)</li></ul></div></td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238436933"><table class="plainlinks ombox mbox-small ombox-notice" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><a href="/wiki/File:Farm-Fresh_css_add.svg" class="mw-file-description"><img alt="CSS" src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a6/Farm-Fresh_css_add.svg/32px-Farm-Fresh_css_add.svg.png" decoding="async" width="32" height="27" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/a/a6/Farm-Fresh_css_add.svg/48px-Farm-Fresh_css_add.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/a/a6/Farm-Fresh_css_add.svg/64px-Farm-Fresh_css_add.svg.png 2x" data-file-width="142" data-file-height="121" /></a></span></td><td class="mbox-text">This module uses <a href="https://www.mediawiki.org/wiki/Help:TemplateStyles" class="extiw" title="mw:Help:TemplateStyles">TemplateStyles</a>: <div><ul><li><a href="/wiki/Module:Documentation/styles.css" title="Module:Documentation/styles.css">Module:Documentation/styles.css</a> (<a href="/wiki/Module:Documentation/sandbox/styles.css" title="Module:Documentation/sandbox/styles.css">sandbox</a>)</li></ul></div></td></tr></tbody></table> <p>This module displays a green box containing documentation for <a href="/wiki/Help:Template" title="Help:Template">templates</a>, <a href="/wiki/Wikipedia:Lua" title="Wikipedia:Lua">Lua modules</a>, or other pages. The <span class="nowrap">&#123;&#123;</span><a href="/wiki/Template:Documentation" title="Template:Documentation">documentation</a><span class="nowrap">&#125;&#125;</span> template invokes it. </p> <div class="mw-heading mw-heading2"><h2 id="Normal_usage">Normal usage</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Documentation/doc&amp;action=edit&amp;section=T-1" title="Edit section: Normal usage"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>For most uses, you should use the <span class="nowrap">&#123;&#123;</span><a href="/wiki/Template:Documentation" title="Template:Documentation">documentation</a><span class="nowrap">&#125;&#125;</span> template; please see that template's page for its usage instructions and parameters. </p> <div class="mw-heading mw-heading2"><h2 id="Use_in_other_modules">Use in other modules</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Documentation/doc&amp;action=edit&amp;section=T-2" title="Edit section: Use in other modules"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>To use this module from another Lua module, first load it with <code>require</code>: </p> <div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">local</span> <span class="n">documentation</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="s1">&#39;Module:Documentation&#39;</span><span class="p">).</span><span class="n">main</span> </pre></div> <p>Then you can simply call it using a table of arguments. </p> <div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="n">documentation</span><span class="p">{</span><span class="n">content</span> <span class="o">=</span> <span class="s1">&#39;Some documentation&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;link box&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;My custom link box&#39;</span><span class="p">}</span> </pre></div> <p>Please refer to the <a href="/wiki/Template:Documentation/doc" title="Template:Documentation/doc">template documentation</a> for usage instructions and a list of parameters. </p> <div class="mw-heading mw-heading2"><h2 id="Porting_to_other_wikis">Porting to other wikis</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Documentation/doc&amp;action=edit&amp;section=T-3" title="Edit section: Porting to other wikis"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The module has a configuration file at <a href="/wiki/Module:Documentation/config" title="Module:Documentation/config">Module:Documentation/config</a> which is intended to allow easy translation and porting to other wikis. Please see the code comments in the config page for instructions. If you have any questions, or you need a feature which is not currently implemented, please leave a message at <span class="plainlinks"><a class="external text" href="https://en.wikipedia.org/wiki/Template_talk:Documentation">Template talk:Documentation</a></span> to get the attention of a developer. </p><p>The messages that need to be customized to display a documentation template/module at the top of module pages are <a href="/wiki/MediaWiki:Scribunto-doc-page-show" title="MediaWiki:Scribunto-doc-page-show">MediaWiki:Scribunto-doc-page-show</a> and <a href="/wiki/MediaWiki:Scribunto-doc-page-does-not-exist" title="MediaWiki:Scribunto-doc-page-does-not-exist">MediaWiki:Scribunto-doc-page-does-not-exist</a>. </p> <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:Documentation/doc" title="Module:Documentation/doc">Module:Documentation/doc</a>. <span class="documentation-toolbar">(<a href="/wiki/Special:EditPage/Module:Documentation/doc" title="Special:EditPage/Module:Documentation/doc">edit</a> &#124; <a href="/wiki/Special:PageHistory/Module:Documentation/doc" title="Special:PageHistory/Module:Documentation/doc">history</a>)</span><br />Editors can experiment in this module's <a class="mw-selflink selflink">sandbox</a> <span class="documentation-toolbar">(<a href="/wiki/Special:EditPage/Module:Documentation/sandbox" title="Special:EditPage/Module:Documentation/sandbox">edit</a> &#124; <a class="external text" href="https://en.wikipedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Module%3ADocumentation&amp;page2=Module%3ADocumentation%2Fsandbox">diff</a>)</span> and <a href="/wiki/Module:Documentation/testcases" title="Module:Documentation/testcases">testcases</a> <span class="documentation-toolbar">(<a href="/wiki/Special:EditPage/Module:Documentation/testcases" title="Special:EditPage/Module:Documentation/testcases">edit</a> &#124; <a href="/wiki/Module_talk:Documentation/testcases" title="Module talk:Documentation/testcases">run</a>)</span> pages.<br />Add categories to the <a href="/wiki/Module:Documentation/doc" title="Module:Documentation/doc">/doc</a> subpage. <a href="/wiki/Special:PrefixIndex/Module:Documentation/" title="Special:PrefixIndex/Module:Documentation/">Subpages of this module</a>.</div></div><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">--- This module implements {{tl|documentation}}.</span> </span><span id="L-2"><a href="#L-2"><span class="linenos" data-line="2"></span></a><span class="c1">--</span> </span><span id="L-3"><a href="#L-3"><span class="linenos" data-line="3"></span></a><span class="c1">-- @module documentation</span> </span><span id="L-4"><a href="#L-4"><span class="linenos" data-line="4"></span></a><span class="c1">-- @alias p</span> </span><span id="L-5"><a href="#L-5"><span class="linenos" data-line="5"></span></a><span class="c1">-- @require Module:Arguments</span> </span><span id="L-6"><a href="#L-6"><span class="linenos" data-line="6"></span></a><span class="c1">-- @require Module:Module_wikitext</span> </span><span id="L-7"><a href="#L-7"><span class="linenos" data-line="7"></span></a><span class="c1">-- @require Module:Docbunto</span> </span><span id="L-8"><a href="#L-8"><span class="linenos" data-line="8"></span></a><span class="c1">-- @require Module:Protection_banner</span> </span><span id="L-9"><a href="#L-9"><span class="linenos" data-line="9"></span></a><span class="c1">-- @release stable</span> </span><span id="L-10"><a href="#L-10"><span class="linenos" data-line="10"></span></a><span class="c1">-- &lt;nowiki&gt;</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="c1">-- Get required modules.</span> </span><span id="L-13"><a href="#L-13"><span class="linenos" data-line="13"></span></a><span class="kd">local</span> <span class="n">getArgs</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="s1">&#39;Module:Arguments&#39;</span><span class="p">).</span><span class="n">getArgs</span> </span><span id="L-14"><a href="#L-14"><span class="linenos" data-line="14"></span></a> </span><span id="L-15"><a href="#L-15"><span class="linenos" data-line="15"></span></a><span class="c1">-- Get the config table.</span> </span><span id="L-16"><a href="#L-16"><span class="linenos" data-line="16"></span></a><span class="kd">local</span> <span class="n">cfg</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">loadData</span><span class="p">(</span><span class="s1">&#39;Module:Documentation/config/sandbox&#39;</span><span class="p">)</span> </span><span id="L-17"><a href="#L-17"><span class="linenos" data-line="17"></span></a> </span><span id="L-18"><a href="#L-18"><span class="linenos" data-line="18"></span></a><span class="kd">local</span> <span class="n">p</span> <span class="o">=</span> <span class="p">{}</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="c1">-- Often-used functions.</span> </span><span id="L-21"><a href="#L-21"><span class="linenos" data-line="21"></span></a><span class="kd">local</span> <span class="n">ugsub</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><span id="L-22"><a href="#L-22"><span class="linenos" data-line="22"></span></a><span class="kd">local</span> <span class="n">format</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><span id="L-23"><a href="#L-23"><span class="linenos" data-line="23"></span></a> </span><span id="L-24"><a href="#L-24"><span class="linenos" data-line="24"></span></a><span class="c1">-- Helper functions</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="c1">----------------------------------------------------------------------------</span> </span><span id="L-27"><a href="#L-27"><span class="linenos" data-line="27"></span></a><span class="c1">-- Gets a message for a specified page.</span> </span><span id="L-28"><a href="#L-28"><span class="linenos" data-line="28"></span></a><span class="c1">-- @function message</span> </span><span id="L-29"><a href="#L-29"><span class="linenos" data-line="29"></span></a><span class="c1">-- @param {string} cfgKey the key which the message belongs to</span> </span><span id="L-30"><a href="#L-30"><span class="linenos" data-line="30"></span></a><span class="c1">-- @param {valArray} valArray the array which contains these messages</span> </span><span id="L-31"><a href="#L-31"><span class="linenos" data-line="31"></span></a><span class="c1">-- @param {expectType} the type to expect for the message</span> </span><span id="L-32"><a href="#L-32"><span class="linenos" data-line="32"></span></a><span class="c1">-- @return {string} string corresponding to message</span> </span><span id="L-33"><a href="#L-33"><span class="linenos" data-line="33"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-34"><a href="#L-34"><span class="linenos" data-line="34"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">message</span><span class="p">(</span><span class="n">cfgKey</span><span class="p">,</span> <span class="n">valArray</span><span class="p">,</span> <span class="n">expectType</span><span class="p">)</span> </span><span id="L-35"><a href="#L-35"><span class="linenos" data-line="35"></span></a> <span class="cm">--[[</span> </span><span id="L-36"><a href="#L-36"><span class="linenos" data-line="36"></span></a><span class="cm"> -- Gets a message from the cfg table and formats it if appropriate.</span> </span><span id="L-37"><a href="#L-37"><span class="linenos" data-line="37"></span></a><span class="cm"> -- The function raises an error if the value from the cfg table is not</span> </span><span id="L-38"><a href="#L-38"><span class="linenos" data-line="38"></span></a><span class="cm"> -- of the type expectType. The default type for expectType is &#39;string&#39;.</span> </span><span id="L-39"><a href="#L-39"><span class="linenos" data-line="39"></span></a><span class="cm"> -- If the table valArray is present, strings such as $1, $2 etc. in the</span> </span><span id="L-40"><a href="#L-40"><span class="linenos" data-line="40"></span></a><span class="cm"> -- message are substituted with values from the table keys [1], [2] etc.</span> </span><span id="L-41"><a href="#L-41"><span class="linenos" data-line="41"></span></a><span class="cm"> -- For example, if the message &quot;foo-message&quot; had the value &#39;Foo $2 bar $1.&#39;,</span> </span><span id="L-42"><a href="#L-42"><span class="linenos" data-line="42"></span></a><span class="cm"> -- message(&#39;foo-message&#39;, {&#39;baz&#39;, &#39;qux&#39;}) would return &quot;Foo qux bar baz.&quot;</span> </span><span id="L-43"><a href="#L-43"><span class="linenos" data-line="43"></span></a><span class="cm"> --]]</span> </span><span id="L-44"><a href="#L-44"><span class="linenos" data-line="44"></span></a> <span class="kd">local</span> <span class="n">msg</span> <span class="o">=</span> <span class="n">cfg</span><span class="p">[</span><span class="n">cfgKey</span><span class="p">]</span> </span><span id="L-45"><a href="#L-45"><span class="linenos" data-line="45"></span></a> <span class="n">expectType</span> <span class="o">=</span> <span class="n">expectType</span> <span class="ow">or</span> <span class="s1">&#39;string&#39;</span> </span><span id="L-46"><a href="#L-46"><span class="linenos" data-line="46"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> <span class="o">~=</span> <span class="n">expectType</span> <span class="kr">then</span> </span><span id="L-47"><a href="#L-47"><span class="linenos" data-line="47"></span></a> <span class="nb">error</span><span class="p">(</span><span class="s1">&#39;message: type error in message cfg.&#39;</span> <span class="o">..</span> <span class="n">cfgKey</span> <span class="o">..</span> <span class="s1">&#39; (&#39;</span> <span class="o">..</span> <span class="n">expectType</span> <span class="o">..</span> <span class="s1">&#39; expected, got &#39;</span> <span class="o">..</span> <span class="nb">type</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> <span class="o">..</span> <span class="s1">&#39;)&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-48"><a href="#L-48"><span class="linenos" data-line="48"></span></a> <span class="kr">end</span> </span><span id="L-49"><a href="#L-49"><span class="linenos" data-line="49"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">valArray</span> <span class="kr">then</span> </span><span id="L-50"><a href="#L-50"><span class="linenos" data-line="50"></span></a> <span class="kr">return</span> <span class="n">msg</span> </span><span id="L-51"><a href="#L-51"><span class="linenos" data-line="51"></span></a> <span class="kr">end</span> </span><span id="L-52"><a href="#L-52"><span class="linenos" data-line="52"></span></a> </span><span id="L-53"><a href="#L-53"><span class="linenos" data-line="53"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">getMessageVal</span><span class="p">(</span><span class="n">match</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">match</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">match</span><span class="p">)</span> </span><span id="L-55"><a href="#L-55"><span class="linenos" data-line="55"></span></a> <span class="kr">return</span> <span class="n">valArray</span><span class="p">[</span><span class="n">match</span><span class="p">]</span> <span class="ow">or</span> <span class="nb">error</span><span class="p">(</span><span class="s1">&#39;message: no value found for key $&#39;</span> <span class="o">..</span> <span class="n">match</span> <span class="o">..</span> <span class="s1">&#39; in message cfg.&#39;</span> <span class="o">..</span> <span class="n">cfgKey</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span> </span><span id="L-56"><a href="#L-56"><span class="linenos" data-line="56"></span></a> <span class="kr">end</span> </span><span id="L-57"><a href="#L-57"><span class="linenos" data-line="57"></span></a> </span><span id="L-58"><a href="#L-58"><span class="linenos" data-line="58"></span></a> <span class="kr">return</span> <span class="n">ugsub</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="s1">&#39;$([1-9][0-9]*)&#39;</span><span class="p">,</span> <span class="n">getMessageVal</span><span class="p">)</span> </span><span id="L-59"><a href="#L-59"><span class="linenos" data-line="59"></span></a><span class="kr">end</span> </span><span id="L-60"><a href="#L-60"><span class="linenos" data-line="60"></span></a> </span><span id="L-61"><a href="#L-61"><span class="linenos" data-line="61"></span></a><span class="n">p</span><span class="p">.</span><span class="n">message</span> <span class="o">=</span> <span class="n">message</span> </span><span id="L-62"><a href="#L-62"><span class="linenos" data-line="62"></span></a> </span><span id="L-63"><a href="#L-63"><span class="linenos" data-line="63"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">makeWikilink</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">display</span><span class="p">)</span> </span><span id="L-64"><a href="#L-64"><span class="linenos" data-line="64"></span></a> <span class="kr">if</span> <span class="n">display</span> <span class="kr">then</span> </span><span id="L-65"><a href="#L-65"><span class="linenos" data-line="65"></span></a> <span class="kr">return</span> <span class="n">format</span><span class="p">(</span><span class="s1">&#39;[[%s|%s]]&#39;</span><span class="p">,</span> <span class="n">page</span><span class="p">,</span> <span class="n">display</span><span class="p">)</span> </span><span id="L-66"><a href="#L-66"><span class="linenos" data-line="66"></span></a> <span class="kr">else</span> </span><span id="L-67"><a href="#L-67"><span class="linenos" data-line="67"></span></a> <span class="kr">return</span> <span class="n">format</span><span class="p">(</span><span class="s1">&#39;[[%s]]&#39;</span><span class="p">,</span> <span class="n">page</span><span class="p">)</span> </span><span id="L-68"><a href="#L-68"><span class="linenos" data-line="68"></span></a> <span class="kr">end</span> </span><span id="L-69"><a href="#L-69"><span class="linenos" data-line="69"></span></a><span class="kr">end</span> </span><span id="L-70"><a href="#L-70"><span class="linenos" data-line="70"></span></a> </span><span id="L-71"><a href="#L-71"><span class="linenos" data-line="71"></span></a><span class="n">p</span><span class="p">.</span><span class="n">makeWikilink</span> <span class="o">=</span> <span class="n">makeWikilink</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="kr">function</span> <span class="nf">makeCategoryLink</span><span class="p">(</span><span class="n">cat</span><span class="p">,</span> <span class="n">sort</span><span class="p">)</span> </span><span id="L-74"><a href="#L-74"><span class="linenos" data-line="74"></span></a> <span class="kd">local</span> <span class="n">catns</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">site</span><span class="p">.</span><span class="n">namespaces</span><span class="p">[</span><span class="mi">14</span><span class="p">].</span><span class="n">name</span> </span><span id="L-75"><a href="#L-75"><span class="linenos" data-line="75"></span></a> <span class="kr">return</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="n">catns</span> <span class="o">..</span> <span class="s1">&#39;:&#39;</span> <span class="o">..</span> <span class="n">cat</span><span class="p">,</span> <span class="n">sort</span><span class="p">)</span> </span><span id="L-76"><a href="#L-76"><span class="linenos" data-line="76"></span></a><span class="kr">end</span> </span><span id="L-77"><a href="#L-77"><span class="linenos" data-line="77"></span></a> </span><span id="L-78"><a href="#L-78"><span class="linenos" data-line="78"></span></a><span class="n">p</span><span class="p">.</span><span class="n">makeCategoryLink</span> <span class="o">=</span> <span class="n">makeCategoryLink</span> </span><span id="L-79"><a href="#L-79"><span class="linenos" data-line="79"></span></a> </span><span id="L-80"><a href="#L-80"><span class="linenos" data-line="80"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">makeUrlLink</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">display</span><span class="p">)</span> </span><span id="L-81"><a href="#L-81"><span class="linenos" data-line="81"></span></a> <span class="kr">return</span> <span class="n">format</span><span class="p">(</span><span class="s1">&#39;[%s %s]&#39;</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">display</span><span class="p">)</span> </span><span id="L-82"><a href="#L-82"><span class="linenos" data-line="82"></span></a><span class="kr">end</span> </span><span id="L-83"><a href="#L-83"><span class="linenos" data-line="83"></span></a> </span><span id="L-84"><a href="#L-84"><span class="linenos" data-line="84"></span></a><span class="n">p</span><span class="p">.</span><span class="n">makeUrlLink</span> <span class="o">=</span> <span class="n">makeUrlLink</span> </span><span id="L-85"><a href="#L-85"><span class="linenos" data-line="85"></span></a> </span><span id="L-86"><a href="#L-86"><span class="linenos" data-line="86"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">makeToolbar</span><span class="p">(...)</span> </span><span id="L-87"><a href="#L-87"><span class="linenos" data-line="87"></span></a> <span class="kd">local</span> <span class="n">ret</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-88"><a href="#L-88"><span class="linenos" data-line="88"></span></a> <span class="kd">local</span> <span class="n">lim</span> <span class="o">=</span> <span class="nb">select</span><span class="p">(</span><span class="s1">&#39;#&#39;</span><span class="p">,</span> <span class="p">...)</span> </span><span id="L-89"><a href="#L-89"><span class="linenos" data-line="89"></span></a> <span class="kr">if</span> <span class="n">lim</span> <span class="o">&lt;</span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-90"><a href="#L-90"><span class="linenos" data-line="90"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-91"><a href="#L-91"><span class="linenos" data-line="91"></span></a> <span class="kr">end</span> </span><span id="L-92"><a href="#L-92"><span class="linenos" data-line="92"></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">lim</span> <span class="kr">do</span> </span><span id="L-93"><a href="#L-93"><span class="linenos" data-line="93"></span></a> <span class="n">ret</span><span class="p">[</span><span class="o">#</span><span class="n">ret</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="nb">select</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="p">...)</span> </span><span id="L-94"><a href="#L-94"><span class="linenos" data-line="94"></span></a> <span class="kr">end</span> </span><span id="L-95"><a href="#L-95"><span class="linenos" data-line="95"></span></a> <span class="c1">-- &#39;documentation-toolbar&#39;</span> </span><span id="L-96"><a href="#L-96"><span class="linenos" data-line="96"></span></a> <span class="kr">return</span> <span class="n">format</span><span class="p">(</span> </span><span id="L-97"><a href="#L-97"><span class="linenos" data-line="97"></span></a> <span class="s1">&#39;&lt;span class=&quot;%s&quot;&gt;(%s)&lt;/span&gt;&#39;</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">message</span><span class="p">(</span><span class="s1">&#39;toolbar-class&#39;</span><span class="p">),</span> </span><span id="L-99"><a href="#L-99"><span class="linenos" data-line="99"></span></a> <span class="nb">table.concat</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="s1">&#39; &amp;#124; &#39;</span><span class="p">)</span> </span><span id="L-100"><a href="#L-100"><span class="linenos" data-line="100"></span></a> <span class="p">)</span> </span><span id="L-101"><a href="#L-101"><span class="linenos" data-line="101"></span></a><span class="kr">end</span> </span><span id="L-102"><a href="#L-102"><span class="linenos" data-line="102"></span></a> </span><span id="L-103"><a href="#L-103"><span class="linenos" data-line="103"></span></a><span class="n">p</span><span class="p">.</span><span class="n">makeToolbar</span> <span class="o">=</span> <span class="n">makeToolbar</span> </span><span id="L-104"><a href="#L-104"><span class="linenos" data-line="104"></span></a> </span><span id="L-105"><a href="#L-105"><span class="linenos" data-line="105"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a><span class="c1">-- Argument processing</span> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-108"><a href="#L-108"><span class="linenos" data-line="108"></span></a> </span><span id="L-109"><a href="#L-109"><span class="linenos" data-line="109"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">makeInvokeFunc</span><span class="p">(</span><span class="n">funcName</span><span class="p">)</span> </span><span id="L-110"><a href="#L-110"><span class="linenos" data-line="110"></span></a> <span class="kr">return</span> <span class="kr">function</span> <span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-111"><a href="#L-111"><span class="linenos" data-line="111"></span></a> <span class="kd">local</span> <span class="n">args</span> <span class="o">=</span> <span class="n">getArgs</span><span class="p">(</span><span class="n">frame</span><span class="p">,</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">valueFunc</span> <span class="o">=</span> <span class="kr">function</span> <span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> </span><span id="L-113"><a href="#L-113"><span class="linenos" data-line="113"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> <span class="kr">then</span> </span><span id="L-114"><a href="#L-114"><span class="linenos" data-line="114"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s1">&#39;^%s*(.-)%s*$&#39;</span><span class="p">)</span> <span class="c1">-- Remove whitespace.</span> </span><span id="L-115"><a href="#L-115"><span class="linenos" data-line="115"></span></a> <span class="kr">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s1">&#39;heading&#39;</span> <span class="ow">or</span> <span class="n">value</span> <span class="o">~=</span> <span class="s1">&#39;&#39;</span> <span class="kr">then</span> </span><span id="L-116"><a href="#L-116"><span class="linenos" data-line="116"></span></a> <span class="kr">return</span> <span class="n">value</span> </span><span id="L-117"><a href="#L-117"><span class="linenos" data-line="117"></span></a> <span class="kr">else</span> </span><span id="L-118"><a href="#L-118"><span class="linenos" data-line="118"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-119"><a href="#L-119"><span class="linenos" data-line="119"></span></a> <span class="kr">end</span> </span><span id="L-120"><a href="#L-120"><span class="linenos" data-line="120"></span></a> <span class="kr">else</span> </span><span id="L-121"><a href="#L-121"><span class="linenos" data-line="121"></span></a> <span class="kr">return</span> <span class="n">value</span> </span><span id="L-122"><a href="#L-122"><span class="linenos" data-line="122"></span></a> <span class="kr">end</span> </span><span id="L-123"><a href="#L-123"><span class="linenos" data-line="123"></span></a> <span class="kr">end</span> </span><span id="L-124"><a href="#L-124"><span class="linenos" data-line="124"></span></a> <span class="p">})</span> </span><span id="L-125"><a href="#L-125"><span class="linenos" data-line="125"></span></a> <span class="kr">return</span> <span class="n">p</span><span class="p">[</span><span class="n">funcName</span><span class="p">](</span><span class="n">args</span><span class="p">)</span> </span><span id="L-126"><a href="#L-126"><span class="linenos" data-line="126"></span></a> <span class="kr">end</span> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a><span class="kr">end</span> </span><span id="L-128"><a href="#L-128"><span class="linenos" data-line="128"></span></a> </span><span id="L-129"><a href="#L-129"><span class="linenos" data-line="129"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-130"><a href="#L-130"><span class="linenos" data-line="130"></span></a><span class="c1">-- Entry points</span> </span><span id="L-131"><a href="#L-131"><span class="linenos" data-line="131"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-132"><a href="#L-132"><span class="linenos" data-line="132"></span></a> </span><span id="L-133"><a href="#L-133"><span class="linenos" data-line="133"></span></a><span class="n">p</span><span class="p">.</span><span class="n">nonexistent</span> <span class="o">=</span> <span class="n">makeInvokeFunc</span><span class="p">(</span><span class="s1">&#39;_nonexistent&#39;</span><span class="p">)</span> </span><span id="L-134"><a href="#L-134"><span class="linenos" data-line="134"></span></a> </span><span id="L-135"><a href="#L-135"><span class="linenos" data-line="135"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">_nonexistent</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-136"><a href="#L-136"><span class="linenos" data-line="136"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">getCurrentTitle</span><span class="p">().</span><span class="n">subpageText</span> <span class="o">==</span> <span class="s1">&#39;testcases&#39;</span> <span class="kr">then</span> </span><span id="L-137"><a href="#L-137"><span class="linenos" data-line="137"></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">expandTemplate</span><span class="p">{</span><span class="n">title</span> <span class="o">=</span> <span class="s1">&#39;module test cases notice&#39;</span><span class="p">}</span> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></span></a> <span class="kr">else</span> </span><span id="L-139"><a href="#L-139"><span class="linenos" data-line="139"></span></a> <span class="kr">return</span> <span class="n">p</span><span class="p">.</span><span class="n">_main</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-140"><a href="#L-140"><span class="linenos" data-line="140"></span></a> <span class="kr">end</span> </span><span id="L-141"><a href="#L-141"><span class="linenos" data-line="141"></span></a><span class="kr">end</span> </span><span id="L-142"><a href="#L-142"><span class="linenos" data-line="142"></span></a> </span><span id="L-143"><a href="#L-143"><span class="linenos" data-line="143"></span></a><span class="n">p</span><span class="p">.</span><span class="n">main</span> <span class="o">=</span> <span class="n">makeInvokeFunc</span><span class="p">(</span><span class="s1">&#39;_main&#39;</span><span class="p">)</span> </span><span id="L-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></span></a><span class="cm">--[[</span> </span><span id="L-146"><a href="#L-146"><span class="linenos" data-line="146"></span></a><span class="cm">-- This function defines logic flow for the module.</span> </span><span id="L-147"><a href="#L-147"><span class="linenos" data-line="147"></span></a><span class="cm">-- @function p._main</span> </span><span id="L-148"><a href="#L-148"><span class="linenos" data-line="148"></span></a><span class="cm">-- @param {table} args - table of arguments passed by the user</span> </span><span id="L-149"><a href="#L-149"><span class="linenos" data-line="149"></span></a><span class="cm">-- @return {string} wikitext markup corresponding to the documentation</span> </span><span id="L-150"><a href="#L-150"><span class="linenos" data-line="150"></span></a><span class="cm">--]]</span> </span><span id="L-151"><a href="#L-151"><span class="linenos" data-line="151"></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">args</span><span class="p">)</span> </span><span id="L-152"><a href="#L-152"><span class="linenos" data-line="152"></span></a> <span class="kd">local</span> <span class="n">env</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">getEnvironment</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a> <span class="kd">local</span> <span class="n">content</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">_content</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> </span><span id="L-154"><a href="#L-154"><span class="linenos" data-line="154"></span></a> <span class="kd">local</span> <span class="n">root</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">html</span><span class="p">.</span><span class="n">create</span><span class="p">()</span> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a> <span class="n">root</span> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a> <span class="p">:</span><span class="n">wikitext</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">_getModuleWikitext</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">))</span> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></span></a> <span class="p">:</span><span class="n">wikitext</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">protectionTemplate</span><span class="p">(</span><span class="n">env</span><span class="p">))</span> </span><span id="L-158"><a href="#L-158"><span class="linenos" data-line="158"></span></a> <span class="p">:</span><span class="n">wikitext</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">sandboxNotice</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">))</span> </span><span id="L-159"><a href="#L-159"><span class="linenos" data-line="159"></span></a> <span class="p">:</span><span class="n">tag</span><span class="p">(</span><span class="s1">&#39;div&#39;</span><span class="p">)</span> </span><span id="L-160"><a href="#L-160"><span class="linenos" data-line="160"></span></a> <span class="c1">-- &#39;documentation-container&#39;</span> </span><span id="L-161"><a href="#L-161"><span class="linenos" data-line="161"></span></a> <span class="p">:</span><span class="n">addClass</span><span class="p">(</span><span class="n">message</span><span class="p">(</span><span class="s1">&#39;container&#39;</span><span class="p">))</span> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></span></a> <span class="p">:</span><span class="n">attr</span><span class="p">(</span><span class="s1">&#39;role&#39;</span><span class="p">,</span> <span class="s1">&#39;complementary&#39;</span><span class="p">)</span> </span><span id="L-163"><a href="#L-163"><span class="linenos" data-line="163"></span></a> <span class="p">:</span><span class="n">attr</span><span class="p">(</span><span class="s1">&#39;aria-labelledby&#39;</span><span class="p">,</span> <span class="n">args</span><span class="p">.</span><span class="n">heading</span> <span class="o">~=</span> <span class="s1">&#39;&#39;</span> <span class="ow">and</span> <span class="s1">&#39;documentation-heading&#39;</span> <span class="ow">or</span> <span class="kc">nil</span><span class="p">)</span> </span><span id="L-164"><a href="#L-164"><span class="linenos" data-line="164"></span></a> <span class="p">:</span><span class="n">attr</span><span class="p">(</span><span class="s1">&#39;aria-label&#39;</span><span class="p">,</span> <span class="n">args</span><span class="p">.</span><span class="n">heading</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span> <span class="ow">and</span> <span class="s1">&#39;Documentation&#39;</span> <span class="ow">or</span> <span class="kc">nil</span><span class="p">)</span> </span><span id="L-165"><a href="#L-165"><span class="linenos" data-line="165"></span></a> <span class="p">:</span><span class="n">newline</span><span class="p">()</span> </span><span id="L-166"><a href="#L-166"><span class="linenos" data-line="166"></span></a> <span class="p">:</span><span class="n">tag</span><span class="p">(</span><span class="s1">&#39;div&#39;</span><span class="p">)</span> </span><span id="L-167"><a href="#L-167"><span class="linenos" data-line="167"></span></a> <span class="c1">-- &#39;documentation&#39;</span> </span><span id="L-168"><a href="#L-168"><span class="linenos" data-line="168"></span></a> <span class="p">:</span><span class="n">addClass</span><span class="p">(</span><span class="n">message</span><span class="p">(</span><span class="s1">&#39;main-div-classes&#39;</span><span class="p">))</span> </span><span id="L-169"><a href="#L-169"><span class="linenos" data-line="169"></span></a> <span class="p">:</span><span class="n">newline</span><span class="p">()</span> </span><span id="L-170"><a href="#L-170"><span class="linenos" data-line="170"></span></a> <span class="p">:</span><span class="n">wikitext</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">_startBox</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">))</span> </span><span id="L-171"><a href="#L-171"><span class="linenos" data-line="171"></span></a> <span class="p">:</span><span class="n">wikitext</span><span class="p">(</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="s2">&quot;TOC right&quot;</span> <span class="p">})</span> </span><span id="L-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a> <span class="p">:</span><span class="n">wikitext</span><span class="p">(</span><span class="n">content</span><span class="p">)</span> </span><span id="L-173"><a href="#L-173"><span class="linenos" data-line="173"></span></a> <span class="p">:</span><span class="n">tag</span><span class="p">(</span><span class="s1">&#39;div&#39;</span><span class="p">)</span> </span><span id="L-174"><a href="#L-174"><span class="linenos" data-line="174"></span></a> <span class="c1">-- &#39;documentation-clear&#39;</span> </span><span id="L-175"><a href="#L-175"><span class="linenos" data-line="175"></span></a> <span class="p">:</span><span class="n">addClass</span><span class="p">(</span><span class="n">message</span><span class="p">(</span><span class="s1">&#39;clear&#39;</span><span class="p">))</span> </span><span id="L-176"><a href="#L-176"><span class="linenos" data-line="176"></span></a> <span class="p">:</span><span class="n">done</span><span class="p">()</span> </span><span id="L-177"><a href="#L-177"><span class="linenos" data-line="177"></span></a> <span class="p">:</span><span class="n">newline</span><span class="p">()</span> </span><span id="L-178"><a href="#L-178"><span class="linenos" data-line="178"></span></a> <span class="p">:</span><span class="n">done</span><span class="p">()</span> </span><span id="L-179"><a href="#L-179"><span class="linenos" data-line="179"></span></a> <span class="p">:</span><span class="n">wikitext</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">_endBox</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">))</span> </span><span id="L-180"><a href="#L-180"><span class="linenos" data-line="180"></span></a> <span class="p">:</span><span class="n">done</span><span class="p">()</span> </span><span id="L-181"><a href="#L-181"><span class="linenos" data-line="181"></span></a> <span class="p">:</span><span class="n">wikitext</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">addTrackingCategories</span><span class="p">(</span><span class="n">env</span><span class="p">))</span> </span><span id="L-182"><a href="#L-182"><span class="linenos" data-line="182"></span></a> </span><span id="L-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a> <span class="c1">-- &#39;Module:Documentation/styles.css&#39;</span> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a> <span class="kr">return</span> <span class="n">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><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a> <span class="s1">&#39;templatestyles&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="p">{</span><span class="n">src</span><span class="o">=</span><span class="n">cfg</span><span class="p">[</span><span class="s1">&#39;templatestyles&#39;</span><span class="p">]</span> </span><span id="L-186"><a href="#L-186"><span class="linenos" data-line="186"></span></a> <span class="p">})</span> <span class="o">..</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">)</span> </span><span id="L-187"><a href="#L-187"><span class="linenos" data-line="187"></span></a><span class="kr">end</span> </span><span id="L-188"><a href="#L-188"><span class="linenos" data-line="188"></span></a> </span><span id="L-189"><a href="#L-189"><span class="linenos" data-line="189"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-190"><a href="#L-190"><span class="linenos" data-line="190"></span></a><span class="c1">-- Environment settings</span> </span><span id="L-191"><a href="#L-191"><span class="linenos" data-line="191"></span></a><span class="c1">----------------------------------------------------------------------------</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="c1">--- Returns a table with information about the environment, including title</span> </span><span id="L-194"><a href="#L-194"><span class="linenos" data-line="194"></span></a><span class="c1">-- objects and other namespace- or path-related data.</span> </span><span id="L-195"><a href="#L-195"><span class="linenos" data-line="195"></span></a><span class="c1">-- @function p.getEnvironment</span> </span><span id="L-196"><a href="#L-196"><span class="linenos" data-line="196"></span></a><span class="c1">-- @param {table} args table of arguments passed by the user</span> </span><span id="L-197"><a href="#L-197"><span class="linenos" data-line="197"></span></a><span class="c1">-- @return {table} env the environment</span> </span><span id="L-198"><a href="#L-198"><span class="linenos" data-line="198"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">getEnvironment</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-199"><a href="#L-199"><span class="linenos" data-line="199"></span></a> <span class="c1">-- Title objects include:</span> </span><span id="L-200"><a href="#L-200"><span class="linenos" data-line="200"></span></a> <span class="c1">-- env.title - the page we are making documentation for (usually the current title)</span> </span><span id="L-201"><a href="#L-201"><span class="linenos" data-line="201"></span></a> <span class="c1">-- env.templateTitle - the template (or module, file, etc.)</span> </span><span id="L-202"><a href="#L-202"><span class="linenos" data-line="202"></span></a> <span class="c1">-- env.docTitle - the /doc subpage.</span> </span><span id="L-203"><a href="#L-203"><span class="linenos" data-line="203"></span></a> <span class="c1">-- env.sandboxTitle - the /sandbox subpage.</span> </span><span id="L-204"><a href="#L-204"><span class="linenos" data-line="204"></span></a> <span class="c1">-- env.testcasesTitle - the /testcases subpage.</span> </span><span id="L-205"><a href="#L-205"><span class="linenos" data-line="205"></span></a> <span class="c1">--</span> </span><span id="L-206"><a href="#L-206"><span class="linenos" data-line="206"></span></a> <span class="c1">-- Data includes:</span> </span><span id="L-207"><a href="#L-207"><span class="linenos" data-line="207"></span></a> <span class="c1">-- env.protectionLevels - the protection levels table of the title object.</span> </span><span id="L-208"><a href="#L-208"><span class="linenos" data-line="208"></span></a> <span class="c1">-- env.subjectSpace - the number of the title&#39;s subject namespace.</span> </span><span id="L-209"><a href="#L-209"><span class="linenos" data-line="209"></span></a> <span class="c1">-- env.docSpace - the number of the namespace the title puts its documentation in.</span> </span><span id="L-210"><a href="#L-210"><span class="linenos" data-line="210"></span></a> <span class="c1">-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.</span> </span><span id="L-211"><a href="#L-211"><span class="linenos" data-line="211"></span></a> <span class="c1">-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.</span> </span><span id="L-212"><a href="#L-212"><span class="linenos" data-line="212"></span></a> <span class="c1">-- </span> </span><span id="L-213"><a href="#L-213"><span class="linenos" data-line="213"></span></a> <span class="c1">-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value</span> </span><span id="L-214"><a href="#L-214"><span class="linenos" data-line="214"></span></a> <span class="c1">-- returned will be nil.</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">env</span><span class="p">,</span> <span class="n">envFuncs</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">{}</span> </span><span id="L-216"><a href="#L-216"><span class="linenos" data-line="216"></span></a> </span><span id="L-217"><a href="#L-217"><span class="linenos" data-line="217"></span></a> <span class="c1">-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value</span> </span><span id="L-218"><a href="#L-218"><span class="linenos" data-line="218"></span></a> <span class="c1">-- returned by that function is memoized in the env table so that we don&#39;t call any of the functions</span> </span><span id="L-219"><a href="#L-219"><span class="linenos" data-line="219"></span></a> <span class="c1">-- more than once. (Nils won&#39;t be memoized.)</span> </span><span id="L-220"><a href="#L-220"><span class="linenos" data-line="220"></span></a> <span class="nb">setmetatable</span><span class="p">(</span><span class="n">env</span><span class="p">,</span> <span class="p">{</span> </span><span id="L-221"><a href="#L-221"><span class="linenos" data-line="221"></span></a> <span class="n">__index</span> <span class="o">=</span> <span class="kr">function</span> <span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> </span><span id="L-222"><a href="#L-222"><span class="linenos" data-line="222"></span></a> <span class="kd">local</span> <span class="n">envFunc</span> <span class="o">=</span> <span class="n">envFuncs</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> </span><span id="L-223"><a href="#L-223"><span class="linenos" data-line="223"></span></a> <span class="kr">if</span> <span class="n">envFunc</span> <span class="kr">then</span> </span><span id="L-224"><a href="#L-224"><span class="linenos" data-line="224"></span></a> <span class="kd">local</span> <span class="n">success</span><span class="p">,</span> <span class="n">val</span> <span class="o">=</span> <span class="nb">pcall</span><span class="p">(</span><span class="n">envFunc</span><span class="p">)</span> </span><span id="L-225"><a href="#L-225"><span class="linenos" data-line="225"></span></a> <span class="kr">if</span> <span class="n">success</span> <span class="kr">then</span> </span><span id="L-226"><a href="#L-226"><span class="linenos" data-line="226"></span></a> <span class="n">env</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span> <span class="c1">-- Memoise the value.</span> </span><span id="L-227"><a href="#L-227"><span class="linenos" data-line="227"></span></a> <span class="kr">return</span> <span class="n">val</span> </span><span id="L-228"><a href="#L-228"><span class="linenos" data-line="228"></span></a> <span class="kr">end</span> </span><span id="L-229"><a href="#L-229"><span class="linenos" data-line="229"></span></a> <span class="kr">end</span> </span><span id="L-230"><a href="#L-230"><span class="linenos" data-line="230"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-231"><a href="#L-231"><span class="linenos" data-line="231"></span></a> <span class="kr">end</span> </span><span id="L-232"><a href="#L-232"><span class="linenos" data-line="232"></span></a> <span class="p">})</span> </span><span id="L-233"><a href="#L-233"><span class="linenos" data-line="233"></span></a> </span><span id="L-234"><a href="#L-234"><span class="linenos" data-line="234"></span></a> <span class="kr">function</span> <span class="nc">envFuncs</span><span class="p">.</span><span class="nf">title</span><span class="p">()</span> </span><span id="L-235"><a href="#L-235"><span class="linenos" data-line="235"></span></a> <span class="c1">-- The title object for the current page, or a test page passed with args.page.</span> </span><span id="L-236"><a href="#L-236"><span class="linenos" data-line="236"></span></a> <span class="kd">local</span> <span class="n">title</span> </span><span id="L-237"><a href="#L-237"><span class="linenos" data-line="237"></span></a> <span class="kd">local</span> <span class="n">titleArg</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">page</span> </span><span id="L-238"><a href="#L-238"><span class="linenos" data-line="238"></span></a> <span class="kr">if</span> <span class="n">titleArg</span> <span class="kr">then</span> </span><span id="L-239"><a href="#L-239"><span class="linenos" data-line="239"></span></a> <span class="n">title</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="n">titleArg</span><span class="p">)</span> </span><span id="L-240"><a href="#L-240"><span class="linenos" data-line="240"></span></a> <span class="kr">else</span> </span><span id="L-241"><a href="#L-241"><span class="linenos" data-line="241"></span></a> <span class="n">title</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">getCurrentTitle</span><span class="p">()</span> </span><span id="L-242"><a href="#L-242"><span class="linenos" data-line="242"></span></a> <span class="kr">end</span> </span><span id="L-243"><a href="#L-243"><span class="linenos" data-line="243"></span></a> <span class="kr">return</span> <span class="n">title</span> </span><span id="L-244"><a href="#L-244"><span class="linenos" data-line="244"></span></a> <span class="kr">end</span> </span><span id="L-245"><a href="#L-245"><span class="linenos" data-line="245"></span></a> </span><span id="L-246"><a href="#L-246"><span class="linenos" data-line="246"></span></a> <span class="kr">function</span> <span class="nc">envFuncs</span><span class="p">.</span><span class="nf">templateTitle</span><span class="p">()</span> </span><span id="L-247"><a href="#L-247"><span class="linenos" data-line="247"></span></a> <span class="cm">--[[</span> </span><span id="L-248"><a href="#L-248"><span class="linenos" data-line="248"></span></a><span class="cm"> -- The template (or module, etc.) title object.</span> </span><span id="L-249"><a href="#L-249"><span class="linenos" data-line="249"></span></a><span class="cm"> -- Messages:</span> </span><span id="L-250"><a href="#L-250"><span class="linenos" data-line="250"></span></a><span class="cm"> -- &#39;sandbox-subpage&#39; --&gt; &#39;sandbox&#39;</span> </span><span id="L-251"><a href="#L-251"><span class="linenos" data-line="251"></span></a><span class="cm"> -- &#39;testcases-subpage&#39; --&gt; &#39;testcases&#39;</span> </span><span id="L-252"><a href="#L-252"><span class="linenos" data-line="252"></span></a><span class="cm"> --]]</span> </span><span id="L-253"><a href="#L-253"><span class="linenos" data-line="253"></span></a> <span class="kd">local</span> <span class="n">subjectSpace</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">subjectSpace</span> </span><span id="L-254"><a href="#L-254"><span class="linenos" data-line="254"></span></a> <span class="kd">local</span> <span class="n">title</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">title</span> </span><span id="L-255"><a href="#L-255"><span class="linenos" data-line="255"></span></a> <span class="kd">local</span> <span class="n">subpage</span> <span class="o">=</span> <span class="n">title</span><span class="p">.</span><span class="n">subpageText</span> </span><span id="L-256"><a href="#L-256"><span class="linenos" data-line="256"></span></a> <span class="kr">if</span> <span class="n">subpage</span> <span class="o">==</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-subpage&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">subpage</span> <span class="o">==</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;testcases-subpage&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">subpage</span> <span class="o">==</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;doc-subpage&#39;</span><span class="p">)</span> <span class="kr">then</span> </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">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">makeTitle</span><span class="p">(</span><span class="n">subjectSpace</span><span class="p">,</span> <span class="n">title</span><span class="p">.</span><span class="n">baseText</span><span class="p">)</span> </span><span id="L-258"><a href="#L-258"><span class="linenos" data-line="258"></span></a> <span class="kr">else</span> </span><span id="L-259"><a href="#L-259"><span class="linenos" data-line="259"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">makeTitle</span><span class="p">(</span><span class="n">subjectSpace</span><span class="p">,</span> <span class="n">title</span><span class="p">.</span><span class="n">text</span><span class="p">)</span> </span><span id="L-260"><a href="#L-260"><span class="linenos" data-line="260"></span></a> <span class="kr">end</span> </span><span id="L-261"><a href="#L-261"><span class="linenos" data-line="261"></span></a> <span class="kr">end</span> </span><span id="L-262"><a href="#L-262"><span class="linenos" data-line="262"></span></a> </span><span id="L-263"><a href="#L-263"><span class="linenos" data-line="263"></span></a> <span class="kr">function</span> <span class="nc">envFuncs</span><span class="p">.</span><span class="nf">docTitle</span><span class="p">()</span> </span><span id="L-264"><a href="#L-264"><span class="linenos" data-line="264"></span></a> <span class="cm">--[[</span> </span><span id="L-265"><a href="#L-265"><span class="linenos" data-line="265"></span></a><span class="cm"> -- Title object of the /doc subpage.</span> </span><span id="L-266"><a href="#L-266"><span class="linenos" data-line="266"></span></a><span class="cm"> -- Messages:</span> </span><span id="L-267"><a href="#L-267"><span class="linenos" data-line="267"></span></a><span class="cm"> -- &#39;doc-subpage&#39; --&gt; &#39;doc&#39;</span> </span><span id="L-268"><a href="#L-268"><span class="linenos" data-line="268"></span></a><span class="cm"> --]]</span> </span><span id="L-269"><a href="#L-269"><span class="linenos" data-line="269"></span></a> <span class="kd">local</span> <span class="n">title</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">title</span> </span><span id="L-270"><a href="#L-270"><span class="linenos" data-line="270"></span></a> <span class="kd">local</span> <span class="n">docname</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="c1">-- User-specified doc page.</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">docpage</span> </span><span id="L-272"><a href="#L-272"><span class="linenos" data-line="272"></span></a> <span class="kr">if</span> <span class="n">docname</span> <span class="kr">then</span> </span><span id="L-273"><a href="#L-273"><span class="linenos" data-line="273"></span></a> <span class="n">docpage</span> <span class="o">=</span> <span class="n">docname</span> </span><span id="L-274"><a href="#L-274"><span class="linenos" data-line="274"></span></a> <span class="kr">else</span> </span><span id="L-275"><a href="#L-275"><span class="linenos" data-line="275"></span></a> <span class="n">docpage</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">docpageBase</span> <span class="o">..</span> <span class="s1">&#39;/&#39;</span> <span class="o">..</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;doc-subpage&#39;</span><span class="p">)</span> </span><span id="L-276"><a href="#L-276"><span class="linenos" data-line="276"></span></a> <span class="kr">end</span> </span><span id="L-277"><a href="#L-277"><span class="linenos" data-line="277"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="n">docpage</span><span class="p">)</span> </span><span id="L-278"><a href="#L-278"><span class="linenos" data-line="278"></span></a> <span class="kr">end</span> </span><span id="L-279"><a href="#L-279"><span class="linenos" data-line="279"></span></a> </span><span id="L-280"><a href="#L-280"><span class="linenos" data-line="280"></span></a> <span class="kr">function</span> <span class="nc">envFuncs</span><span class="p">.</span><span class="nf">sandboxTitle</span><span class="p">()</span> </span><span id="L-281"><a href="#L-281"><span class="linenos" data-line="281"></span></a> <span class="cm">--[[</span> </span><span id="L-282"><a href="#L-282"><span class="linenos" data-line="282"></span></a><span class="cm"> -- Title object for the /sandbox subpage.</span> </span><span id="L-283"><a href="#L-283"><span class="linenos" data-line="283"></span></a><span class="cm"> -- Messages:</span> </span><span id="L-284"><a href="#L-284"><span class="linenos" data-line="284"></span></a><span class="cm"> -- &#39;sandbox-subpage&#39; --&gt; &#39;sandbox&#39;</span> </span><span id="L-285"><a href="#L-285"><span class="linenos" data-line="285"></span></a><span class="cm"> --]]</span> </span><span id="L-286"><a href="#L-286"><span class="linenos" data-line="286"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="n">env</span><span class="p">.</span><span class="n">docpageBase</span> <span class="o">..</span> <span class="s1">&#39;/&#39;</span> <span class="o">..</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-subpage&#39;</span><span class="p">))</span> </span><span id="L-287"><a href="#L-287"><span class="linenos" data-line="287"></span></a> <span class="kr">end</span> </span><span id="L-288"><a href="#L-288"><span class="linenos" data-line="288"></span></a> </span><span id="L-289"><a href="#L-289"><span class="linenos" data-line="289"></span></a> <span class="kr">function</span> <span class="nc">envFuncs</span><span class="p">.</span><span class="nf">testcasesTitle</span><span class="p">()</span> </span><span id="L-290"><a href="#L-290"><span class="linenos" data-line="290"></span></a> <span class="cm">--[[</span> </span><span id="L-291"><a href="#L-291"><span class="linenos" data-line="291"></span></a><span class="cm"> -- Title object for the /testcases subpage.</span> </span><span id="L-292"><a href="#L-292"><span class="linenos" data-line="292"></span></a><span class="cm"> -- Messages:</span> </span><span id="L-293"><a href="#L-293"><span class="linenos" data-line="293"></span></a><span class="cm"> -- &#39;testcases-subpage&#39; --&gt; &#39;testcases&#39;</span> </span><span id="L-294"><a href="#L-294"><span class="linenos" data-line="294"></span></a><span class="cm"> --]]</span> </span><span id="L-295"><a href="#L-295"><span class="linenos" data-line="295"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">new</span><span class="p">(</span><span class="n">env</span><span class="p">.</span><span class="n">docpageBase</span> <span class="o">..</span> <span class="s1">&#39;/&#39;</span> <span class="o">..</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;testcases-subpage&#39;</span><span class="p">))</span> </span><span id="L-296"><a href="#L-296"><span class="linenos" data-line="296"></span></a> <span class="kr">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="kr">function</span> <span class="nc">envFuncs</span><span class="p">.</span><span class="nf">protectionLevels</span><span class="p">()</span> </span><span id="L-299"><a href="#L-299"><span class="linenos" data-line="299"></span></a> <span class="c1">-- The protection levels table of the title object.</span> </span><span id="L-300"><a href="#L-300"><span class="linenos" data-line="300"></span></a> <span class="kr">return</span> <span class="n">env</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">protectionLevels</span> </span><span id="L-301"><a href="#L-301"><span class="linenos" data-line="301"></span></a> <span class="kr">end</span> </span><span id="L-302"><a href="#L-302"><span class="linenos" data-line="302"></span></a> </span><span id="L-303"><a href="#L-303"><span class="linenos" data-line="303"></span></a> <span class="kr">function</span> <span class="nc">envFuncs</span><span class="p">.</span><span class="nf">subjectSpace</span><span class="p">()</span> </span><span id="L-304"><a href="#L-304"><span class="linenos" data-line="304"></span></a> <span class="c1">-- The subject namespace number.</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">mw</span><span class="p">.</span><span class="n">site</span><span class="p">.</span><span class="n">namespaces</span><span class="p">[</span><span class="n">env</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">namespace</span><span class="p">].</span><span class="n">subject</span><span class="p">.</span><span class="n">id</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="kr">function</span> <span class="nc">envFuncs</span><span class="p">.</span><span class="nf">docSpace</span><span class="p">()</span> </span><span id="L-309"><a href="#L-309"><span class="linenos" data-line="309"></span></a> <span class="c1">-- The documentation namespace number. For most namespaces this is the</span> </span><span id="L-310"><a href="#L-310"><span class="linenos" data-line="310"></span></a> <span class="c1">-- same as the subject namespace. However, pages in the Article, File,</span> </span><span id="L-311"><a href="#L-311"><span class="linenos" data-line="311"></span></a> <span class="c1">-- MediaWiki or Category namespaces must have their /doc, /sandbox and</span> </span><span id="L-312"><a href="#L-312"><span class="linenos" data-line="312"></span></a> <span class="c1">-- /testcases pages in talk space.</span> </span><span id="L-313"><a href="#L-313"><span class="linenos" data-line="313"></span></a> <span class="kd">local</span> <span class="n">subjectSpace</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">subjectSpace</span> </span><span id="L-314"><a href="#L-314"><span class="linenos" data-line="314"></span></a> <span class="kr">if</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">6</span> <span class="ow">or</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">8</span> <span class="ow">or</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">14</span> <span class="kr">then</span> </span><span id="L-315"><a href="#L-315"><span class="linenos" data-line="315"></span></a> <span class="kr">return</span> <span class="n">subjectSpace</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 class="kr">else</span> </span><span id="L-317"><a href="#L-317"><span class="linenos" data-line="317"></span></a> <span class="kr">return</span> <span class="n">subjectSpace</span> </span><span id="L-318"><a href="#L-318"><span class="linenos" data-line="318"></span></a> <span class="kr">end</span> </span><span id="L-319"><a href="#L-319"><span class="linenos" data-line="319"></span></a> <span class="kr">end</span> </span><span id="L-320"><a href="#L-320"><span class="linenos" data-line="320"></span></a> </span><span id="L-321"><a href="#L-321"><span class="linenos" data-line="321"></span></a> <span class="kr">function</span> <span class="nc">envFuncs</span><span class="p">.</span><span class="nf">docpageBase</span><span class="p">()</span> </span><span id="L-322"><a href="#L-322"><span class="linenos" data-line="322"></span></a> <span class="c1">-- The base page of the /doc, /sandbox, and /testcases subpages.</span> </span><span id="L-323"><a href="#L-323"><span class="linenos" data-line="323"></span></a> <span class="c1">-- For some namespaces this is the talk page, rather than the template page.</span> </span><span id="L-324"><a href="#L-324"><span class="linenos" data-line="324"></span></a> <span class="kd">local</span> <span class="n">templateTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">templateTitle</span> </span><span id="L-325"><a href="#L-325"><span class="linenos" data-line="325"></span></a> <span class="kd">local</span> <span class="n">docSpace</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">docSpace</span> </span><span id="L-326"><a href="#L-326"><span class="linenos" data-line="326"></span></a> <span class="kd">local</span> <span class="n">docSpaceText</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">site</span><span class="p">.</span><span class="n">namespaces</span><span class="p">[</span><span class="n">docSpace</span><span class="p">].</span><span class="n">name</span> </span><span id="L-327"><a href="#L-327"><span class="linenos" data-line="327"></span></a> <span class="c1">-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.</span> </span><span id="L-328"><a href="#L-328"><span class="linenos" data-line="328"></span></a> <span class="kr">return</span> <span class="n">docSpaceText</span> <span class="o">..</span> <span class="s1">&#39;:&#39;</span> <span class="o">..</span> <span class="n">templateTitle</span><span class="p">.</span><span class="n">text</span> </span><span id="L-329"><a href="#L-329"><span class="linenos" data-line="329"></span></a> <span class="kr">end</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">function</span> <span class="nc">envFuncs</span><span class="p">.</span><span class="nf">compareUrl</span><span class="p">()</span> </span><span id="L-332"><a href="#L-332"><span class="linenos" data-line="332"></span></a> <span class="c1">-- Diff link between the sandbox and the main template using [[Special:ComparePages]].</span> </span><span id="L-333"><a href="#L-333"><span class="linenos" data-line="333"></span></a> <span class="kd">local</span> <span class="n">templateTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">templateTitle</span> </span><span id="L-334"><a href="#L-334"><span class="linenos" data-line="334"></span></a> <span class="kd">local</span> <span class="n">sandboxTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">sandboxTitle</span> </span><span id="L-335"><a href="#L-335"><span class="linenos" data-line="335"></span></a> <span class="kr">if</span> <span class="n">templateTitle</span><span class="p">.</span><span class="n">exists</span> <span class="ow">and</span> <span class="n">sandboxTitle</span><span class="p">.</span><span class="n">exists</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="kd">local</span> <span class="n">compareUrl</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">uri</span><span class="p">.</span><span class="n">canonicalUrl</span><span class="p">(</span> </span><span id="L-337"><a href="#L-337"><span class="linenos" data-line="337"></span></a> <span class="s1">&#39;Special:ComparePages&#39;</span><span class="p">,</span> </span><span id="L-338"><a href="#L-338"><span class="linenos" data-line="338"></span></a> <span class="p">{</span> <span class="n">page1</span> <span class="o">=</span> <span class="n">templateTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">page2</span> <span class="o">=</span> <span class="n">sandboxTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">}</span> </span><span id="L-339"><a href="#L-339"><span class="linenos" data-line="339"></span></a> <span class="p">)</span> </span><span id="L-340"><a href="#L-340"><span class="linenos" data-line="340"></span></a> <span class="kr">return</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">compareUrl</span><span class="p">)</span> </span><span id="L-341"><a href="#L-341"><span class="linenos" data-line="341"></span></a> <span class="kr">else</span> </span><span id="L-342"><a href="#L-342"><span class="linenos" data-line="342"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-343"><a href="#L-343"><span class="linenos" data-line="343"></span></a> <span class="kr">end</span> </span><span id="L-344"><a href="#L-344"><span class="linenos" data-line="344"></span></a> <span class="kr">end</span> </span><span id="L-345"><a href="#L-345"><span class="linenos" data-line="345"></span></a> </span><span id="L-346"><a href="#L-346"><span class="linenos" data-line="346"></span></a> <span class="kr">function</span> <span class="nc">envFuncs</span><span class="p">.</span><span class="nf">luaAutodoc</span><span class="p">()</span> </span><span id="L-347"><a href="#L-347"><span class="linenos" data-line="347"></span></a> <span class="c1">-- the autodoc of Lua pages</span> </span><span id="L-348"><a href="#L-348"><span class="linenos" data-line="348"></span></a> <span class="kr">if</span> <span class="n">env</span><span class="p">.</span><span class="n">templateTitle</span><span class="p">.</span><span class="n">namespace</span> <span class="o">~=</span> <span class="mi">828</span> <span class="kr">then</span> <span class="kr">return</span> <span class="s1">&#39;&#39;</span> <span class="kr">end</span> </span><span id="L-349"><a href="#L-349"><span class="linenos" data-line="349"></span></a> <span class="kd">local</span> <span class="n">success</span><span class="p">,</span> <span class="n">docbuntoContent</span> <span class="o">=</span> <span class="nb">pcall</span><span class="p">(</span><span class="nb">require</span><span class="p">(</span><span class="s2">&quot;Module:Docbunto&quot;</span><span class="p">).</span><span class="n">main</span><span class="p">,</span> </span><span id="L-350"><a href="#L-350"><span class="linenos" data-line="350"></span></a> <span class="p">{</span><span class="n">env</span><span class="p">.</span><span class="n">templateTitle</span><span class="p">.</span><span class="n">text</span><span class="p">,</span> <span class="n">autodoc</span> <span class="o">=</span> <span class="kc">true</span><span class="p">})</span> </span><span id="L-351"><a href="#L-351"><span class="linenos" data-line="351"></span></a> <span class="kr">if</span> <span class="n">success</span> <span class="kr">then</span> </span><span id="L-352"><a href="#L-352"><span class="linenos" data-line="352"></span></a> <span class="kr">return</span> <span class="n">docbuntoContent</span> </span><span id="L-353"><a href="#L-353"><span class="linenos" data-line="353"></span></a> <span class="kr">end</span> </span><span id="L-354"><a href="#L-354"><span class="linenos" data-line="354"></span></a> <span class="kr">return</span> <span class="s1">&#39;&#39;</span> </span><span id="L-355"><a href="#L-355"><span class="linenos" data-line="355"></span></a> <span class="kr">end</span> </span><span id="L-356"><a href="#L-356"><span class="linenos" data-line="356"></span></a> </span><span id="L-357"><a href="#L-357"><span class="linenos" data-line="357"></span></a> <span class="kr">return</span> <span class="n">env</span> </span><span id="L-358"><a href="#L-358"><span class="linenos" data-line="358"></span></a><span class="kr">end</span> </span><span id="L-359"><a href="#L-359"><span class="linenos" data-line="359"></span></a> </span><span id="L-360"><a href="#L-360"><span class="linenos" data-line="360"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-361"><a href="#L-361"><span class="linenos" data-line="361"></span></a><span class="c1">-- Auxiliary templates</span> </span><span id="L-362"><a href="#L-362"><span class="linenos" data-line="362"></span></a><span class="c1">----------------------------------------------------------------------------</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="n">p</span><span class="p">.</span><span class="n">getModuleWikitext</span> <span class="o">=</span> <span class="n">makeInvokeFunc</span><span class="p">(</span><span class="s1">&#39;_getModuleWikitext&#39;</span><span class="p">)</span> </span><span id="L-365"><a href="#L-365"><span class="linenos" data-line="365"></span></a> </span><span id="L-366"><a href="#L-366"><span class="linenos" data-line="366"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">_getModuleWikitext</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> </span><span id="L-367"><a href="#L-367"><span class="linenos" data-line="367"></span></a> <span class="kd">local</span> <span class="n">currentTitle</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">getCurrentTitle</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">currentTitle</span><span class="p">.</span><span class="n">contentModel</span> <span class="o">~=</span> <span class="s1">&#39;Scribunto&#39;</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kr">end</span> </span><span id="L-369"><a href="#L-369"><span class="linenos" data-line="369"></span></a> <span class="nb">pcall</span><span class="p">(</span><span class="nb">require</span><span class="p">,</span> <span class="n">currentTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">)</span> <span class="c1">-- if it fails, we don&#39;t care</span> </span><span id="L-370"><a href="#L-370"><span class="linenos" data-line="370"></span></a> <span class="kd">local</span> <span class="n">moduleWikitext</span> <span class="o">=</span> <span class="nb">package.loaded</span><span class="p">[</span><span class="s2">&quot;Module:Module wikitext&quot;</span><span class="p">]</span> </span><span id="L-371"><a href="#L-371"><span class="linenos" data-line="371"></span></a> <span class="kr">if</span> <span class="n">moduleWikitext</span> <span class="kr">then</span> </span><span id="L-372"><a href="#L-372"><span class="linenos" data-line="372"></span></a> <span class="kr">return</span> <span class="n">moduleWikitext</span><span class="p">.</span><span class="n">main</span><span class="p">()</span> </span><span id="L-373"><a href="#L-373"><span class="linenos" data-line="373"></span></a> <span class="kr">end</span> </span><span id="L-374"><a href="#L-374"><span class="linenos" data-line="374"></span></a><span class="kr">end</span> </span><span id="L-375"><a href="#L-375"><span class="linenos" data-line="375"></span></a> </span><span id="L-376"><a href="#L-376"><span class="linenos" data-line="376"></span></a><span class="c1">--- Generates a sandbox notice for display above sandbox pages.</span> </span><span id="L-377"><a href="#L-377"><span class="linenos" data-line="377"></span></a><span class="c1">-- @function p.sandboxNotice</span> </span><span id="L-378"><a href="#L-378"><span class="linenos" data-line="378"></span></a><span class="c1">-- @param {table} args a table of arguments passed by the user</span> </span><span id="L-379"><a href="#L-379"><span class="linenos" data-line="379"></span></a><span class="c1">-- @param {table} env environment table containing title objects, etc., generated with p.getEnvironment</span> </span><span id="L-380"><a href="#L-380"><span class="linenos" data-line="380"></span></a><span class="c1">-- @return {string} wikitext wikitext corresponding to the sandbox notice</span> </span><span id="L-381"><a href="#L-381"><span class="linenos" data-line="381"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">sandboxNotice</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> </span><span id="L-382"><a href="#L-382"><span class="linenos" data-line="382"></span></a> <span class="c1">-- Messages:</span> </span><span id="L-383"><a href="#L-383"><span class="linenos" data-line="383"></span></a> <span class="c1">-- &#39;sandbox-notice-image&#39; --&gt; &#39;[[File:Sandbox.svg|50px|alt=|link=]]&#39;</span> </span><span id="L-384"><a href="#L-384"><span class="linenos" data-line="384"></span></a> <span class="c1">-- &#39;sandbox-notice-blurb&#39; --&gt; &#39;This is the $1 for $2.&#39;</span> </span><span id="L-385"><a href="#L-385"><span class="linenos" data-line="385"></span></a> <span class="c1">-- &#39;sandbox-notice-diff-blurb&#39; --&gt; &#39;This is the $1 for $2 ($3).&#39;</span> </span><span id="L-386"><a href="#L-386"><span class="linenos" data-line="386"></span></a> <span class="c1">-- &#39;sandbox-notice-pagetype-template&#39; --&gt; &#39;[[Wikipedia:Template test cases|template sandbox]] page&#39;</span> </span><span id="L-387"><a href="#L-387"><span class="linenos" data-line="387"></span></a> <span class="c1">-- &#39;sandbox-notice-pagetype-module&#39; --&gt; &#39;[[Wikipedia:Template test cases|module sandbox]] page&#39;</span> </span><span id="L-388"><a href="#L-388"><span class="linenos" data-line="388"></span></a> <span class="c1">-- &#39;sandbox-notice-pagetype-other&#39; --&gt; &#39;sandbox page&#39;</span> </span><span id="L-389"><a href="#L-389"><span class="linenos" data-line="389"></span></a> <span class="c1">-- &#39;sandbox-notice-compare-link-display&#39; --&gt; &#39;diff&#39;</span> </span><span id="L-390"><a href="#L-390"><span class="linenos" data-line="390"></span></a> <span class="c1">-- &#39;sandbox-notice-testcases-blurb&#39; --&gt; &#39;See also the companion subpage for $1.&#39;</span> </span><span id="L-391"><a href="#L-391"><span class="linenos" data-line="391"></span></a> <span class="c1">-- &#39;sandbox-notice-testcases-link-display&#39; --&gt; &#39;test cases&#39;</span> </span><span id="L-392"><a href="#L-392"><span class="linenos" data-line="392"></span></a> <span class="c1">-- &#39;sandbox-category&#39; --&gt; &#39;Template sandboxes&#39;</span> </span><span id="L-393"><a href="#L-393"><span class="linenos" data-line="393"></span></a> <span class="c1">-- &#39;module-sandbox-category&#39; --&gt; &#39;Module sandboxes&#39;</span> </span><span id="L-394"><a href="#L-394"><span class="linenos" data-line="394"></span></a> <span class="c1">-- &#39;other-sandbox-category&#39; --&gt; &#39;Sandboxes outside of template or module namespace&#39;</span> </span><span id="L-395"><a href="#L-395"><span class="linenos" data-line="395"></span></a> <span class="kd">local</span> <span class="n">title</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">title</span> </span><span id="L-396"><a href="#L-396"><span class="linenos" data-line="396"></span></a> <span class="kd">local</span> <span class="n">sandboxTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">sandboxTitle</span> </span><span id="L-397"><a href="#L-397"><span class="linenos" data-line="397"></span></a> <span class="kd">local</span> <span class="n">templateTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">templateTitle</span> </span><span id="L-398"><a href="#L-398"><span class="linenos" data-line="398"></span></a> <span class="kd">local</span> <span class="n">subjectSpace</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">subjectSpace</span> </span><span id="L-399"><a href="#L-399"><span class="linenos" data-line="399"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">subjectSpace</span> <span class="ow">and</span> <span class="n">title</span> <span class="ow">and</span> <span class="n">sandboxTitle</span> <span class="ow">and</span> <span class="n">templateTitle</span> </span><span id="L-400"><a href="#L-400"><span class="linenos" data-line="400"></span></a> <span class="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="n">sandboxTitle</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="kc">nil</span> </span><span id="L-402"><a href="#L-402"><span class="linenos" data-line="402"></span></a> <span class="kr">end</span> </span><span id="L-403"><a href="#L-403"><span class="linenos" data-line="403"></span></a> <span class="c1">-- Build the table of arguments to pass to {{ombox}}. We need just two fields, &quot;image&quot; and &quot;text&quot;.</span> </span><span id="L-404"><a href="#L-404"><span class="linenos" data-line="404"></span></a> <span class="kd">local</span> <span class="n">omargs</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-405"><a href="#L-405"><span class="linenos" data-line="405"></span></a> <span class="n">omargs</span><span class="p">.</span><span class="n">image</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-notice-image&#39;</span><span class="p">)</span> </span><span id="L-406"><a href="#L-406"><span class="linenos" data-line="406"></span></a> <span class="c1">-- Get the text. We start with the opening blurb, which is something like</span> </span><span id="L-407"><a href="#L-407"><span class="linenos" data-line="407"></span></a> <span class="c1">-- &quot;This is the template sandbox for [[Template:Foo]] (diff).&quot;</span> </span><span id="L-408"><a href="#L-408"><span class="linenos" data-line="408"></span></a> <span class="kd">local</span> <span class="n">text</span> <span class="o">=</span> <span class="s1">&#39;__EXPECTUNUSEDTEMPLATE__&#39;</span> </span><span id="L-409"><a href="#L-409"><span class="linenos" data-line="409"></span></a> <span class="kd">local</span> <span class="n">pagetype</span><span class="p">,</span> <span class="n">sandboxCat</span> </span><span id="L-410"><a href="#L-410"><span class="linenos" data-line="410"></span></a> <span class="kr">if</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">10</span> <span class="kr">then</span> </span><span id="L-411"><a href="#L-411"><span class="linenos" data-line="411"></span></a> <span class="n">pagetype</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-notice-pagetype-template&#39;</span><span class="p">)</span> </span><span id="L-412"><a href="#L-412"><span class="linenos" data-line="412"></span></a> <span class="n">sandboxCat</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-category&#39;</span><span class="p">)</span> </span><span id="L-413"><a href="#L-413"><span class="linenos" data-line="413"></span></a> <span class="kr">elseif</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">828</span> <span class="kr">then</span> </span><span id="L-414"><a href="#L-414"><span class="linenos" data-line="414"></span></a> <span class="n">pagetype</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-notice-pagetype-module&#39;</span><span class="p">)</span> </span><span id="L-415"><a href="#L-415"><span class="linenos" data-line="415"></span></a> <span class="n">sandboxCat</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;module-sandbox-category&#39;</span><span class="p">)</span> </span><span id="L-416"><a href="#L-416"><span class="linenos" data-line="416"></span></a> <span class="kr">else</span> </span><span id="L-417"><a href="#L-417"><span class="linenos" data-line="417"></span></a> <span class="n">pagetype</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-notice-pagetype-other&#39;</span><span class="p">)</span> </span><span id="L-418"><a href="#L-418"><span class="linenos" data-line="418"></span></a> <span class="n">sandboxCat</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;other-sandbox-category&#39;</span><span class="p">)</span> </span><span id="L-419"><a href="#L-419"><span class="linenos" data-line="419"></span></a> <span class="kr">end</span> </span><span id="L-420"><a href="#L-420"><span class="linenos" data-line="420"></span></a> <span class="kd">local</span> <span class="n">templateLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="n">templateTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">)</span> </span><span id="L-421"><a href="#L-421"><span class="linenos" data-line="421"></span></a> <span class="kd">local</span> <span class="n">compareUrl</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">compareUrl</span> </span><span id="L-422"><a href="#L-422"><span class="linenos" data-line="422"></span></a> <span class="kr">if</span> <span class="n">compareUrl</span> <span class="kr">then</span> </span><span id="L-423"><a href="#L-423"><span class="linenos" data-line="423"></span></a> <span class="kd">local</span> <span class="n">compareDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-notice-compare-link-display&#39;</span><span class="p">)</span> </span><span id="L-424"><a href="#L-424"><span class="linenos" data-line="424"></span></a> <span class="kd">local</span> <span class="n">compareLink</span> <span class="o">=</span> <span class="n">makeUrlLink</span><span class="p">(</span><span class="n">compareUrl</span><span class="p">,</span> <span class="n">compareDisplay</span><span class="p">)</span> </span><span id="L-425"><a href="#L-425"><span class="linenos" data-line="425"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span> <span class="o">..</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-notice-diff-blurb&#39;</span><span class="p">,</span> <span class="p">{</span><span class="n">pagetype</span><span class="p">,</span> <span class="n">templateLink</span><span class="p">,</span> <span class="n">compareLink</span><span class="p">})</span> </span><span id="L-426"><a href="#L-426"><span class="linenos" data-line="426"></span></a> <span class="kr">else</span> </span><span id="L-427"><a href="#L-427"><span class="linenos" data-line="427"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span> <span class="o">..</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-notice-blurb&#39;</span><span class="p">,</span> <span class="p">{</span><span class="n">pagetype</span><span class="p">,</span> <span class="n">templateLink</span><span class="p">})</span> </span><span id="L-428"><a href="#L-428"><span class="linenos" data-line="428"></span></a> <span class="kr">end</span> </span><span id="L-429"><a href="#L-429"><span class="linenos" data-line="429"></span></a> <span class="c1">-- Get the test cases page blurb if the page exists. This is something like</span> </span><span id="L-430"><a href="#L-430"><span class="linenos" data-line="430"></span></a> <span class="c1">-- &quot;See also the companion subpage for [[Template:Foo/testcases|test cases]].&quot;</span> </span><span id="L-431"><a href="#L-431"><span class="linenos" data-line="431"></span></a> <span class="kd">local</span> <span class="n">testcasesTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">testcasesTitle</span> </span><span id="L-432"><a href="#L-432"><span class="linenos" data-line="432"></span></a> <span class="kr">if</span> <span class="n">testcasesTitle</span> <span class="ow">and</span> <span class="n">testcasesTitle</span><span class="p">.</span><span class="n">exists</span> <span class="kr">then</span> </span><span id="L-433"><a href="#L-433"><span class="linenos" data-line="433"></span></a> <span class="kr">if</span> <span class="n">testcasesTitle</span><span class="p">.</span><span class="n">contentModel</span> <span class="o">==</span> <span class="s2">&quot;Scribunto&quot;</span> <span class="kr">then</span> </span><span id="L-434"><a href="#L-434"><span class="linenos" data-line="434"></span></a> <span class="kd">local</span> <span class="n">testcasesLinkDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-notice-testcases-link-display&#39;</span><span class="p">)</span> </span><span id="L-435"><a href="#L-435"><span class="linenos" data-line="435"></span></a> <span class="kd">local</span> <span class="n">testcasesRunLinkDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-notice-testcases-run-link-display&#39;</span><span class="p">)</span> </span><span id="L-436"><a href="#L-436"><span class="linenos" data-line="436"></span></a> <span class="kd">local</span> <span class="n">testcasesLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="n">testcasesTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">testcasesLinkDisplay</span><span class="p">)</span> </span><span id="L-437"><a href="#L-437"><span class="linenos" data-line="437"></span></a> <span class="kd">local</span> <span class="n">testcasesRunLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="n">testcasesTitle</span><span class="p">.</span><span class="n">talkPageTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">testcasesRunLinkDisplay</span><span class="p">)</span> </span><span id="L-438"><a href="#L-438"><span class="linenos" data-line="438"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span> <span class="o">..</span> <span class="s1">&#39;&lt;br /&gt;&#39;</span> <span class="o">..</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-notice-testcases-run-blurb&#39;</span><span class="p">,</span> <span class="p">{</span><span class="n">testcasesLink</span><span class="p">,</span> <span class="n">testcasesRunLink</span><span class="p">})</span> </span><span id="L-439"><a href="#L-439"><span class="linenos" data-line="439"></span></a> <span class="kr">else</span> </span><span id="L-440"><a href="#L-440"><span class="linenos" data-line="440"></span></a> <span class="kd">local</span> <span class="n">testcasesLinkDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-notice-testcases-link-display&#39;</span><span class="p">)</span> </span><span id="L-441"><a href="#L-441"><span class="linenos" data-line="441"></span></a> <span class="kd">local</span> <span class="n">testcasesLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="n">testcasesTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">testcasesLinkDisplay</span><span class="p">)</span> </span><span id="L-442"><a href="#L-442"><span class="linenos" data-line="442"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span> <span class="o">..</span> <span class="s1">&#39;&lt;br /&gt;&#39;</span> <span class="o">..</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-notice-testcases-blurb&#39;</span><span class="p">,</span> <span class="p">{</span><span class="n">testcasesLink</span><span class="p">})</span> </span><span id="L-443"><a href="#L-443"><span class="linenos" data-line="443"></span></a> <span class="kr">end</span> </span><span id="L-444"><a href="#L-444"><span class="linenos" data-line="444"></span></a> <span class="kr">end</span> </span><span id="L-445"><a href="#L-445"><span class="linenos" data-line="445"></span></a> </span><span id="L-446"><a href="#L-446"><span class="linenos" data-line="446"></span></a> <span class="c1">-- Add the sandbox to the sandbox category.</span> </span><span id="L-447"><a href="#L-447"><span class="linenos" data-line="447"></span></a> <span class="n">omargs</span><span class="p">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> <span class="o">..</span> <span class="n">makeCategoryLink</span><span class="p">(</span><span class="n">sandboxCat</span><span class="p">)</span> </span><span id="L-448"><a href="#L-448"><span class="linenos" data-line="448"></span></a> </span><span id="L-449"><a href="#L-449"><span class="linenos" data-line="449"></span></a> <span class="c1">-- &#39;documentation-clear&#39;</span> </span><span id="L-450"><a href="#L-450"><span class="linenos" data-line="450"></span></a> <span class="kr">return</span> <span class="s1">&#39;&lt;div class=&quot;&#39;</span> <span class="o">..</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;clear&#39;</span><span class="p">)</span> <span class="o">..</span> <span class="s1">&#39;&quot;&gt;&lt;/div&gt;&#39;</span> </span><span id="L-451"><a href="#L-451"><span class="linenos" data-line="451"></span></a> <span class="o">..</span> <span class="nb">require</span><span class="p">(</span><span class="s1">&#39;Module:Message box&#39;</span><span class="p">).</span><span class="n">main</span><span class="p">(</span><span class="s1">&#39;ombox&#39;</span><span class="p">,</span> <span class="n">omargs</span><span class="p">)</span> </span><span id="L-452"><a href="#L-452"><span class="linenos" data-line="452"></span></a><span class="kr">end</span> </span><span id="L-453"><a href="#L-453"><span class="linenos" data-line="453"></span></a> </span><span id="L-454"><a href="#L-454"><span class="linenos" data-line="454"></span></a><span class="c1">-- Generates the padlock icon in the top right.</span> </span><span id="L-455"><a href="#L-455"><span class="linenos" data-line="455"></span></a><span class="c1">-- @function p.protectionTemplate</span> </span><span id="L-456"><a href="#L-456"><span class="linenos" data-line="456"></span></a><span class="c1">-- @param {table} env - environment table containing title objects, etc., generated with p.getEnvironment</span> </span><span id="L-457"><a href="#L-457"><span class="linenos" data-line="457"></span></a><span class="c1">-- @return {string} wikitext - wikitext corresponding to the protection template</span> </span><span id="L-458"><a href="#L-458"><span class="linenos" data-line="458"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">protectionTemplate</span><span class="p">(</span><span class="n">env</span><span class="p">)</span> </span><span id="L-459"><a href="#L-459"><span class="linenos" data-line="459"></span></a> <span class="c1">-- Messages:</span> </span><span id="L-460"><a href="#L-460"><span class="linenos" data-line="460"></span></a> <span class="c1">-- &#39;protection-template&#39; --&gt; &#39;pp-template&#39;</span> </span><span id="L-461"><a href="#L-461"><span class="linenos" data-line="461"></span></a> <span class="c1">-- &#39;protection-template-args&#39; --&gt; {docusage = &#39;yes&#39;}</span> </span><span id="L-462"><a href="#L-462"><span class="linenos" data-line="462"></span></a> <span class="kd">local</span> <span class="n">protectionLevels</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">protectionLevels</span> </span><span id="L-463"><a href="#L-463"><span class="linenos" data-line="463"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">protectionLevels</span> <span class="kr">then</span> </span><span id="L-464"><a href="#L-464"><span class="linenos" data-line="464"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-465"><a href="#L-465"><span class="linenos" data-line="465"></span></a> <span class="kr">end</span> </span><span id="L-466"><a href="#L-466"><span class="linenos" data-line="466"></span></a> <span class="kd">local</span> <span class="n">editProt</span> <span class="o">=</span> <span class="n">protectionLevels</span><span class="p">.</span><span class="n">edit</span> <span class="ow">and</span> <span class="n">protectionLevels</span><span class="p">.</span><span class="n">edit</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-467"><a href="#L-467"><span class="linenos" data-line="467"></span></a> <span class="kd">local</span> <span class="n">moveProt</span> <span class="o">=</span> <span class="n">protectionLevels</span><span class="p">.</span><span class="n">move</span> <span class="ow">and</span> <span class="n">protectionLevels</span><span class="p">.</span><span class="n">move</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-468"><a href="#L-468"><span class="linenos" data-line="468"></span></a> <span class="kr">if</span> <span class="n">editProt</span> <span class="kr">then</span> </span><span id="L-469"><a href="#L-469"><span class="linenos" data-line="469"></span></a> <span class="c1">-- The page is edit-protected.</span> </span><span id="L-470"><a href="#L-470"><span class="linenos" data-line="470"></span></a> <span class="kr">return</span> <span class="nb">require</span><span class="p">(</span><span class="s1">&#39;Module:Protection banner&#39;</span><span class="p">).</span><span class="n">_main</span><span class="p">{</span> </span><span id="L-471"><a href="#L-471"><span class="linenos" data-line="471"></span></a> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;protection-reason-edit&#39;</span><span class="p">),</span> <span class="n">small</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-472"><a href="#L-472"><span class="linenos" data-line="472"></span></a> <span class="p">}</span> </span><span id="L-473"><a href="#L-473"><span class="linenos" data-line="473"></span></a> <span class="kr">elseif</span> <span class="n">moveProt</span> <span class="ow">and</span> <span class="n">moveProt</span> <span class="o">~=</span> <span class="s1">&#39;autoconfirmed&#39;</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="c1">-- The page is move-protected but not edit-protected. Exclude move</span> </span><span id="L-475"><a href="#L-475"><span class="linenos" data-line="475"></span></a> <span class="c1">-- protection with the level &quot;autoconfirmed&quot;, as this is equivalent to</span> </span><span id="L-476"><a href="#L-476"><span class="linenos" data-line="476"></span></a> <span class="c1">-- no move protection at all.</span> </span><span id="L-477"><a href="#L-477"><span class="linenos" data-line="477"></span></a> <span class="kr">return</span> <span class="nb">require</span><span class="p">(</span><span class="s1">&#39;Module:Protection banner&#39;</span><span class="p">).</span><span class="n">_main</span><span class="p">{</span> </span><span id="L-478"><a href="#L-478"><span class="linenos" data-line="478"></span></a> <span class="n">action</span> <span class="o">=</span> <span class="s1">&#39;move&#39;</span><span class="p">,</span> <span class="n">small</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="p">}</span> </span><span id="L-480"><a href="#L-480"><span class="linenos" data-line="480"></span></a> <span class="kr">else</span> </span><span id="L-481"><a href="#L-481"><span class="linenos" data-line="481"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-482"><a href="#L-482"><span class="linenos" data-line="482"></span></a> <span class="kr">end</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><span id="L-485"><a href="#L-485"><span class="linenos" data-line="485"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-486"><a href="#L-486"><span class="linenos" data-line="486"></span></a><span class="c1">-- Start box</span> </span><span id="L-487"><a href="#L-487"><span class="linenos" data-line="487"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-488"><a href="#L-488"><span class="linenos" data-line="488"></span></a> </span><span id="L-489"><a href="#L-489"><span class="linenos" data-line="489"></span></a><span class="n">p</span><span class="p">.</span><span class="n">startBox</span> <span class="o">=</span> <span class="n">makeInvokeFunc</span><span class="p">(</span><span class="s1">&#39;_startBox&#39;</span><span class="p">)</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><span id="L-492"><a href="#L-492"><span class="linenos" data-line="492"></span></a><span class="c1">--- This function generates the start box.</span> </span><span id="L-493"><a href="#L-493"><span class="linenos" data-line="493"></span></a><span class="c1">-- @function p._startBox</span> </span><span id="L-494"><a href="#L-494"><span class="linenos" data-line="494"></span></a><span class="c1">-- @param {table} args a table of arguments passed by the user</span> </span><span id="L-495"><a href="#L-495"><span class="linenos" data-line="495"></span></a><span class="c1">-- @env - environment table containing title objects, etc., generated with p.getEnvironment</span> </span><span id="L-496"><a href="#L-496"><span class="linenos" data-line="496"></span></a><span class="c1">-- @return {string} startBox the text corresponding to the start box.</span> </span><span id="L-497"><a href="#L-497"><span class="linenos" data-line="497"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">_startBox</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> </span><span id="L-498"><a href="#L-498"><span class="linenos" data-line="498"></span></a> <span class="c1">-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make</span> </span><span id="L-499"><a href="#L-499"><span class="linenos" data-line="499"></span></a> <span class="c1">-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox</span> </span><span id="L-500"><a href="#L-500"><span class="linenos" data-line="500"></span></a> <span class="c1">-- which generate the box HTML.</span> </span><span id="L-501"><a href="#L-501"><span class="linenos" data-line="501"></span></a> <span class="n">env</span> <span class="o">=</span> <span class="n">env</span> <span class="ow">or</span> <span class="n">p</span><span class="p">.</span><span class="n">getEnvironment</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-502"><a href="#L-502"><span class="linenos" data-line="502"></span></a> <span class="kd">local</span> <span class="n">links</span> </span><span id="L-503"><a href="#L-503"><span class="linenos" data-line="503"></span></a> <span class="kd">local</span> <span class="n">content</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">content</span> </span><span id="L-504"><a href="#L-504"><span class="linenos" data-line="504"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">content</span> <span class="ow">or</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-505"><a href="#L-505"><span class="linenos" data-line="505"></span></a> <span class="c1">-- No need to include the links if the documentation is on the template page itself.</span> </span><span id="L-506"><a href="#L-506"><span class="linenos" data-line="506"></span></a> <span class="kd">local</span> <span class="n">linksData</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">makeStartBoxLinksData</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> </span><span id="L-507"><a href="#L-507"><span class="linenos" data-line="507"></span></a> <span class="kr">if</span> <span class="n">linksData</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">links</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">renderStartBoxLinks</span><span class="p">(</span><span class="n">linksData</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">end</span> </span><span id="L-510"><a href="#L-510"><span class="linenos" data-line="510"></span></a> <span class="kr">end</span> </span><span id="L-511"><a href="#L-511"><span class="linenos" data-line="511"></span></a> <span class="c1">-- Generate the start box html.</span> </span><span id="L-512"><a href="#L-512"><span class="linenos" data-line="512"></span></a> <span class="kd">local</span> <span class="n">data</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">makeStartBoxData</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">,</span> <span class="n">links</span><span class="p">)</span> </span><span id="L-513"><a href="#L-513"><span class="linenos" data-line="513"></span></a> <span class="kr">if</span> <span class="n">data</span> <span class="kr">then</span> </span><span id="L-514"><a href="#L-514"><span class="linenos" data-line="514"></span></a> <span class="kr">return</span> <span class="n">p</span><span class="p">.</span><span class="n">renderStartBox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> </span><span id="L-515"><a href="#L-515"><span class="linenos" data-line="515"></span></a> <span class="kr">else</span> </span><span id="L-516"><a href="#L-516"><span class="linenos" data-line="516"></span></a> <span class="c1">-- User specified no heading.</span> </span><span id="L-517"><a href="#L-517"><span class="linenos" data-line="517"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-518"><a href="#L-518"><span class="linenos" data-line="518"></span></a> <span class="kr">end</span> </span><span id="L-519"><a href="#L-519"><span class="linenos" data-line="519"></span></a><span class="kr">end</span> </span><span id="L-520"><a href="#L-520"><span class="linenos" data-line="520"></span></a> </span><span id="L-521"><a href="#L-521"><span class="linenos" data-line="521"></span></a><span class="c1">--- Does initial processing of data to make the [view] [edit] [history] [purge] links.</span> </span><span id="L-522"><a href="#L-522"><span class="linenos" data-line="522"></span></a><span class="c1">-- @function p.makeStartBoxLinksData</span> </span><span id="L-523"><a href="#L-523"><span class="linenos" data-line="523"></span></a><span class="c1">-- @param {table} args - a table of arguments passed by the user</span> </span><span id="L-524"><a href="#L-524"><span class="linenos" data-line="524"></span></a><span class="c1">-- @param {table} env - environment table containing title objects, etc., generated with p.getEnvironment</span> </span><span id="L-525"><a href="#L-525"><span class="linenos" data-line="525"></span></a><span class="c1">-- @return {table} data - data for the links</span> </span><span id="L-526"><a href="#L-526"><span class="linenos" data-line="526"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">makeStartBoxLinksData</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> </span><span id="L-527"><a href="#L-527"><span class="linenos" data-line="527"></span></a> <span class="c1">-- Messages:</span> </span><span id="L-528"><a href="#L-528"><span class="linenos" data-line="528"></span></a> <span class="c1">-- &#39;view-link-display&#39; --&gt; &#39;view&#39;</span> </span><span id="L-529"><a href="#L-529"><span class="linenos" data-line="529"></span></a> <span class="c1">-- &#39;edit-link-display&#39; --&gt; &#39;edit&#39;</span> </span><span id="L-530"><a href="#L-530"><span class="linenos" data-line="530"></span></a> <span class="c1">-- &#39;history-link-display&#39; --&gt; &#39;history&#39;</span> </span><span id="L-531"><a href="#L-531"><span class="linenos" data-line="531"></span></a> <span class="c1">-- &#39;purge-link-display&#39; --&gt; &#39;purge&#39;</span> </span><span id="L-532"><a href="#L-532"><span class="linenos" data-line="532"></span></a> <span class="c1">-- &#39;module-preload&#39; --&gt; &#39;Template:Documentation/preload-module-doc&#39;</span> </span><span id="L-533"><a href="#L-533"><span class="linenos" data-line="533"></span></a> <span class="c1">-- &#39;docpage-preload&#39; --&gt; &#39;Template:Documentation/preload&#39;</span> </span><span id="L-534"><a href="#L-534"><span class="linenos" data-line="534"></span></a> <span class="c1">-- &#39;create-link-display&#39; --&gt; &#39;create&#39;</span> </span><span id="L-535"><a href="#L-535"><span class="linenos" data-line="535"></span></a> <span class="kd">local</span> <span class="n">subjectSpace</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">subjectSpace</span> </span><span id="L-536"><a href="#L-536"><span class="linenos" data-line="536"></span></a> <span class="kd">local</span> <span class="n">title</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">title</span> </span><span id="L-537"><a href="#L-537"><span class="linenos" data-line="537"></span></a> <span class="kd">local</span> <span class="n">docTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">docTitle</span> </span><span id="L-538"><a href="#L-538"><span class="linenos" data-line="538"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">title</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">docTitle</span> <span class="kr">then</span> </span><span id="L-539"><a href="#L-539"><span class="linenos" data-line="539"></span></a> <span class="kr">return</span> <span class="kc">nil</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 class="kr">if</span> <span class="n">docTitle</span><span class="p">.</span><span class="n">isRedirect</span> <span class="kr">then</span> </span><span id="L-542"><a href="#L-542"><span class="linenos" data-line="542"></span></a> <span class="n">docTitle</span> <span class="o">=</span> <span class="n">docTitle</span><span class="p">.</span><span class="n">redirectTarget</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="c1">-- Create link if /doc doesn&#39;t exist.</span> </span><span id="L-546"><a href="#L-546"><span class="linenos" data-line="546"></span></a> <span class="kd">local</span> <span class="n">preload</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">preload</span> </span><span id="L-547"><a href="#L-547"><span class="linenos" data-line="547"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">preload</span> <span class="kr">then</span> </span><span id="L-548"><a href="#L-548"><span class="linenos" data-line="548"></span></a> <span class="kr">if</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">828</span> <span class="kr">then</span> <span class="c1">-- Module namespace</span> </span><span id="L-549"><a href="#L-549"><span class="linenos" data-line="549"></span></a> <span class="n">preload</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;module-preload&#39;</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">else</span> </span><span id="L-551"><a href="#L-551"><span class="linenos" data-line="551"></span></a> <span class="n">preload</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;docpage-preload&#39;</span><span class="p">)</span> </span><span id="L-552"><a href="#L-552"><span class="linenos" data-line="552"></span></a> <span class="kr">end</span> </span><span id="L-553"><a href="#L-553"><span class="linenos" data-line="553"></span></a> <span class="kr">end</span> </span><span id="L-554"><a href="#L-554"><span class="linenos" data-line="554"></span></a> </span><span id="L-555"><a href="#L-555"><span class="linenos" data-line="555"></span></a> <span class="kr">return</span> <span class="p">{</span> </span><span id="L-556"><a href="#L-556"><span class="linenos" data-line="556"></span></a> <span class="n">title</span> <span class="o">=</span> <span class="n">title</span><span class="p">,</span> </span><span id="L-557"><a href="#L-557"><span class="linenos" data-line="557"></span></a> <span class="n">docTitle</span> <span class="o">=</span> <span class="n">docTitle</span><span class="p">,</span> </span><span id="L-558"><a href="#L-558"><span class="linenos" data-line="558"></span></a> <span class="n">luaAutodoc</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">luaAutodoc</span><span class="p">,</span> </span><span id="L-559"><a href="#L-559"><span class="linenos" data-line="559"></span></a> <span class="c1">-- View, display, edit, and purge links if /doc exists.</span> </span><span id="L-560"><a href="#L-560"><span class="linenos" data-line="560"></span></a> <span class="n">viewLinkDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;view-link-display&#39;</span><span class="p">),</span> </span><span id="L-561"><a href="#L-561"><span class="linenos" data-line="561"></span></a> <span class="n">editLinkDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;edit-link-display&#39;</span><span class="p">),</span> </span><span id="L-562"><a href="#L-562"><span class="linenos" data-line="562"></span></a> <span class="n">historyLinkDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;history-link-display&#39;</span><span class="p">),</span> </span><span id="L-563"><a href="#L-563"><span class="linenos" data-line="563"></span></a> <span class="n">purgeLinkDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;purge-link-display&#39;</span><span class="p">),</span> </span><span id="L-564"><a href="#L-564"><span class="linenos" data-line="564"></span></a> <span class="n">overrideLinkDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;override-link-display&#39;</span><span class="p">),</span> </span><span id="L-565"><a href="#L-565"><span class="linenos" data-line="565"></span></a> <span class="n">preload</span> <span class="o">=</span> <span class="n">preload</span><span class="p">,</span> </span><span id="L-566"><a href="#L-566"><span class="linenos" data-line="566"></span></a> <span class="n">createLinkDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;create-link-display&#39;</span><span class="p">)</span> </span><span id="L-567"><a href="#L-567"><span class="linenos" data-line="567"></span></a> <span class="p">}</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="c1">--- Generates the [view][edit][history][purge] or [create][purge] links from the data table.</span> </span><span id="L-571"><a href="#L-571"><span class="linenos" data-line="571"></span></a><span class="c1">-- @function p.renderStartBoxLinks</span> </span><span id="L-572"><a href="#L-572"><span class="linenos" data-line="572"></span></a><span class="c1">-- @param {table} data - a table of data generated by p.makeStartBoxLinksData</span> </span><span id="L-573"><a href="#L-573"><span class="linenos" data-line="573"></span></a><span class="c1">-- @return {string} wikitext - the wikitext of the links</span> </span><span id="L-574"><a href="#L-574"><span class="linenos" data-line="574"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">renderStartBoxLinks</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> </span><span id="L-575"><a href="#L-575"><span class="linenos" data-line="575"></span></a> <span class="kd">local</span> <span class="n">docTitle</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">docTitle</span> </span><span id="L-576"><a href="#L-576"><span class="linenos" data-line="576"></span></a> <span class="c1">-- yes, we do intend to purge the template page on which the documentation appears</span> </span><span id="L-577"><a href="#L-577"><span class="linenos" data-line="577"></span></a> <span class="kd">local</span> <span class="n">purgeLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="s2">&quot;Special:Purge/&quot;</span> <span class="o">..</span> <span class="n">data</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">data</span><span class="p">.</span><span class="n">purgeLinkDisplay</span><span class="p">)</span> </span><span id="L-578"><a href="#L-578"><span class="linenos" data-line="578"></span></a> </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">docTitle</span><span class="p">.</span><span class="n">exists</span> <span class="ow">and</span> <span class="p">(</span><span class="n">docTitle</span><span class="p">:</span><span class="n">getContent</span><span class="p">()</span> <span class="o">~=</span> <span class="s1">&#39;&#39;</span> <span class="ow">or</span> <span class="n">data</span><span class="p">.</span><span class="n">luaAutodoc</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span><span class="p">)</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="kd">local</span> <span class="n">viewLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="n">docTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">data</span><span class="p">.</span><span class="n">viewLinkDisplay</span><span class="p">)</span> </span><span id="L-581"><a href="#L-581"><span class="linenos" data-line="581"></span></a> <span class="kd">local</span> <span class="n">editLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="s2">&quot;Special:EditPage/&quot;</span> <span class="o">..</span> <span class="n">docTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">data</span><span class="p">.</span><span class="n">editLinkDisplay</span><span class="p">)</span> </span><span id="L-582"><a href="#L-582"><span class="linenos" data-line="582"></span></a> <span class="kd">local</span> <span class="n">historyLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="s2">&quot;Special:PageHistory/&quot;</span> <span class="o">..</span> <span class="n">docTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">data</span><span class="p">.</span><span class="n">historyLinkDisplay</span><span class="p">)</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="s2">&quot;&amp;#91;&quot;</span> <span class="o">..</span> <span class="n">viewLink</span> <span class="o">..</span> <span class="s2">&quot;&amp;#93; &amp;#91;&quot;</span> <span class="o">..</span> <span class="n">editLink</span> <span class="o">..</span> <span class="s2">&quot;&amp;#93; &amp;#91;&quot;</span> <span class="o">..</span> <span class="n">historyLink</span> <span class="o">..</span> <span class="s2">&quot;&amp;#93; &amp;#91;&quot;</span> <span class="o">..</span> <span class="n">purgeLink</span> <span class="o">..</span> <span class="s2">&quot;&amp;#93;&quot;</span> </span><span id="L-584"><a href="#L-584"><span class="linenos" data-line="584"></span></a> <span class="kr">elseif</span> <span class="n">data</span><span class="p">.</span><span class="n">luaAutodoc</span> <span class="o">~=</span> <span class="s1">&#39;&#39;</span> <span class="kr">then</span> </span><span id="L-585"><a href="#L-585"><span class="linenos" data-line="585"></span></a> <span class="kd">local</span> <span class="n">overrideLink</span> <span class="o">=</span> <span class="n">makeUrlLink</span><span class="p">(</span><span class="n">docTitle</span><span class="p">:</span><span class="n">canonicalUrl</span><span class="p">{</span><span class="n">action</span> <span class="o">=</span> <span class="s1">&#39;edit&#39;</span><span class="p">,</span> <span class="n">preload</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">preload</span><span class="p">},</span> <span class="n">data</span><span class="p">.</span><span class="n">overrideLinkDisplay</span><span class="p">)</span> </span><span id="L-586"><a href="#L-586"><span class="linenos" data-line="586"></span></a> <span class="kr">return</span> <span class="s2">&quot;&amp;#91;&quot;</span> <span class="o">..</span> <span class="n">overrideLink</span> <span class="o">..</span> <span class="s2">&quot;&amp;#93; &amp;#91;&quot;</span> <span class="o">..</span> <span class="n">purgeLink</span> <span class="o">..</span> <span class="s2">&quot;&amp;#93;&quot;</span> </span><span id="L-587"><a href="#L-587"><span class="linenos" data-line="587"></span></a> <span class="kr">else</span> </span><span id="L-588"><a href="#L-588"><span class="linenos" data-line="588"></span></a> <span class="kd">local</span> <span class="n">createLink</span> <span class="o">=</span> <span class="n">makeUrlLink</span><span class="p">(</span><span class="n">docTitle</span><span class="p">:</span><span class="n">canonicalUrl</span><span class="p">{</span><span class="n">action</span> <span class="o">=</span> <span class="s1">&#39;edit&#39;</span><span class="p">,</span> <span class="n">preload</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">preload</span><span class="p">},</span> <span class="n">data</span><span class="p">.</span><span class="n">createLinkDisplay</span><span class="p">)</span> </span><span id="L-589"><a href="#L-589"><span class="linenos" data-line="589"></span></a> <span class="kr">return</span> <span class="s2">&quot;&amp;#91;&quot;</span> <span class="o">..</span> <span class="n">createLink</span> <span class="o">..</span> <span class="s2">&quot;&amp;#93; &amp;#91;&quot;</span> <span class="o">..</span> <span class="n">purgeLink</span> <span class="o">..</span> <span class="s2">&quot;&amp;#93;&quot;</span> </span><span id="L-590"><a href="#L-590"><span class="linenos" data-line="590"></span></a> <span class="kr">end</span> </span><span id="L-591"><a href="#L-591"><span class="linenos" data-line="591"></span></a> <span class="kr">return</span> <span class="n">ret</span> </span><span id="L-592"><a href="#L-592"><span class="linenos" data-line="592"></span></a><span class="kr">end</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><span id="L-595"><a href="#L-595"><span class="linenos" data-line="595"></span></a><span class="c1">--- Does initial processing of data to pass to the start-box render function, p.renderStartBox.</span> </span><span id="L-596"><a href="#L-596"><span class="linenos" data-line="596"></span></a><span class="c1">-- @function p.makeStartBoxData</span> </span><span id="L-597"><a href="#L-597"><span class="linenos" data-line="597"></span></a><span class="c1">-- @param {table} args - a table of arguments passed by the user</span> </span><span id="L-598"><a href="#L-598"><span class="linenos" data-line="598"></span></a><span class="c1">-- @param {table} env - environment table containing title objects, etc., generated with p.getEnvironment</span> </span><span id="L-599"><a href="#L-599"><span class="linenos" data-line="599"></span></a><span class="c1">-- @param {table} links - a string containing the [view][edit][history][purge] links - could be nil if there&#39;s an error.</span> </span><span id="L-600"><a href="#L-600"><span class="linenos" data-line="600"></span></a><span class="c1">-- @return {table} data - data corresponding to the start box</span> </span><span id="L-601"><a href="#L-601"><span class="linenos" data-line="601"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">makeStartBoxData</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">,</span> <span class="n">links</span><span class="p">)</span> </span><span id="L-602"><a href="#L-602"><span class="linenos" data-line="602"></span></a> <span class="c1">-- Messages:</span> </span><span id="L-603"><a href="#L-603"><span class="linenos" data-line="603"></span></a> <span class="c1">-- &#39;documentation-icon-wikitext&#39; --&gt; &#39;[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]&#39;</span> </span><span id="L-604"><a href="#L-604"><span class="linenos" data-line="604"></span></a> <span class="c1">-- &#39;template-namespace-heading&#39; --&gt; &#39;Template documentation&#39;</span> </span><span id="L-605"><a href="#L-605"><span class="linenos" data-line="605"></span></a> <span class="c1">-- &#39;module-namespace-heading&#39; --&gt; &#39;Module documentation&#39;</span> </span><span id="L-606"><a href="#L-606"><span class="linenos" data-line="606"></span></a> <span class="c1">-- &#39;file-namespace-heading&#39; --&gt; &#39;Summary&#39;</span> </span><span id="L-607"><a href="#L-607"><span class="linenos" data-line="607"></span></a> <span class="c1">-- &#39;other-namespaces-heading&#39; --&gt; &#39;Documentation&#39;</span> </span><span id="L-608"><a href="#L-608"><span class="linenos" data-line="608"></span></a> <span class="c1">-- &#39;testcases-create-link-display&#39; --&gt; &#39;create&#39;</span> </span><span id="L-609"><a href="#L-609"><span class="linenos" data-line="609"></span></a> <span class="kd">local</span> <span class="n">subjectSpace</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">subjectSpace</span> </span><span id="L-610"><a href="#L-610"><span class="linenos" data-line="610"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">subjectSpace</span> <span class="kr">then</span> </span><span id="L-611"><a href="#L-611"><span class="linenos" data-line="611"></span></a> <span class="c1">-- Default to an &quot;other namespaces&quot; namespace, so that we get at least some output</span> </span><span id="L-612"><a href="#L-612"><span class="linenos" data-line="612"></span></a> <span class="c1">-- if an error occurs.</span> </span><span id="L-613"><a href="#L-613"><span class="linenos" data-line="613"></span></a> <span class="n">subjectSpace</span> <span class="o">=</span> <span class="mi">2</span> </span><span id="L-614"><a href="#L-614"><span class="linenos" data-line="614"></span></a> <span class="kr">end</span> </span><span id="L-615"><a href="#L-615"><span class="linenos" data-line="615"></span></a> <span class="kd">local</span> <span class="n">data</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-616"><a href="#L-616"><span class="linenos" data-line="616"></span></a> </span><span id="L-617"><a href="#L-617"><span class="linenos" data-line="617"></span></a> <span class="c1">-- Heading</span> </span><span id="L-618"><a href="#L-618"><span class="linenos" data-line="618"></span></a> <span class="kd">local</span> <span class="n">heading</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">heading</span> <span class="c1">-- Blank values are not removed.</span> </span><span id="L-619"><a href="#L-619"><span class="linenos" data-line="619"></span></a> <span class="kr">if</span> <span class="n">heading</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span> <span class="kr">then</span> </span><span id="L-620"><a href="#L-620"><span class="linenos" data-line="620"></span></a> <span class="c1">-- Don&#39;t display the start box if the heading arg is defined but blank.</span> </span><span id="L-621"><a href="#L-621"><span class="linenos" data-line="621"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-622"><a href="#L-622"><span class="linenos" data-line="622"></span></a> <span class="kr">end</span> </span><span id="L-623"><a href="#L-623"><span class="linenos" data-line="623"></span></a> <span class="kr">if</span> <span class="n">heading</span> <span class="kr">then</span> </span><span id="L-624"><a href="#L-624"><span class="linenos" data-line="624"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">heading</span> <span class="o">=</span> <span class="n">heading</span> </span><span id="L-625"><a href="#L-625"><span class="linenos" data-line="625"></span></a> <span class="kr">elseif</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">10</span> <span class="kr">then</span> <span class="c1">-- Template namespace</span> </span><span id="L-626"><a href="#L-626"><span class="linenos" data-line="626"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">heading</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;documentation-icon-wikitext&#39;</span><span class="p">)</span> <span class="o">..</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;template-namespace-heading&#39;</span><span class="p">)</span> </span><span id="L-627"><a href="#L-627"><span class="linenos" data-line="627"></span></a> <span class="kr">elseif</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">828</span> <span class="kr">then</span> <span class="c1">-- Module namespace</span> </span><span id="L-628"><a href="#L-628"><span class="linenos" data-line="628"></span></a> <span class="kr">if</span> <span class="p">(</span><span class="ow">not</span> <span class="n">env</span><span class="p">.</span><span class="n">docTitle</span><span class="p">.</span><span class="n">exists</span> <span class="ow">or</span> <span class="n">env</span><span class="p">.</span><span class="n">docTitle</span><span class="p">:</span><span class="n">getContent</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">env</span><span class="p">.</span><span class="n">luaAutodoc</span> <span class="o">~=</span> <span class="s1">&#39;&#39;</span> <span class="kr">then</span> </span><span id="L-629"><a href="#L-629"><span class="linenos" data-line="629"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">heading</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;documentation-icon-wikitext&#39;</span><span class="p">)</span> <span class="o">..</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;module-autodoc-heading&#39;</span><span class="p">)</span> </span><span id="L-630"><a href="#L-630"><span class="linenos" data-line="630"></span></a> <span class="kr">else</span> </span><span id="L-631"><a href="#L-631"><span class="linenos" data-line="631"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">heading</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;documentation-icon-wikitext&#39;</span><span class="p">)</span> <span class="o">..</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;module-namespace-heading&#39;</span><span class="p">)</span> </span><span id="L-632"><a href="#L-632"><span class="linenos" data-line="632"></span></a> <span class="kr">end</span> </span><span id="L-633"><a href="#L-633"><span class="linenos" data-line="633"></span></a> <span class="kr">elseif</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">6</span> <span class="kr">then</span> <span class="c1">-- File namespace</span> </span><span id="L-634"><a href="#L-634"><span class="linenos" data-line="634"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">heading</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;file-namespace-heading&#39;</span><span class="p">)</span> </span><span id="L-635"><a href="#L-635"><span class="linenos" data-line="635"></span></a> <span class="kr">else</span> </span><span id="L-636"><a href="#L-636"><span class="linenos" data-line="636"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">heading</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;other-namespaces-heading&#39;</span><span class="p">)</span> </span><span id="L-637"><a href="#L-637"><span class="linenos" data-line="637"></span></a> <span class="kr">end</span> </span><span id="L-638"><a href="#L-638"><span class="linenos" data-line="638"></span></a> </span><span id="L-639"><a href="#L-639"><span class="linenos" data-line="639"></span></a> <span class="c1">-- Heading CSS</span> </span><span id="L-640"><a href="#L-640"><span class="linenos" data-line="640"></span></a> <span class="kd">local</span> <span class="n">headingStyle</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="s1">&#39;heading-style&#39;</span><span class="p">]</span> </span><span id="L-641"><a href="#L-641"><span class="linenos" data-line="641"></span></a> <span class="kr">if</span> <span class="n">headingStyle</span> <span class="kr">then</span> </span><span id="L-642"><a href="#L-642"><span class="linenos" data-line="642"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">headingStyleText</span> <span class="o">=</span> <span class="n">headingStyle</span> </span><span id="L-643"><a href="#L-643"><span class="linenos" data-line="643"></span></a> <span class="kr">else</span> </span><span id="L-644"><a href="#L-644"><span class="linenos" data-line="644"></span></a> <span class="c1">-- &#39;documentation-heading&#39;</span> </span><span id="L-645"><a href="#L-645"><span class="linenos" data-line="645"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">headingClass</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;main-div-heading-class&#39;</span><span class="p">)</span> </span><span id="L-646"><a href="#L-646"><span class="linenos" data-line="646"></span></a> <span class="kr">end</span> </span><span id="L-647"><a href="#L-647"><span class="linenos" data-line="647"></span></a> </span><span id="L-648"><a href="#L-648"><span class="linenos" data-line="648"></span></a> <span class="c1">-- Data for the [view][edit][history][purge] or [create] links.</span> </span><span id="L-649"><a href="#L-649"><span class="linenos" data-line="649"></span></a> <span class="kr">if</span> <span class="n">links</span> <span class="kr">then</span> </span><span id="L-650"><a href="#L-650"><span class="linenos" data-line="650"></span></a> <span class="c1">-- &#39;mw-editsection-like plainlinks&#39;</span> </span><span id="L-651"><a href="#L-651"><span class="linenos" data-line="651"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">linksClass</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;start-box-link-classes&#39;</span><span class="p">)</span> </span><span id="L-652"><a href="#L-652"><span class="linenos" data-line="652"></span></a> <span class="n">data</span><span class="p">.</span><span class="n">links</span> <span class="o">=</span> <span class="n">links</span> </span><span id="L-653"><a href="#L-653"><span class="linenos" data-line="653"></span></a> <span class="kr">end</span> </span><span id="L-654"><a href="#L-654"><span class="linenos" data-line="654"></span></a> </span><span id="L-655"><a href="#L-655"><span class="linenos" data-line="655"></span></a> <span class="kr">return</span> <span class="n">data</span> </span><span id="L-656"><a href="#L-656"><span class="linenos" data-line="656"></span></a><span class="kr">end</span> </span><span id="L-657"><a href="#L-657"><span class="linenos" data-line="657"></span></a> </span><span id="L-658"><a href="#L-658"><span class="linenos" data-line="658"></span></a><span class="c1">--- Renders the start box html.</span> </span><span id="L-659"><a href="#L-659"><span class="linenos" data-line="659"></span></a><span class="c1">-- @function p.renderStartBox</span> </span><span id="L-660"><a href="#L-660"><span class="linenos" data-line="660"></span></a><span class="c1">-- @param {table} data - a table of data generated by p.makeStartBoxData.</span> </span><span id="L-661"><a href="#L-661"><span class="linenos" data-line="661"></span></a><span class="c1">-- @return {string} html - HTML corresponding to the start box</span> </span><span id="L-662"><a href="#L-662"><span class="linenos" data-line="662"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">renderStartBox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> </span><span id="L-663"><a href="#L-663"><span class="linenos" data-line="663"></span></a> <span class="kd">local</span> <span class="n">sbox</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">html</span><span class="p">.</span><span class="n">create</span><span class="p">(</span><span class="s1">&#39;div&#39;</span><span class="p">)</span> </span><span id="L-664"><a href="#L-664"><span class="linenos" data-line="664"></span></a> <span class="n">sbox</span> </span><span id="L-665"><a href="#L-665"><span class="linenos" data-line="665"></span></a> <span class="c1">-- &#39;documentation-startbox&#39;</span> </span><span id="L-666"><a href="#L-666"><span class="linenos" data-line="666"></span></a> <span class="p">:</span><span class="n">addClass</span><span class="p">(</span><span class="n">message</span><span class="p">(</span><span class="s1">&#39;start-box-class&#39;</span><span class="p">))</span> </span><span id="L-667"><a href="#L-667"><span class="linenos" data-line="667"></span></a> <span class="p">:</span><span class="n">newline</span><span class="p">()</span> </span><span id="L-668"><a href="#L-668"><span class="linenos" data-line="668"></span></a> <span class="p">:</span><span class="n">tag</span><span class="p">(</span><span class="s1">&#39;span&#39;</span><span class="p">)</span> </span><span id="L-669"><a href="#L-669"><span class="linenos" data-line="669"></span></a> <span class="p">:</span><span class="n">addClass</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">headingClass</span><span class="p">)</span> </span><span id="L-670"><a href="#L-670"><span class="linenos" data-line="670"></span></a> <span class="p">:</span><span class="n">attr</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="s1">&#39;documentation-heading&#39;</span><span class="p">)</span> </span><span id="L-671"><a href="#L-671"><span class="linenos" data-line="671"></span></a> <span class="p">:</span><span class="n">cssText</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">headingStyleText</span><span class="p">)</span> </span><span id="L-672"><a href="#L-672"><span class="linenos" data-line="672"></span></a> <span class="p">:</span><span class="n">wikitext</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">heading</span><span class="p">)</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">links</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">links</span> </span><span id="L-674"><a href="#L-674"><span class="linenos" data-line="674"></span></a> <span class="kr">if</span> <span class="n">links</span> <span class="kr">then</span> </span><span id="L-675"><a href="#L-675"><span class="linenos" data-line="675"></span></a> <span class="n">sbox</span><span class="p">:</span><span class="n">tag</span><span class="p">(</span><span class="s1">&#39;span&#39;</span><span class="p">)</span> </span><span id="L-676"><a href="#L-676"><span class="linenos" data-line="676"></span></a> <span class="p">:</span><span class="n">addClass</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">linksClass</span><span class="p">)</span> </span><span id="L-677"><a href="#L-677"><span class="linenos" data-line="677"></span></a> <span class="p">:</span><span class="n">attr</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">data</span><span class="p">.</span><span class="n">linksId</span><span class="p">)</span> </span><span id="L-678"><a href="#L-678"><span class="linenos" data-line="678"></span></a> <span class="p">:</span><span class="n">wikitext</span><span class="p">(</span><span class="n">links</span><span class="p">)</span> </span><span id="L-679"><a href="#L-679"><span class="linenos" data-line="679"></span></a> <span class="kr">end</span> </span><span id="L-680"><a href="#L-680"><span class="linenos" data-line="680"></span></a> <span class="kr">return</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">sbox</span><span class="p">)</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="c1">----------------------------------------------------------------------------</span> </span><span id="L-684"><a href="#L-684"><span class="linenos" data-line="684"></span></a><span class="c1">-- Documentation content</span> </span><span id="L-685"><a href="#L-685"><span class="linenos" data-line="685"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-686"><a href="#L-686"><span class="linenos" data-line="686"></span></a> </span><span id="L-687"><a href="#L-687"><span class="linenos" data-line="687"></span></a><span class="n">p</span><span class="p">.</span><span class="n">content</span> <span class="o">=</span> <span class="n">makeInvokeFunc</span><span class="p">(</span><span class="s1">&#39;_content&#39;</span><span class="p">)</span> </span><span id="L-688"><a href="#L-688"><span class="linenos" data-line="688"></span></a> </span><span id="L-689"><a href="#L-689"><span class="linenos" data-line="689"></span></a><span class="c1">--- Displays the documentation contents</span> </span><span id="L-690"><a href="#L-690"><span class="linenos" data-line="690"></span></a><span class="c1">-- @function p._content</span> </span><span id="L-691"><a href="#L-691"><span class="linenos" data-line="691"></span></a><span class="c1">-- @param {table} args - a table of arguments passed by the user</span> </span><span id="L-692"><a href="#L-692"><span class="linenos" data-line="692"></span></a><span class="c1">-- @param {table} env - environment table containing title objects, etc., generated with p.getEnvironment</span> </span><span id="L-693"><a href="#L-693"><span class="linenos" data-line="693"></span></a><span class="c1">-- @return {string} content - the content of the documentation</span> </span><span id="L-694"><a href="#L-694"><span class="linenos" data-line="694"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">_content</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> </span><span id="L-695"><a href="#L-695"><span class="linenos" data-line="695"></span></a> <span class="n">env</span> <span class="o">=</span> <span class="n">env</span> <span class="ow">or</span> <span class="n">p</span><span class="p">.</span><span class="n">getEnvironment</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-696"><a href="#L-696"><span class="linenos" data-line="696"></span></a> <span class="kd">local</span> <span class="n">docTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">docTitle</span> </span><span id="L-697"><a href="#L-697"><span class="linenos" data-line="697"></span></a> <span class="kd">local</span> <span class="n">content</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">content</span> </span><span id="L-698"><a href="#L-698"><span class="linenos" data-line="698"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">content</span> <span class="ow">and</span> <span class="n">docTitle</span> <span class="ow">and</span> <span class="n">docTitle</span><span class="p">.</span><span class="n">exists</span> <span class="kr">then</span> </span><span id="L-699"><a href="#L-699"><span class="linenos" data-line="699"></span></a> <span class="n">content</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">_content</span> <span class="ow">or</span> <span class="n">mw</span><span class="p">.</span><span class="n">getCurrentFrame</span><span class="p">():</span><span class="n">expandTemplate</span><span class="p">{</span><span class="n">title</span> <span class="o">=</span> <span class="n">docTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">}</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="kr">if</span> <span class="n">content</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="n">content</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span> <span class="kr">then</span> </span><span id="L-703"><a href="#L-703"><span class="linenos" data-line="703"></span></a> <span class="n">content</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">luaAutodoc</span> </span><span id="L-704"><a href="#L-704"><span class="linenos" data-line="704"></span></a> <span class="kr">end</span> </span><span id="L-705"><a href="#L-705"><span class="linenos" data-line="705"></span></a> </span><span id="L-706"><a href="#L-706"><span class="linenos" data-line="706"></span></a> <span class="c1">-- The line breaks below are necessary so that &quot;=== Headings ===&quot; at the start and end</span> </span><span id="L-707"><a href="#L-707"><span class="linenos" data-line="707"></span></a> <span class="c1">-- of docs are interpreted correctly.</span> </span><span id="L-708"><a href="#L-708"><span class="linenos" data-line="708"></span></a> <span class="kr">return</span> <span class="n">content</span> <span class="ow">and</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">..</span> <span class="n">content</span> <span class="o">..</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> </span><span id="L-709"><a href="#L-709"><span class="linenos" data-line="709"></span></a><span class="kr">end</span> </span><span id="L-710"><a href="#L-710"><span class="linenos" data-line="710"></span></a> </span><span id="L-711"><a href="#L-711"><span class="linenos" data-line="711"></span></a><span class="n">p</span><span class="p">.</span><span class="n">contentTitle</span> <span class="o">=</span> <span class="n">makeInvokeFunc</span><span class="p">(</span><span class="s1">&#39;_contentTitle&#39;</span><span class="p">)</span> </span><span id="L-712"><a href="#L-712"><span class="linenos" data-line="712"></span></a> </span><span id="L-713"><a href="#L-713"><span class="linenos" data-line="713"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">_contentTitle</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> </span><span id="L-714"><a href="#L-714"><span class="linenos" data-line="714"></span></a> <span class="n">env</span> <span class="o">=</span> <span class="n">env</span> <span class="ow">or</span> <span class="n">p</span><span class="p">.</span><span class="n">getEnvironment</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-715"><a href="#L-715"><span class="linenos" data-line="715"></span></a> <span class="kd">local</span> <span class="n">docTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">docTitle</span> </span><span id="L-716"><a href="#L-716"><span class="linenos" data-line="716"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">args</span><span class="p">.</span><span class="n">content</span> <span class="ow">and</span> <span class="n">docTitle</span> <span class="ow">and</span> <span class="n">docTitle</span><span class="p">.</span><span class="n">exists</span> <span class="kr">then</span> </span><span id="L-717"><a href="#L-717"><span class="linenos" data-line="717"></span></a> <span class="kr">return</span> <span class="n">docTitle</span><span class="p">.</span><span class="n">prefixedText</span> </span><span id="L-718"><a href="#L-718"><span class="linenos" data-line="718"></span></a> <span class="kr">else</span> </span><span id="L-719"><a href="#L-719"><span class="linenos" data-line="719"></span></a> <span class="kr">return</span> <span class="s1">&#39;&#39;</span> </span><span id="L-720"><a href="#L-720"><span class="linenos" data-line="720"></span></a> <span class="kr">end</span> </span><span id="L-721"><a href="#L-721"><span class="linenos" data-line="721"></span></a><span class="kr">end</span> </span><span id="L-722"><a href="#L-722"><span class="linenos" data-line="722"></span></a> </span><span id="L-723"><a href="#L-723"><span class="linenos" data-line="723"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-724"><a href="#L-724"><span class="linenos" data-line="724"></span></a><span class="c1">-- End box</span> </span><span id="L-725"><a href="#L-725"><span class="linenos" data-line="725"></span></a><span class="c1">----------------------------------------------------------------------------</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="n">p</span><span class="p">.</span><span class="n">endBox</span> <span class="o">=</span> <span class="n">makeInvokeFunc</span><span class="p">(</span><span class="s1">&#39;_endBox&#39;</span><span class="p">)</span> </span><span id="L-728"><a href="#L-728"><span class="linenos" data-line="728"></span></a> </span><span id="L-729"><a href="#L-729"><span class="linenos" data-line="729"></span></a><span class="c1">--- This function generates the end box (also known as the link box).</span> </span><span id="L-730"><a href="#L-730"><span class="linenos" data-line="730"></span></a><span class="c1">-- @function p._endBox</span> </span><span id="L-731"><a href="#L-731"><span class="linenos" data-line="731"></span></a><span class="c1">-- @param {table} args - a table of arguments passed by the user</span> </span><span id="L-732"><a href="#L-732"><span class="linenos" data-line="732"></span></a><span class="c1">-- @param {table} env - environment table containing title objects, etc., generated with p.getEnvironment</span> </span><span id="L-733"><a href="#L-733"><span class="linenos" data-line="733"></span></a><span class="c1">-- @return {string} wikitext - text corresponding to the endbox</span> </span><span id="L-734"><a href="#L-734"><span class="linenos" data-line="734"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">_endBox</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</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="c1">-- Get environment data.</span> </span><span id="L-737"><a href="#L-737"><span class="linenos" data-line="737"></span></a> <span class="n">env</span> <span class="o">=</span> <span class="n">env</span> <span class="ow">or</span> <span class="n">p</span><span class="p">.</span><span class="n">getEnvironment</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-738"><a href="#L-738"><span class="linenos" data-line="738"></span></a> <span class="kd">local</span> <span class="n">subjectSpace</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">subjectSpace</span> </span><span id="L-739"><a href="#L-739"><span class="linenos" data-line="739"></span></a> <span class="kd">local</span> <span class="n">docTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">docTitle</span> </span><span id="L-740"><a href="#L-740"><span class="linenos" data-line="740"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">subjectSpace</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">docTitle</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="kr">return</span> <span class="kc">nil</span> </span><span id="L-742"><a href="#L-742"><span class="linenos" data-line="742"></span></a> <span class="kr">end</span> </span><span id="L-743"><a href="#L-743"><span class="linenos" data-line="743"></span></a> </span><span id="L-744"><a href="#L-744"><span class="linenos" data-line="744"></span></a> <span class="c1">-- Check whether we should output the end box at all. Add the end</span> </span><span id="L-745"><a href="#L-745"><span class="linenos" data-line="745"></span></a> <span class="c1">-- box by default if the documentation exists or if we are in the</span> </span><span id="L-746"><a href="#L-746"><span class="linenos" data-line="746"></span></a> <span class="c1">-- user, module or template namespaces.</span> </span><span id="L-747"><a href="#L-747"><span class="linenos" data-line="747"></span></a> <span class="kd">local</span> <span class="n">linkBox</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="s1">&#39;link box&#39;</span><span class="p">]</span> </span><span id="L-748"><a href="#L-748"><span class="linenos" data-line="748"></span></a> <span class="kr">if</span> <span class="n">linkBox</span> <span class="o">==</span> <span class="s1">&#39;off&#39;</span> </span><span id="L-749"><a href="#L-749"><span class="linenos" data-line="749"></span></a> <span class="ow">or</span> <span class="ow">not</span> <span class="p">(</span> </span><span id="L-750"><a href="#L-750"><span class="linenos" data-line="750"></span></a> <span class="n">docTitle</span><span class="p">.</span><span class="n">exists</span> </span><span id="L-751"><a href="#L-751"><span class="linenos" data-line="751"></span></a> <span class="ow">or</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">2</span> </span><span id="L-752"><a href="#L-752"><span class="linenos" data-line="752"></span></a> <span class="ow">or</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">828</span> </span><span id="L-753"><a href="#L-753"><span class="linenos" data-line="753"></span></a> <span class="ow">or</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">10</span> </span><span id="L-754"><a href="#L-754"><span class="linenos" data-line="754"></span></a> <span class="p">)</span> </span><span id="L-755"><a href="#L-755"><span class="linenos" data-line="755"></span></a> <span class="kr">then</span> </span><span id="L-756"><a href="#L-756"><span class="linenos" data-line="756"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-757"><a href="#L-757"><span class="linenos" data-line="757"></span></a> <span class="kr">end</span> </span><span id="L-758"><a href="#L-758"><span class="linenos" data-line="758"></span></a> </span><span id="L-759"><a href="#L-759"><span class="linenos" data-line="759"></span></a> <span class="c1">-- Assemble the link box.</span> </span><span id="L-760"><a href="#L-760"><span class="linenos" data-line="760"></span></a> <span class="kd">local</span> <span class="n">text</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-761"><a href="#L-761"><span class="linenos" data-line="761"></span></a> <span class="kr">if</span> <span class="n">linkBox</span> <span class="kr">then</span> </span><span id="L-762"><a href="#L-762"><span class="linenos" data-line="762"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span> <span class="o">..</span> <span class="n">linkBox</span> </span><span id="L-763"><a href="#L-763"><span class="linenos" data-line="763"></span></a> <span class="kr">else</span> </span><span id="L-764"><a href="#L-764"><span class="linenos" data-line="764"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span> <span class="o">..</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">makeDocPageBlurb</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="c1">-- &quot;This documentation is transcluded from [[Foo]].&quot; </span> </span><span id="L-765"><a href="#L-765"><span class="linenos" data-line="765"></span></a> <span class="kr">if</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">2</span> <span class="ow">or</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">10</span> <span class="ow">or</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">828</span> <span class="kr">then</span> </span><span id="L-766"><a href="#L-766"><span class="linenos" data-line="766"></span></a> <span class="c1">-- We are in the user, template or module namespaces.</span> </span><span id="L-767"><a href="#L-767"><span class="linenos" data-line="767"></span></a> <span class="c1">-- Add sandbox and testcases links.</span> </span><span id="L-768"><a href="#L-768"><span class="linenos" data-line="768"></span></a> <span class="c1">-- &quot;Editors can experiment in this template&#39;s sandbox and testcases pages.&quot;</span> </span><span id="L-769"><a href="#L-769"><span class="linenos" data-line="769"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span> <span class="o">..</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">makeExperimentBlurb</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="o">..</span> <span class="s1">&#39;&lt;br /&gt;&#39;</span> </span><span id="L-770"><a href="#L-770"><span class="linenos" data-line="770"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">args</span><span class="p">.</span><span class="n">content</span> <span class="ow">and</span> <span class="ow">not</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-771"><a href="#L-771"><span class="linenos" data-line="771"></span></a> <span class="c1">-- &quot;Please add categories to the /doc subpage.&quot;</span> </span><span id="L-772"><a href="#L-772"><span class="linenos" data-line="772"></span></a> <span class="c1">-- Don&#39;t show this message with inline docs or with an explicitly specified doc page,</span> </span><span id="L-773"><a href="#L-773"><span class="linenos" data-line="773"></span></a> <span class="c1">-- as then it is unclear where to add the categories.</span> </span><span id="L-774"><a href="#L-774"><span class="linenos" data-line="774"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span> <span class="o">..</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">makeCategoriesBlurb</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> </span><span id="L-775"><a href="#L-775"><span class="linenos" data-line="775"></span></a> <span class="kr">end</span> </span><span id="L-776"><a href="#L-776"><span class="linenos" data-line="776"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span> <span class="o">..</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">makeSubpagesBlurb</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="c1">--&quot;Subpages of this template&quot;</span> </span><span id="L-777"><a href="#L-777"><span class="linenos" data-line="777"></span></a> <span class="kr">end</span> </span><span id="L-778"><a href="#L-778"><span class="linenos" data-line="778"></span></a> <span class="kr">end</span> </span><span id="L-779"><a href="#L-779"><span class="linenos" data-line="779"></span></a> </span><span id="L-780"><a href="#L-780"><span class="linenos" data-line="780"></span></a> <span class="kd">local</span> <span class="n">box</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">html</span><span class="p">.</span><span class="n">create</span><span class="p">(</span><span class="s1">&#39;div&#39;</span><span class="p">)</span> </span><span id="L-781"><a href="#L-781"><span class="linenos" data-line="781"></span></a> <span class="c1">-- &#39;documentation-metadata&#39;</span> </span><span id="L-782"><a href="#L-782"><span class="linenos" data-line="782"></span></a> <span class="n">box</span><span class="p">:</span><span class="n">attr</span><span class="p">(</span><span class="s1">&#39;role&#39;</span><span class="p">,</span> <span class="s1">&#39;note&#39;</span><span class="p">)</span> </span><span id="L-783"><a href="#L-783"><span class="linenos" data-line="783"></span></a> <span class="p">:</span><span class="n">addClass</span><span class="p">(</span><span class="n">message</span><span class="p">(</span><span class="s1">&#39;end-box-class&#39;</span><span class="p">))</span> </span><span id="L-784"><a href="#L-784"><span class="linenos" data-line="784"></span></a> <span class="c1">-- &#39;plainlinks&#39;</span> </span><span id="L-785"><a href="#L-785"><span class="linenos" data-line="785"></span></a> <span class="p">:</span><span class="n">addClass</span><span class="p">(</span><span class="n">message</span><span class="p">(</span><span class="s1">&#39;end-box-plainlinks&#39;</span><span class="p">))</span> </span><span id="L-786"><a href="#L-786"><span class="linenos" data-line="786"></span></a> <span class="p">:</span><span class="n">wikitext</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> </span><span id="L-787"><a href="#L-787"><span class="linenos" data-line="787"></span></a> <span class="p">:</span><span class="n">done</span><span class="p">()</span> </span><span id="L-788"><a href="#L-788"><span class="linenos" data-line="788"></span></a> </span><span id="L-789"><a href="#L-789"><span class="linenos" data-line="789"></span></a> <span class="kr">return</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">..</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">box</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><span id="L-792"><a href="#L-792"><span class="linenos" data-line="792"></span></a><span class="c1">--- Makes the blurb &quot;This documentation is transcluded from [[Template:Foo]] (edit, history)&quot;.</span> </span><span id="L-793"><a href="#L-793"><span class="linenos" data-line="793"></span></a><span class="c1">-- @function p.makeDocPageBlurb</span> </span><span id="L-794"><a href="#L-794"><span class="linenos" data-line="794"></span></a><span class="c1">-- @param {table} args - a table of arguments passed by the user</span> </span><span id="L-795"><a href="#L-795"><span class="linenos" data-line="795"></span></a><span class="c1">-- @param {table} env - environment table containing title objects, etc., generated with p.getEnvironment</span> </span><span id="L-796"><a href="#L-796"><span class="linenos" data-line="796"></span></a><span class="c1">-- @return {string} wikitext - the doc page blurb</span> </span><span id="L-797"><a href="#L-797"><span class="linenos" data-line="797"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">makeDocPageBlurb</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> </span><span id="L-798"><a href="#L-798"><span class="linenos" data-line="798"></span></a> <span class="c1">-- Messages:</span> </span><span id="L-799"><a href="#L-799"><span class="linenos" data-line="799"></span></a> <span class="c1">-- &#39;edit-link-display&#39; --&gt; &#39;edit&#39;</span> </span><span id="L-800"><a href="#L-800"><span class="linenos" data-line="800"></span></a> <span class="c1">-- &#39;history-link-display&#39; --&gt; &#39;history&#39;</span> </span><span id="L-801"><a href="#L-801"><span class="linenos" data-line="801"></span></a> <span class="c1">-- &#39;transcluded-from-blurb&#39; --&gt; </span> </span><span id="L-802"><a href="#L-802"><span class="linenos" data-line="802"></span></a> <span class="c1">-- &#39;The above [[Wikipedia:Template documentation|documentation]] </span> </span><span id="L-803"><a href="#L-803"><span class="linenos" data-line="803"></span></a> <span class="c1">-- is [[Help:Transclusion|transcluded]] from $1.&#39;</span> </span><span id="L-804"><a href="#L-804"><span class="linenos" data-line="804"></span></a> <span class="c1">-- &#39;module-preload&#39; --&gt; &#39;Template:Documentation/preload-module-doc&#39;</span> </span><span id="L-805"><a href="#L-805"><span class="linenos" data-line="805"></span></a> <span class="c1">-- &#39;create-link-display&#39; --&gt; &#39;create&#39;</span> </span><span id="L-806"><a href="#L-806"><span class="linenos" data-line="806"></span></a> <span class="c1">-- &#39;create-module-doc-blurb&#39; --&gt;</span> </span><span id="L-807"><a href="#L-807"><span class="linenos" data-line="807"></span></a> <span class="c1">-- &#39;You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].&#39;</span> </span><span id="L-808"><a href="#L-808"><span class="linenos" data-line="808"></span></a> <span class="kd">local</span> <span class="n">docTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">docTitle</span> </span><span id="L-809"><a href="#L-809"><span class="linenos" data-line="809"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">docTitle</span> <span class="kr">then</span> </span><span id="L-810"><a href="#L-810"><span class="linenos" data-line="810"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-811"><a href="#L-811"><span class="linenos" data-line="811"></span></a> <span class="kr">end</span> </span><span id="L-812"><a href="#L-812"><span class="linenos" data-line="812"></span></a> <span class="kr">if</span> <span class="n">docTitle</span><span class="p">.</span><span class="n">exists</span> <span class="kr">then</span> </span><span id="L-813"><a href="#L-813"><span class="linenos" data-line="813"></span></a> <span class="c1">-- /doc exists; link to it.</span> </span><span id="L-814"><a href="#L-814"><span class="linenos" data-line="814"></span></a> <span class="kd">local</span> <span class="n">docLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="n">docTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">)</span> </span><span id="L-815"><a href="#L-815"><span class="linenos" data-line="815"></span></a> <span class="kd">local</span> <span class="n">editDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;edit-link-display&#39;</span><span class="p">)</span> </span><span id="L-816"><a href="#L-816"><span class="linenos" data-line="816"></span></a> <span class="kd">local</span> <span class="n">editLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="s2">&quot;Special:EditPage/&quot;</span> <span class="o">..</span> <span class="n">docTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">editDisplay</span><span class="p">)</span> </span><span id="L-817"><a href="#L-817"><span class="linenos" data-line="817"></span></a> <span class="kd">local</span> <span class="n">historyDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;history-link-display&#39;</span><span class="p">)</span> </span><span id="L-818"><a href="#L-818"><span class="linenos" data-line="818"></span></a> <span class="kd">local</span> <span class="n">historyLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="s2">&quot;Special:PageHistory/&quot;</span> <span class="o">..</span> <span class="n">docTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">historyDisplay</span><span class="p">)</span> </span><span id="L-819"><a href="#L-819"><span class="linenos" data-line="819"></span></a> <span class="kr">return</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;transcluded-from-blurb&#39;</span><span class="p">,</span> <span class="p">{</span><span class="n">docLink</span><span class="p">})</span> </span><span id="L-820"><a href="#L-820"><span class="linenos" data-line="820"></span></a> <span class="o">..</span> <span class="s1">&#39; &#39;</span> </span><span id="L-821"><a href="#L-821"><span class="linenos" data-line="821"></span></a> <span class="o">..</span> <span class="n">makeToolbar</span><span class="p">(</span><span class="n">editLink</span><span class="p">,</span> <span class="n">historyLink</span><span class="p">)</span> </span><span id="L-822"><a href="#L-822"><span class="linenos" data-line="822"></span></a> <span class="o">..</span> <span class="s1">&#39;&lt;br /&gt;&#39;</span> </span><span id="L-823"><a href="#L-823"><span class="linenos" data-line="823"></span></a> <span class="kr">elseif</span> <span class="n">env</span><span class="p">.</span><span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">828</span> <span class="kr">then</span> </span><span id="L-824"><a href="#L-824"><span class="linenos" data-line="824"></span></a> <span class="c1">-- /doc does not exist; ask to create it.</span> </span><span id="L-825"><a href="#L-825"><span class="linenos" data-line="825"></span></a> <span class="kd">local</span> <span class="n">createUrl</span> <span class="o">=</span> <span class="n">docTitle</span><span class="p">:</span><span class="n">canonicalUrl</span><span class="p">{</span><span class="n">action</span> <span class="o">=</span> <span class="s1">&#39;edit&#39;</span><span class="p">,</span> <span class="n">preload</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;module-preload&#39;</span><span class="p">)}</span> </span><span id="L-826"><a href="#L-826"><span class="linenos" data-line="826"></span></a> <span class="kd">local</span> <span class="n">createDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;create-link-display&#39;</span><span class="p">)</span> </span><span id="L-827"><a href="#L-827"><span class="linenos" data-line="827"></span></a> <span class="kd">local</span> <span class="n">createLink</span> <span class="o">=</span> <span class="n">makeUrlLink</span><span class="p">(</span><span class="n">createUrl</span><span class="p">,</span> <span class="n">createDisplay</span><span class="p">)</span> </span><span id="L-828"><a href="#L-828"><span class="linenos" data-line="828"></span></a> <span class="kr">return</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;create-module-doc-blurb&#39;</span><span class="p">,</span> <span class="p">{</span><span class="n">createLink</span><span class="p">})</span> </span><span id="L-829"><a href="#L-829"><span class="linenos" data-line="829"></span></a> <span class="o">..</span> <span class="s1">&#39;&lt;br /&gt;&#39;</span> </span><span id="L-830"><a href="#L-830"><span class="linenos" data-line="830"></span></a> <span class="kr">end</span> </span><span id="L-831"><a href="#L-831"><span class="linenos" data-line="831"></span></a><span class="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="c1">--- Renders the text &quot;Editors can experiment in this template&#39;s sandbox (edit | diff) and testcases (edit) pages.&quot;</span> </span><span id="L-834"><a href="#L-834"><span class="linenos" data-line="834"></span></a><span class="c1">-- @function p.makeExperimentBlurb</span> </span><span id="L-835"><a href="#L-835"><span class="linenos" data-line="835"></span></a><span class="c1">-- @param {table} args - a table of arguments passed by the user</span> </span><span id="L-836"><a href="#L-836"><span class="linenos" data-line="836"></span></a><span class="c1">-- @param {table} env - environment table containing title objects, etc., generated with p.getEnvironment</span> </span><span id="L-837"><a href="#L-837"><span class="linenos" data-line="837"></span></a><span class="c1">-- @return {string} wikitext - the experiment blurb</span> </span><span id="L-838"><a href="#L-838"><span class="linenos" data-line="838"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">makeExperimentBlurb</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> </span><span id="L-839"><a href="#L-839"><span class="linenos" data-line="839"></span></a> <span class="c1">-- Messages:</span> </span><span id="L-840"><a href="#L-840"><span class="linenos" data-line="840"></span></a> <span class="c1">-- &#39;sandbox-link-display&#39; --&gt; &#39;sandbox&#39;</span> </span><span id="L-841"><a href="#L-841"><span class="linenos" data-line="841"></span></a> <span class="c1">-- &#39;sandbox-edit-link-display&#39; --&gt; &#39;edit&#39;</span> </span><span id="L-842"><a href="#L-842"><span class="linenos" data-line="842"></span></a> <span class="c1">-- &#39;compare-link-display&#39; --&gt; &#39;diff&#39;</span> </span><span id="L-843"><a href="#L-843"><span class="linenos" data-line="843"></span></a> <span class="c1">-- &#39;module-sandbox-preload&#39; --&gt; &#39;Template:Documentation/preload-module-sandbox&#39;</span> </span><span id="L-844"><a href="#L-844"><span class="linenos" data-line="844"></span></a> <span class="c1">-- &#39;template-sandbox-preload&#39; --&gt; &#39;Template:Documentation/preload-sandbox&#39;</span> </span><span id="L-845"><a href="#L-845"><span class="linenos" data-line="845"></span></a> <span class="c1">-- &#39;sandbox-create-link-display&#39; --&gt; &#39;create&#39;</span> </span><span id="L-846"><a href="#L-846"><span class="linenos" data-line="846"></span></a> <span class="c1">-- &#39;mirror-edit-summary&#39; --&gt; &#39;Create sandbox version of $1&#39;</span> </span><span id="L-847"><a href="#L-847"><span class="linenos" data-line="847"></span></a> <span class="c1">-- &#39;mirror-link-display&#39; --&gt; &#39;mirror&#39;</span> </span><span id="L-848"><a href="#L-848"><span class="linenos" data-line="848"></span></a> <span class="c1">-- &#39;mirror-link-preload&#39; --&gt; &#39;Template:Documentation/mirror&#39;</span> </span><span id="L-849"><a href="#L-849"><span class="linenos" data-line="849"></span></a> <span class="c1">-- &#39;sandbox-link-display&#39; --&gt; &#39;sandbox&#39;</span> </span><span id="L-850"><a href="#L-850"><span class="linenos" data-line="850"></span></a> <span class="c1">-- &#39;testcases-link-display&#39; --&gt; &#39;testcases&#39;</span> </span><span id="L-851"><a href="#L-851"><span class="linenos" data-line="851"></span></a> <span class="c1">-- &#39;testcases-edit-link-display&#39;--&gt; &#39;edit&#39;</span> </span><span id="L-852"><a href="#L-852"><span class="linenos" data-line="852"></span></a> <span class="c1">-- &#39;template-sandbox-preload&#39; --&gt; &#39;Template:Documentation/preload-sandbox&#39;</span> </span><span id="L-853"><a href="#L-853"><span class="linenos" data-line="853"></span></a> <span class="c1">-- &#39;testcases-create-link-display&#39; --&gt; &#39;create&#39;</span> </span><span id="L-854"><a href="#L-854"><span class="linenos" data-line="854"></span></a> <span class="c1">-- &#39;testcases-link-display&#39; --&gt; &#39;testcases&#39;</span> </span><span id="L-855"><a href="#L-855"><span class="linenos" data-line="855"></span></a> <span class="c1">-- &#39;testcases-edit-link-display&#39; --&gt; &#39;edit&#39;</span> </span><span id="L-856"><a href="#L-856"><span class="linenos" data-line="856"></span></a> <span class="c1">-- &#39;module-testcases-preload&#39; --&gt; &#39;Template:Documentation/preload-module-testcases&#39;</span> </span><span id="L-857"><a href="#L-857"><span class="linenos" data-line="857"></span></a> <span class="c1">-- &#39;template-testcases-preload&#39; --&gt; &#39;Template:Documentation/preload-testcases&#39;</span> </span><span id="L-858"><a href="#L-858"><span class="linenos" data-line="858"></span></a> <span class="c1">-- &#39;experiment-blurb-module&#39; --&gt; &#39;Editors can experiment in this module&#39;s $1 and $2 pages.&#39;</span> </span><span id="L-859"><a href="#L-859"><span class="linenos" data-line="859"></span></a> <span class="c1">-- &#39;experiment-blurb-template&#39; --&gt; &#39;Editors can experiment in this template&#39;s $1 and $2 pages.&#39;</span> </span><span id="L-860"><a href="#L-860"><span class="linenos" data-line="860"></span></a> <span class="kd">local</span> <span class="n">subjectSpace</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">subjectSpace</span> </span><span id="L-861"><a href="#L-861"><span class="linenos" data-line="861"></span></a> <span class="kd">local</span> <span class="n">templateTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">templateTitle</span> </span><span id="L-862"><a href="#L-862"><span class="linenos" data-line="862"></span></a> <span class="kd">local</span> <span class="n">sandboxTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">sandboxTitle</span> </span><span id="L-863"><a href="#L-863"><span class="linenos" data-line="863"></span></a> <span class="kd">local</span> <span class="n">testcasesTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">testcasesTitle</span> </span><span id="L-864"><a href="#L-864"><span class="linenos" data-line="864"></span></a> <span class="kd">local</span> <span class="n">templatePage</span> <span class="o">=</span> <span class="n">templateTitle</span><span class="p">.</span><span class="n">prefixedText</span> </span><span id="L-865"><a href="#L-865"><span class="linenos" data-line="865"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">subjectSpace</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">templateTitle</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">sandboxTitle</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">testcasesTitle</span> <span class="kr">then</span> </span><span id="L-866"><a href="#L-866"><span class="linenos" data-line="866"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-867"><a href="#L-867"><span class="linenos" data-line="867"></span></a> <span class="kr">end</span> </span><span id="L-868"><a href="#L-868"><span class="linenos" data-line="868"></span></a> <span class="c1">-- Make links.</span> </span><span id="L-869"><a href="#L-869"><span class="linenos" data-line="869"></span></a> <span class="kd">local</span> <span class="n">sandboxLinks</span><span class="p">,</span> <span class="n">testcasesLinks</span> </span><span id="L-870"><a href="#L-870"><span class="linenos" data-line="870"></span></a> <span class="kr">if</span> <span class="n">sandboxTitle</span><span class="p">.</span><span class="n">exists</span> <span class="kr">then</span> </span><span id="L-871"><a href="#L-871"><span class="linenos" data-line="871"></span></a> <span class="kd">local</span> <span class="n">sandboxPage</span> <span class="o">=</span> <span class="n">sandboxTitle</span><span class="p">.</span><span class="n">prefixedText</span> </span><span id="L-872"><a href="#L-872"><span class="linenos" data-line="872"></span></a> <span class="kd">local</span> <span class="n">sandboxDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-link-display&#39;</span><span class="p">)</span> </span><span id="L-873"><a href="#L-873"><span class="linenos" data-line="873"></span></a> <span class="kd">local</span> <span class="n">sandboxLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="n">sandboxPage</span><span class="p">,</span> <span class="n">sandboxDisplay</span><span class="p">)</span> </span><span id="L-874"><a href="#L-874"><span class="linenos" data-line="874"></span></a> <span class="kd">local</span> <span class="n">sandboxEditDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-edit-link-display&#39;</span><span class="p">)</span> </span><span id="L-875"><a href="#L-875"><span class="linenos" data-line="875"></span></a> <span class="kd">local</span> <span class="n">sandboxEditLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="s2">&quot;Special:EditPage/&quot;</span> <span class="o">..</span> <span class="n">sandboxPage</span><span class="p">,</span> <span class="n">sandboxEditDisplay</span><span class="p">)</span> </span><span id="L-876"><a href="#L-876"><span class="linenos" data-line="876"></span></a> <span class="kd">local</span> <span class="n">compareUrl</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">compareUrl</span> </span><span id="L-877"><a href="#L-877"><span class="linenos" data-line="877"></span></a> <span class="kd">local</span> <span class="n">compareLink</span> </span><span id="L-878"><a href="#L-878"><span class="linenos" data-line="878"></span></a> <span class="kr">if</span> <span class="n">compareUrl</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="kd">local</span> <span class="n">compareDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;compare-link-display&#39;</span><span class="p">)</span> </span><span id="L-880"><a href="#L-880"><span class="linenos" data-line="880"></span></a> <span class="n">compareLink</span> <span class="o">=</span> <span class="n">makeUrlLink</span><span class="p">(</span><span class="n">compareUrl</span><span class="p">,</span> <span class="n">compareDisplay</span><span class="p">)</span> </span><span id="L-881"><a href="#L-881"><span class="linenos" data-line="881"></span></a> <span class="kr">end</span> </span><span id="L-882"><a href="#L-882"><span class="linenos" data-line="882"></span></a> <span class="n">sandboxLinks</span> <span class="o">=</span> <span class="n">sandboxLink</span> <span class="o">..</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="n">makeToolbar</span><span class="p">(</span><span class="n">sandboxEditLink</span><span class="p">,</span> <span class="n">compareLink</span><span class="p">)</span> </span><span id="L-883"><a href="#L-883"><span class="linenos" data-line="883"></span></a> <span class="kr">else</span> </span><span id="L-884"><a href="#L-884"><span class="linenos" data-line="884"></span></a> <span class="kd">local</span> <span class="n">sandboxPreload</span> </span><span id="L-885"><a href="#L-885"><span class="linenos" data-line="885"></span></a> <span class="kr">if</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">828</span> <span class="kr">then</span> </span><span id="L-886"><a href="#L-886"><span class="linenos" data-line="886"></span></a> <span class="n">sandboxPreload</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;module-sandbox-preload&#39;</span><span class="p">)</span> </span><span id="L-887"><a href="#L-887"><span class="linenos" data-line="887"></span></a> <span class="kr">else</span> </span><span id="L-888"><a href="#L-888"><span class="linenos" data-line="888"></span></a> <span class="n">sandboxPreload</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;template-sandbox-preload&#39;</span><span class="p">)</span> </span><span id="L-889"><a href="#L-889"><span class="linenos" data-line="889"></span></a> <span class="kr">end</span> </span><span id="L-890"><a href="#L-890"><span class="linenos" data-line="890"></span></a> <span class="kd">local</span> <span class="n">sandboxCreateUrl</span> <span class="o">=</span> <span class="n">sandboxTitle</span><span class="p">:</span><span class="n">canonicalUrl</span><span class="p">{</span><span class="n">action</span> <span class="o">=</span> <span class="s1">&#39;edit&#39;</span><span class="p">,</span> <span class="n">preload</span> <span class="o">=</span> <span class="n">sandboxPreload</span><span class="p">}</span> </span><span id="L-891"><a href="#L-891"><span class="linenos" data-line="891"></span></a> <span class="kd">local</span> <span class="n">sandboxCreateDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-create-link-display&#39;</span><span class="p">)</span> </span><span id="L-892"><a href="#L-892"><span class="linenos" data-line="892"></span></a> <span class="kd">local</span> <span class="n">sandboxCreateLink</span> <span class="o">=</span> <span class="n">makeUrlLink</span><span class="p">(</span><span class="n">sandboxCreateUrl</span><span class="p">,</span> <span class="n">sandboxCreateDisplay</span><span class="p">)</span> </span><span id="L-893"><a href="#L-893"><span class="linenos" data-line="893"></span></a> <span class="kd">local</span> <span class="n">mirrorSummary</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;mirror-edit-summary&#39;</span><span class="p">,</span> <span class="p">{</span><span class="n">makeWikilink</span><span class="p">(</span><span class="n">templatePage</span><span class="p">)})</span> </span><span id="L-894"><a href="#L-894"><span class="linenos" data-line="894"></span></a> <span class="kd">local</span> <span class="n">mirrorPreload</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;mirror-link-preload&#39;</span><span class="p">)</span> </span><span id="L-895"><a href="#L-895"><span class="linenos" data-line="895"></span></a> <span class="kd">local</span> <span class="n">mirrorUrl</span> <span class="o">=</span> <span class="n">sandboxTitle</span><span class="p">:</span><span class="n">canonicalUrl</span><span class="p">{</span><span class="n">action</span> <span class="o">=</span> <span class="s1">&#39;edit&#39;</span><span class="p">,</span> <span class="n">preload</span> <span class="o">=</span> <span class="n">mirrorPreload</span><span class="p">,</span> <span class="n">summary</span> <span class="o">=</span> <span class="n">mirrorSummary</span><span class="p">}</span> </span><span id="L-896"><a href="#L-896"><span class="linenos" data-line="896"></span></a> <span class="kr">if</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">828</span> <span class="kr">then</span> </span><span id="L-897"><a href="#L-897"><span class="linenos" data-line="897"></span></a> <span class="n">mirrorUrl</span> <span class="o">=</span> <span class="n">sandboxTitle</span><span class="p">:</span><span class="n">canonicalUrl</span><span class="p">{</span><span class="n">action</span> <span class="o">=</span> <span class="s1">&#39;edit&#39;</span><span class="p">,</span> <span class="n">preload</span> <span class="o">=</span> <span class="n">templateTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">summary</span> <span class="o">=</span> <span class="n">mirrorSummary</span><span class="p">}</span> </span><span id="L-898"><a href="#L-898"><span class="linenos" data-line="898"></span></a> <span class="kr">end</span> </span><span id="L-899"><a href="#L-899"><span class="linenos" data-line="899"></span></a> <span class="kd">local</span> <span class="n">mirrorDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;mirror-link-display&#39;</span><span class="p">)</span> </span><span id="L-900"><a href="#L-900"><span class="linenos" data-line="900"></span></a> <span class="kd">local</span> <span class="n">mirrorLink</span> <span class="o">=</span> <span class="n">makeUrlLink</span><span class="p">(</span><span class="n">mirrorUrl</span><span class="p">,</span> <span class="n">mirrorDisplay</span><span class="p">)</span> </span><span id="L-901"><a href="#L-901"><span class="linenos" data-line="901"></span></a> <span class="n">sandboxLinks</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;sandbox-link-display&#39;</span><span class="p">)</span> <span class="o">..</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="n">makeToolbar</span><span class="p">(</span><span class="n">sandboxCreateLink</span><span class="p">,</span> <span class="n">mirrorLink</span><span class="p">)</span> </span><span id="L-902"><a href="#L-902"><span class="linenos" data-line="902"></span></a> <span class="kr">end</span> </span><span id="L-903"><a href="#L-903"><span class="linenos" data-line="903"></span></a> <span class="kr">if</span> <span class="n">testcasesTitle</span><span class="p">.</span><span class="n">exists</span> <span class="kr">then</span> </span><span id="L-904"><a href="#L-904"><span class="linenos" data-line="904"></span></a> <span class="kd">local</span> <span class="n">testcasesPage</span> <span class="o">=</span> <span class="n">testcasesTitle</span><span class="p">.</span><span class="n">prefixedText</span> </span><span id="L-905"><a href="#L-905"><span class="linenos" data-line="905"></span></a> <span class="kd">local</span> <span class="n">testcasesDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;testcases-link-display&#39;</span><span class="p">)</span> </span><span id="L-906"><a href="#L-906"><span class="linenos" data-line="906"></span></a> <span class="kd">local</span> <span class="n">testcasesLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="n">testcasesPage</span><span class="p">,</span> <span class="n">testcasesDisplay</span><span class="p">)</span> </span><span id="L-907"><a href="#L-907"><span class="linenos" data-line="907"></span></a> <span class="kd">local</span> <span class="n">testcasesEditUrl</span> <span class="o">=</span> <span class="n">testcasesTitle</span><span class="p">:</span><span class="n">canonicalUrl</span><span class="p">{</span><span class="n">action</span> <span class="o">=</span> <span class="s1">&#39;edit&#39;</span><span class="p">}</span> </span><span id="L-908"><a href="#L-908"><span class="linenos" data-line="908"></span></a> <span class="kd">local</span> <span class="n">testcasesEditDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;testcases-edit-link-display&#39;</span><span class="p">)</span> </span><span id="L-909"><a href="#L-909"><span class="linenos" data-line="909"></span></a> <span class="kd">local</span> <span class="n">testcasesEditLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="s2">&quot;Special:EditPage/&quot;</span> <span class="o">..</span> <span class="n">testcasesPage</span><span class="p">,</span> <span class="n">testcasesEditDisplay</span><span class="p">)</span> </span><span id="L-910"><a href="#L-910"><span class="linenos" data-line="910"></span></a> <span class="c1">-- for Modules, add testcases run link if exists</span> </span><span id="L-911"><a href="#L-911"><span class="linenos" data-line="911"></span></a> <span class="kr">if</span> <span class="n">testcasesTitle</span><span class="p">.</span><span class="n">contentModel</span> <span class="o">==</span> <span class="s2">&quot;Scribunto&quot;</span> <span class="ow">and</span> <span class="n">testcasesTitle</span><span class="p">.</span><span class="n">talkPageTitle</span> <span class="ow">and</span> <span class="n">testcasesTitle</span><span class="p">.</span><span class="n">talkPageTitle</span><span class="p">.</span><span class="n">exists</span> <span class="kr">then</span> </span><span id="L-912"><a href="#L-912"><span class="linenos" data-line="912"></span></a> <span class="kd">local</span> <span class="n">testcasesRunLinkDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;testcases-run-link-display&#39;</span><span class="p">)</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">testcasesRunLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="n">testcasesTitle</span><span class="p">.</span><span class="n">talkPageTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">testcasesRunLinkDisplay</span><span class="p">)</span> </span><span id="L-914"><a href="#L-914"><span class="linenos" data-line="914"></span></a> <span class="n">testcasesLinks</span> <span class="o">=</span> <span class="n">testcasesLink</span> <span class="o">..</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="n">makeToolbar</span><span class="p">(</span><span class="n">testcasesEditLink</span><span class="p">,</span> <span class="n">testcasesRunLink</span><span class="p">)</span> </span><span id="L-915"><a href="#L-915"><span class="linenos" data-line="915"></span></a> <span class="kr">else</span> </span><span id="L-916"><a href="#L-916"><span class="linenos" data-line="916"></span></a> <span class="n">testcasesLinks</span> <span class="o">=</span> <span class="n">testcasesLink</span> <span class="o">..</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="n">makeToolbar</span><span class="p">(</span><span class="n">testcasesEditLink</span><span class="p">)</span> </span><span id="L-917"><a href="#L-917"><span class="linenos" data-line="917"></span></a> <span class="kr">end</span> </span><span id="L-918"><a href="#L-918"><span class="linenos" data-line="918"></span></a> <span class="kr">else</span> </span><span id="L-919"><a href="#L-919"><span class="linenos" data-line="919"></span></a> <span class="kd">local</span> <span class="n">testcasesPreload</span> </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">subjectSpace</span> <span class="o">==</span> <span class="mi">828</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">testcasesPreload</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;module-testcases-preload&#39;</span><span class="p">)</span> </span><span id="L-922"><a href="#L-922"><span class="linenos" data-line="922"></span></a> <span class="kr">else</span> </span><span id="L-923"><a href="#L-923"><span class="linenos" data-line="923"></span></a> <span class="n">testcasesPreload</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;template-testcases-preload&#39;</span><span class="p">)</span> </span><span id="L-924"><a href="#L-924"><span class="linenos" data-line="924"></span></a> <span class="kr">end</span> </span><span id="L-925"><a href="#L-925"><span class="linenos" data-line="925"></span></a> <span class="kd">local</span> <span class="n">testcasesCreateUrl</span> <span class="o">=</span> <span class="n">testcasesTitle</span><span class="p">:</span><span class="n">canonicalUrl</span><span class="p">{</span><span class="n">action</span> <span class="o">=</span> <span class="s1">&#39;edit&#39;</span><span class="p">,</span> <span class="n">preload</span> <span class="o">=</span> <span class="n">testcasesPreload</span><span class="p">}</span> </span><span id="L-926"><a href="#L-926"><span class="linenos" data-line="926"></span></a> <span class="kd">local</span> <span class="n">testcasesCreateDisplay</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;testcases-create-link-display&#39;</span><span class="p">)</span> </span><span id="L-927"><a href="#L-927"><span class="linenos" data-line="927"></span></a> <span class="kd">local</span> <span class="n">testcasesCreateLink</span> <span class="o">=</span> <span class="n">makeUrlLink</span><span class="p">(</span><span class="n">testcasesCreateUrl</span><span class="p">,</span> <span class="n">testcasesCreateDisplay</span><span class="p">)</span> </span><span id="L-928"><a href="#L-928"><span class="linenos" data-line="928"></span></a> <span class="n">testcasesLinks</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;testcases-link-display&#39;</span><span class="p">)</span> <span class="o">..</span> <span class="s1">&#39; &#39;</span> <span class="o">..</span> <span class="n">makeToolbar</span><span class="p">(</span><span class="n">testcasesCreateLink</span><span class="p">)</span> </span><span id="L-929"><a href="#L-929"><span class="linenos" data-line="929"></span></a> <span class="kr">end</span> </span><span id="L-930"><a href="#L-930"><span class="linenos" data-line="930"></span></a> <span class="kd">local</span> <span class="n">messageName</span> </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">subjectSpace</span> <span class="o">==</span> <span class="mi">828</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">messageName</span> <span class="o">=</span> <span class="s1">&#39;experiment-blurb-module&#39;</span> </span><span id="L-933"><a href="#L-933"><span class="linenos" data-line="933"></span></a> <span class="kr">else</span> </span><span id="L-934"><a href="#L-934"><span class="linenos" data-line="934"></span></a> <span class="n">messageName</span> <span class="o">=</span> <span class="s1">&#39;experiment-blurb-template&#39;</span> </span><span id="L-935"><a href="#L-935"><span class="linenos" data-line="935"></span></a> <span class="kr">end</span> </span><span id="L-936"><a href="#L-936"><span class="linenos" data-line="936"></span></a> <span class="kr">return</span> <span class="n">message</span><span class="p">(</span><span class="n">messageName</span><span class="p">,</span> <span class="p">{</span><span class="n">sandboxLinks</span><span class="p">,</span> <span class="n">testcasesLinks</span><span class="p">})</span> </span><span id="L-937"><a href="#L-937"><span class="linenos" data-line="937"></span></a><span class="kr">end</span> </span><span id="L-938"><a href="#L-938"><span class="linenos" data-line="938"></span></a> </span><span id="L-939"><a href="#L-939"><span class="linenos" data-line="939"></span></a><span class="c1">--- Generates the text &quot;Please add categories to the /doc subpage.&quot;</span> </span><span id="L-940"><a href="#L-940"><span class="linenos" data-line="940"></span></a><span class="c1">-- @function p.makeCategoriesBlurb</span> </span><span id="L-941"><a href="#L-941"><span class="linenos" data-line="941"></span></a><span class="c1">-- @param {table} args - a table of arguments passed by the user</span> </span><span id="L-942"><a href="#L-942"><span class="linenos" data-line="942"></span></a><span class="c1">-- @param {table} env - environment table containing title objects, etc., generated with p.getEnvironment</span> </span><span id="L-943"><a href="#L-943"><span class="linenos" data-line="943"></span></a><span class="c1">-- @return {string} wikitext - the text of the blurb</span> </span><span id="L-944"><a href="#L-944"><span class="linenos" data-line="944"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">makeCategoriesBlurb</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> </span><span id="L-945"><a href="#L-945"><span class="linenos" data-line="945"></span></a> <span class="c1">-- Messages:</span> </span><span id="L-946"><a href="#L-946"><span class="linenos" data-line="946"></span></a> <span class="c1">-- &#39;doc-link-display&#39; --&gt; &#39;/doc&#39;</span> </span><span id="L-947"><a href="#L-947"><span class="linenos" data-line="947"></span></a> <span class="c1">-- &#39;add-categories-blurb&#39; --&gt; &#39;Please add categories to the $1 subpage.&#39;</span> </span><span id="L-948"><a href="#L-948"><span class="linenos" data-line="948"></span></a> <span class="kd">local</span> <span class="n">docTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">docTitle</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="ow">not</span> <span class="n">docTitle</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="kr">return</span> <span class="kc">nil</span> </span><span id="L-951"><a href="#L-951"><span class="linenos" data-line="951"></span></a> <span class="kr">end</span> </span><span id="L-952"><a href="#L-952"><span class="linenos" data-line="952"></span></a> <span class="kd">local</span> <span class="n">docPathLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span><span class="n">docTitle</span><span class="p">.</span><span class="n">prefixedText</span><span class="p">,</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;doc-link-display&#39;</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">return</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;add-categories-blurb&#39;</span><span class="p">,</span> <span class="p">{</span><span class="n">docPathLink</span><span class="p">})</span> </span><span id="L-954"><a href="#L-954"><span class="linenos" data-line="954"></span></a><span class="kr">end</span> </span><span id="L-955"><a href="#L-955"><span class="linenos" data-line="955"></span></a> </span><span id="L-956"><a href="#L-956"><span class="linenos" data-line="956"></span></a><span class="c1">--- Generates the &quot;Subpages of this template&quot; link.</span> </span><span id="L-957"><a href="#L-957"><span class="linenos" data-line="957"></span></a><span class="c1">-- @function p.makeSubpagesBlurb</span> </span><span id="L-958"><a href="#L-958"><span class="linenos" data-line="958"></span></a><span class="c1">-- @param {table} args - a table of arguments passed by the user</span> </span><span id="L-959"><a href="#L-959"><span class="linenos" data-line="959"></span></a><span class="c1">-- @param {table} env - environment table containing title objects, etc., generated with p.getEnvironment</span> </span><span id="L-960"><a href="#L-960"><span class="linenos" data-line="960"></span></a><span class="c1">-- @return {string} wikitext - the text of the blurb</span> </span><span id="L-961"><a href="#L-961"><span class="linenos" data-line="961"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">makeSubpagesBlurb</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span> </span><span id="L-962"><a href="#L-962"><span class="linenos" data-line="962"></span></a> <span class="c1">-- Messages:</span> </span><span id="L-963"><a href="#L-963"><span class="linenos" data-line="963"></span></a> <span class="c1">-- &#39;template-pagetype&#39; --&gt; &#39;template&#39;</span> </span><span id="L-964"><a href="#L-964"><span class="linenos" data-line="964"></span></a> <span class="c1">-- &#39;module-pagetype&#39; --&gt; &#39;module&#39;</span> </span><span id="L-965"><a href="#L-965"><span class="linenos" data-line="965"></span></a> <span class="c1">-- &#39;default-pagetype&#39; --&gt; &#39;page&#39;</span> </span><span id="L-966"><a href="#L-966"><span class="linenos" data-line="966"></span></a> <span class="c1">-- &#39;subpages-link-display&#39; --&gt; &#39;Subpages of this $1&#39;</span> </span><span id="L-967"><a href="#L-967"><span class="linenos" data-line="967"></span></a> <span class="kd">local</span> <span class="n">subjectSpace</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">subjectSpace</span> </span><span id="L-968"><a href="#L-968"><span class="linenos" data-line="968"></span></a> <span class="kd">local</span> <span class="n">templateTitle</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">templateTitle</span> </span><span id="L-969"><a href="#L-969"><span class="linenos" data-line="969"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">subjectSpace</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">templateTitle</span> <span class="kr">then</span> </span><span id="L-970"><a href="#L-970"><span class="linenos" data-line="970"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-971"><a href="#L-971"><span class="linenos" data-line="971"></span></a> <span class="kr">end</span> </span><span id="L-972"><a href="#L-972"><span class="linenos" data-line="972"></span></a> <span class="kd">local</span> <span class="n">pagetype</span> </span><span id="L-973"><a href="#L-973"><span class="linenos" data-line="973"></span></a> <span class="kr">if</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">10</span> <span class="kr">then</span> </span><span id="L-974"><a href="#L-974"><span class="linenos" data-line="974"></span></a> <span class="n">pagetype</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;template-pagetype&#39;</span><span class="p">)</span> </span><span id="L-975"><a href="#L-975"><span class="linenos" data-line="975"></span></a> <span class="kr">elseif</span> <span class="n">subjectSpace</span> <span class="o">==</span> <span class="mi">828</span> <span class="kr">then</span> </span><span id="L-976"><a href="#L-976"><span class="linenos" data-line="976"></span></a> <span class="n">pagetype</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;module-pagetype&#39;</span><span class="p">)</span> </span><span id="L-977"><a href="#L-977"><span class="linenos" data-line="977"></span></a> <span class="kr">else</span> </span><span id="L-978"><a href="#L-978"><span class="linenos" data-line="978"></span></a> <span class="n">pagetype</span> <span class="o">=</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;default-pagetype&#39;</span><span class="p">)</span> </span><span id="L-979"><a href="#L-979"><span class="linenos" data-line="979"></span></a> <span class="kr">end</span> </span><span id="L-980"><a href="#L-980"><span class="linenos" data-line="980"></span></a> <span class="kd">local</span> <span class="n">subpagesLink</span> <span class="o">=</span> <span class="n">makeWikilink</span><span class="p">(</span> </span><span id="L-981"><a href="#L-981"><span class="linenos" data-line="981"></span></a> <span class="s1">&#39;Special:PrefixIndex/&#39;</span> <span class="o">..</span> <span class="n">templateTitle</span><span class="p">.</span><span class="n">prefixedText</span> <span class="o">..</span> <span class="s1">&#39;/&#39;</span><span class="p">,</span> </span><span id="L-982"><a href="#L-982"><span class="linenos" data-line="982"></span></a> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;subpages-link-display&#39;</span><span class="p">,</span> <span class="p">{</span><span class="n">pagetype</span><span class="p">})</span> </span><span id="L-983"><a href="#L-983"><span class="linenos" data-line="983"></span></a> <span class="p">)</span> </span><span id="L-984"><a href="#L-984"><span class="linenos" data-line="984"></span></a> <span class="kr">return</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;subpages-blurb&#39;</span><span class="p">,</span> <span class="p">{</span><span class="n">subpagesLink</span><span class="p">})</span> </span><span id="L-985"><a href="#L-985"><span class="linenos" data-line="985"></span></a><span class="kr">end</span> </span><span id="L-986"><a href="#L-986"><span class="linenos" data-line="986"></span></a> </span><span id="L-987"><a href="#L-987"><span class="linenos" data-line="987"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-988"><a href="#L-988"><span class="linenos" data-line="988"></span></a><span class="c1">-- Tracking categories</span> </span><span id="L-989"><a href="#L-989"><span class="linenos" data-line="989"></span></a><span class="c1">----------------------------------------------------------------------------</span> </span><span id="L-990"><a href="#L-990"><span class="linenos" data-line="990"></span></a> </span><span id="L-991"><a href="#L-991"><span class="linenos" data-line="991"></span></a><span class="c1">--- Check if {{tl|documentation}} is transcluded on a /doc or /testcases page.</span> </span><span id="L-992"><a href="#L-992"><span class="linenos" data-line="992"></span></a><span class="c1">-- @function p.addTrackingCategories</span> </span><span id="L-993"><a href="#L-993"><span class="linenos" data-line="993"></span></a><span class="c1">-- @param {table} env - environment table containing title objects, etc., generated with p.getEnvironment</span> </span><span id="L-994"><a href="#L-994"><span class="linenos" data-line="994"></span></a><span class="c1">-- @return {string} wikitext - the wikitext for the tracking categories</span> </span><span id="L-995"><a href="#L-995"><span class="linenos" data-line="995"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">addTrackingCategories</span><span class="p">(</span><span class="n">env</span><span class="p">)</span> </span><span id="L-996"><a href="#L-996"><span class="linenos" data-line="996"></span></a> <span class="c1">-- Messages:</span> </span><span id="L-997"><a href="#L-997"><span class="linenos" data-line="997"></span></a> <span class="c1">-- &#39;display-strange-usage-category&#39; --&gt; true</span> </span><span id="L-998"><a href="#L-998"><span class="linenos" data-line="998"></span></a> <span class="c1">-- &#39;doc-subpage&#39; --&gt; &#39;doc&#39;</span> </span><span id="L-999"><a href="#L-999"><span class="linenos" data-line="999"></span></a> <span class="c1">-- &#39;testcases-subpage&#39; --&gt; &#39;testcases&#39;</span> </span><span id="L-1000"><a href="#L-1000"><span class="linenos" data-line="1000"></span></a> <span class="c1">-- &#39;strange-usage-category&#39; --&gt; &#39;Wikipedia pages with strange ((documentation)) usage&#39;</span> </span><span id="L-1001"><a href="#L-1001"><span class="linenos" data-line="1001"></span></a> <span class="c1">-- </span> </span><span id="L-1002"><a href="#L-1002"><span class="linenos" data-line="1002"></span></a> <span class="c1">-- /testcases pages in the module namespace are not categorised, as they may have</span> </span><span id="L-1003"><a href="#L-1003"><span class="linenos" data-line="1003"></span></a> <span class="c1">-- {{tl|documentation}} transcluded automatically.</span> </span><span id="L-1004"><a href="#L-1004"><span class="linenos" data-line="1004"></span></a> <span class="kd">local</span> <span class="n">title</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">title</span> </span><span id="L-1005"><a href="#L-1005"><span class="linenos" data-line="1005"></span></a> <span class="kd">local</span> <span class="n">subjectSpace</span> <span class="o">=</span> <span class="n">env</span><span class="p">.</span><span class="n">subjectSpace</span> </span><span id="L-1006"><a href="#L-1006"><span class="linenos" data-line="1006"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">title</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">subjectSpace</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="kr">return</span> <span class="kc">nil</span> </span><span id="L-1008"><a href="#L-1008"><span class="linenos" data-line="1008"></span></a> <span class="kr">end</span> </span><span id="L-1009"><a href="#L-1009"><span class="linenos" data-line="1009"></span></a> <span class="kd">local</span> <span class="n">subpage</span> <span class="o">=</span> <span class="n">title</span><span class="p">.</span><span class="n">subpageText</span> </span><span id="L-1010"><a href="#L-1010"><span class="linenos" data-line="1010"></span></a> <span class="kr">if</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;display-strange-usage-category&#39;</span><span class="p">,</span> <span class="kc">nil</span><span class="p">,</span> <span class="s1">&#39;boolean&#39;</span><span class="p">)</span> </span><span id="L-1011"><a href="#L-1011"><span class="linenos" data-line="1011"></span></a> <span class="ow">and</span> <span class="p">(</span> </span><span id="L-1012"><a href="#L-1012"><span class="linenos" data-line="1012"></span></a> <span class="n">subpage</span> <span class="o">==</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;doc-subpage&#39;</span><span class="p">)</span> </span><span id="L-1013"><a href="#L-1013"><span class="linenos" data-line="1013"></span></a> <span class="ow">or</span> <span class="n">subjectSpace</span> <span class="o">~=</span> <span class="mi">828</span> <span class="ow">and</span> <span class="n">subpage</span> <span class="o">==</span> <span class="n">message</span><span class="p">(</span><span class="s1">&#39;testcases-subpage&#39;</span><span class="p">)</span> </span><span id="L-1014"><a href="#L-1014"><span class="linenos" data-line="1014"></span></a> <span class="p">)</span> </span><span id="L-1015"><a href="#L-1015"><span class="linenos" data-line="1015"></span></a> <span class="kr">then</span> </span><span id="L-1016"><a href="#L-1016"><span class="linenos" data-line="1016"></span></a> <span class="kr">return</span> <span class="n">makeCategoryLink</span><span class="p">(</span><span class="n">message</span><span class="p">(</span><span class="s1">&#39;strange-usage-category&#39;</span><span class="p">))</span> </span><span id="L-1017"><a href="#L-1017"><span class="linenos" data-line="1017"></span></a> <span class="kr">end</span> </span><span id="L-1018"><a href="#L-1018"><span class="linenos" data-line="1018"></span></a> <span class="kr">return</span> <span class="s1">&#39;&#39;</span> </span><span id="L-1019"><a href="#L-1019"><span class="linenos" data-line="1019"></span></a><span class="kr">end</span> </span><span id="L-1020"><a href="#L-1020"><span class="linenos" data-line="1020"></span></a> </span><span id="L-1021"><a href="#L-1021"><span class="linenos" data-line="1021"></span></a><span class="kr">return</span> <span class="n">p</span> </span></pre></div> <!-- NewPP limit report Parsed by mw鈥恮eb.codfw.main鈥恉8647bfd6鈥恠rpwp Cached time: 20250223205852 Cache expiry: 2592000 Reduced expiry: false Complications: [vary鈥恟evision鈥恠ha1] CPU time usage: 0.101 seconds Real time usage: 0.204 seconds Preprocessor visited node count: 275/1000000 Post鈥恊xpand include size: 21013/2097152 bytes Template argument size: 945/2097152 bytes Highest expansion depth: 20/100 Expensive parser function count: 15/500 Unstrip recursion depth: 0/20 Unstrip post鈥恊xpand size: 10224/5000000 bytes Lua time usage: 0.057/10.000 seconds Lua memory usage: 1853481/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 123.893 1 Module:Documentation/doc 100.00% 123.893 1 -total 62.08% 76.908 1 Template:Used_in_system 16.02% 19.850 1 Template:Module_rating 13.65% 16.910 1 Template:Module_other 11.55% 14.309 1 Template:Ombox 8.99% 11.143 1 Template:Uses_TemplateStyles 7.95% 9.851 1 Template:Lua 4.43% 5.483 1 Template:Sandbox_other 4.15% 5.147 1 Template:FULLBASEPAGENAME --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?useformat=desktop&amp;type=1x1&amp;usesul3=0" 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:Documentation/sandbox&amp;oldid=1263392455">https://en.wikipedia.org/w/index.php?title=Module:Documentation/sandbox&amp;oldid=1263392455</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">Category</a>: <ul><li><a href="/wiki/Category:Module_sandboxes" title="Category:Module sandboxes">Module sandboxes</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 16 December 2024, at 11:51<span class="anonymous-show">&#160;(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:Documentation/sandbox&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><picture><source media="(min-width: 500px)" srcset="/static/images/footer/wikimedia-button.svg" width="84" height="29"><img src="/static/images/footer/wikimedia.svg" width="25" height="25" alt="Wikimedia Foundation" lang="en" loading="lazy"></picture></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"><picture><source media="(min-width: 500px)" srcset="/w/resources/assets/poweredby_mediawiki.svg" width="88" height="31"><img src="/w/resources/assets/mediawiki_compact.svg" alt="Powered by MediaWiki" width="25" height="25" loading="lazy"></picture></a></li> </ul> </footer> </div> </div> </div> <div class="vector-header-container vector-sticky-header-container"> <div id="vector-sticky-header" class="vector-sticky-header"> <div class="vector-sticky-header-start"> <div class="vector-sticky-header-icon-start vector-button-flush-left vector-button-flush-right" aria-hidden="true"> <button class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-sticky-header-search-toggle" tabindex="-1" data-event-name="ui.vector-sticky-search-form.icon"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </button> </div> <div role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box"> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail"> <form action="/w/index.php" id="vector-sticky-search-form" class="cdx-search-input cdx-search-input--has-end-button"> <div 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"> <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> <div class="vector-sticky-header-context-bar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-sticky-header-toc" class="vector-dropdown mw-portlet mw-portlet-sticky-header-toc vector-sticky-header-toc vector-button-flush-left" > <input type="checkbox" id="vector-sticky-header-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-sticky-header-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-sticky-header-toc-label" for="vector-sticky-header-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-sticky-header-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div class="vector-sticky-header-context-bar-primary" aria-hidden="true" ><span class="mw-page-title-namespace">Module</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">Documentation/sandbox</span></div> </div> </div> <div class="vector-sticky-header-end" aria-hidden="true"> <div class="vector-sticky-header-icons"> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-talk-sticky-header" tabindex="-1" data-event-name="talk-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbles mw-ui-icon-wikimedia-speechBubbles"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-subject-sticky-header" tabindex="-1" data-event-name="subject-sticky-header"><span class="vector-icon mw-ui-icon-article mw-ui-icon-wikimedia-article"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-history-sticky-header" tabindex="-1" data-event-name="history-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-history mw-ui-icon-wikimedia-wikimedia-history"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only mw-watchlink" id="ca-watchstar-sticky-header" tabindex="-1" data-event-name="watch-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-star mw-ui-icon-wikimedia-wikimedia-star"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-edit-sticky-header" tabindex="-1" data-event-name="wikitext-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-wikiText mw-ui-icon-wikimedia-wikimedia-wikiText"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-ve-edit-sticky-header" tabindex="-1" data-event-name="ve-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-edit mw-ui-icon-wikimedia-wikimedia-edit"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-viewsource-sticky-header" tabindex="-1" data-event-name="ve-edit-protected-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-editLock mw-ui-icon-wikimedia-wikimedia-editLock"></span> <span></span> </a> </div> <div class="vector-sticky-header-buttons"> <button class="cdx-button cdx-button--weight-quiet mw-interlanguage-selector" id="p-lang-btn-sticky-header" tabindex="-1" data-event-name="ui.dropdown-p-lang-btn-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>Add languages</span> </button> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive" id="ca-addsection-sticky-header" tabindex="-1" data-event-name="addsection-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbleAdd-progressive mw-ui-icon-wikimedia-speechBubbleAdd-progressive"></span> <span>Add topic</span> </a> </div> <div class="vector-sticky-header-icon-end"> <div class="vector-user-links"> </div> </div> </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-d8647bfd6-srpwp","wgBackendResponseTime":357,"wgPageParseReport":{"limitreport":{"cputime":"0.101","walltime":"0.204","ppvisitednodes":{"value":275,"limit":1000000},"postexpandincludesize":{"value":21013,"limit":2097152},"templateargumentsize":{"value":945,"limit":2097152},"expansiondepth":{"value":20,"limit":100},"expensivefunctioncount":{"value":15,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":10224,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 123.893 1 Module:Documentation/doc","100.00% 123.893 1 -total"," 62.08% 76.908 1 Template:Used_in_system"," 16.02% 19.850 1 Template:Module_rating"," 13.65% 16.910 1 Template:Module_other"," 11.55% 14.309 1 Template:Ombox"," 8.99% 11.143 1 Template:Uses_TemplateStyles"," 7.95% 9.851 1 Template:Lua"," 4.43% 5.483 1 Template:Sandbox_other"," 4.15% 5.147 1 Template:FULLBASEPAGENAME"]},"scribunto":{"limitreport-timeusage":{"value":"0.057","limit":"10.000"},"limitreport-memusage":{"value":1853481,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-d8647bfd6-srpwp","timestamp":"20250223205852","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>

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