CINXE.COM
Module:module documentation - Wiktionary, the free dictionary
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Module:module documentation - Wiktionary, the free dictionary</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwiktionarymwclientpreferences=([^;]+)/);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":"95a6a488-6de0-4f69-bcba-768bab0ffe97","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Module:module_documentation","wgTitle":"module documentation","wgCurRevisionId":81398980,"wgRevisionId":81398980,"wgArticleId":9276047,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Documentation modules"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"Scribunto","wgRelevantPageName":"Module:module_documentation","wgRelevantArticleId":9276047,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wiktionary","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgVisualEditor" :{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":10000,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q117474698","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"]};RLSTATE={"ext.gadget.LanguagesAndScripts":"ready","ext.gadget.Palette":"ready","ext.gadget.Site":"ready","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.LegacyScripts","ext.gadget.DocTabs","ext.gadget.RevdelInfo","ext.gadget.PagePreviews","ext.gadget.Edittools","ext.gadget.defaultVisibilityToggles","ext.gadget.UnsupportedTitles","ext.gadget.WiktGadgetPrefs","ext.urlShortener.toolbar","ext.centralauth.centralautologin","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","wikibase.client.vector-2022","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.gadget.LanguagesAndScripts%2CPalette%2CSite&only=styles&skin=vector-2022"> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.5"> <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:site_name" content="Wiktionary"> <meta property="og:title" content="Module:module documentation - Wiktionary, the free dictionary"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wiktionary.org/wiki/Module:module_documentation"> <link rel="alternate" type="application/x-wiki" title="Edit" href="/w/index.php?title=Module:module_documentation&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wiktionary/en.png"> <link rel="icon" href="/static/favicon/wiktionary/en.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wiktionary (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wiktionary.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wiktionary.org/wiki/Module:module_documentation"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wiktionary Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject mw-editable page-Module_module_documentation rootpage-Module_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" > <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-text" class="mw-list-item"><a href="/wiki/Wiktionary:Main_Page"><span>Main Page</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wiktionary:Community_portal" title="About the project, what you can do, where to find things"><span>Community portal</span></a></li><li id="n-requestedarticles" class="mw-list-item"><a href="/wiki/Wiktionary:Requested_entries"><span>Requested entries</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Load a random page [x]" accesskey="x"><span>Random entry</span></a></li><li id="n-help" class="mw-list-item"><a href="https://en.wiktionary.org/wiki/Help:Contents" title="The place to find out"><span>Help</span></a></li><li id="n-Glossary" class="mw-list-item"><a href="/wiki/Appendix:Glossary"><span>Glossary</span></a></li><li id="n-contact" class="mw-list-item"><a href="/wiki/Wiktionary:Contact_us"><span>Contact us</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Wiktionary:Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/enwiktionary.svg" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wiktionary" src="/static/images/mobile/copyright/wiktionary-wordmark-en.svg" style="width: 6.6875em; height: 1.1875em;"> <img class="mw-logo-tagline" alt="The Free Dictionary" src="/static/images/mobile/copyright/wiktionary-tagline-en.svg" width="110" height="15" style="width: 6.875em; height: 0.9375em;"> </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 Wiktionary [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 Wiktionary" aria-label="Search Wiktionary" autocapitalize="none" title="Search Wiktionary [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wiktionary.org&uselang=en" class=""><span>Donations</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Module%3Amodule+documentation" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Module%3Amodule+documentation" title="You are encouraged to log in; however, it is 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="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="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wiktionary.org&uselang=en"><span>Donations</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Module%3Amodule+documentation" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Module%3Amodule+documentation" title="You are encouraged to log in; however, it is 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">Beginning</div> </a> </li> <li id="toc-export.show" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#export.show"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>export.show</span> </div> </a> <ul id="toc-export.show-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-namespace">Module</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">module documentation</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 9 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-9" 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">9 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wiktionary.org/wiki/%EB%AA%A8%EB%93%88:module_documentation" title="모듈:module documentation – Korean" lang="ko" hreflang="ko" data-title="모듈:module documentation" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-ky mw-list-item"><a href="https://ky.wiktionary.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:module_documentation" title="Модуль:module documentation – Kyrgyz" lang="ky" hreflang="ky" data-title="Модуль:module documentation" data-language-autonym="Кыргызча" data-language-local-name="Kyrgyz" class="interlanguage-link-target"><span>Кыргызча</span></a></li><li class="interlanguage-link interwiki-mnw mw-list-item"><a href="https://mnw.wiktionary.org/wiki/%E1%80%99%E1%80%9D%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0:module_documentation" title="မဝ်ဂျူ:module documentation – Mon" lang="mnw" hreflang="mnw" data-title="မဝ်ဂျူ:module documentation" data-language-autonym="ဘာသာမန်" data-language-local-name="Mon" class="interlanguage-link-target"><span>ဘာသာမန်</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wiktionary.org/wiki/Modul:module_documentation" title="Modul:module documentation – Malay" lang="ms" hreflang="ms" data-title="Modul:module documentation" data-language-autonym="Bahasa Melayu" data-language-local-name="Malay" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-uz mw-list-item"><a href="https://uz.wiktionary.org/wiki/Modul:module_documentation" title="Modul:module documentation – Uzbek" lang="uz" hreflang="uz" data-title="Modul:module documentation" data-language-autonym="Oʻzbekcha / ўзбекча" data-language-local-name="Uzbek" class="interlanguage-link-target"><span>Oʻzbekcha / ўзбекча</span></a></li><li class="interlanguage-link interwiki-pa mw-list-item"><a href="https://pa.wiktionary.org/wiki/%E0%A8%AE%E0%A9%8C%E0%A8%A1%E0%A8%BF%E0%A8%8A%E0%A8%B2:module_documentation" title="ਮੌਡਿਊਲ:module documentation – Punjabi" lang="pa" hreflang="pa" data-title="ਮੌਡਿਊਲ:module documentation" data-language-autonym="ਪੰਜਾਬੀ" data-language-local-name="Punjabi" class="interlanguage-link-target"><span>ਪੰਜਾਬੀ</span></a></li><li class="interlanguage-link interwiki-si mw-list-item"><a href="https://si.wiktionary.org/wiki/Module:module_documentation" title="Module:module documentation – Sinhala" lang="si" hreflang="si" data-title="Module:module documentation" data-language-autonym="සිංහල" data-language-local-name="Sinhala" class="interlanguage-link-target"><span>සිංහල</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wiktionary.org/wiki/Module:module_documentation" title="Module:module documentation – Simple English" lang="en-simple" hreflang="en-simple" data-title="Module:module documentation" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-shn mw-list-item"><a href="https://shn.wiktionary.org/wiki/%E1%80%99%E1%80%B1%E1%82%83%E1%82%87%E1%81%B5%E1%80%BB%E1%80%B0%E1%80%B8:module_documentation" title="မေႃႇၵျူး:module documentation – Shan" lang="shn" hreflang="shn" data-title="မေႃႇၵျူး:module documentation" data-language-autonym="ၽႃႇသႃႇတႆး " data-language-local-name="Shan" class="interlanguage-link-target"><span>ၽႃႇသႃႇတႆး </span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q117474698#sitelinks-wiktionary" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-module" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Module:module_documentation" 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:module_documentation" rel="discussion" title="Discussion about the content page [t]" accesskey="t"><span>Discussion</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:module_documentation"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:module_documentation&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:module_documentation&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:module_documentation"><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:module_documentation&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:module_documentation&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:module_documentation" title="A list of all wiki pages that link here [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Module:module_documentation" 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="//commons.wikimedia.org/wiki/Special:UploadWizard?uselang=en" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Module:module_documentation&oldid=81398980" 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:module_documentation&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wiktionary.org%2Fwiki%2FModule%3Amodule_documentation"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wiktionary.org%2Fwiki%2FModule%3Amodule_documentation"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-electronpdfservice-sidebar-portlet-heading" class="vector-menu mw-portlet mw-portlet-electronpdfservice-sidebar-portlet-heading" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="electron-print_pdf" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Module%3Amodule_documentation&action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q117474698" title="Link to connected data repository item [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wiktionary, the free dictionary</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="documentation" style="display:block; clear:both"> <hr /> <dl class="plainlinks" style="font-size: smaller;"><dd><i style="font-size: larger;">The following <a href="/wiki/Help:Documenting_templates_and_modules" title="Help:Documenting templates and modules">documentation</a> is located at <a href="/wiki/Module:module_documentation/documentation" title="Module:module documentation/documentation">Module:module documentation/documentation</a>. <sup>[<a class="external text" href="https://en.wiktionary.org/w/index.php?title=Module:module_documentation/documentation&action=edit">edit</a>]</sup></i></dd><dd> <i>Useful links</i>: <a href="/wiki/Special:PrefixIndex/Module:module_documentation/" title="Special:PrefixIndex/Module:module documentation/">subpage list</a> • <a class="external text" href="https://en.wiktionary.org/w/index.php?title=Special%3AWhatLinksHere%2FModule%3Amodule_documentation&hideredirs=1&hidetrans=1">links</a> • <a class="external text" href="https://en.wiktionary.org/w/index.php?title=Special%3AWhatLinksHere%2FModule%3Amodule_documentation&hidelinks=1&hideredirs=1">transclusions</a> • <a href="/w/index.php?title=Module:module_documentation/testcases&action=edit&redlink=1" class="new" title="Module:module documentation/testcases (page does not exist)">testcases</a> • <a href="/w/index.php?title=Module:module_documentation/sandbox&action=edit&redlink=1" class="new" title="Module:module documentation/sandbox (page does not exist)">sandbox</a></dd></dl> <p>This module automatically generates documentation for other modules. It fetches in-line comments in Lua code and converts them into a form that can be used on a documentation page via <code style="white-space:pre-wrap">{{<a href="/wiki/Template:module_documentation#top" title="Template:module documentation">module documentation</a>}}</code>. In fact, this module's documentation is an example of it in action! </p><p>It's helpful to do documentation this way, as it means function/method documentation is available in two places: at the top of the module page (as conventional Wikitext), and above the function itself (as a Lua comment). Each suits a different kind of editing style, and doing it this way keeps them synchronised. </p><p>A section of documentation is given using Lua's multi-line comment syntax, which looks something like this: <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="cm">--[==[ ... ]==]</span></code>. The number of equal signs should normally be two in order for the documentation to be properly snarfed by <code style="white-space:pre-wrap">{{<a href="/wiki/Template:module_documentation#top" title="Template:module documentation">module documentation</a>}}</code>. The following conventions can be used inside of the documentation: </p> <ol><li>Long lines (both in regular paragraphs and in list items) can be broken by newlines optionally followed by spaces or tabs (especially useful in lists, to make the raw comment more readable). In such a case, the newline is converted to a space. Use two newlines in a row to break paragraphs. In general, it's recommended to break lines after at most 120 characters, to facilitate reading the raw comment.</li> <li>Template calls (using two braces) can be inserted literally and will be expanded.</li> <li>Single braces can be used to surround literal text, and will automatically be syntax-highlighted as Lua code. Nested braces inside of this literal text will be properly handled as long as they're balanced. If the first character of the literal text is itelf a brace, put a space before it (but not at the end), and it will be ignored.</li> <li>Backquotes can be used to surround literal text, which will be displayed using <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="o"><</span><span class="n">code</span><span class="o">></span><span class="p">...</span><span class="o"></</span><span class="n">code</span><span class="o">></span></code>. The stuff inside of backquotes cannot contain a backquote (except for double-backquoted placeholder variable names) or extend to multiple lines.</li> <li>Double backquotes can be used to surround placeholder variable names, which will be displayed using <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="o"><</span><span class="n">var</span><span class="o">></span><span class="p">...</span><span class="o"></</span><span class="n">var</span><span class="o">></span></code>. The stuff inside of backquotes can only contain letters, numbers, underscores, hyphens and periods. Normally, such placeholders should be displayed in a monospace font, as if surrounded by <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="o"><</span><span class="n">code</span><span class="o">></span><span class="p">...</span><span class="o"></</span><span class="n">code</span><span class="o">></span></code>. This effect can be achieved by using triple backquotes, which effectively uses the double-backquote syntax inside the single-backquote syntax.</li></ol> <p>Certain special directives can follow the opening multiline comment indicator, if placed on the same line as the indicator. In particular, the following directives are currently recognized: </p> <ul><li>The directive <code>intro:</code> by itself signals introductory text, which will be placed at the beginning, prior to function documentation. This is useful to give a general introduction/overview of the module.</li> <li>The directive <code>func: export.<var>function</var>(<var>arg1</var>, <var>arg2</var>, ...)</code> can be used when documenting a function declared in a nonstandard way (e.g. through a metatable, through an anonymous or locally-declared function assigned to the <code>export</code> table, etc.). The directive indicates the desired way for the function to appear, and the remainder of the comment describes the function's operation, as usual.</li></ul> <div class="mw-heading mw-heading2"><h2 id="export.show">export.show</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:module_documentation&action=edit&section=1" title="Edit section: export.show"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="kr">function</span> <span class="nc">export</span><span class="p">.</span><span class="nf">show</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span></code> </p><p>The main entrypoint for <code style="white-space:pre-wrap">{{<a href="/wiki/Template:module_documentation#top" title="Template:module documentation">module documentation</a>}}</code>. The frame object can contain 3 optional arguments: </p> <ul><li><code><b>|comment_level=</b></code>: The number of equals signs (=) a given section uses. Default: 2 (i.e. <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="cm">--[==[ ... (comment block) ]==]</span></code>) <dl><dd>e.g. The value 4 means <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="cm">--[====[ ... (comment block) ]====]</span></code>.</dd></dl></li> <li><code><b>|section_level=</b></code>: The header level used for each function/method. Default: 2 (i.e. L2: <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="o">==</span> <span class="p">...</span> <span class="o">==</span></code>).</li> <li><code><b>|identifier=</b></code>: A Lua string pattern. Only the comments of functions whose names match this pattern are used. When not given, all function are accepted. <dl><dd>This is useful when giving object methods, using a pattern such as <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="o">^</span><span class="n">object_name</span><span class="p">:</span></code>.</dd></dl></li></ul> <br style="clear: both;" /></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="kd">local</span> <span class="n">m_str_utils</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="s2">"Module:string utilities"</span><span class="p">)</span> </span><span id="L-2"><a href="#L-2"><span class="linenos" data-line="2"></span></a> </span><span id="L-3"><a href="#L-3"><span class="linenos" data-line="3"></span></a><span class="kd">local</span> <span class="n">codepoint</span> <span class="o">=</span> <span class="n">m_str_utils</span><span class="p">.</span><span class="n">codepoint</span> </span><span id="L-4"><a href="#L-4"><span class="linenos" data-line="4"></span></a><span class="kd">local</span> <span class="n">concat</span> <span class="o">=</span> <span class="nb">table.concat</span> </span><span id="L-5"><a href="#L-5"><span class="linenos" data-line="5"></span></a><span class="kd">local</span> <span class="n">insert</span> <span class="o">=</span> <span class="nb">table.insert</span> </span><span id="L-6"><a href="#L-6"><span class="linenos" data-line="6"></span></a><span class="kd">local</span> <span class="n">u</span> <span class="o">=</span> <span class="n">m_str_utils</span><span class="p">.</span><span class="n">char</span> </span><span id="L-7"><a href="#L-7"><span class="linenos" data-line="7"></span></a><span class="kd">local</span> <span class="n">rsplit</span> <span class="o">=</span> <span class="n">m_str_utils</span><span class="p">.</span><span class="n">split</span> </span><span id="L-8"><a href="#L-8"><span class="linenos" data-line="8"></span></a> </span><span id="L-9"><a href="#L-9"><span class="linenos" data-line="9"></span></a><span class="kd">local</span> <span class="n">export</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-10"><a href="#L-10"><span class="linenos" data-line="10"></span></a> </span><span id="L-11"><a href="#L-11"><span class="linenos" data-line="11"></span></a><span class="cm">--[===[ intro:</span> </span><span id="L-12"><a href="#L-12"><span class="linenos" data-line="12"></span></a><span class="cm">This module automatically generates documentation for other modules. It fetches in-line comments in Lua code and</span> </span><span id="L-13"><a href="#L-13"><span class="linenos" data-line="13"></span></a><span class="cm">converts them into a form that can be used on a documentation page via {{tl|module documentation}}. In fact, this</span> </span><span id="L-14"><a href="#L-14"><span class="linenos" data-line="14"></span></a><span class="cm">module's documentation is an example of it in action!</span> </span><span id="L-15"><a href="#L-15"><span class="linenos" data-line="15"></span></a> </span><span id="L-16"><a href="#L-16"><span class="linenos" data-line="16"></span></a><span class="cm">It's helpful to do documentation this way, as it means function/method documentation is available in two places:</span> </span><span id="L-17"><a href="#L-17"><span class="linenos" data-line="17"></span></a><span class="cm">at the top of the module page (as conventional Wikitext), and above the function itself (as a Lua comment). Each</span> </span><span id="L-18"><a href="#L-18"><span class="linenos" data-line="18"></span></a><span class="cm">suits a different kind of editing style, and doing it this way keeps them synchronised.</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="cm">A section of documentation is given using Lua's multi-line comment syntax, which looks something like this:</span> </span><span id="L-21"><a href="#L-21"><span class="linenos" data-line="21"></span></a><span class="cm">{--[==[ ... ]==]}. The number of equal signs should normally be two in order for the documentation to be properly</span> </span><span id="L-22"><a href="#L-22"><span class="linenos" data-line="22"></span></a><span class="cm">snarfed by {{tl|module documentation}}. The following conventions can be used inside of the documentation:</span> </span><span id="L-23"><a href="#L-23"><span class="linenos" data-line="23"></span></a><span class="cm"># Long lines (both in regular paragraphs and in list items) can be broken by newlines optionally followed by spaces</span> </span><span id="L-24"><a href="#L-24"><span class="linenos" data-line="24"></span></a><span class="cm"> or tabs (especially useful in lists, to make the raw comment more readable). In such a case, the newline is converted</span> </span><span id="L-25"><a href="#L-25"><span class="linenos" data-line="25"></span></a><span class="cm"> to a space. Use two newlines in a row to break paragraphs. In general, it's recommended to break lines after at most</span> </span><span id="L-26"><a href="#L-26"><span class="linenos" data-line="26"></span></a><span class="cm"> 120 characters, to facilitate reading the raw comment.</span> </span><span id="L-27"><a href="#L-27"><span class="linenos" data-line="27"></span></a><span class="cm"># Template calls (using two braces) can be inserted literally and will be expanded.</span> </span><span id="L-28"><a href="#L-28"><span class="linenos" data-line="28"></span></a><span class="cm"># Single braces can be used to surround literal text, and will automatically be syntax-highlighted as Lua code. Nested</span> </span><span id="L-29"><a href="#L-29"><span class="linenos" data-line="29"></span></a><span class="cm"> braces inside of this literal text will be properly handled as long as they're balanced. If the first character of the</span> </span><span id="L-30"><a href="#L-30"><span class="linenos" data-line="30"></span></a><span class="cm"> literal text is itelf a brace, put a space before it (but not at the end), and it will be ignored.</span> </span><span id="L-31"><a href="#L-31"><span class="linenos" data-line="31"></span></a><span class="cm"># Backquotes can be used to surround literal text, which will be displayed using {<code>...</code>}. The stuff inside of</span> </span><span id="L-32"><a href="#L-32"><span class="linenos" data-line="32"></span></a><span class="cm"> backquotes cannot contain a backquote (except for double-backquoted placeholder variable names) or extend to multiple</span> </span><span id="L-33"><a href="#L-33"><span class="linenos" data-line="33"></span></a><span class="cm"> lines.</span> </span><span id="L-34"><a href="#L-34"><span class="linenos" data-line="34"></span></a><span class="cm"># Double backquotes can be used to surround placeholder variable names, which will be displayed using {<var>...</var>}.</span> </span><span id="L-35"><a href="#L-35"><span class="linenos" data-line="35"></span></a><span class="cm"> The stuff inside of backquotes can only contain letters, numbers, underscores, hyphens and periods. Normally, such</span> </span><span id="L-36"><a href="#L-36"><span class="linenos" data-line="36"></span></a><span class="cm"> placeholders should be displayed in a monospace font, as if surrounded by {<code>...</code>}. This effect can be</span> </span><span id="L-37"><a href="#L-37"><span class="linenos" data-line="37"></span></a><span class="cm"> achieved by using triple backquotes, which effectively uses the double-backquote syntax inside the single-backquote</span> </span><span id="L-38"><a href="#L-38"><span class="linenos" data-line="38"></span></a><span class="cm"> syntax.</span> </span><span id="L-39"><a href="#L-39"><span class="linenos" data-line="39"></span></a> </span><span id="L-40"><a href="#L-40"><span class="linenos" data-line="40"></span></a><span class="cm">Certain special directives can follow the opening multiline comment indicator, if placed on the same line as the</span> </span><span id="L-41"><a href="#L-41"><span class="linenos" data-line="41"></span></a><span class="cm">indicator. In particular, the following directives are currently recognized:</span> </span><span id="L-42"><a href="#L-42"><span class="linenos" data-line="42"></span></a> </span><span id="L-43"><a href="#L-43"><span class="linenos" data-line="43"></span></a><span class="cm">* The directive `intro:` by itself signals introductory text, which will be placed at the beginning, prior to function</span> </span><span id="L-44"><a href="#L-44"><span class="linenos" data-line="44"></span></a><span class="cm"> documentation. This is useful to give a general introduction/overview of the module.</span> </span><span id="L-45"><a href="#L-45"><span class="linenos" data-line="45"></span></a><span class="cm">* The directive `func: export.<var>function</var>(<var>arg1</var>, <var>arg2</var>, ...)` can be used when documenting a</span> </span><span id="L-46"><a href="#L-46"><span class="linenos" data-line="46"></span></a><span class="cm"> function declared in a nonstandard way (e.g. through a metatable, through an anonymous or locally-declared function</span> </span><span id="L-47"><a href="#L-47"><span class="linenos" data-line="47"></span></a><span class="cm"> assigned to the `export` table, etc.). The directive indicates the desired way for the function to appear, and the</span> </span><span id="L-48"><a href="#L-48"><span class="linenos" data-line="48"></span></a><span class="cm"> remainder of the comment describes the function's operation, as usual.</span> </span><span id="L-49"><a href="#L-49"><span class="linenos" data-line="49"></span></a><span class="cm">]===]</span> </span><span id="L-50"><a href="#L-50"><span class="linenos" data-line="50"></span></a> </span><span id="L-51"><a href="#L-51"><span class="linenos" data-line="51"></span></a><span class="kd">local</span> <span class="n">TEMP_LEFT_BRACE</span> <span class="o">=</span> <span class="n">u</span><span class="p">(</span><span class="mh">0xFFF0</span><span class="p">)</span> </span><span id="L-52"><a href="#L-52"><span class="linenos" data-line="52"></span></a><span class="kd">local</span> <span class="n">TEMP_NEWLINE</span> <span class="o">=</span> <span class="n">u</span><span class="p">(</span><span class="mh">0xFFF1</span><span class="p">)</span> </span><span id="L-53"><a href="#L-53"><span class="linenos" data-line="53"></span></a> </span><span id="L-54"><a href="#L-54"><span class="linenos" data-line="54"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">format_doc</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> </span><span id="L-55"><a href="#L-55"><span class="linenos" data-line="55"></span></a> <span class="kd">local</span> <span class="n">code_blocks</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-56"><a href="#L-56"><span class="linenos" data-line="56"></span></a> <span class="kd">local</span> <span class="n">code_blocks_i</span> <span class="o">=</span> <span class="mi">0</span> </span><span id="L-57"><a href="#L-57"><span class="linenos" data-line="57"></span></a> <span class="kd">local</span> <span class="n">private_use_start</span> <span class="o">=</span> <span class="mh">0x100000</span> </span><span id="L-58"><a href="#L-58"><span class="linenos" data-line="58"></span></a> <span class="kd">local</span> <span class="n">subbed_str</span> <span class="o">=</span> <span class="p">(</span><span class="n">str</span> </span><span id="L-59"><a href="#L-59"><span class="linenos" data-line="59"></span></a> <span class="c1">-- Multiline literal text between backquotes; you can't use <pre> or <syntaxhighlight> because that</span> </span><span id="L-60"><a href="#L-60"><span class="linenos" data-line="60"></span></a> <span class="c1">-- disables Wikitext parsing for <var>...</var>, italics, <span>...</span> etc. Instead use the trick of</span> </span><span id="L-61"><a href="#L-61"><span class="linenos" data-line="61"></span></a> <span class="c1">-- putting a space at the beginning of each line, which yields monospace text without disabling Wikitext</span> </span><span id="L-62"><a href="#L-62"><span class="linenos" data-line="62"></span></a> <span class="c1">-- interpretation.</span> </span><span id="L-63"><a href="#L-63"><span class="linenos" data-line="63"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"```(.-)```"</span><span class="p">,</span> <span class="kr">function</span><span class="p">(</span><span class="n">inside</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">return</span> <span class="n">inside</span> </span><span id="L-65"><a href="#L-65"><span class="linenos" data-line="65"></span></a> <span class="c1">-- placeholder variable names between double backquotes; we need to repeat this here to avoid</span> </span><span id="L-66"><a href="#L-66"><span class="linenos" data-line="66"></span></a> <span class="c1">-- the following pattern for single backquotes from clobbering double backquotes</span> </span><span id="L-67"><a href="#L-67"><span class="linenos" data-line="67"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"``([A-Za-z0-9_%-. ]+)``"</span><span class="p">,</span> <span class="s2">"<var>%1</var>"</span><span class="p">)</span> </span><span id="L-68"><a href="#L-68"><span class="linenos" data-line="68"></span></a> <span class="c1">-- single backquotes undo monospacing</span> </span><span id="L-69"><a href="#L-69"><span class="linenos" data-line="69"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"`([^`</span><span class="se">\n</span><span class="s2">]+)`"</span><span class="p">,</span> <span class="s1">'<span style="font-family: sans-serif;">%1</span>'</span><span class="p">)</span> </span><span id="L-70"><a href="#L-70"><span class="linenos" data-line="70"></span></a> <span class="c1">-- text on the first line should be monospaced</span> </span><span id="L-71"><a href="#L-71"><span class="linenos" data-line="71"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"^([^</span><span class="se">\n</span><span class="s2">])"</span><span class="p">,</span> <span class="s2">" %1"</span><span class="p">)</span> </span><span id="L-72"><a href="#L-72"><span class="linenos" data-line="72"></span></a> <span class="c1">-- text after a newline should be monospaced, and temp-escape the newline so later replacements</span> </span><span id="L-73"><a href="#L-73"><span class="linenos" data-line="73"></span></a> <span class="c1">-- to join continued lines in a paragraph don't take effect</span> </span><span id="L-74"><a href="#L-74"><span class="linenos" data-line="74"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="n">TEMP_NEWLINE</span> <span class="o">..</span> <span class="s2">" "</span><span class="p">)</span> </span><span id="L-75"><a href="#L-75"><span class="linenos" data-line="75"></span></a> <span class="c1">-- escape { so it won't be interpreted as a code block</span> </span><span id="L-76"><a href="#L-76"><span class="linenos" data-line="76"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"{"</span><span class="p">,</span> <span class="n">TEMP_LEFT_BRACE</span><span class="p">)</span> </span><span id="L-77"><a href="#L-77"><span class="linenos" data-line="77"></span></a> <span class="kr">end</span><span class="p">)</span> </span><span id="L-78"><a href="#L-78"><span class="linenos" data-line="78"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"``([A-Za-z0-9_%-. ]+)``"</span><span class="p">,</span> <span class="s2">"<var>%1</var>"</span><span class="p">)</span> <span class="c1">-- placeholder variable names between double backquotes</span> </span><span id="L-79"><a href="#L-79"><span class="linenos" data-line="79"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"`([^`</span><span class="se">\n</span><span class="s2">]+)`"</span><span class="p">,</span> <span class="kr">function</span><span class="p">(</span><span class="n">inside</span><span class="p">)</span> <span class="c1">-- literal text between backquotes, set using <code>...</code></span> </span><span id="L-80"><a href="#L-80"><span class="linenos" data-line="80"></span></a> <span class="c1">-- Escape { so it won't be interpreted as a code block.</span> </span><span id="L-81"><a href="#L-81"><span class="linenos" data-line="81"></span></a> <span class="n">inside</span> <span class="o">=</span> <span class="n">inside</span><span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"{"</span><span class="p">,</span> <span class="n">TEMP_LEFT_BRACE</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">return</span> <span class="s2">"<code>"</span> <span class="o">..</span> <span class="n">inside</span> <span class="o">..</span> <span class="s2">"</code>"</span> </span><span id="L-83"><a href="#L-83"><span class="linenos" data-line="83"></span></a> <span class="kr">end</span><span class="p">)</span> </span><span id="L-84"><a href="#L-84"><span class="linenos" data-line="84"></span></a> <span class="c1">-- {} blocks: blocks of code</span> </span><span id="L-85"><a href="#L-85"><span class="linenos" data-line="85"></span></a> <span class="c1">-- Escape to avoid removing line breaks.</span> </span><span id="L-86"><a href="#L-86"><span class="linenos" data-line="86"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"%b{}"</span><span class="p">,</span> <span class="kr">function</span><span class="p">(</span><span class="n">m0</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">next_char</span> <span class="o">=</span> <span class="n">m0</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-88"><a href="#L-88"><span class="linenos" data-line="88"></span></a> <span class="kr">if</span> <span class="n">next_char</span> <span class="o">==</span> <span class="s2">"|"</span> <span class="kr">then</span> </span><span id="L-89"><a href="#L-89"><span class="linenos" data-line="89"></span></a> <span class="c1">-- Wikitable; don't try to parse it as code. But we do want to parse special syntax in them (in</span> </span><span id="L-90"><a href="#L-90"><span class="linenos" data-line="90"></span></a> <span class="c1">-- particular {...} syntax for embedded code snippets), and if we return nil that won't happen.</span> </span><span id="L-91"><a href="#L-91"><span class="linenos" data-line="91"></span></a> <span class="c1">-- Instead, we call format_doc() recursively on the innards.</span> </span><span id="L-92"><a href="#L-92"><span class="linenos" data-line="92"></span></a> <span class="kr">return</span> <span class="s2">"{"</span> <span class="o">..</span> <span class="n">format_doc</span><span class="p">(</span><span class="n">m0</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">))</span> <span class="o">..</span> <span class="s2">"}"</span> </span><span id="L-93"><a href="#L-93"><span class="linenos" data-line="93"></span></a> <span class="kr">end</span> </span><span id="L-94"><a href="#L-94"><span class="linenos" data-line="94"></span></a> <span class="kr">if</span> <span class="n">next_char</span> <span class="o">==</span> <span class="s2">"{"</span> <span class="ow">and</span> <span class="n">m0</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"}"</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kc">nil</span> <span class="kr">end</span> </span><span id="L-95"><a href="#L-95"><span class="linenos" data-line="95"></span></a> <span class="kd">local</span> <span class="n">text</span> <span class="o">=</span> <span class="s2">"<syntaxhighlight lang=lua"</span> <span class="o">..</span> <span class="p">(</span><span class="n">m0</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">""</span> <span class="ow">or</span> <span class="s2">" inline"</span><span class="p">)</span> <span class="o">..</span> <span class="s2">">"</span> <span class="o">..</span> <span class="n">m0</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">):</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"^ +"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"</syntaxhighlight>"</span> </span><span id="L-96"><a href="#L-96"><span class="linenos" data-line="96"></span></a> <span class="c1">-- Prevent any further processing by storing the desired text into the `code_blocks` array and replacing</span> </span><span id="L-97"><a href="#L-97"><span class="linenos" data-line="97"></span></a> <span class="c1">-- the whole thing with a single private-use-area character.</span> </span><span id="L-98"><a href="#L-98"><span class="linenos" data-line="98"></span></a> <span class="n">code_blocks_i</span> <span class="o">=</span> <span class="n">code_blocks_i</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-99"><a href="#L-99"><span class="linenos" data-line="99"></span></a> <span class="n">code_blocks</span><span class="p">[</span><span class="n">code_blocks_i</span><span class="p">]</span> <span class="o">=</span> <span class="n">text</span> </span><span id="L-100"><a href="#L-100"><span class="linenos" data-line="100"></span></a> <span class="kr">return</span> <span class="n">u</span><span class="p">(</span><span class="n">private_use_start</span> <span class="o">+</span> <span class="n">code_blocks_i</span><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 class="p">)</span> </span><span id="L-102"><a href="#L-102"><span class="linenos" data-line="102"></span></a> <span class="c1">-- undo escaping of left brace to prevent code block interpretation</span> </span><span id="L-103"><a href="#L-103"><span class="linenos" data-line="103"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="n">TEMP_LEFT_BRACE</span><span class="p">,</span> <span class="s2">"{"</span><span class="p">)</span> </span><span id="L-104"><a href="#L-104"><span class="linenos" data-line="104"></span></a> <span class="c1">-- Join continued lines in a paragraph. We don't want to do that if there are two newlines in a row,</span> </span><span id="L-105"><a href="#L-105"><span class="linenos" data-line="105"></span></a> <span class="c1">-- and not if the second line begins with whitespace or a certain special characters (#, * or : indicating</span> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a> <span class="c1">-- a list item; | indicating a wikitable item; semicolon for bolded items).</span> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"([^</span><span class="se">\n</span><span class="s2">])</span><span class="se">\n</span><span class="s2">[ </span><span class="se">\t</span><span class="s2">]*([^ </span><span class="se">\t\n</span><span class="s2">#*:;|])"</span><span class="p">,</span> <span class="s2">"%1 %2"</span><span class="p">)</span> </span><span id="L-108"><a href="#L-108"><span class="linenos" data-line="108"></span></a> <span class="c1">-- Repeat the previous in case of a single-character line (admittedly rare).</span> </span><span id="L-109"><a href="#L-109"><span class="linenos" data-line="109"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"([^</span><span class="se">\n</span><span class="s2">])</span><span class="se">\n</span><span class="s2">[ </span><span class="se">\t</span><span class="s2">]*([^ </span><span class="se">\t\n</span><span class="s2">#*:;|])"</span><span class="p">,</span> <span class="s2">"%1 %2"</span><span class="p">)</span> </span><span id="L-110"><a href="#L-110"><span class="linenos" data-line="110"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">[ </span><span class="se">\t</span><span class="s2">]+%f[*#:;]"</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> <span class="c1">-- remove indentation for list items</span> </span><span id="L-111"><a href="#L-111"><span class="linenos" data-line="111"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"%f[</span><span class="se">\n</span><span class="s2">,{]</span><span class="se">\n</span><span class="s2">%f[^</span><span class="se">\n</span><span class="s2">*#:;]"</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">"</span><span class="p">)</span> <span class="c1">-- wiki newlines</span> </span><span id="L-112"><a href="#L-112"><span class="linenos" data-line="112"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"(</span><span class="se">\n</span><span class="s2">[ *#:]*)(|?[_%w]+=?):"</span><span class="p">,</span> <span class="s2">"%1<code><b>%2</b></code>:"</span><span class="p">)</span> <span class="c1">-- parameter names</span> </span><span id="L-113"><a href="#L-113"><span class="linenos" data-line="113"></span></a> <span class="c1">-- double-underline to indicate types (displayed as italicized underlined)</span> </span><span id="L-114"><a href="#L-114"><span class="linenos" data-line="114"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"__(.-)__"</span><span class="p">,</span> <span class="kr">function</span><span class="p">(</span><span class="n">inside</span><span class="p">)</span> </span><span id="L-115"><a href="#L-115"><span class="linenos" data-line="115"></span></a> <span class="kr">return</span> <span class="s2">"<u><i>"</span> <span class="o">..</span> <span class="n">inside</span> <span class="o">..</span> <span class="s2">"</i></u>"</span> </span><span id="L-116"><a href="#L-116"><span class="linenos" data-line="116"></span></a> <span class="kr">end</span><span class="p">)</span> </span><span id="L-117"><a href="#L-117"><span class="linenos" data-line="117"></span></a> <span class="c1">-- undo escaping of newline to prevent joining of continued lines</span> </span><span id="L-118"><a href="#L-118"><span class="linenos" data-line="118"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="n">TEMP_NEWLINE</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">))</span> </span><span id="L-119"><a href="#L-119"><span class="linenos" data-line="119"></span></a> </span><span id="L-120"><a href="#L-120"><span class="linenos" data-line="120"></span></a> <span class="c1">-- Put <code>...</code> around <var>...</var> invocations that don't already occur inside of</span> </span><span id="L-121"><a href="#L-121"><span class="linenos" data-line="121"></span></a> <span class="c1">-- <code>...</code> blocks.</span> </span><span id="L-122"><a href="#L-122"><span class="linenos" data-line="122"></span></a> <span class="kd">local</span> <span class="n">split_on_code</span> <span class="o">=</span> <span class="n">rsplit</span><span class="p">(</span><span class="n">subbed_str</span><span class="p">,</span> <span class="s2">"(<code>.-</code>)"</span><span class="p">)</span> </span><span id="L-123"><a href="#L-123"><span class="linenos" data-line="123"></span></a> <span class="kr">for</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="o">#</span><span class="n">split_on_code</span><span class="p">,</span> <span class="mi">2</span> <span class="kr">do</span> </span><span id="L-124"><a href="#L-124"><span class="linenos" data-line="124"></span></a> <span class="n">split_on_code</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">split_on_code</span><span class="p">[</span><span class="n">i</span><span class="p">]:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"(<var>.-</var>)"</span><span class="p">,</span> <span class="s2">"<code>%1</code>"</span><span class="p">)</span> </span><span id="L-125"><a href="#L-125"><span class="linenos" data-line="125"></span></a> <span class="kr">end</span> </span><span id="L-126"><a href="#L-126"><span class="linenos" data-line="126"></span></a> <span class="n">subbed_str</span> <span class="o">=</span> <span class="n">concat</span><span class="p">(</span><span class="n">split_on_code</span><span class="p">)</span> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="n">subbed_str</span> </span><span id="L-128"><a href="#L-128"><span class="linenos" data-line="128"></span></a> <span class="c1">-- Undo code-block stashing.</span> </span><span id="L-129"><a href="#L-129"><span class="linenos" data-line="129"></span></a> <span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"</span><span class="se">\244</span><span class="s2">[</span><span class="se">\128</span><span class="s2">-</span><span class="se">\191</span><span class="s2">][</span><span class="se">\128</span><span class="s2">-</span><span class="se">\191</span><span class="s2">][</span><span class="se">\128</span><span class="s2">-</span><span class="se">\191</span><span class="s2">]"</span><span class="p">,</span> <span class="kr">function</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> </span><span id="L-130"><a href="#L-130"><span class="linenos" data-line="130"></span></a> <span class="kr">return</span> <span class="n">code_blocks</span><span class="p">[</span><span class="n">codepoint</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="o">-</span> <span class="n">private_use_start</span><span class="p">]</span> </span><span id="L-131"><a href="#L-131"><span class="linenos" data-line="131"></span></a> <span class="kr">end</span><span class="p">))</span> </span><span id="L-132"><a href="#L-132"><span class="linenos" data-line="132"></span></a><span class="kr">end</span> </span><span id="L-133"><a href="#L-133"><span class="linenos" data-line="133"></span></a> </span><span id="L-134"><a href="#L-134"><span class="linenos" data-line="134"></span></a><span class="cm">--[===[</span> </span><span id="L-135"><a href="#L-135"><span class="linenos" data-line="135"></span></a><span class="cm">The main entrypoint for {{tl|module documentation}}. The frame object can contain 3 optional arguments:</span> </span><span id="L-136"><a href="#L-136"><span class="linenos" data-line="136"></span></a><span class="cm">* |comment_level=: The number of equals signs (=) a given section uses. Default: 2 (i.e. {--[==[ ... (comment block) ]==]})</span> </span><span id="L-137"><a href="#L-137"><span class="linenos" data-line="137"></span></a><span class="cm">*: e.g. The value 4 means {--[====[ ... (comment block) ]====]}.</span> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></span></a><span class="cm">* |section_level=: The header level used for each function/method. Default: 2 (i.e. L2: {== ... ==}).</span> </span><span id="L-139"><a href="#L-139"><span class="linenos" data-line="139"></span></a><span class="cm">* |identifier=: A Lua string pattern. Only the comments of functions whose names match this pattern are used. When not given, all function are accepted.</span> </span><span id="L-140"><a href="#L-140"><span class="linenos" data-line="140"></span></a><span class="cm">*: This is useful when giving object methods, using a pattern such as {^object_name:}.</span> </span><span id="L-141"><a href="#L-141"><span class="linenos" data-line="141"></span></a><span class="cm">]===]</span> </span><span id="L-142"><a href="#L-142"><span class="linenos" data-line="142"></span></a><span class="kr">function</span> <span class="nc">export</span><span class="p">.</span><span class="nf">show</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-143"><a href="#L-143"><span class="linenos" data-line="143"></span></a> <span class="kd">local</span> <span class="n">args</span> <span class="o">=</span> <span class="n">frame</span><span class="p">:</span><span class="n">getParent</span><span class="p">().</span><span class="n">args</span> <span class="ow">or</span> <span class="p">{}</span> </span><span id="L-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></span></a> <span class="kd">local</span> <span class="n">comment_level</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="s2">"comment_level"</span><span class="p">])</span> <span class="ow">or</span> <span class="mi">2</span> </span><span id="L-146"><a href="#L-146"><span class="linenos" data-line="146"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">make_comment_pattern</span><span class="p">(</span><span class="n">typeid</span><span class="p">)</span> </span><span id="L-147"><a href="#L-147"><span class="linenos" data-line="147"></span></a> <span class="kr">if</span> <span class="n">typeid</span> <span class="kr">then</span> </span><span id="L-148"><a href="#L-148"><span class="linenos" data-line="148"></span></a> <span class="n">typeid</span> <span class="o">=</span> <span class="s2">"%s*"</span> <span class="o">..</span> <span class="n">typeid</span> </span><span id="L-149"><a href="#L-149"><span class="linenos" data-line="149"></span></a> <span class="kr">else</span> </span><span id="L-150"><a href="#L-150"><span class="linenos" data-line="150"></span></a> <span class="n">typeid</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-151"><a href="#L-151"><span class="linenos" data-line="151"></span></a> <span class="kr">end</span> </span><span id="L-152"><a href="#L-152"><span class="linenos" data-line="152"></span></a> <span class="kr">return</span> <span class="s2">"%-%-%["</span> <span class="o">..</span> <span class="p">(</span><span class="s2">"="</span><span class="p">):</span><span class="n">rep</span><span class="p">(</span><span class="n">comment_level</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"%["</span> <span class="o">..</span> <span class="n">typeid</span> <span class="o">..</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">?(.-)[</span><span class="se">\t\n</span><span class="s2">]*]"</span> <span class="o">..</span> <span class="p">(</span><span class="s2">"="</span><span class="p">):</span><span class="n">rep</span><span class="p">(</span><span class="n">comment_level</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"]()"</span> </span><span id="L-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a> <span class="kr">end</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">fn_comment_pattern</span> <span class="o">=</span> <span class="n">make_comment_pattern</span><span class="p">(</span><span class="kc">nil</span><span class="p">)</span> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a> <span class="kd">local</span> <span class="n">intro_comment_pattern</span> <span class="o">=</span> <span class="n">make_comment_pattern</span><span class="p">(</span><span class="s2">"intro:"</span><span class="p">)</span> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a> <span class="kd">local</span> <span class="n">metafunc_comment_pattern</span> <span class="o">=</span> <span class="n">make_comment_pattern</span><span class="p">(</span><span class="s2">"func:%s*(([^</span><span class="se">\n</span><span class="s2">(]+)[^</span><span class="se">\n</span><span class="s2">)]+%))"</span><span class="p">)</span> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></span></a> <span class="kd">local</span> <span class="n">section_mark</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"="</span><span class="p">):</span><span class="n">rep</span><span class="p">(</span><span class="nb">tonumber</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="s2">"section_level"</span><span class="p">])</span> <span class="ow">or</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-158"><a href="#L-158"><span class="linenos" data-line="158"></span></a> <span class="kd">local</span> <span class="n">pattern_identifier</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="s2">"identifier"</span><span class="p">]</span> <span class="ow">or</span> <span class="s2">""</span> </span><span id="L-159"><a href="#L-159"><span class="linenos" data-line="159"></span></a> </span><span id="L-160"><a href="#L-160"><span class="linenos" data-line="160"></span></a> <span class="kd">local</span> <span class="n">mod_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-161"><a href="#L-161"><span class="linenos" data-line="161"></span></a> <span class="kr">if</span> <span class="n">mod_title</span><span class="p">.</span><span class="n">text</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s2">"/documentation$"</span><span class="p">)</span> <span class="kr">then</span> <span class="kr">return</span> <span class="s2">"(<i>The generated documentation is located at the module page.</i>)"</span> <span class="kr">end</span> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></span></a> <span class="kd">local</span> <span class="n">mod_text</span> <span class="o">=</span> <span class="n">mod_title</span><span class="p">:</span><span class="n">getContent</span><span class="p">()</span> </span><span id="L-163"><a href="#L-163"><span class="linenos" data-line="163"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">mod_text</span> <span class="kr">then</span> <span class="kr">return</span> <span class="s2">"(<i>The module page does not exist now.</i>)"</span> <span class="kr">end</span> </span><span id="L-164"><a href="#L-164"><span class="linenos" data-line="164"></span></a> </span><span id="L-165"><a href="#L-165"><span class="linenos" data-line="165"></span></a> <span class="c1">-- This contains function and intro documentation. Each element is a two-element list of {POSITION, DOCS} specifying</span> </span><span id="L-166"><a href="#L-166"><span class="linenos" data-line="166"></span></a> <span class="c1">-- the generated documentation for a function and the character position in the file where it was found (for sorting</span> </span><span id="L-167"><a href="#L-167"><span class="linenos" data-line="167"></span></a> <span class="c1">-- purposes).</span> </span><span id="L-168"><a href="#L-168"><span class="linenos" data-line="168"></span></a> <span class="kd">local</span> <span class="n">docs</span> </span><span id="L-169"><a href="#L-169"><span class="linenos" data-line="169"></span></a> </span><span id="L-170"><a href="#L-170"><span class="linenos" data-line="170"></span></a> <span class="kd">local</span> <span class="n">intro_comment</span> <span class="o">=</span> <span class="n">mod_text</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="s2">"^.-"</span> <span class="o">..</span> <span class="n">intro_comment_pattern</span><span class="p">)</span> </span><span id="L-171"><a href="#L-171"><span class="linenos" data-line="171"></span></a> <span class="kr">if</span> <span class="n">intro_comment</span> <span class="kr">then</span> </span><span id="L-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a> <span class="n">docs</span> <span class="o">=</span> <span class="p">{</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="n">format_doc</span><span class="p">(</span><span class="n">intro_comment</span><span class="p">)</span> <span class="p">}}</span> </span><span id="L-173"><a href="#L-173"><span class="linenos" data-line="173"></span></a> <span class="kr">else</span> </span><span id="L-174"><a href="#L-174"><span class="linenos" data-line="174"></span></a> <span class="n">docs</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-175"><a href="#L-175"><span class="linenos" data-line="175"></span></a> <span class="kr">end</span> </span><span id="L-176"><a href="#L-176"><span class="linenos" data-line="176"></span></a> </span><span id="L-177"><a href="#L-177"><span class="linenos" data-line="177"></span></a> <span class="c1">-- Look for actual functions.</span> </span><span id="L-178"><a href="#L-178"><span class="linenos" data-line="178"></span></a> <span class="kr">for</span> <span class="n">p0</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">fn</span> <span class="kr">in</span> <span class="n">mod_text</span><span class="p">:</span><span class="n">gmatch</span><span class="p">(</span><span class="s2">"()</span><span class="se">\n</span><span class="s2">[ </span><span class="se">\t</span><span class="s2">]*function +(([^</span><span class="se">\n</span><span class="s2">(]+)[^</span><span class="se">\n</span><span class="s2">)]+%))"</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-179"><a href="#L-179"><span class="linenos" data-line="179"></span></a> <span class="kr">if</span> <span class="n">fn</span><span class="p">:</span><span class="n">match</span><span class="p">(</span><span class="n">pattern_identifier</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-180"><a href="#L-180"><span class="linenos" data-line="180"></span></a> <span class="kd">local</span> <span class="n">c</span> <span class="o">=</span> <span class="n">mod_text</span><span class="p">:</span><span class="n">sub</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">p0</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span><span class="n">match</span><span class="p">(</span><span class="s2">"^.*"</span> <span class="o">..</span> <span class="n">fn_comment_pattern</span> <span class="o">..</span> <span class="s2">"%s*$"</span><span class="p">)</span> </span><span id="L-181"><a href="#L-181"><span class="linenos" data-line="181"></span></a> <span class="n">insert</span><span class="p">(</span><span class="n">docs</span><span class="p">,</span> <span class="p">{</span><span class="n">p0</span><span class="p">,</span> <span class="n">section_mark</span> <span class="o">..</span> <span class="n">fn</span> <span class="o">..</span> <span class="n">section_mark</span> <span class="o">..</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">"</span> <span class="o">..</span> <span class="s2">"<syntaxhighlight lang=lua inline>function "</span> <span class="o">..</span> </span><span id="L-182"><a href="#L-182"><span class="linenos" data-line="182"></span></a> <span class="n">f</span> <span class="o">..</span> <span class="s2">"</syntaxhighlight></span><span class="se">\n\n</span><span class="s2">"</span> <span class="o">..</span> <span class="n">format_doc</span><span class="p">(</span><span class="n">c</span> <span class="ow">or</span> </span><span id="L-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a> <span class="s1">'<strong class="error">This function lacks documentation. Please add a description of its usages, inputs and outputs, '</span> <span class="o">..</span> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a> <span class="s2">"or its difference from similar functions, or make it local to remove it from the function list.</strong>"</span> <span class="o">..</span> </span><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a> <span class="s2">"[[Category:Templates and modules needing documentation]]"</span><span class="p">)})</span> </span><span id="L-186"><a href="#L-186"><span class="linenos" data-line="186"></span></a> <span class="kr">end</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">-- Now look for comments with the function declaration inside them (used for metatable functions etc.).</span> </span><span id="L-190"><a href="#L-190"><span class="linenos" data-line="190"></span></a> <span class="kr">for</span> <span class="n">p0</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">fn</span><span class="p">,</span> <span class="n">comment</span> <span class="kr">in</span> <span class="n">mod_text</span><span class="p">:</span><span class="n">gmatch</span><span class="p">(</span><span class="s2">"()"</span> <span class="o">..</span> <span class="n">metafunc_comment_pattern</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-191"><a href="#L-191"><span class="linenos" data-line="191"></span></a> <span class="n">insert</span><span class="p">(</span><span class="n">docs</span><span class="p">,</span> <span class="p">{</span><span class="n">p0</span><span class="p">,</span> <span class="n">section_mark</span> <span class="o">..</span> <span class="n">fn</span> <span class="o">..</span> <span class="n">section_mark</span> <span class="o">..</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">"</span> <span class="o">..</span> <span class="s2">"<syntaxhighlight lang=lua inline>function "</span> <span class="o">..</span> <span class="n">f</span> <span class="o">..</span> <span class="s2">"</syntaxhighlight></span><span class="se">\n\n</span><span class="s2">"</span> <span class="o">..</span> <span class="n">format_doc</span><span class="p">(</span><span class="n">comment</span><span class="p">)})</span> </span><span id="L-192"><a href="#L-192"><span class="linenos" data-line="192"></span></a> <span class="kr">end</span> </span><span id="L-193"><a href="#L-193"><span class="linenos" data-line="193"></span></a> </span><span id="L-194"><a href="#L-194"><span class="linenos" data-line="194"></span></a> <span class="nb">table.sort</span><span class="p">(</span><span class="n">docs</span><span class="p">,</span> <span class="kr">function</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span> <span class="kr">return</span> <span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o"><</span> <span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="kr">end</span><span class="p">)</span> </span><span id="L-195"><a href="#L-195"><span class="linenos" data-line="195"></span></a> </span><span id="L-196"><a href="#L-196"><span class="linenos" data-line="196"></span></a> <span class="kd">local</span> <span class="n">chunks</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-197"><a href="#L-197"><span class="linenos" data-line="197"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">decl</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">docs</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-198"><a href="#L-198"><span class="linenos" data-line="198"></span></a> <span class="n">insert</span><span class="p">(</span><span class="n">chunks</span><span class="p">,</span> <span class="n">decl</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> </span><span id="L-199"><a href="#L-199"><span class="linenos" data-line="199"></span></a> <span class="kr">end</span> </span><span id="L-200"><a href="#L-200"><span class="linenos" data-line="200"></span></a> </span><span id="L-201"><a href="#L-201"><span class="linenos" data-line="201"></span></a> <span class="kr">return</span> <span class="n">frame</span><span class="p">:</span><span class="n">preprocess</span><span class="p">(</span><span class="n">concat</span><span class="p">(</span><span class="n">chunks</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">"</span><span class="p">))</span> </span><span id="L-202"><a href="#L-202"><span class="linenos" data-line="202"></span></a><span class="kr">end</span> </span><span id="L-203"><a href="#L-203"><span class="linenos" data-line="203"></span></a> </span><span id="L-204"><a href="#L-204"><span class="linenos" data-line="204"></span></a><span class="kr">return</span> <span class="n">export</span> </span></pre></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐7fc47fc68d‐wpmxs Cached time: 20241128171434 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1] CPU time usage: 0.074 seconds Real time usage: 0.172 seconds Preprocessor visited node count: 76/1000000 Post‐expand include size: 21070/2097152 bytes Template argument size: 0/2097152 bytes Highest expansion depth: 7/100 Expensive parser function count: 12/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 1798/5000000 bytes Lua time usage: 0.053/10.000 seconds Lua memory usage: 1843525/104857600 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 161.151 1 Template:documentation 100.00% 161.151 1 -total 66.13% 106.568 1 Template:module_documentation 16.55% 26.669 3 Template:tl 3.53% 5.685 1 Template:module_cat --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1&useformat=desktop" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wiktionary.org/w/index.php?title=Module:module_documentation&oldid=81398980">https://en.wiktionary.org/w/index.php?title=Module:module_documentation&oldid=81398980</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Category</a>: <ul><li><a href="/wiki/Category:Documentation_modules" title="Category:Documentation modules">Documentation modules</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 27 August 2024, at 14:42.</li> <li id="footer-info-copyright">Definitions and other text are available under the <a rel="nofollow" class="external text" href="//creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike License</a>; additional terms may apply. By using this site, you agree to the <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy Policy.</a></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/Wiktionary:About">About Wiktionary</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wiktionary:General_disclaimer">Disclaimers</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.wiktionary.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.wiktionary.org/w/index.php?title=Module:module_documentation&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-7fc47fc68d-wpmxs","wgBackendResponseTime":328,"wgPageParseReport":{"limitreport":{"cputime":"0.074","walltime":"0.172","ppvisitednodes":{"value":76,"limit":1000000},"postexpandincludesize":{"value":21070,"limit":2097152},"templateargumentsize":{"value":0,"limit":2097152},"expansiondepth":{"value":7,"limit":100},"expensivefunctioncount":{"value":12,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":1798,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 161.151 1 Template:documentation","100.00% 161.151 1 -total"," 66.13% 106.568 1 Template:module_documentation"," 16.55% 26.669 3 Template:tl"," 3.53% 5.685 1 Template:module_cat"]},"scribunto":{"limitreport-timeusage":{"value":"0.053","limit":"10.000"},"limitreport-memusage":{"value":1843525,"limit":104857600}},"cachereport":{"origin":"mw-web.codfw.main-7fc47fc68d-wpmxs","timestamp":"20241128171434","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>