CINXE.COM
Module:String: Difference between revisions - Wikidata
<!DOCTYPE html> <html class="client-nojs" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Module:String: Difference between revisions - Wikidata</title> <script>(function(){var className="client-js";var cookie=document.cookie.match(/(?:^|; )wikidatawikimwclientpreferences=([^;]+)/);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":"12a5853d-9dad-45d9-ab14-160f8f14820b","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Module:String","wgTitle":"String","wgCurRevisionId":1340914896,"wgRevisionId":1340914894,"wgArticleId":12005106,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"], "wgCategories":["Lua metamodules","Global Templates"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"Scribunto","wgRelevantPageName":"Module:String","wgRelevantArticleId":12005106,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikidata","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":20000,"extRevisionSliderTimeOffset":0,"wgDiffOldId":1331514016,"wgDiffNewId":1340914894,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"personal","wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q7253814" ,"wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"]};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.visualEditor.diffPage.init.styles":"ready","oojs-ui.styles.icons-accessibility":"ready","oojs-ui.styles.icons-editing-advanced":"ready","oojs-ui-core.styles":"ready","oojs-ui.styles.indicators":"ready","mediawiki.widgets.styles":"ready","oojs-ui-core.icons":"ready","ext.RevisionSlider.lazyCss":"ready","mediawiki.interface.helpers.styles":"ready","mediawiki.diff.styles":"ready","ext.pygments":"ready","mediawiki.helplink":"ready","skins.vector.styles.legacy":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","codex-search-styles":"ready","ext.uls.pt":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.visualEditor.diffPage.init", "ext.RevisionSlider.lazyJs","mediawiki.diff","ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.legacy.js","wikibase.ui.entitysearch","ext.centralNotice.geoIP","ext.gadget.Search","ext.gadget.ProtectionIndicators","ext.gadget.imagelinks","ext.gadget.formWizard","ext.urlShortener.toolbar","ext.centralauth.centralautologin","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.wikimediaEvents.wikibase","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface","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=codex-search-styles%7Cext.RevisionSlider.lazyCss%7Cext.pygments%2CwikimediaBadges%7Cext.uls.pt%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.visualEditor.diffPage.init.styles%7Cmediawiki.diff.styles%7Cmediawiki.helplink%7Cmediawiki.interface.helpers.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.icons-accessibility%2Cicons-editing-advanced%2Cindicators%7Cskins.vector.styles.legacy%7Cwikibase.client.init&only=styles&skin=vector"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector"> <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="noindex,nofollow,max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//m.wikidata.org/wiki/Module:String"> <link rel="alternate" type="application/x-wiki" title="Edit" href="/w/index.php?title=Module:String&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikidata.png"> <link rel="icon" href="/static/favicon/wikidata.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikidata (en)"> <link rel="EditURI" type="application/rsd+xml" href="//www.wikidata.org/w/api.php?action=rsd"> <link rel="canonical" href="https://www.wikidata.org/wiki/Module:String"> <link rel="license" href="/wiki/Wikidata:Copyright"> <link rel="alternate" type="application/atom+xml" title="Wikidata Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="mw-article-diff skin-vector-legacy mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject mw-editable page-Module_String rootpage-Module_String skin-vector action-view"><div id="mw-page-base" class="noprint"></div> <div id="mw-head-base" class="noprint"></div> <div id="content" class="mw-body" role="main"> <a id="top"></a> <div id="siteNotice"><!-- CentralNotice --></div> <div class="mw-indicators"> <div id="mw-indicator-mw-helplink" class="mw-indicator"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Diff" target="_blank" class="mw-helplink"><span class="mw-helplink-icon"></span>Help</a></div> </div> <h1 id="firstHeading" class="firstHeading mw-first-heading">Module:String: Difference between revisions</h1> <div id="bodyContent" class="vector-body"> <div id="siteSub" class="noprint">From Wikidata</div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="contentSub2"></div> <div id="jump-to-nav"></div> <a class="mw-jump-link" href="#mw-head">Jump to navigation</a> <a class="mw-jump-link" href="#searchInput">Jump to search</a> <div id="mw-content-text" class="mw-body-content"><div class="mw-revslider-container"><span style='width: 100%; text-align: center;' id='ooui-php-1' class='mw-revslider-toggle-button oo-ui-widget oo-ui-widget-enabled oo-ui-buttonElement oo-ui-buttonElement-frameless oo-ui-indicatorElement oo-ui-labelElement oo-ui-buttonWidget' data-ooui='{"_":"OO.ui.ButtonWidget","rel":["nofollow"],"framed":false,"indicator":"down","label":"Browse history interactively","title":"Open revision slider","classes":["mw-revslider-toggle-button"]}'><a role='button' title='Open revision slider' tabindex='0' rel='nofollow' class='oo-ui-buttonElement-button'><span class='oo-ui-iconElement-icon oo-ui-iconElement-noIcon'></span><span class='oo-ui-labelElement-label'>Browse history interactively</span><span class='oo-ui-indicatorElement-indicator oo-ui-indicator-down'></span></a></span><div class="mw-revslider-slider-wrapper" style="display: none;"><div class="mw-revslider-placeholder"><div class="mw-revslider-spinner"><div class="mw-revslider-bounce"></div></div></div></div></div><div class="mw-diff-revision-history-links"><a href="/w/index.php?title=Module:String&diff=prev&oldid=1331514016" class="mw-diff-revision-history-link-previous" title="Module:String">← Older edit</a><a href="/w/index.php?title=Module:String&diff=next&oldid=1340914894" class="mw-diff-revision-history-link-next" title="Module:String">Newer edit →</a></div><div class="mw-diff-table-prefix" dir="ltr" lang="en"><div class="mw-diff-inline-legend oo-ui-element-hidden"><span class="mw-diff-inline-legend-del">Content deleted</span> <span class="mw-diff-inline-legend-ins">Content added</span></div><div class="mw-diffPage-inlineToggle-container"><div id='mw-diffPage-inline-toggle-switch-layout' class='oo-ui-layout oo-ui-labelElement oo-ui-fieldLayout oo-ui-fieldLayout-align-left' data-ooui='{"_":"OO.ui.FieldLayout","fieldWidget":{"tag":"mw-diffPage-inline-toggle-switch"},"$overlay":true,"label":"Inline","title":"Switches between inline format and two-column format"}'><div class='oo-ui-fieldLayout-body'><span class='oo-ui-fieldLayout-header'><label title='Switches between inline format and two-column format' id='ooui-php-2' class='oo-ui-labelElement-label'>Inline</label></span><div class='oo-ui-fieldLayout-field'><div id='mw-diffPage-inline-toggle-switch' title='Switches between inline format and two-column format' aria-checked='false' tabindex='0' role='switch' aria-labelledby='ooui-php-2' class='oo-ui-widget oo-ui-widget-enabled oo-ui-toggleWidget oo-ui-toggleWidget-off oo-ui-toggleSwitchWidget' data-ooui='{"_":"OO.ui.ToggleSwitchWidget","href":"\/w\/index.php?title=Module:String&diff=prev&oldid=1340914894&diff-type=inline","value":false,"title":"Switches between inline format and two-column format"}'><span class='oo-ui-toggleSwitchWidget-glow'></span><a href='/w/index.php?title=Module:String&diff=prev&oldid=1340914894&diff-type=inline'><span class='oo-ui-toggleSwitchWidget-grip'></span></a></div></div></div></div></div></div><table class="diff diff-type-table diff-contentalign-left diff-editfont-monospace" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" class="diff-otitle diff-side-deleted"><div id="mw-diff-otitle1"><strong><a href="/w/index.php?title=Module:String&oldid=1331514016" title="Module:String">Revision as of 03:22, 23 September 2019</a> <span class="mw-diff-edit"><a href="/w/index.php?title=Module:String&action=edit&oldid=1331514016" title="Module:String">edit</a></span><span class="mw-diff-timestamp" data-timestamp="2019-09-23T03:22:45Z"></span></strong></div><div id="mw-diff-otitle2"><a href="/wiki/User:Billinghurst" class="mw-userlink" title="User:Billinghurst" data-mw-revid="1331514016"><bdi>Billinghurst</bdi></a> <span class="mw-usertoollinks">(<a href="/wiki/User_talk:Billinghurst" class="mw-usertoollinks-talk" title="User talk:Billinghurst">talk</a> | <a href="/wiki/Special:Contributions/Billinghurst" class="mw-usertoollinks-contribs" title="Special:Contributions/Billinghurst">contribs</a>)</span><div class="mw-diff-usermetadata"><div class="mw-diff-userroles"></div><div class="mw-diff-usereditcount"><span>306,925</span> edits</div></div></div><div id="mw-diff-otitle3"><abbr class="minoredit" title="This is a minor edit">m</abbr> <span class="comment comment--without-parentheses">Protected "<a href="/wiki/Module:String" title="Module:String">Module:String</a>": Highly transcluded template ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))</span></div><div id="mw-diff-otitle5"></div><div id="mw-diff-otitle4"><a href="/w/index.php?title=Module:String&diff=prev&oldid=1331514016" title="Module:String" id="differences-prevlink">← Older edit</a></div></td> <td colspan="2" class="diff-ntitle diff-side-added"><div id="mw-diff-ntitle1"><strong><a href="/w/index.php?title=Module:String&oldid=1340914894" title="Module:String">Revision as of 02:30, 3 November 2019</a> <span class="mw-diff-edit"><a href="/w/index.php?title=Module:String&action=edit&oldid=1340914894" title="Module:String">edit</a></span><span class="mw-diff-timestamp" data-timestamp="2019-11-03T02:30:49Z"></span> <span class="mw-diff-undo"><a href="/w/index.php?title=Module:String&action=edit&undoafter=1331514016&undo=1340914894" title=""Undo" reverts this edit and opens the edit form in preview mode. It allows adding a reason in the summary.">undo</a></span></strong></div><div id="mw-diff-ntitle2"><a href="/wiki/User:RexxS" class="mw-redirect mw-userlink" title="User:RexxS" data-mw-revid="1340914894"><bdi>RexxS</bdi></a> <span class="mw-usertoollinks">(<a href="/wiki/User_talk:RexxS" class="mw-usertoollinks-talk" title="User talk:RexxS">talk</a> | <a href="/wiki/Special:Contributions/RexxS" class="mw-usertoollinks-contribs" title="Special:Contributions/RexxS">contribs</a>)</span><div class="mw-diff-usermetadata"><div class="mw-diff-userroles"><a href="/wiki/Wikidata:Rollbackers" title="Wikidata:Rollbackers">Rollbackers</a></div><div class="mw-diff-usereditcount"><span>2,030</span> edits</div></div></div><div id="mw-diff-ntitle3"><abbr class="minoredit" title="This is a minor edit">m</abbr> <span class="comment comment--without-parentheses">Changed protection level for "<a href="/wiki/Module:String" title="Module:String">Module:String</a>": Cascade-protected from main page, so no point in enabling TE ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))</span></div><div id="mw-diff-ntitle5"></div><div id="mw-diff-ntitle4"><a href="/w/index.php?title=Module:String&diff=next&oldid=1340914894" title="Module:String" id="differences-nextlink">Newer edit →</a></div></td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>--[[<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>--[[</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>This module is intended to provide access to basic string functions.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>This module is intended to provide access to basic string functions.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>Most of the functions provided here can be invoked with named parameters,<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>Most of the functions provided here can be invoked with named parameters,</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>unnamed parameters, or a mixture. If named parameters are used, Mediawiki will<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>unnamed parameters, or a mixture. If named parameters are used, Mediawiki will</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>automatically remove any leading or trailing whitespace from the parameter.<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>automatically remove any leading or trailing whitespace from the parameter.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>Depending on the intended use, it may be advantageous to either preserve or</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>Depending on the intended use, it may be advantageous to either preserve or</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>remove such whitespace.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>remove such whitespace.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>Global options</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>Global options</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> ignore_errors: If set to 'true' or 1, any error condition will result in<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> ignore_errors: If set to 'true' or 1, any error condition will result in</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> an empty string being returned rather than an error message.<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> an empty string being returned rather than an error message.</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> error_category: If an error occurs, specifies the name of a category to<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> error_category: If an error occurs, specifies the name of a category to</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> include with the error message. The default category is<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> include with the error message. The default category is</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> [Category:Errors reported by Module String].</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> [Category:Errors reported by Module String].</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> no_category: If set to 'true' or 1, no category will be added if an error</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> no_category: If set to 'true' or 1, no category will be added if an error</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> is generated.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> is generated.</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>Unit tests for this module are available at Module:String/tests.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>Unit tests for this module are available at Module:String/tests.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 39:</td> <td colspan="2" class="diff-lineno">Line 39:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>If invoked using named parameters, Mediawiki will automatically remove any leading or</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>If invoked using named parameters, Mediawiki will automatically remove any leading or</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>trailing whitespace from the target string.<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>trailing whitespace from the target string.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str.len( frame )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str.len( frame )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local new_args = str._getParameters( frame.args, {'s'} )<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local new_args = str._getParameters( frame.args, {'s'} )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local s = new_args['s'] or ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local s = new_args['s'] or ''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>return mw.ustring.len( s )</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>return mw.ustring.len( s )</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>end</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 61:</td> <td colspan="2" class="diff-lineno">Line 61:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> i: The fist index of the substring to return, defaults to 1.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> i: The fist index of the substring to return, defaults to 1.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> j: The last index of the string to return, defaults to the last character.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> j: The last index of the string to return, defaults to the last character.</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>The first character of the string is assigned an index of 1. If either i or j</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>The first character of the string is assigned an index of 1. If either i or j</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>is a negative value, it is interpreted the same as selecting a character by<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>is a negative value, it is interpreted the same as selecting a character by</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>counting from the end of the string. Hence, a value of -1 is the same as<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>counting from the end of the string. Hence, a value of -1 is the same as</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>selecting the last character of the string.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>selecting the last character of the string.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>If the requested indices are out of range for the given string, an error is<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>If the requested indices are out of range for the given string, an error is</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>reported.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>reported.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str.sub( frame )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str.sub( frame )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local s = new_args['s'] or ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local s = new_args['s'] or ''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local i = tonumber( new_args['i'] ) or 1<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local i = tonumber( new_args['i'] ) or 1</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local j = tonumber( new_args['j'] ) or -1<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local j = tonumber( new_args['j'] ) or -1</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> local len = mw.ustring.len( s );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local len = mw.ustring.len( s )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> -- Convert negatives for range checking</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if i < 0 then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> i = len + i + 1;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if j < 0 then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> j = len + j + 1;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if i > len or j > len or i < 1 or j < 1 then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return str._error( 'String subset index out of range' );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if j < i then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return str._error( 'String subset indices out of order' );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return mw.ustring.sub( s, i, j )</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> -- Convert negatives for range checking</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>--[[</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if i < 0 then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>This function implements that features of {{subr|s|skip|max}} and</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> i = len + i + 1</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>is kept in order to maintain these older templates.</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if j < 0 then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> j = len + j + 1</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if i > len or j > len or i < 1 or j < 1 then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>Uses only numbered paramameters to preserve spaces (caller may trim</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return str._error( 'String subset index out of range' )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>whitespaces by passing the parameter explicitly by numbering the</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>parameters).</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if j < i then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return str._error( 'String subset indices out of order' )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return mw.ustring.sub( s, i, j )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>Accepts negative values as relative to strng length.</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>--[[</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>No error is returned if attempting to read past end of string or</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>This function implements that features of {{str sub old}} and is kept in order</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>before start of string.</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>to maintain these older templates.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>Currently does not parse and replace placeholders for nowiki tags.</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str.sublength( frame )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str.sublength( frame )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local <del class="diffchange diffchange-inline">s</del> = frame.args<del class="diffchange diffchange-inline">[1]</del> or <del class="diffchange diffchange-inline">'';</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local <ins class="diffchange diffchange-inline">i</ins> =<ins class="diffchange diffchange-inline"> tonumber(</ins> frame.args<ins class="diffchange diffchange-inline">.i )</ins> or <ins class="diffchange diffchange-inline">0</ins></div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local <del class="diffchange diffchange-inline">skip</del> = tonumber( frame.args<del class="diffchange diffchange-inline">[2]</del> )<del class="diffchange diffchange-inline"> or 0;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local <ins class="diffchange diffchange-inline">len</ins> = tonumber( frame.args<ins class="diffchange diffchange-inline">.len</ins> )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> local max = tonumber( frame.args[3] ) or 0;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> local len = mw.ustring.len( s );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> -- convert negative values of max and skip as relative to string length</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if max < 0 then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> max = len + max</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if skip < 0 then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> skip = len + skip</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> -- check boundaries to reduce the requested max</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if skip < 0 then -- if before start of string</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> max = max + skip</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> skip = 0 -- skip can't underflow now</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if max > len - skip then -- if past end of string</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> max = len - skip -- max can't overflow now</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if max <= 0 then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return '' -- nothing left to return</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return mw.ustring.sub( s, skip + 1, skip + max )</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>end</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 144:</td> <td colspan="2" class="diff-lineno">Line 109:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>match</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>match</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>This function returns a substring from the source string that matches a<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>This function returns a substring from the source string that matches a</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>specified pattern.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>specified pattern.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 150:</td> <td colspan="2" class="diff-lineno">Line 115:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>OR</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>OR</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>{{#invoke:String|<del class="diffchange diffchange-inline">pos</del>|s=source_string|pattern=pattern_string|start=start_index</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>{{#invoke:String|<ins class="diffchange diffchange-inline">match</ins>|s=source_string|pattern=pattern_string|start=start_index</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> |match=match_number|plain=plain_flag|nomatch=nomatch_output}}</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> |match=match_number|plain=plain_flag|nomatch=nomatch_output}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 158:</td> <td colspan="2" class="diff-lineno">Line 123:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> start: The index within the source string to start the search. The first</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> start: The index within the source string to start the search. The first</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> character of the string has index 1. Defaults to 1.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> character of the string has index 1. Defaults to 1.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> match: In some cases it may be possible to make multiple matches on a single<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> match: In some cases it may be possible to make multiple matches on a single</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> string. This specifies which match to return, where the first match is<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> string. This specifies which match to return, where the first match is</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> match= 1. If a negative number is specified then a match is returned<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> match= 1. If a negative number is specified then a match is returned</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> counting from the last match. Hence match = -1 is the same as requesting</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> counting from the last match. Hence match = -1 is the same as requesting</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> the last match. Defaults to 1.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> the last match. Defaults to 1.</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 168:</td> <td colspan="2" class="diff-lineno">Line 133:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>If invoked using named parameters, Mediawiki will automatically remove any leading or</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>If invoked using named parameters, Mediawiki will automatically remove any leading or</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>trailing whitespace from each string. In some circumstances this is desirable, in<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>trailing whitespace from each string. In some circumstances this is desirable, in</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>other cases one may want to preserve the whitespace.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>other cases one may want to preserve the whitespace.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>If the match_number or start_index are out of range for the string being queried, then</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>If the match_number or start_index are out of range for the string being queried, then</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>this function generates an error. An error is also generated if no match is found.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>this function generates an error. An error is also generated if no match is found.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>If one adds the parameter ignore_errors=true, then the error will be suppressed and<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>If one adds the parameter ignore_errors=true, then the error will be suppressed and</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>an empty string will be returned on any failure.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>an empty string will be returned on any failure.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 183:</td> <td colspan="2" class="diff-lineno">Line 148:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>-- This sub-routine is exported for use in other modules</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>function str._match( s, pattern, start, match_index, plain_flag, nomatch )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if s == '' then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return str._error( 'Target string is empty' )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if pattern == '' then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return str._error( 'Pattern string is empty' )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> start = tonumber(start) or 1</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return str._error( 'Requested start is out of range' )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if match_index == 0 then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return str._error( 'Match index is out of range' )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if plain_flag then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> pattern = str._escapePattern( pattern )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local result</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if match_index == 1 then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> -- Find first match is simple case</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> result = mw.ustring.match( s, pattern, start )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> else</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if start > 1 then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> s = mw.ustring.sub( s, start )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local iterator = mw.ustring.gmatch(s, pattern)</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if match_index > 0 then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> -- Forward search</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> for w in iterator do</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> match_index = match_index - 1</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if match_index == 0 then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> result = w</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> break</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> else</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> -- Reverse search</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local result_table = {}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local count = 1</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> for w in iterator do</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> result_table[count] = w</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> count = count + 1</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> result = result_table[ count + match_index ]</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if result == nil then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if nomatch == nil then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return str._error( 'Match not found' )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> else</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return nomatch</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> else</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return result</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>-- This is the entry point for #invoke:String|match</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str.match( frame )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str.match( frame )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local s = new_args['s'] or ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local s = new_args['s'] or ''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local start = tonumber( new_args['start'] ) or 1<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local start = tonumber( new_args['start'] ) or 1</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local plain_flag = str._getBoolean( new_args['plain'] or false )<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local plain_flag = str._getBoolean( new_args['plain'] or false )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local pattern = new_args['pattern'] or ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local pattern = new_args['pattern'] or ''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local match_index = math.floor( tonumber(new_args['match']) or 1 )<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local match_index = math.floor( tonumber(new_args['match']) or 1 )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local nomatch = new_args['nomatch']<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local nomatch = new_args['nomatch']</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return str._match( s, pattern, start, match_index, plain_flag, nomatch )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if s == '' then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return str._error( 'Target string is empty' );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if pattern == '' then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return str._error( 'Pattern string is empty' );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return str._error( 'Requested start is out of range' );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if match_index == 0 then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return str._error( 'Match index is out of range' );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if plain_flag then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> pattern = str._escapePattern( pattern );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> local result</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if match_index == 1 then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> -- Find first match is simple case</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> result = mw.ustring.match( s, pattern, start )</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> else</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if start > 1 then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> s = mw.ustring.sub( s, start );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> local iterator = mw.ustring.gmatch(s, pattern);</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if match_index > 0 then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> -- Forward search</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> for w in iterator do</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> match_index = match_index - 1;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if match_index == 0 then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> result = w;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> break;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> else</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> -- Reverse search</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> local result_table = {};</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> local count = 1;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> for w in iterator do</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> result_table[count] = w;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> count = count + 1;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> result = result_table[ count + match_index ]; </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if result == nil then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if nomatch == nil then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return str._error( 'Match not found' );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> else</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return nomatch;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> else</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return result;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>end</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 266:</td> <td colspan="2" class="diff-lineno">Line 237:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>If invoked using named parameters, Mediawiki will automatically remove any leading or</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>If invoked using named parameters, Mediawiki will automatically remove any leading or</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>trailing whitespace from the target string. In some circumstances this is desirable, in<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>trailing whitespace from the target string. In some circumstances this is desirable, in</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>other cases one may want to preserve the whitespace.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>other cases one may want to preserve the whitespace.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>The first character has an index value of 1.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>The first character has an index value of 1.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>If one requests a negative value, this function will select a character by counting backwards<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>If one requests a negative value, this function will select a character by counting backwards</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>from the end of the string. In other words pos = -1 is the same as asking for the last character.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>from the end of the string. In other words pos = -1 is the same as asking for the last character.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 277:</td> <td colspan="2" class="diff-lineno">Line 248:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str.pos( frame )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str.pos( frame )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local new_args = str._getParameters( frame.args, {'target', 'pos'} )<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local new_args = str._getParameters( frame.args, {'target', 'pos'} )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local target_str = new_args['target'] or ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local target_str = new_args['target'] or ''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local pos = tonumber( new_args['pos'] ) or 0<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local pos = tonumber( new_args['pos'] ) or 0</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>return str._error( 'String index out of range' )<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>return str._error( 'String index out of range' )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>end<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>return mw.ustring.sub( target_str, pos, pos )<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>return mw.ustring.sub( target_str, pos, pos )</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>end</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 292:</td> <td colspan="2" class="diff-lineno">Line 263:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>This function duplicates the behavior of {{str_find}}, including all of its quirks.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>This function duplicates the behavior of {{str_find}}, including all of its quirks.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>This is provided in order to support existing templates, but is NOT RECOMMENDED for<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>This is provided in order to support existing templates, but is NOT RECOMMENDED for</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>new code and templates. New code is recommended to use the "find" function instead.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>new code and templates. New code is recommended to use the "find" function instead.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 303:</td> <td colspan="2" class="diff-lineno">Line 274:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str.str_find( frame )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str.str_find( frame )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local new_args = str._getParameters( frame.args, {'source', 'target'} )<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local new_args = str._getParameters( frame.args, {'source', 'target'} )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local source_str = new_args['source'] or ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local source_str = new_args['source'] or ''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local target_str = new_args['target'] or ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local target_str = new_args['target'] or ''</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>if target_str == '' then</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>if target_str == '' then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>return 1<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>return 1</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>end<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local start = mw.ustring.find( source_str, target_str, 1, true )</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local start = mw.ustring.find( source_str, target_str, 1, true )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>if start == nil then</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>if start == nil then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>start = -1</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>start = -1</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>end</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>return start</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>return start</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>end</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 338:</td> <td colspan="2" class="diff-lineno">Line 309:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>If invoked using named parameters, Mediawiki will automatically remove any leading or</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>If invoked using named parameters, Mediawiki will automatically remove any leading or</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>trailing whitespace from the parameter. In some circumstances this is desirable, in<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>trailing whitespace from the parameter. In some circumstances this is desirable, in</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>other cases one may want to preserve the whitespace.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>other cases one may want to preserve the whitespace.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>This function returns the first index >= "start" where "target" can be found<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>This function returns the first index >= "start" where "target" can be found</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>within "source". Indices are 1-based. If "target" is not found, then this<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>within "source". Indices are 1-based. If "target" is not found, then this</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function returns 0. If either "source" or "target" are missing / empty, this</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function returns 0. If either "source" or "target" are missing / empty, this</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function also returns 0.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function also returns 0.</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 349:</td> <td colspan="2" class="diff-lineno">Line 320:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str.find( frame )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str.find( frame )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )<del class="diffchange diffchange-inline">; </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local source_str = new_args['source'] or ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local source_str = new_args['source'] or ''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local pattern = new_args['target'] or ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local pattern = new_args['target'] or ''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local start_pos = tonumber(new_args['start']) or 1<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local start_pos = tonumber(new_args['start']) or 1</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local plain = new_args['plain'] or true<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local plain = new_args['plain'] or true</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if source_str == '' or pattern == '' then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return 0;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> plain = str._getBoolean( plain );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if source_str == '' or pattern == '' then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> local start = mw.ustring.find( source_str, pattern, start_pos, plain )</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return 0</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if start == nil then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> start = 0</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> plain = str._getBoolean( plain )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return start</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local start = mw.ustring.find( source_str, pattern, start_pos, plain )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if start == nil then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> start = 0</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return start</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>end</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 387:</td> <td colspan="2" class="diff-lineno">Line 358:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> count: The number of occurences to replace, defaults to all.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> count: The number of occurences to replace, defaults to all.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> plain: Boolean flag indicating that pattern should be understood as plain</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> plain: Boolean flag indicating that pattern should be understood as plain</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> text and not as a Lua style regular expression, defaults to true<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> text and not as a Lua style regular expression, defaults to true</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str.replace( frame )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str.replace( frame )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )<del class="diffchange diffchange-inline">; </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local source_str = new_args['source'] or ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local source_str = new_args['source'] or ''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local pattern = new_args['pattern'] or ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local pattern = new_args['pattern'] or ''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local replace = new_args['replace'] or ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local replace = new_args['replace'] or ''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local count = tonumber( new_args['count'] )<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local count = tonumber( new_args['count'] )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local plain = new_args['plain'] or true<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local plain = new_args['plain'] or true</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> if source_str == '' or pattern == '' then</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> return source_str;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> plain = str._getBoolean( plain );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> <del class="diffchange diffchange-inline">if</del> <del class="diffchange diffchange-inline">plain</del> then</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> if</ins> <ins class="diffchange diffchange-inline">source_str</ins> <ins class="diffchange diffchange-inline">==</ins> <ins class="diffchange diffchange-inline">''</ins> <ins class="diffchange diffchange-inline">or pattern ==</ins> <ins class="diffchange diffchange-inline">''</ins> then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return source_str</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> pattern = str._escapePattern( pattern );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> replace = mw.ustring.gsub( replace, "%%", "%%%%" ); --Only need to escape replacement sequences.</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> plain = str._getBoolean( plain )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> local result;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>if <del class="diffchange diffchange-inline">count ~= nil</del> then</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>if <ins class="diffchange diffchange-inline">plain</ins> then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> pattern = str._escapePattern( pattern )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> result = mw.ustring.gsub( source_str, pattern, replace, count );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> else</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> result = mw.ustring.gsub( source_str, pattern, replace );</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> return</del> result<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> local</ins> result</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if count ~= nil then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> result = mw.ustring.gsub( source_str, pattern, replace, count )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> else</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> result = mw.ustring.gsub( source_str, pattern, replace )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return result</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>end</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>--[[<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>--[[</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> simple function to pipe string.rep to templates.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> simple function to pipe string.rep to templates.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str.rep( frame )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str.rep( frame )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local repetitions = tonumber( frame.args[2] )</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local repetitions = tonumber( frame.args[2] )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>if not repetitions then<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>if not repetitions then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>end</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>end</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>return string.rep( frame.args[1] or '', repetitions )</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>return string.rep( frame.args[1] or '', repetitions )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>--[[</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>escapePattern</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>This function escapes special characters from a Lua string pattern. See [1]</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>for details on how patterns work.</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>Usage:</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>{{#invoke:String|escapePattern|pattern_string}}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>Parameters</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> pattern_string: The pattern string to escape.</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>]]</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>function str.escapePattern( frame )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local pattern_str = frame.args[1]</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if not pattern_str then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return str._error( 'No pattern string specified' )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local result = str._escapePattern( pattern_str )</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return result</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>--[[</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>count</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>This function counts the number of occurrences of one string in another.</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>]]</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>function str.count(frame)</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local source = args.source or ''</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local pattern = args.pattern or ''</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local plain = str._getBoolean(args.plain or true)</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if plain then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> pattern = str._escapePattern(pattern)</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local _, count = mw.ustring.gsub(source, pattern, '')</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return count</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>--[[</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>endswith</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>This function determines whether a string ends with another string.</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>]]</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>function str.endswith(frame)</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local args = str._getParameters(frame.args, {'source', 'pattern'})</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local source = args.source or ''</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local pattern = args.pattern or ''</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if pattern == '' then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> -- All strings end with the empty string.</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return "yes"</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return "yes"</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> else</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return ""</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>--[[</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>join</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>Join all non empty arguments together; the first argument is the separator.</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>Usage:</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>{{#invoke:String|join|sep|one|two|three}}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>]]</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>function str.join(frame)</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local args = {}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> local sep</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> for _, v in ipairs( frame.args ) do</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if sep then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> if v ~= '' then</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> table.insert(args, v)</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> else</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> sep = v</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return table.concat( args, sep or '' )</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>end</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 437:</td> <td colspan="2" class="diff-lineno">Line 487:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str._getParameters( frame_args, arg_list )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str._getParameters( frame_args, arg_list )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local new_args = {}<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local new_args = {}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local index = 1<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local index = 1</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local value<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local value</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>for <del class="diffchange diffchange-inline">i</del>,arg in ipairs( arg_list ) do</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>for <ins class="diffchange diffchange-inline">_</ins>,<ins class="diffchange diffchange-inline"> </ins>arg in ipairs( arg_list ) do</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>value = frame_args[arg]</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>value = frame_args[arg]</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>if value == nil then</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>if value == nil then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>value = frame_args[index]<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>value = frame_args[index]</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>index = index + 1<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>index = index + 1</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>end</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>end</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>new_args[arg] = value<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>new_args[arg] = value</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>end</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>return new_args<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>return new_args</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>end<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>--[[</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>--[[</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 457:</td> <td colspan="2" class="diff-lineno">Line 507:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str._error( error_str )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str._error( error_str )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local frame = mw.getCurrentFrame()<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local frame = mw.getCurrentFrame()</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local error_category = frame.args.error_category or 'Errors reported by Module String'<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local error_category = frame.args.error_category or 'Errors reported by Module String'</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local ignore_errors = frame.args.ignore_errors or false<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local ignore_errors = frame.args.ignore_errors or false</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local no_category = frame.args.no_category or false<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local no_category = frame.args.no_category or false</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>if str._getBoolean(ignore_errors) then</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>if str._getBoolean(ignore_errors) then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>return ''<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>return ''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>end</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>end</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>if error_category ~= '' and not str._getBoolean( no_category ) then</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>if error_category ~= '' and not str._getBoolean( no_category ) then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>error_str = '[[Category:' .. error_category .. ']]' .. error_str<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>error_str = '[[Category:' .. error_category .. ']]' .. error_str</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>return error_str<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>return error_str</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>end</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 478:</td> <td colspan="2" class="diff-lineno">Line 528:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str._getBoolean( boolean_str )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str._getBoolean( boolean_str )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>local boolean_value<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>local boolean_value</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>if type( boolean_str ) == 'string' then</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>if type( boolean_str ) == 'string' then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>boolean_str = boolean_str:lower()<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>boolean_str = boolean_str:lower()</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>or boolean_str == '' then</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>or boolean_str == '' then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>boolean_value = false<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>boolean_value = false</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>else</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>else</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>boolean_value = true<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>boolean_value = true</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> end</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> end </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>elseif type( boolean_str ) == 'boolean' then</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>elseif type( boolean_str ) == 'boolean' then</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>boolean_value = boolean_str<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>boolean_value = boolean_str</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>else</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>else</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>error( 'No boolean value found' )<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>error( 'No boolean value found' )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>end<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>end</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>return boolean_value</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>return boolean_value</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>end</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>--[[</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>--[[</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>Helper function that escapes all pattern characters so that they will be treated<del class="diffchange diffchange-inline"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>Helper function that escapes all pattern characters so that they will be treated</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>as plain text.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>as plain text.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>function str._escapePattern( pattern_str )</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>function str._escapePattern( pattern_str )</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del>return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )<del class="diffchange diffchange-inline">;</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline"> </ins>return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>end</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>end</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> </table><hr class='diff-hr' id='mw-oldid' /> <h2 class='diff-currentversion-title'>Revision as of 02:30, 3 November 2019</h2> <div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="moduleheader"><div style="float:right"><div style="position:relative"> <div style="width:100px;height:100px;border-radius:50%;background-color:#19198A"></div> <div style="position:absolute;top:40px;color:#fff;font-family:Helvetica,Arial,sans-serif;font-weight:bold;font-size:52.5px;line-height:52.5px;">Lua</div> <div style="width:26.7px;height:26.7px;border-radius:50%;background-color:#fff;position:absolute;top:13.138699525547px;left:60.161300474453px"></div> </div></div><style data-mw-deduplicate="TemplateStyles:r1765858490">.mw-parser-output .module-nav .tab1 a,.mw-parser-output .module-nav .tab2 a,.mw-parser-output .module-nav .tab3 a{display:inline-block;padding:0.8em;background-position:inherit;background-repeat:inherit;border-right:1px solid rgba(0,0,0,0.13)}.mw-parser-output .module-nav .tab1 a{background-image:linear-gradient(to bottom,#f2f6f8 0%,#d8e1e7 50%,#c3d4dd 100%)}.mw-parser-output .module-nav .tab2 a{background-image:linear-gradient(to bottom,#ebf7de 0%,#cee0bc 100%)}.mw-parser-output .module-nav .tab3 a{background-image:linear-gradient(to bottom,#fefcea 0%,#ede3a6 100%)}</style> <span class="module-nav"> <span class="tab1"><a class="mw-selflink-fragment" href="#com-module-code">Code</a></span><span class="tab1"><a href="/w/index.php?title=Module_talk:String&action=edit&redlink=1" class="new" title="Module talk:String (page does not exist)">Discussion</a></span><span class="tab1"><a class="external text" href="https://www.wikidata.org/w/index.php?title=Special:WhatLinksHere/:Module:String&limit=999">Links</a></span><span class="tab1"><a class="external text" href="https://templatecount.toolforge.org/index.php?lang=wikidata&namespace=828&name=String">Link count</a></span> <span class="tab2"><a href="/wiki/Special:PrefixIndex/Module:String" title="Special:PrefixIndex/Module:String">Subpages</a></span><span class="tab2"><a href="/wiki/Special:MyLanguage/Module:String/doc" title="Special:MyLanguage/Module:String/doc">Documentation</a></span><span class="tab2"><a href="/w/index.php?title=Module:String/testcases&action=edit&redlink=1" class="new" title="Module:String/testcases (page does not exist)">Tests</a></span><span class="tab2"><a href="/w/index.php?title=Module_talk:String/testcases&action=edit&redlink=1" class="new" title="Module talk:String/testcases (page does not exist)">Results</a></span><span class="tab2"><a href="/w/index.php?title=Module:String/sandbox&action=edit&redlink=1" class="new" title="Module:String/sandbox (page does not exist)">Sandbox</a></span><span class="tab2"><a class="mw-selflink selflink">Live code</a></span> <span class="tab3"><a href="/wiki/Special:PrefixIndex/Module:" title="Special:PrefixIndex/Module:">All modules</a></span></span></div> <p>This module is intended to provide access to basic string functions. </p><p>Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. </p> <div id="toc" class="toc" role="navigation" aria-labelledby="mw-toc-heading"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="en" dir="ltr"><h2 id="mw-toc-heading">Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div> <ul> <li class="toclevel-1"><a href="#Global_options"><span class="tocnumber">1</span> <span class="toctext">Global options</span></a></li> <li class="toclevel-1"><a href="#count"><span class="tocnumber">2</span> <span class="toctext">count</span></a></li> <li class="toclevel-1"><a href="#len"><span class="tocnumber">3</span> <span class="toctext">len</span></a></li> <li class="toclevel-1"><a href="#sub"><span class="tocnumber">4</span> <span class="toctext">sub</span></a></li> <li class="toclevel-1"><a href="#sublength"><span class="tocnumber">5</span> <span class="toctext">sublength</span></a></li> <li class="toclevel-1"><a href="#match"><span class="tocnumber">6</span> <span class="toctext">match</span></a></li> <li class="toclevel-1"><a href="#pos"><span class="tocnumber">7</span> <span class="toctext">pos</span></a></li> <li class="toclevel-1"><a href="#str_find"><span class="tocnumber">8</span> <span class="toctext">str_find</span></a></li> <li class="toclevel-1"><a href="#find"><span class="tocnumber">9</span> <span class="toctext">find</span></a></li> <li class="toclevel-1"><a href="#replace"><span class="tocnumber">10</span> <span class="toctext">replace</span></a></li> <li class="toclevel-1"><a href="#rep"><span class="tocnumber">11</span> <span class="toctext">rep</span></a></li> <li class="toclevel-1"><a href="#Code"><span class="tocnumber">12</span> <span class="toctext">Code</span></a></li> </ul> </div> <div class="mw-heading mw-heading2"><h2 id="Global_options">Global options</h2></div> <dl><dt>ignore_errors</dt> <dd>If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message.</dd> <dt>error_category</dt> <dd>If an error occurs, specifies the name of a category to include with the error message. The default category is <a href="/wiki/Category:Errors_reported_by_Module_String" title="Category:Errors reported by Module String">Category:Errors reported by Module String</a>.</dd> <dt>no_category</dt> <dd>If set to 'true' or 1, no category will be added if an error is generated.</dd></dl> <p>Unit tests for this module are available at <a href="/w/index.php?title=Module:String/testcases&action=edit&redlink=1" class="new" title="Module:String/testcases (page does not exist)">Module:String/testcases</a>. </p> <div class="mw-heading mw-heading2"><h2 id="count">count</h2></div> <p>Counts the number of times a given pattern appears in the arguments that get passed on to this module. </p><p>Usage: </p> <dl><dd><code>{{#invoke:String|count|<i>source_str</i>|<i>pattern_string</i>|<i>plain_flag</i>}}</code></dd></dl> <p>OR </p> <dl><dd><code>{{#invoke:String|count|source= <i>source_string</i> |pattern= <i>pattern_string</i>|plain= <i>plain_flag</i> }}</code></dd></dl> <p>Parameters: </p> <dl><dt>source_string</dt> <dd>The string to count occurrences in</dd> <dt>pattern</dt> <dd>The string or pattern to count occurrences of within source</dd> <dt>plain</dt> <dd>Boolean flag indicating that pattern should be understood as plain text and not as a <a href="https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns" class="extiw" title="mw:Extension:Scribunto/Lua reference manual">Scribunto ustring pattern</a> (a unicode-friendly <a href="https://en.wikipedia.org/wiki/en:Lua_(programming_language)" class="extiw" title="w:en:Lua (programming language)">Lua</a>-style <a href="https://en.wikipedia.org/wiki/en:regular_expression" class="extiw" title="w:en:regular expression">regular expression</a>); defaults to true</dd></dl> <p>Examples: </p> <ul><li>Count of 'a': <code>"{{#invoke:String|count|aabbcc|a}}"</code> → "2"</li> <li>Count of "either 'a' or 'c' ":<code>"{{#invoke:String|count|aabbcc|[ac]|plain=false}}"</code> → "4"</li> <li>Count of "not 'a' ": <code>"{{#invoke:String|count|aaabaaac|[^a]|plain=false}}"</code> → "2"</li> <li>Count of whitespaces : <code>"{{#invoke:String|count|aaa b aaa c|[ ]|plain=false}}"</code> → "3"</li></ul> <ul><li>Count of "starts with 'a' ": <code>"{{#invoke:String|count|aaabaaac|^a|plain=false}}"</code> → "1"</li></ul> <div class="mw-heading mw-heading2"><h2 id="len">len</h2></div> <p>This function returns the length of the target string. </p><p>Usage: </p> <dl><dd><code>{{#invoke:String|len|<i>target_string</i>}}</code></dd></dl> <p>OR </p> <dl><dd><code>{{#invoke:String|len|s= <i>target_string</i> }}</code></dd></dl> <p>Parameters: </p> <dl><dt>s</dt> <dd>The string whose length to report</dd></dl> <div class="mw-heading mw-heading2"><h2 id="sub">sub</h2></div> <dl><dd>This function returns a substring of the target string at specified indices.</dd></dl> <p>Usage: </p> <dl><dd><code>{{#invoke:String|sub|<i>target_string</i>|<i>start_index</i>|<i>end_index</i>}}</code></dd></dl> <p>OR </p> <dl><dd><code>{{#invoke:String|sub|s= <i>target_string</i> |i= <i>start_index</i> |j= <i>end_index</i> }}</code></dd></dl> <p>Parameters: </p> <dl><dt>s</dt> <dd>The string to return a subset of</dd> <dt>i</dt> <dd>The first index of the substring to return, defaults to 1.</dd> <dt>j</dt> <dd>The last index of the string to return, defaults to the last character.</dd></dl> <p>The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. </p><p>If the requested indices are out of range for the given string, an error is reported. </p> <div class="mw-heading mw-heading2"><h2 id="sublength">sublength</h2></div> <p>This function implements the features of <code>{{<a href="/w/index.php?title=Template:Str_sub_old&action=edit&redlink=1" class="new" title="Template:Str sub old (page does not exist)">Str sub old</a>}}</code> and is kept in order to maintain these older templates. </p> <div class="mw-heading mw-heading2"><h2 id="match">match</h2></div> <p>This function returns a substring from the source string that matches a specified pattern. </p><p>Usage: </p> <dl><dd><code>{{#invoke:String|match|<i>source_string</i>|<i>pattern_string</i>|<i>start_index</i>|<i>match_number</i>|<i>plain_flag</i>|<i>nomatch_output</i>}}</code></dd></dl> <p>OR </p> <dl><dd><code>{{#invoke:String|match|s= <i>source_string</i> |pattern= <i>pattern_string</i> |start= <i>start_index</i>|match= <i>match_number</i>|plain= <i>plain_flag</i> |nomatch= <i>nomatch_output</i> }}</code></dd></dl> <p>Parameters: </p> <dl><dt>s</dt> <dd>The string to search</dd> <dt>pattern</dt> <dd>The pattern or string to find within the string</dd> <dt>start</dt> <dd>The index within the source string to start the search. The first character of the string has index 1. Defaults to 1.</dd> <dt>match</dt> <dd>In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1.</dd> <dt>plain</dt> <dd>A flag indicating that the pattern should be understood as plain text. Defaults to false.</dd> <dt>nomatch</dt> <dd>If no match is found, output the "nomatch" value rather than an error.</dd></dl> <p>If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. </p><p>For information on constructing <a href="https://en.wikipedia.org/wiki/en:Lua_(programming_language)" class="extiw" title="w:en:Lua (programming language)">Lua</a> patterns, a form of <a href="https://en.wikipedia.org/wiki/en:regular_expression" class="extiw" title="w:en:regular expression">regular expression</a>, see: </p> <ul><li><a href="https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns" class="extiw" title="mw:Extension:Scribunto/Lua reference manual">Scribunto patterns</a></li> <li><a href="https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns" class="extiw" title="mw:Extension:Scribunto/Lua reference manual">Scribunto Unicode string patterns</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="pos">pos</h2></div> <p>This function returns a single character from the target string at position pos. </p><p>Usage: </p> <dl><dd><code>{{#invoke:String|pos|<i>target_string</i>|<i>index_value</i>}}</code></dd></dl> <p>OR </p> <dl><dd><code>{{#invoke:String|pos|target= <i>target_string</i> |pos= <i>index_value</i> }}</code></dd></dl> <p>Parameters: </p> <dl><dt>target</dt> <dd>The string to search</dd> <dt>pos</dt> <dd>The index for the character to return</dd></dl> <p>The first character has an index value of 1. </p><p>If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. </p><p>A requested value of zero, or a value greater than the length of the string returns an error. </p> <div class="mw-heading mw-heading2"><h2 id="str_find">str_find</h2></div> <p>This function duplicates the behavior of <code>{{<a href="/wiki/Template:Str_find" title="Template:Str find">Str find</a>}}</code>, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. </p><p>Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". </p><p>Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. </p> <div class="mw-heading mw-heading2"><h2 id="find">find</h2></div> <p>This function allows one to search for a target string or pattern within another string. </p><p>Usage: </p> <dl><dd><code>{{#invoke:String|find|<i>source_str</i>|<i>target_string</i>|<i>start_index</i>|<i>plain_flag</i>}}</code></dd></dl> <p>OR </p> <dl><dd><code>{{#invoke:String|find|source= <i>source_str</i> |target= <i>target_str</i> |start= <i>start_index</i>|plain= <i>plain_flag</i> }}</code></dd></dl> <p>Parameters: </p> <dl><dt>source</dt> <dd>The string to search</dd> <dt>target</dt> <dd>The string or pattern to find within source</dd> <dt>start</dt> <dd>The index within the source string to start the search, defaults to 1</dd> <dt>plain</dt> <dd>Boolean flag indicating that target should be understood as plain text and not as a <a href="https://en.wikipedia.org/wiki/en:Lua_(programming_language)" class="extiw" title="w:en:Lua (programming language)">Lua</a>-style <a href="https://en.wikipedia.org/wiki/en:regular_expression" class="extiw" title="w:en:regular expression">regular expression</a>, defaults to true</dd></dl> <p>This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. </p><p>This function should be safe for UTF-8 strings. </p> <div class="mw-heading mw-heading2"><h2 id="replace">replace</h2></div> <p>This function allows one to replace a target string or pattern within another string. </p><p>Usage: </p> <dl><dd><code>{{#invoke:String|replace|<i>source_str</i>|<i>pattern_string</i>|<i>replace_string</i>|<i>replacement_count</i>|<i>plain_flag</i>}}</code></dd></dl> <p>OR </p> <dl><dd><code>{{#invoke:String|replace|source= <i>source_string</i> |pattern= <i>pattern_string</i>|replace= <i>replace_string</i> |count= <i>replacement_count</i> |plain= <i>plain_flag</i> }}</code></dd></dl> <p>Parameters: </p> <dl><dt>source</dt> <dd>The string to search</dd> <dt>pattern</dt> <dd>The string or pattern to find within source</dd> <dt>replace</dt> <dd>The replacement text</dd> <dt>count</dt> <dd>The number of occurrences to replace; defaults to all</dd> <dt>plain</dt> <dd>Boolean flag indicating that pattern should be understood as plain text and not as a <a href="https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns" class="extiw" title="mw:Extension:Scribunto/Lua reference manual">Scribunto ustring pattern</a> (a unicode-friendly <a href="https://en.wikipedia.org/wiki/en:Lua_(programming_language)" class="extiw" title="w:en:Lua (programming language)">Lua</a>-style <a href="https://en.wikipedia.org/wiki/en:regular_expression" class="extiw" title="w:en:regular expression">regular expression</a>); defaults to true</dd></dl> <div class="mw-heading mw-heading2"><h2 id="rep">rep</h2></div> <p>Repeats a string <i>n</i> times. A simple function to pipe string.rep to templates. Usage: </p> <dl><dd><code>{{#invoke:String|rep|<i>source</i>|<i>count</i>}}</code></dd></dl> <p>Parameters: </p> <dl><dt>source</dt> <dd>The string to repeat</dd> <dt>count</dt> <dd>The number of repetitions.</dd></dl> <p>Example <code>{{#invoke:String|rep|hello|3}}</code> gives hellohellohello </p> <h2 id="Code" id="com-module-code">Code</h2><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="cm">--[[</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="cm">This module is intended to provide access to basic string functions.</span> </span><span id="L-4"><a href="#L-4"><span class="linenos" data-line="4"></span></a> </span><span id="L-5"><a href="#L-5"><span class="linenos" data-line="5"></span></a><span class="cm">Most of the functions provided here can be invoked with named parameters,</span> </span><span id="L-6"><a href="#L-6"><span class="linenos" data-line="6"></span></a><span class="cm">unnamed parameters, or a mixture. If named parameters are used, Mediawiki will</span> </span><span id="L-7"><a href="#L-7"><span class="linenos" data-line="7"></span></a><span class="cm">automatically remove any leading or trailing whitespace from the parameter.</span> </span><span id="L-8"><a href="#L-8"><span class="linenos" data-line="8"></span></a><span class="cm">Depending on the intended use, it may be advantageous to either preserve or</span> </span><span id="L-9"><a href="#L-9"><span class="linenos" data-line="9"></span></a><span class="cm">remove such whitespace.</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">Global options</span> </span><span id="L-12"><a href="#L-12"><span class="linenos" data-line="12"></span></a><span class="cm"> ignore_errors: If set to 'true' or 1, any error condition will result in</span> </span><span id="L-13"><a href="#L-13"><span class="linenos" data-line="13"></span></a><span class="cm"> an empty string being returned rather than an error message.</span> </span><span id="L-14"><a href="#L-14"><span class="linenos" data-line="14"></span></a> </span><span id="L-15"><a href="#L-15"><span class="linenos" data-line="15"></span></a><span class="cm"> error_category: If an error occurs, specifies the name of a category to</span> </span><span id="L-16"><a href="#L-16"><span class="linenos" data-line="16"></span></a><span class="cm"> include with the error message. The default category is</span> </span><span id="L-17"><a href="#L-17"><span class="linenos" data-line="17"></span></a><span class="cm"> [Category:Errors reported by Module String].</span> </span><span id="L-18"><a href="#L-18"><span class="linenos" data-line="18"></span></a> </span><span id="L-19"><a href="#L-19"><span class="linenos" data-line="19"></span></a><span class="cm"> no_category: If set to 'true' or 1, no category will be added if an error</span> </span><span id="L-20"><a href="#L-20"><span class="linenos" data-line="20"></span></a><span class="cm"> is generated.</span> </span><span id="L-21"><a href="#L-21"><span class="linenos" data-line="21"></span></a> </span><span id="L-22"><a href="#L-22"><span class="linenos" data-line="22"></span></a><span class="cm">Unit tests for this module are available at Module:String/tests.</span> </span><span id="L-23"><a href="#L-23"><span class="linenos" data-line="23"></span></a><span class="cm">]]</span> </span><span id="L-24"><a href="#L-24"><span class="linenos" data-line="24"></span></a> </span><span id="L-25"><a href="#L-25"><span class="linenos" data-line="25"></span></a><span class="kd">local</span> <span class="n">str</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-26"><a href="#L-26"><span class="linenos" data-line="26"></span></a> </span><span id="L-27"><a href="#L-27"><span class="linenos" data-line="27"></span></a><span class="cm">--[[</span> </span><span id="L-28"><a href="#L-28"><span class="linenos" data-line="28"></span></a><span class="cm">len</span> </span><span id="L-29"><a href="#L-29"><span class="linenos" data-line="29"></span></a> </span><span id="L-30"><a href="#L-30"><span class="linenos" data-line="30"></span></a><span class="cm">This function returns the length of the target string.</span> </span><span id="L-31"><a href="#L-31"><span class="linenos" data-line="31"></span></a> </span><span id="L-32"><a href="#L-32"><span class="linenos" data-line="32"></span></a><span class="cm">Usage:</span> </span><span id="L-33"><a href="#L-33"><span class="linenos" data-line="33"></span></a><span class="cm">{{#invoke:String|len|target_string|}}</span> </span><span id="L-34"><a href="#L-34"><span class="linenos" data-line="34"></span></a><span class="cm">OR</span> </span><span id="L-35"><a href="#L-35"><span class="linenos" data-line="35"></span></a><span class="cm">{{#invoke:String|len|s=target_string}}</span> </span><span id="L-36"><a href="#L-36"><span class="linenos" data-line="36"></span></a> </span><span id="L-37"><a href="#L-37"><span class="linenos" data-line="37"></span></a><span class="cm">Parameters</span> </span><span id="L-38"><a href="#L-38"><span class="linenos" data-line="38"></span></a><span class="cm"> s: The string whose length to report</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">If invoked using named parameters, Mediawiki will automatically remove any leading or</span> </span><span id="L-41"><a href="#L-41"><span class="linenos" data-line="41"></span></a><span class="cm">trailing whitespace from the target string.</span> </span><span id="L-42"><a href="#L-42"><span class="linenos" data-line="42"></span></a><span class="cm">]]</span> </span><span id="L-43"><a href="#L-43"><span class="linenos" data-line="43"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">len</span><span class="p">(</span> <span class="n">frame</span> <span class="p">)</span> </span><span id="L-44"><a href="#L-44"><span class="linenos" data-line="44"></span></a> <span class="kd">local</span> <span class="n">new_args</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getParameters</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="p">{</span><span class="s1">'s'</span><span class="p">}</span> <span class="p">)</span> </span><span id="L-45"><a href="#L-45"><span class="linenos" data-line="45"></span></a> <span class="kd">local</span> <span class="n">s</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'s'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-46"><a href="#L-46"><span class="linenos" data-line="46"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">len</span><span class="p">(</span> <span class="n">s</span> <span class="p">)</span> </span><span id="L-47"><a href="#L-47"><span class="linenos" data-line="47"></span></a><span class="kr">end</span> </span><span id="L-48"><a href="#L-48"><span class="linenos" data-line="48"></span></a> </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 class="cm">sub</span> </span><span id="L-51"><a href="#L-51"><span class="linenos" data-line="51"></span></a> </span><span id="L-52"><a href="#L-52"><span class="linenos" data-line="52"></span></a><span class="cm">This function returns a substring of the target string at specified indices.</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="cm">Usage:</span> </span><span id="L-55"><a href="#L-55"><span class="linenos" data-line="55"></span></a><span class="cm">{{#invoke:String|sub|target_string|start_index|end_index}}</span> </span><span id="L-56"><a href="#L-56"><span class="linenos" data-line="56"></span></a><span class="cm">OR</span> </span><span id="L-57"><a href="#L-57"><span class="linenos" data-line="57"></span></a><span class="cm">{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}</span> </span><span id="L-58"><a href="#L-58"><span class="linenos" data-line="58"></span></a> </span><span id="L-59"><a href="#L-59"><span class="linenos" data-line="59"></span></a><span class="cm">Parameters</span> </span><span id="L-60"><a href="#L-60"><span class="linenos" data-line="60"></span></a><span class="cm"> s: The string to return a subset of</span> </span><span id="L-61"><a href="#L-61"><span class="linenos" data-line="61"></span></a><span class="cm"> i: The fist index of the substring to return, defaults to 1.</span> </span><span id="L-62"><a href="#L-62"><span class="linenos" data-line="62"></span></a><span class="cm"> j: The last index of the string to return, defaults to the last character.</span> </span><span id="L-63"><a href="#L-63"><span class="linenos" data-line="63"></span></a> </span><span id="L-64"><a href="#L-64"><span class="linenos" data-line="64"></span></a><span class="cm">The first character of the string is assigned an index of 1. If either i or j</span> </span><span id="L-65"><a href="#L-65"><span class="linenos" data-line="65"></span></a><span class="cm">is a negative value, it is interpreted the same as selecting a character by</span> </span><span id="L-66"><a href="#L-66"><span class="linenos" data-line="66"></span></a><span class="cm">counting from the end of the string. Hence, a value of -1 is the same as</span> </span><span id="L-67"><a href="#L-67"><span class="linenos" data-line="67"></span></a><span class="cm">selecting the last character of the string.</span> </span><span id="L-68"><a href="#L-68"><span class="linenos" data-line="68"></span></a> </span><span id="L-69"><a href="#L-69"><span class="linenos" data-line="69"></span></a><span class="cm">If the requested indices are out of range for the given string, an error is</span> </span><span id="L-70"><a href="#L-70"><span class="linenos" data-line="70"></span></a><span class="cm">reported.</span> </span><span id="L-71"><a href="#L-71"><span class="linenos" data-line="71"></span></a><span class="cm">]]</span> </span><span id="L-72"><a href="#L-72"><span class="linenos" data-line="72"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">sub</span><span class="p">(</span> <span class="n">frame</span> <span class="p">)</span> </span><span id="L-73"><a href="#L-73"><span class="linenos" data-line="73"></span></a> <span class="kd">local</span> <span class="n">new_args</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getParameters</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="p">{</span> <span class="s1">'s'</span><span class="p">,</span> <span class="s1">'i'</span><span class="p">,</span> <span class="s1">'j'</span> <span class="p">}</span> <span class="p">)</span> </span><span id="L-74"><a href="#L-74"><span class="linenos" data-line="74"></span></a> <span class="kd">local</span> <span class="n">s</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'s'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-75"><a href="#L-75"><span class="linenos" data-line="75"></span></a> <span class="kd">local</span> <span class="n">i</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'i'</span><span class="p">]</span> <span class="p">)</span> <span class="ow">or</span> <span class="mi">1</span> </span><span id="L-76"><a href="#L-76"><span class="linenos" data-line="76"></span></a> <span class="kd">local</span> <span class="n">j</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'j'</span><span class="p">]</span> <span class="p">)</span> <span class="ow">or</span> <span class="o">-</span><span class="mi">1</span> </span><span id="L-77"><a href="#L-77"><span class="linenos" data-line="77"></span></a> </span><span id="L-78"><a href="#L-78"><span class="linenos" data-line="78"></span></a> <span class="kd">local</span> <span class="n">len</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">len</span><span class="p">(</span> <span class="n">s</span> <span class="p">)</span> </span><span id="L-79"><a href="#L-79"><span class="linenos" data-line="79"></span></a> </span><span id="L-80"><a href="#L-80"><span class="linenos" data-line="80"></span></a> <span class="c1">-- Convert negatives for range checking</span> </span><span id="L-81"><a href="#L-81"><span class="linenos" data-line="81"></span></a> <span class="kr">if</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-82"><a href="#L-82"><span class="linenos" data-line="82"></span></a> <span class="n">i</span> <span class="o">=</span> <span class="n">len</span> <span class="o">+</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-83"><a href="#L-83"><span class="linenos" data-line="83"></span></a> <span class="kr">end</span> </span><span id="L-84"><a href="#L-84"><span class="linenos" data-line="84"></span></a> <span class="kr">if</span> <span class="n">j</span> <span class="o"><</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-85"><a href="#L-85"><span class="linenos" data-line="85"></span></a> <span class="n">j</span> <span class="o">=</span> <span class="n">len</span> <span class="o">+</span> <span class="n">j</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-86"><a href="#L-86"><span class="linenos" data-line="86"></span></a> <span class="kr">end</span> </span><span id="L-87"><a href="#L-87"><span class="linenos" data-line="87"></span></a> </span><span id="L-88"><a href="#L-88"><span class="linenos" data-line="88"></span></a> <span class="kr">if</span> <span class="n">i</span> <span class="o">></span> <span class="n">len</span> <span class="ow">or</span> <span class="n">j</span> <span class="o">></span> <span class="n">len</span> <span class="ow">or</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">1</span> <span class="ow">or</span> <span class="n">j</span> <span class="o"><</span> <span class="mi">1</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="kr">return</span> <span class="n">str</span><span class="p">.</span><span class="n">_error</span><span class="p">(</span> <span class="s1">'String subset index out of range'</span> <span class="p">)</span> </span><span id="L-90"><a href="#L-90"><span class="linenos" data-line="90"></span></a> <span class="kr">end</span> </span><span id="L-91"><a href="#L-91"><span class="linenos" data-line="91"></span></a> <span class="kr">if</span> <span class="n">j</span> <span class="o"><</span> <span class="n">i</span> <span class="kr">then</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="n">str</span><span class="p">.</span><span class="n">_error</span><span class="p">(</span> <span class="s1">'String subset indices out of order'</span> <span class="p">)</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><span id="L-95"><a href="#L-95"><span class="linenos" data-line="95"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">sub</span><span class="p">(</span> <span class="n">s</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="p">)</span> </span><span id="L-96"><a href="#L-96"><span class="linenos" data-line="96"></span></a><span class="kr">end</span> </span><span id="L-97"><a href="#L-97"><span class="linenos" data-line="97"></span></a> </span><span id="L-98"><a href="#L-98"><span class="linenos" data-line="98"></span></a><span class="cm">--[[</span> </span><span id="L-99"><a href="#L-99"><span class="linenos" data-line="99"></span></a><span class="cm">This function implements that features of {{str sub old}} and is kept in order</span> </span><span id="L-100"><a href="#L-100"><span class="linenos" data-line="100"></span></a><span class="cm">to maintain these older templates.</span> </span><span id="L-101"><a href="#L-101"><span class="linenos" data-line="101"></span></a><span class="cm">]]</span> </span><span id="L-102"><a href="#L-102"><span class="linenos" data-line="102"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">sublength</span><span class="p">(</span> <span class="n">frame</span> <span class="p">)</span> </span><span id="L-103"><a href="#L-103"><span class="linenos" data-line="103"></span></a> <span class="kd">local</span> <span class="n">i</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">i</span> <span class="p">)</span> <span class="ow">or</span> <span class="mi">0</span> </span><span id="L-104"><a href="#L-104"><span class="linenos" data-line="104"></span></a> <span class="kd">local</span> <span class="n">len</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">len</span> <span class="p">)</span> </span><span id="L-105"><a href="#L-105"><span class="linenos" data-line="105"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">sub</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">s</span><span class="p">,</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">len</span> <span class="ow">and</span> <span class="p">(</span> <span class="n">i</span> <span class="o">+</span> <span class="n">len</span> <span class="p">)</span> <span class="p">)</span> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a><span class="kr">end</span> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></span></a> </span><span id="L-108"><a href="#L-108"><span class="linenos" data-line="108"></span></a><span class="cm">--[[</span> </span><span id="L-109"><a href="#L-109"><span class="linenos" data-line="109"></span></a><span class="cm">match</span> </span><span id="L-110"><a href="#L-110"><span class="linenos" data-line="110"></span></a> </span><span id="L-111"><a href="#L-111"><span class="linenos" data-line="111"></span></a><span class="cm">This function returns a substring from the source string that matches a</span> </span><span id="L-112"><a href="#L-112"><span class="linenos" data-line="112"></span></a><span class="cm">specified pattern.</span> </span><span id="L-113"><a href="#L-113"><span class="linenos" data-line="113"></span></a> </span><span id="L-114"><a href="#L-114"><span class="linenos" data-line="114"></span></a><span class="cm">Usage:</span> </span><span id="L-115"><a href="#L-115"><span class="linenos" data-line="115"></span></a><span class="cm">{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}</span> </span><span id="L-116"><a href="#L-116"><span class="linenos" data-line="116"></span></a><span class="cm">OR</span> </span><span id="L-117"><a href="#L-117"><span class="linenos" data-line="117"></span></a><span class="cm">{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index</span> </span><span id="L-118"><a href="#L-118"><span class="linenos" data-line="118"></span></a><span class="cm"> |match=match_number|plain=plain_flag|nomatch=nomatch_output}}</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="cm">Parameters</span> </span><span id="L-121"><a href="#L-121"><span class="linenos" data-line="121"></span></a><span class="cm"> s: The string to search</span> </span><span id="L-122"><a href="#L-122"><span class="linenos" data-line="122"></span></a><span class="cm"> pattern: The pattern or string to find within the string</span> </span><span id="L-123"><a href="#L-123"><span class="linenos" data-line="123"></span></a><span class="cm"> start: The index within the source string to start the search. The first</span> </span><span id="L-124"><a href="#L-124"><span class="linenos" data-line="124"></span></a><span class="cm"> character of the string has index 1. Defaults to 1.</span> </span><span id="L-125"><a href="#L-125"><span class="linenos" data-line="125"></span></a><span class="cm"> match: In some cases it may be possible to make multiple matches on a single</span> </span><span id="L-126"><a href="#L-126"><span class="linenos" data-line="126"></span></a><span class="cm"> string. This specifies which match to return, where the first match is</span> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a><span class="cm"> match= 1. If a negative number is specified then a match is returned</span> </span><span id="L-128"><a href="#L-128"><span class="linenos" data-line="128"></span></a><span class="cm"> counting from the last match. Hence match = -1 is the same as requesting</span> </span><span id="L-129"><a href="#L-129"><span class="linenos" data-line="129"></span></a><span class="cm"> the last match. Defaults to 1.</span> </span><span id="L-130"><a href="#L-130"><span class="linenos" data-line="130"></span></a><span class="cm"> plain: A flag indicating that the pattern should be understood as plain</span> </span><span id="L-131"><a href="#L-131"><span class="linenos" data-line="131"></span></a><span class="cm"> text. Defaults to false.</span> </span><span id="L-132"><a href="#L-132"><span class="linenos" data-line="132"></span></a><span class="cm"> nomatch: If no match is found, output the "nomatch" value rather than an error.</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">If invoked using named parameters, Mediawiki will automatically remove any leading or</span> </span><span id="L-135"><a href="#L-135"><span class="linenos" data-line="135"></span></a><span class="cm">trailing whitespace from each string. In some circumstances this is desirable, in</span> </span><span id="L-136"><a href="#L-136"><span class="linenos" data-line="136"></span></a><span class="cm">other cases one may want to preserve the whitespace.</span> </span><span id="L-137"><a href="#L-137"><span class="linenos" data-line="137"></span></a> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></span></a><span class="cm">If the match_number or start_index are out of range for the string being queried, then</span> </span><span id="L-139"><a href="#L-139"><span class="linenos" data-line="139"></span></a><span class="cm">this function generates an error. An error is also generated if no match is found.</span> </span><span id="L-140"><a href="#L-140"><span class="linenos" data-line="140"></span></a><span class="cm">If one adds the parameter ignore_errors=true, then the error will be suppressed and</span> </span><span id="L-141"><a href="#L-141"><span class="linenos" data-line="141"></span></a><span class="cm">an empty string will be returned on any failure.</span> </span><span id="L-142"><a href="#L-142"><span class="linenos" data-line="142"></span></a> </span><span id="L-143"><a href="#L-143"><span class="linenos" data-line="143"></span></a><span class="cm">For information on constructing Lua patterns, a form of [regular expression], see:</span> </span><span id="L-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></span></a><span class="cm">* http://www.lua.org/manual/5.1/manual.html#5.4.1</span> </span><span id="L-146"><a href="#L-146"><span class="linenos" data-line="146"></span></a><span class="cm">* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns</span> </span><span id="L-147"><a href="#L-147"><span class="linenos" data-line="147"></span></a><span class="cm">* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns</span> </span><span id="L-148"><a href="#L-148"><span class="linenos" data-line="148"></span></a> </span><span id="L-149"><a href="#L-149"><span class="linenos" data-line="149"></span></a><span class="cm">]]</span> </span><span id="L-150"><a href="#L-150"><span class="linenos" data-line="150"></span></a><span class="c1">-- This sub-routine is exported for use in other modules</span> </span><span id="L-151"><a href="#L-151"><span class="linenos" data-line="151"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">_match</span><span class="p">(</span> <span class="n">s</span><span class="p">,</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">match_index</span><span class="p">,</span> <span class="n">plain_flag</span><span class="p">,</span> <span class="n">nomatch</span> <span class="p">)</span> </span><span id="L-152"><a href="#L-152"><span class="linenos" data-line="152"></span></a> <span class="kr">if</span> <span class="n">s</span> <span class="o">==</span> <span class="s1">''</span> <span class="kr">then</span> </span><span id="L-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a> <span class="kr">return</span> <span class="n">str</span><span class="p">.</span><span class="n">_error</span><span class="p">(</span> <span class="s1">'Target string is empty'</span> <span class="p">)</span> </span><span id="L-154"><a href="#L-154"><span class="linenos" data-line="154"></span></a> <span class="kr">end</span> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a> <span class="kr">if</span> <span class="n">pattern</span> <span class="o">==</span> <span class="s1">''</span> <span class="kr">then</span> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a> <span class="kr">return</span> <span class="n">str</span><span class="p">.</span><span class="n">_error</span><span class="p">(</span> <span class="s1">'Pattern string is empty'</span> <span class="p">)</span> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></span></a> <span class="kr">end</span> </span><span id="L-158"><a href="#L-158"><span class="linenos" data-line="158"></span></a> <span class="n">start</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> <span class="ow">or</span> <span class="mi">1</span> </span><span id="L-159"><a href="#L-159"><span class="linenos" data-line="159"></span></a> <span class="kr">if</span> <span class="nb">math.abs</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> <span class="o"><</span> <span class="mi">1</span> <span class="ow">or</span> <span class="nb">math.abs</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> <span class="o">></span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">len</span><span class="p">(</span> <span class="n">s</span> <span class="p">)</span> <span class="kr">then</span> </span><span id="L-160"><a href="#L-160"><span class="linenos" data-line="160"></span></a> <span class="kr">return</span> <span class="n">str</span><span class="p">.</span><span class="n">_error</span><span class="p">(</span> <span class="s1">'Requested start is out of range'</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">end</span> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></span></a> <span class="kr">if</span> <span class="n">match_index</span> <span class="o">==</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-163"><a href="#L-163"><span class="linenos" data-line="163"></span></a> <span class="kr">return</span> <span class="n">str</span><span class="p">.</span><span class="n">_error</span><span class="p">(</span> <span class="s1">'Match index is out of range'</span> <span class="p">)</span> </span><span id="L-164"><a href="#L-164"><span class="linenos" data-line="164"></span></a> <span class="kr">end</span> </span><span id="L-165"><a href="#L-165"><span class="linenos" data-line="165"></span></a> <span class="kr">if</span> <span class="n">plain_flag</span> <span class="kr">then</span> </span><span id="L-166"><a href="#L-166"><span class="linenos" data-line="166"></span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_escapePattern</span><span class="p">(</span> <span class="n">pattern</span> <span class="p">)</span> </span><span id="L-167"><a href="#L-167"><span class="linenos" data-line="167"></span></a> <span class="kr">end</span> </span><span id="L-168"><a href="#L-168"><span class="linenos" data-line="168"></span></a> </span><span id="L-169"><a href="#L-169"><span class="linenos" data-line="169"></span></a> <span class="kd">local</span> <span class="n">result</span> </span><span id="L-170"><a href="#L-170"><span class="linenos" data-line="170"></span></a> <span class="kr">if</span> <span class="n">match_index</span> <span class="o">==</span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-171"><a href="#L-171"><span class="linenos" data-line="171"></span></a> <span class="c1">-- Find first match is simple case</span> </span><span id="L-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">match</span><span class="p">(</span> <span class="n">s</span><span class="p">,</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">start</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="kr">if</span> <span class="n">start</span> <span class="o">></span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-175"><a href="#L-175"><span class="linenos" data-line="175"></span></a> <span class="n">s</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">sub</span><span class="p">(</span> <span class="n">s</span><span class="p">,</span> <span class="n">start</span> <span class="p">)</span> </span><span id="L-176"><a href="#L-176"><span class="linenos" data-line="176"></span></a> <span class="kr">end</span> </span><span id="L-177"><a href="#L-177"><span class="linenos" data-line="177"></span></a> </span><span id="L-178"><a href="#L-178"><span class="linenos" data-line="178"></span></a> <span class="kd">local</span> <span class="n">iterator</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gmatch</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">pattern</span><span class="p">)</span> </span><span id="L-179"><a href="#L-179"><span class="linenos" data-line="179"></span></a> <span class="kr">if</span> <span class="n">match_index</span> <span class="o">></span> <span class="mi">0</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="c1">-- Forward search</span> </span><span id="L-181"><a href="#L-181"><span class="linenos" data-line="181"></span></a> <span class="kr">for</span> <span class="n">w</span> <span class="kr">in</span> <span class="n">iterator</span> <span class="kr">do</span> </span><span id="L-182"><a href="#L-182"><span class="linenos" data-line="182"></span></a> <span class="n">match_index</span> <span class="o">=</span> <span class="n">match_index</span> <span class="o">-</span> <span class="mi">1</span> </span><span id="L-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a> <span class="kr">if</span> <span class="n">match_index</span> <span class="o">==</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">w</span> </span><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a> <span class="kr">break</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 class="kr">else</span> </span><span id="L-189"><a href="#L-189"><span class="linenos" data-line="189"></span></a> <span class="c1">-- Reverse search</span> </span><span id="L-190"><a href="#L-190"><span class="linenos" data-line="190"></span></a> <span class="kd">local</span> <span class="n">result_table</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-191"><a href="#L-191"><span class="linenos" data-line="191"></span></a> <span class="kd">local</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-192"><a href="#L-192"><span class="linenos" data-line="192"></span></a> <span class="kr">for</span> <span class="n">w</span> <span class="kr">in</span> <span class="n">iterator</span> <span class="kr">do</span> </span><span id="L-193"><a href="#L-193"><span class="linenos" data-line="193"></span></a> <span class="n">result_table</span><span class="p">[</span><span class="n">count</span><span class="p">]</span> <span class="o">=</span> <span class="n">w</span> </span><span id="L-194"><a href="#L-194"><span class="linenos" data-line="194"></span></a> <span class="n">count</span> <span class="o">=</span> <span class="n">count</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-195"><a href="#L-195"><span class="linenos" data-line="195"></span></a> <span class="kr">end</span> </span><span id="L-196"><a href="#L-196"><span class="linenos" data-line="196"></span></a> </span><span id="L-197"><a href="#L-197"><span class="linenos" data-line="197"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">result_table</span><span class="p">[</span> <span class="n">count</span> <span class="o">+</span> <span class="n">match_index</span> <span class="p">]</span> </span><span id="L-198"><a href="#L-198"><span class="linenos" data-line="198"></span></a> <span class="kr">end</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">if</span> <span class="n">result</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-202"><a href="#L-202"><span class="linenos" data-line="202"></span></a> <span class="kr">if</span> <span class="n">nomatch</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-203"><a href="#L-203"><span class="linenos" data-line="203"></span></a> <span class="kr">return</span> <span class="n">str</span><span class="p">.</span><span class="n">_error</span><span class="p">(</span> <span class="s1">'Match not found'</span> <span class="p">)</span> </span><span id="L-204"><a href="#L-204"><span class="linenos" data-line="204"></span></a> <span class="kr">else</span> </span><span id="L-205"><a href="#L-205"><span class="linenos" data-line="205"></span></a> <span class="kr">return</span> <span class="n">nomatch</span> </span><span id="L-206"><a href="#L-206"><span class="linenos" data-line="206"></span></a> <span class="kr">end</span> </span><span id="L-207"><a href="#L-207"><span class="linenos" data-line="207"></span></a> <span class="kr">else</span> </span><span id="L-208"><a href="#L-208"><span class="linenos" data-line="208"></span></a> <span class="kr">return</span> <span class="n">result</span> </span><span id="L-209"><a href="#L-209"><span class="linenos" data-line="209"></span></a> <span class="kr">end</span> </span><span id="L-210"><a href="#L-210"><span class="linenos" data-line="210"></span></a><span class="kr">end</span> </span><span id="L-211"><a href="#L-211"><span class="linenos" data-line="211"></span></a><span class="c1">-- This is the entry point for #invoke:String|match</span> </span><span id="L-212"><a href="#L-212"><span class="linenos" data-line="212"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">match</span><span class="p">(</span> <span class="n">frame</span> <span class="p">)</span> </span><span id="L-213"><a href="#L-213"><span class="linenos" data-line="213"></span></a> <span class="kd">local</span> <span class="n">new_args</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getParameters</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="p">{</span><span class="s1">'s'</span><span class="p">,</span> <span class="s1">'pattern'</span><span class="p">,</span> <span class="s1">'start'</span><span class="p">,</span> <span class="s1">'match'</span><span class="p">,</span> <span class="s1">'plain'</span><span class="p">,</span> <span class="s1">'nomatch'</span><span class="p">}</span> <span class="p">)</span> </span><span id="L-214"><a href="#L-214"><span class="linenos" data-line="214"></span></a> <span class="kd">local</span> <span class="n">s</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'s'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-215"><a href="#L-215"><span class="linenos" data-line="215"></span></a> <span class="kd">local</span> <span class="n">start</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'start'</span><span class="p">]</span> <span class="p">)</span> <span class="ow">or</span> <span class="mi">1</span> </span><span id="L-216"><a href="#L-216"><span class="linenos" data-line="216"></span></a> <span class="kd">local</span> <span class="n">plain_flag</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getBoolean</span><span class="p">(</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'plain'</span><span class="p">]</span> <span class="ow">or</span> <span class="kc">false</span> <span class="p">)</span> </span><span id="L-217"><a href="#L-217"><span class="linenos" data-line="217"></span></a> <span class="kd">local</span> <span class="n">pattern</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'pattern'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-218"><a href="#L-218"><span class="linenos" data-line="218"></span></a> <span class="kd">local</span> <span class="n">match_index</span> <span class="o">=</span> <span class="nb">math.floor</span><span class="p">(</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">new_args</span><span class="p">[</span><span class="s1">'match'</span><span class="p">])</span> <span class="ow">or</span> <span class="mi">1</span> <span class="p">)</span> </span><span id="L-219"><a href="#L-219"><span class="linenos" data-line="219"></span></a> <span class="kd">local</span> <span class="n">nomatch</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'nomatch'</span><span class="p">]</span> </span><span id="L-220"><a href="#L-220"><span class="linenos" data-line="220"></span></a> </span><span id="L-221"><a href="#L-221"><span class="linenos" data-line="221"></span></a> <span class="kr">return</span> <span class="n">str</span><span class="p">.</span><span class="n">_match</span><span class="p">(</span> <span class="n">s</span><span class="p">,</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">match_index</span><span class="p">,</span> <span class="n">plain_flag</span><span class="p">,</span> <span class="n">nomatch</span> <span class="p">)</span> </span><span id="L-222"><a href="#L-222"><span class="linenos" data-line="222"></span></a><span class="kr">end</span> </span><span id="L-223"><a href="#L-223"><span class="linenos" data-line="223"></span></a> </span><span id="L-224"><a href="#L-224"><span class="linenos" data-line="224"></span></a><span class="cm">--[[</span> </span><span id="L-225"><a href="#L-225"><span class="linenos" data-line="225"></span></a><span class="cm">pos</span> </span><span id="L-226"><a href="#L-226"><span class="linenos" data-line="226"></span></a> </span><span id="L-227"><a href="#L-227"><span class="linenos" data-line="227"></span></a><span class="cm">This function returns a single character from the target string at position pos.</span> </span><span id="L-228"><a href="#L-228"><span class="linenos" data-line="228"></span></a> </span><span id="L-229"><a href="#L-229"><span class="linenos" data-line="229"></span></a><span class="cm">Usage:</span> </span><span id="L-230"><a href="#L-230"><span class="linenos" data-line="230"></span></a><span class="cm">{{#invoke:String|pos|target_string|index_value}}</span> </span><span id="L-231"><a href="#L-231"><span class="linenos" data-line="231"></span></a><span class="cm">OR</span> </span><span id="L-232"><a href="#L-232"><span class="linenos" data-line="232"></span></a><span class="cm">{{#invoke:String|pos|target=target_string|pos=index_value}}</span> </span><span id="L-233"><a href="#L-233"><span class="linenos" data-line="233"></span></a> </span><span id="L-234"><a href="#L-234"><span class="linenos" data-line="234"></span></a><span class="cm">Parameters</span> </span><span id="L-235"><a href="#L-235"><span class="linenos" data-line="235"></span></a><span class="cm"> target: The string to search</span> </span><span id="L-236"><a href="#L-236"><span class="linenos" data-line="236"></span></a><span class="cm"> pos: The index for the character to return</span> </span><span id="L-237"><a href="#L-237"><span class="linenos" data-line="237"></span></a> </span><span id="L-238"><a href="#L-238"><span class="linenos" data-line="238"></span></a><span class="cm">If invoked using named parameters, Mediawiki will automatically remove any leading or</span> </span><span id="L-239"><a href="#L-239"><span class="linenos" data-line="239"></span></a><span class="cm">trailing whitespace from the target string. In some circumstances this is desirable, in</span> </span><span id="L-240"><a href="#L-240"><span class="linenos" data-line="240"></span></a><span class="cm">other cases one may want to preserve the whitespace.</span> </span><span id="L-241"><a href="#L-241"><span class="linenos" data-line="241"></span></a> </span><span id="L-242"><a href="#L-242"><span class="linenos" data-line="242"></span></a><span class="cm">The first character has an index value of 1.</span> </span><span id="L-243"><a href="#L-243"><span class="linenos" data-line="243"></span></a> </span><span id="L-244"><a href="#L-244"><span class="linenos" data-line="244"></span></a><span class="cm">If one requests a negative value, this function will select a character by counting backwards</span> </span><span id="L-245"><a href="#L-245"><span class="linenos" data-line="245"></span></a><span class="cm">from the end of the string. In other words pos = -1 is the same as asking for the last character.</span> </span><span id="L-246"><a href="#L-246"><span class="linenos" data-line="246"></span></a> </span><span id="L-247"><a href="#L-247"><span class="linenos" data-line="247"></span></a><span class="cm">A requested value of zero, or a value greater than the length of the string returns an error.</span> </span><span id="L-248"><a href="#L-248"><span class="linenos" data-line="248"></span></a><span class="cm">]]</span> </span><span id="L-249"><a href="#L-249"><span class="linenos" data-line="249"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">pos</span><span class="p">(</span> <span class="n">frame</span> <span class="p">)</span> </span><span id="L-250"><a href="#L-250"><span class="linenos" data-line="250"></span></a> <span class="kd">local</span> <span class="n">new_args</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getParameters</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="p">{</span><span class="s1">'target'</span><span class="p">,</span> <span class="s1">'pos'</span><span class="p">}</span> <span class="p">)</span> </span><span id="L-251"><a href="#L-251"><span class="linenos" data-line="251"></span></a> <span class="kd">local</span> <span class="n">target_str</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'target'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-252"><a href="#L-252"><span class="linenos" data-line="252"></span></a> <span class="kd">local</span> <span class="n">pos</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'pos'</span><span class="p">]</span> <span class="p">)</span> <span class="ow">or</span> <span class="mi">0</span> </span><span id="L-253"><a href="#L-253"><span class="linenos" data-line="253"></span></a> </span><span id="L-254"><a href="#L-254"><span class="linenos" data-line="254"></span></a> <span class="kr">if</span> <span class="n">pos</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="nb">math.abs</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span> <span class="o">></span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">len</span><span class="p">(</span> <span class="n">target_str</span> <span class="p">)</span> <span class="kr">then</span> </span><span id="L-255"><a href="#L-255"><span class="linenos" data-line="255"></span></a> <span class="kr">return</span> <span class="n">str</span><span class="p">.</span><span class="n">_error</span><span class="p">(</span> <span class="s1">'String index out of range'</span> <span class="p">)</span> </span><span id="L-256"><a href="#L-256"><span class="linenos" data-line="256"></span></a> <span class="kr">end</span> </span><span id="L-257"><a href="#L-257"><span class="linenos" data-line="257"></span></a> </span><span id="L-258"><a href="#L-258"><span class="linenos" data-line="258"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">sub</span><span class="p">(</span> <span class="n">target_str</span><span class="p">,</span> <span class="n">pos</span><span class="p">,</span> <span class="n">pos</span> <span class="p">)</span> </span><span id="L-259"><a href="#L-259"><span class="linenos" data-line="259"></span></a><span class="kr">end</span> </span><span id="L-260"><a href="#L-260"><span class="linenos" data-line="260"></span></a> </span><span id="L-261"><a href="#L-261"><span class="linenos" data-line="261"></span></a><span class="cm">--[[</span> </span><span id="L-262"><a href="#L-262"><span class="linenos" data-line="262"></span></a><span class="cm">str_find</span> </span><span id="L-263"><a href="#L-263"><span class="linenos" data-line="263"></span></a> </span><span id="L-264"><a href="#L-264"><span class="linenos" data-line="264"></span></a><span class="cm">This function duplicates the behavior of {{str_find}}, including all of its quirks.</span> </span><span id="L-265"><a href="#L-265"><span class="linenos" data-line="265"></span></a><span class="cm">This is provided in order to support existing templates, but is NOT RECOMMENDED for</span> </span><span id="L-266"><a href="#L-266"><span class="linenos" data-line="266"></span></a><span class="cm">new code and templates. New code is recommended to use the "find" function instead.</span> </span><span id="L-267"><a href="#L-267"><span class="linenos" data-line="267"></span></a> </span><span id="L-268"><a href="#L-268"><span class="linenos" data-line="268"></span></a><span class="cm">Returns the first index in "source" that is a match to "target". Indexing is 1-based,</span> </span><span id="L-269"><a href="#L-269"><span class="linenos" data-line="269"></span></a><span class="cm">and the function returns -1 if the "target" string is not present in "source".</span> </span><span id="L-270"><a href="#L-270"><span class="linenos" data-line="270"></span></a> </span><span id="L-271"><a href="#L-271"><span class="linenos" data-line="271"></span></a><span class="cm">Important Note: If the "target" string is empty / missing, this function returns a</span> </span><span id="L-272"><a href="#L-272"><span class="linenos" data-line="272"></span></a><span class="cm">value of "1", which is generally unexpected behavior, and must be accounted for</span> </span><span id="L-273"><a href="#L-273"><span class="linenos" data-line="273"></span></a><span class="cm">separatetly.</span> </span><span id="L-274"><a href="#L-274"><span class="linenos" data-line="274"></span></a><span class="cm">]]</span> </span><span id="L-275"><a href="#L-275"><span class="linenos" data-line="275"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">str_find</span><span class="p">(</span> <span class="n">frame</span> <span class="p">)</span> </span><span id="L-276"><a href="#L-276"><span class="linenos" data-line="276"></span></a> <span class="kd">local</span> <span class="n">new_args</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getParameters</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="p">{</span><span class="s1">'source'</span><span class="p">,</span> <span class="s1">'target'</span><span class="p">}</span> <span class="p">)</span> </span><span id="L-277"><a href="#L-277"><span class="linenos" data-line="277"></span></a> <span class="kd">local</span> <span class="n">source_str</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'source'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-278"><a href="#L-278"><span class="linenos" data-line="278"></span></a> <span class="kd">local</span> <span class="n">target_str</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'target'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-279"><a href="#L-279"><span class="linenos" data-line="279"></span></a> </span><span id="L-280"><a href="#L-280"><span class="linenos" data-line="280"></span></a> <span class="kr">if</span> <span class="n">target_str</span> <span class="o">==</span> <span class="s1">''</span> <span class="kr">then</span> </span><span id="L-281"><a href="#L-281"><span class="linenos" data-line="281"></span></a> <span class="kr">return</span> <span class="mi">1</span> </span><span id="L-282"><a href="#L-282"><span class="linenos" data-line="282"></span></a> <span class="kr">end</span> </span><span id="L-283"><a href="#L-283"><span class="linenos" data-line="283"></span></a> </span><span id="L-284"><a href="#L-284"><span class="linenos" data-line="284"></span></a> <span class="kd">local</span> <span class="n">start</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span> <span class="n">source_str</span><span class="p">,</span> <span class="n">target_str</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="kc">true</span> <span class="p">)</span> </span><span id="L-285"><a href="#L-285"><span class="linenos" data-line="285"></span></a> <span class="kr">if</span> <span class="n">start</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-286"><a href="#L-286"><span class="linenos" data-line="286"></span></a> <span class="n">start</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> </span><span id="L-287"><a href="#L-287"><span class="linenos" data-line="287"></span></a> <span class="kr">end</span> </span><span id="L-288"><a href="#L-288"><span class="linenos" data-line="288"></span></a> </span><span id="L-289"><a href="#L-289"><span class="linenos" data-line="289"></span></a> <span class="kr">return</span> <span class="n">start</span> </span><span id="L-290"><a href="#L-290"><span class="linenos" data-line="290"></span></a><span class="kr">end</span> </span><span id="L-291"><a href="#L-291"><span class="linenos" data-line="291"></span></a> </span><span id="L-292"><a href="#L-292"><span class="linenos" data-line="292"></span></a><span class="cm">--[[</span> </span><span id="L-293"><a href="#L-293"><span class="linenos" data-line="293"></span></a><span class="cm">find</span> </span><span id="L-294"><a href="#L-294"><span class="linenos" data-line="294"></span></a> </span><span id="L-295"><a href="#L-295"><span class="linenos" data-line="295"></span></a><span class="cm">This function allows one to search for a target string or pattern within another</span> </span><span id="L-296"><a href="#L-296"><span class="linenos" data-line="296"></span></a><span class="cm">string.</span> </span><span id="L-297"><a href="#L-297"><span class="linenos" data-line="297"></span></a> </span><span id="L-298"><a href="#L-298"><span class="linenos" data-line="298"></span></a><span class="cm">Usage:</span> </span><span id="L-299"><a href="#L-299"><span class="linenos" data-line="299"></span></a><span class="cm">{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}</span> </span><span id="L-300"><a href="#L-300"><span class="linenos" data-line="300"></span></a><span class="cm">OR</span> </span><span id="L-301"><a href="#L-301"><span class="linenos" data-line="301"></span></a><span class="cm">{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}</span> </span><span id="L-302"><a href="#L-302"><span class="linenos" data-line="302"></span></a> </span><span id="L-303"><a href="#L-303"><span class="linenos" data-line="303"></span></a><span class="cm">Parameters</span> </span><span id="L-304"><a href="#L-304"><span class="linenos" data-line="304"></span></a><span class="cm"> source: The string to search</span> </span><span id="L-305"><a href="#L-305"><span class="linenos" data-line="305"></span></a><span class="cm"> target: The string or pattern to find within source</span> </span><span id="L-306"><a href="#L-306"><span class="linenos" data-line="306"></span></a><span class="cm"> start: The index within the source string to start the search, defaults to 1</span> </span><span id="L-307"><a href="#L-307"><span class="linenos" data-line="307"></span></a><span class="cm"> plain: Boolean flag indicating that target should be understood as plain</span> </span><span id="L-308"><a href="#L-308"><span class="linenos" data-line="308"></span></a><span class="cm"> text and not as a Lua style regular expression, defaults to true</span> </span><span id="L-309"><a href="#L-309"><span class="linenos" data-line="309"></span></a> </span><span id="L-310"><a href="#L-310"><span class="linenos" data-line="310"></span></a><span class="cm">If invoked using named parameters, Mediawiki will automatically remove any leading or</span> </span><span id="L-311"><a href="#L-311"><span class="linenos" data-line="311"></span></a><span class="cm">trailing whitespace from the parameter. In some circumstances this is desirable, in</span> </span><span id="L-312"><a href="#L-312"><span class="linenos" data-line="312"></span></a><span class="cm">other cases one may want to preserve the whitespace.</span> </span><span id="L-313"><a href="#L-313"><span class="linenos" data-line="313"></span></a> </span><span id="L-314"><a href="#L-314"><span class="linenos" data-line="314"></span></a><span class="cm">This function returns the first index >= "start" where "target" can be found</span> </span><span id="L-315"><a href="#L-315"><span class="linenos" data-line="315"></span></a><span class="cm">within "source". Indices are 1-based. If "target" is not found, then this</span> </span><span id="L-316"><a href="#L-316"><span class="linenos" data-line="316"></span></a><span class="cm">function returns 0. If either "source" or "target" are missing / empty, this</span> </span><span id="L-317"><a href="#L-317"><span class="linenos" data-line="317"></span></a><span class="cm">function also returns 0.</span> </span><span id="L-318"><a href="#L-318"><span class="linenos" data-line="318"></span></a> </span><span id="L-319"><a href="#L-319"><span class="linenos" data-line="319"></span></a><span class="cm">This function should be safe for UTF-8 strings.</span> </span><span id="L-320"><a href="#L-320"><span class="linenos" data-line="320"></span></a><span class="cm">]]</span> </span><span id="L-321"><a href="#L-321"><span class="linenos" data-line="321"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">find</span><span class="p">(</span> <span class="n">frame</span> <span class="p">)</span> </span><span id="L-322"><a href="#L-322"><span class="linenos" data-line="322"></span></a> <span class="kd">local</span> <span class="n">new_args</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getParameters</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="p">{</span><span class="s1">'source'</span><span class="p">,</span> <span class="s1">'target'</span><span class="p">,</span> <span class="s1">'start'</span><span class="p">,</span> <span class="s1">'plain'</span> <span class="p">}</span> <span class="p">)</span> </span><span id="L-323"><a href="#L-323"><span class="linenos" data-line="323"></span></a> <span class="kd">local</span> <span class="n">source_str</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'source'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-324"><a href="#L-324"><span class="linenos" data-line="324"></span></a> <span class="kd">local</span> <span class="n">pattern</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'target'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-325"><a href="#L-325"><span class="linenos" data-line="325"></span></a> <span class="kd">local</span> <span class="n">start_pos</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">new_args</span><span class="p">[</span><span class="s1">'start'</span><span class="p">])</span> <span class="ow">or</span> <span class="mi">1</span> </span><span id="L-326"><a href="#L-326"><span class="linenos" data-line="326"></span></a> <span class="kd">local</span> <span class="n">plain</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'plain'</span><span class="p">]</span> <span class="ow">or</span> <span class="kc">true</span> </span><span id="L-327"><a href="#L-327"><span class="linenos" data-line="327"></span></a> </span><span id="L-328"><a href="#L-328"><span class="linenos" data-line="328"></span></a> <span class="kr">if</span> <span class="n">source_str</span> <span class="o">==</span> <span class="s1">''</span> <span class="ow">or</span> <span class="n">pattern</span> <span class="o">==</span> <span class="s1">''</span> <span class="kr">then</span> </span><span id="L-329"><a href="#L-329"><span class="linenos" data-line="329"></span></a> <span class="kr">return</span> <span class="mi">0</span> </span><span id="L-330"><a href="#L-330"><span class="linenos" data-line="330"></span></a> <span class="kr">end</span> </span><span id="L-331"><a href="#L-331"><span class="linenos" data-line="331"></span></a> </span><span id="L-332"><a href="#L-332"><span class="linenos" data-line="332"></span></a> <span class="n">plain</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getBoolean</span><span class="p">(</span> <span class="n">plain</span> <span class="p">)</span> </span><span id="L-333"><a href="#L-333"><span class="linenos" data-line="333"></span></a> </span><span id="L-334"><a href="#L-334"><span class="linenos" data-line="334"></span></a> <span class="kd">local</span> <span class="n">start</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span> <span class="n">source_str</span><span class="p">,</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">start_pos</span><span class="p">,</span> <span class="n">plain</span> <span class="p">)</span> </span><span id="L-335"><a href="#L-335"><span class="linenos" data-line="335"></span></a> <span class="kr">if</span> <span class="n">start</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-336"><a href="#L-336"><span class="linenos" data-line="336"></span></a> <span class="n">start</span> <span class="o">=</span> <span class="mi">0</span> </span><span id="L-337"><a href="#L-337"><span class="linenos" data-line="337"></span></a> <span class="kr">end</span> </span><span id="L-338"><a href="#L-338"><span class="linenos" data-line="338"></span></a> </span><span id="L-339"><a href="#L-339"><span class="linenos" data-line="339"></span></a> <span class="kr">return</span> <span class="n">start</span> </span><span id="L-340"><a href="#L-340"><span class="linenos" data-line="340"></span></a><span class="kr">end</span> </span><span id="L-341"><a href="#L-341"><span class="linenos" data-line="341"></span></a> </span><span id="L-342"><a href="#L-342"><span class="linenos" data-line="342"></span></a><span class="cm">--[[</span> </span><span id="L-343"><a href="#L-343"><span class="linenos" data-line="343"></span></a><span class="cm">replace</span> </span><span id="L-344"><a href="#L-344"><span class="linenos" data-line="344"></span></a> </span><span id="L-345"><a href="#L-345"><span class="linenos" data-line="345"></span></a><span class="cm">This function allows one to replace a target string or pattern within another</span> </span><span id="L-346"><a href="#L-346"><span class="linenos" data-line="346"></span></a><span class="cm">string.</span> </span><span id="L-347"><a href="#L-347"><span class="linenos" data-line="347"></span></a> </span><span id="L-348"><a href="#L-348"><span class="linenos" data-line="348"></span></a><span class="cm">Usage:</span> </span><span id="L-349"><a href="#L-349"><span class="linenos" data-line="349"></span></a><span class="cm">{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}</span> </span><span id="L-350"><a href="#L-350"><span class="linenos" data-line="350"></span></a><span class="cm">OR</span> </span><span id="L-351"><a href="#L-351"><span class="linenos" data-line="351"></span></a><span class="cm">{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|</span> </span><span id="L-352"><a href="#L-352"><span class="linenos" data-line="352"></span></a><span class="cm"> count=replacement_count|plain=plain_flag}}</span> </span><span id="L-353"><a href="#L-353"><span class="linenos" data-line="353"></span></a> </span><span id="L-354"><a href="#L-354"><span class="linenos" data-line="354"></span></a><span class="cm">Parameters</span> </span><span id="L-355"><a href="#L-355"><span class="linenos" data-line="355"></span></a><span class="cm"> source: The string to search</span> </span><span id="L-356"><a href="#L-356"><span class="linenos" data-line="356"></span></a><span class="cm"> pattern: The string or pattern to find within source</span> </span><span id="L-357"><a href="#L-357"><span class="linenos" data-line="357"></span></a><span class="cm"> replace: The replacement text</span> </span><span id="L-358"><a href="#L-358"><span class="linenos" data-line="358"></span></a><span class="cm"> count: The number of occurences to replace, defaults to all.</span> </span><span id="L-359"><a href="#L-359"><span class="linenos" data-line="359"></span></a><span class="cm"> plain: Boolean flag indicating that pattern should be understood as plain</span> </span><span id="L-360"><a href="#L-360"><span class="linenos" data-line="360"></span></a><span class="cm"> text and not as a Lua style regular expression, defaults to true</span> </span><span id="L-361"><a href="#L-361"><span class="linenos" data-line="361"></span></a><span class="cm">]]</span> </span><span id="L-362"><a href="#L-362"><span class="linenos" data-line="362"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span> <span class="n">frame</span> <span class="p">)</span> </span><span id="L-363"><a href="#L-363"><span class="linenos" data-line="363"></span></a> <span class="kd">local</span> <span class="n">new_args</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getParameters</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="p">{</span><span class="s1">'source'</span><span class="p">,</span> <span class="s1">'pattern'</span><span class="p">,</span> <span class="s1">'replace'</span><span class="p">,</span> <span class="s1">'count'</span><span class="p">,</span> <span class="s1">'plain'</span> <span class="p">}</span> <span class="p">)</span> </span><span id="L-364"><a href="#L-364"><span class="linenos" data-line="364"></span></a> <span class="kd">local</span> <span class="n">source_str</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'source'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-365"><a href="#L-365"><span class="linenos" data-line="365"></span></a> <span class="kd">local</span> <span class="n">pattern</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'pattern'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-366"><a href="#L-366"><span class="linenos" data-line="366"></span></a> <span class="kd">local</span> <span class="n">replace</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'replace'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-367"><a href="#L-367"><span class="linenos" data-line="367"></span></a> <span class="kd">local</span> <span class="n">count</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'count'</span><span class="p">]</span> <span class="p">)</span> </span><span id="L-368"><a href="#L-368"><span class="linenos" data-line="368"></span></a> <span class="kd">local</span> <span class="n">plain</span> <span class="o">=</span> <span class="n">new_args</span><span class="p">[</span><span class="s1">'plain'</span><span class="p">]</span> <span class="ow">or</span> <span class="kc">true</span> </span><span id="L-369"><a href="#L-369"><span class="linenos" data-line="369"></span></a> </span><span id="L-370"><a href="#L-370"><span class="linenos" data-line="370"></span></a> <span class="kr">if</span> <span class="n">source_str</span> <span class="o">==</span> <span class="s1">''</span> <span class="ow">or</span> <span class="n">pattern</span> <span class="o">==</span> <span class="s1">''</span> <span class="kr">then</span> </span><span id="L-371"><a href="#L-371"><span class="linenos" data-line="371"></span></a> <span class="kr">return</span> <span class="n">source_str</span> </span><span id="L-372"><a href="#L-372"><span class="linenos" data-line="372"></span></a> <span class="kr">end</span> </span><span id="L-373"><a href="#L-373"><span class="linenos" data-line="373"></span></a> <span class="n">plain</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getBoolean</span><span class="p">(</span> <span class="n">plain</span> <span class="p">)</span> </span><span id="L-374"><a href="#L-374"><span class="linenos" data-line="374"></span></a> </span><span id="L-375"><a href="#L-375"><span class="linenos" data-line="375"></span></a> <span class="kr">if</span> <span class="n">plain</span> <span class="kr">then</span> </span><span id="L-376"><a href="#L-376"><span class="linenos" data-line="376"></span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_escapePattern</span><span class="p">(</span> <span class="n">pattern</span> <span class="p">)</span> </span><span id="L-377"><a href="#L-377"><span class="linenos" data-line="377"></span></a> <span class="n">replace</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span> <span class="n">replace</span><span class="p">,</span> <span class="s2">"%%"</span><span class="p">,</span> <span class="s2">"%%%%"</span> <span class="p">)</span> <span class="c1">--Only need to escape replacement sequences.</span> </span><span id="L-378"><a href="#L-378"><span class="linenos" data-line="378"></span></a> <span class="kr">end</span> </span><span id="L-379"><a href="#L-379"><span class="linenos" data-line="379"></span></a> </span><span id="L-380"><a href="#L-380"><span class="linenos" data-line="380"></span></a> <span class="kd">local</span> <span class="n">result</span> </span><span id="L-381"><a href="#L-381"><span class="linenos" data-line="381"></span></a> </span><span id="L-382"><a href="#L-382"><span class="linenos" data-line="382"></span></a> <span class="kr">if</span> <span class="n">count</span> <span class="o">~=</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-383"><a href="#L-383"><span class="linenos" data-line="383"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span> <span class="n">source_str</span><span class="p">,</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">replace</span><span class="p">,</span> <span class="n">count</span> <span class="p">)</span> </span><span id="L-384"><a href="#L-384"><span class="linenos" data-line="384"></span></a> <span class="kr">else</span> </span><span id="L-385"><a href="#L-385"><span class="linenos" data-line="385"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span> <span class="n">source_str</span><span class="p">,</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">replace</span> <span class="p">)</span> </span><span id="L-386"><a href="#L-386"><span class="linenos" data-line="386"></span></a> <span class="kr">end</span> </span><span id="L-387"><a href="#L-387"><span class="linenos" data-line="387"></span></a> </span><span id="L-388"><a href="#L-388"><span class="linenos" data-line="388"></span></a> <span class="kr">return</span> <span class="n">result</span> </span><span id="L-389"><a href="#L-389"><span class="linenos" data-line="389"></span></a><span class="kr">end</span> </span><span id="L-390"><a href="#L-390"><span class="linenos" data-line="390"></span></a> </span><span id="L-391"><a href="#L-391"><span class="linenos" data-line="391"></span></a><span class="cm">--[[</span> </span><span id="L-392"><a href="#L-392"><span class="linenos" data-line="392"></span></a><span class="cm"> simple function to pipe string.rep to templates.</span> </span><span id="L-393"><a href="#L-393"><span class="linenos" data-line="393"></span></a><span class="cm">]]</span> </span><span id="L-394"><a href="#L-394"><span class="linenos" data-line="394"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">rep</span><span class="p">(</span> <span class="n">frame</span> <span class="p">)</span> </span><span id="L-395"><a href="#L-395"><span class="linenos" data-line="395"></span></a> <span class="kd">local</span> <span class="n">repetitions</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="p">)</span> </span><span id="L-396"><a href="#L-396"><span class="linenos" data-line="396"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">repetitions</span> <span class="kr">then</span> </span><span id="L-397"><a href="#L-397"><span class="linenos" data-line="397"></span></a> <span class="kr">return</span> <span class="n">str</span><span class="p">.</span><span class="n">_error</span><span class="p">(</span> <span class="s1">'function rep expects a number as second parameter, received "'</span> <span class="o">..</span> <span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span> <span class="p">)</span> <span class="o">..</span> <span class="s1">'"'</span> <span class="p">)</span> </span><span id="L-398"><a href="#L-398"><span class="linenos" data-line="398"></span></a> <span class="kr">end</span> </span><span id="L-399"><a href="#L-399"><span class="linenos" data-line="399"></span></a> <span class="kr">return</span> <span class="nb">string.rep</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span><span class="p">,</span> <span class="n">repetitions</span> <span class="p">)</span> </span><span id="L-400"><a href="#L-400"><span class="linenos" data-line="400"></span></a><span class="kr">end</span> </span><span id="L-401"><a href="#L-401"><span class="linenos" data-line="401"></span></a> </span><span id="L-402"><a href="#L-402"><span class="linenos" data-line="402"></span></a><span class="cm">--[[</span> </span><span id="L-403"><a href="#L-403"><span class="linenos" data-line="403"></span></a><span class="cm">escapePattern</span> </span><span id="L-404"><a href="#L-404"><span class="linenos" data-line="404"></span></a> </span><span id="L-405"><a href="#L-405"><span class="linenos" data-line="405"></span></a><span class="cm">This function escapes special characters from a Lua string pattern. See [1]</span> </span><span id="L-406"><a href="#L-406"><span class="linenos" data-line="406"></span></a><span class="cm">for details on how patterns work.</span> </span><span id="L-407"><a href="#L-407"><span class="linenos" data-line="407"></span></a> </span><span id="L-408"><a href="#L-408"><span class="linenos" data-line="408"></span></a><span class="cm">[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns</span> </span><span id="L-409"><a href="#L-409"><span class="linenos" data-line="409"></span></a> </span><span id="L-410"><a href="#L-410"><span class="linenos" data-line="410"></span></a><span class="cm">Usage:</span> </span><span id="L-411"><a href="#L-411"><span class="linenos" data-line="411"></span></a><span class="cm">{{#invoke:String|escapePattern|pattern_string}}</span> </span><span id="L-412"><a href="#L-412"><span class="linenos" data-line="412"></span></a> </span><span id="L-413"><a href="#L-413"><span class="linenos" data-line="413"></span></a><span class="cm">Parameters</span> </span><span id="L-414"><a href="#L-414"><span class="linenos" data-line="414"></span></a><span class="cm"> pattern_string: The pattern string to escape.</span> </span><span id="L-415"><a href="#L-415"><span class="linenos" data-line="415"></span></a><span class="cm">]]</span> </span><span id="L-416"><a href="#L-416"><span class="linenos" data-line="416"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">escapePattern</span><span class="p">(</span> <span class="n">frame</span> <span class="p">)</span> </span><span id="L-417"><a href="#L-417"><span class="linenos" data-line="417"></span></a> <span class="kd">local</span> <span class="n">pattern_str</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-418"><a href="#L-418"><span class="linenos" data-line="418"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">pattern_str</span> <span class="kr">then</span> </span><span id="L-419"><a href="#L-419"><span class="linenos" data-line="419"></span></a> <span class="kr">return</span> <span class="n">str</span><span class="p">.</span><span class="n">_error</span><span class="p">(</span> <span class="s1">'No pattern string specified'</span> <span class="p">)</span> </span><span id="L-420"><a href="#L-420"><span class="linenos" data-line="420"></span></a> <span class="kr">end</span> </span><span id="L-421"><a href="#L-421"><span class="linenos" data-line="421"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_escapePattern</span><span class="p">(</span> <span class="n">pattern_str</span> <span class="p">)</span> </span><span id="L-422"><a href="#L-422"><span class="linenos" data-line="422"></span></a> <span class="kr">return</span> <span class="n">result</span> </span><span id="L-423"><a href="#L-423"><span class="linenos" data-line="423"></span></a><span class="kr">end</span> </span><span id="L-424"><a href="#L-424"><span class="linenos" data-line="424"></span></a> </span><span id="L-425"><a href="#L-425"><span class="linenos" data-line="425"></span></a><span class="cm">--[[</span> </span><span id="L-426"><a href="#L-426"><span class="linenos" data-line="426"></span></a><span class="cm">count</span> </span><span id="L-427"><a href="#L-427"><span class="linenos" data-line="427"></span></a><span class="cm">This function counts the number of occurrences of one string in another.</span> </span><span id="L-428"><a href="#L-428"><span class="linenos" data-line="428"></span></a><span class="cm">]]</span> </span><span id="L-429"><a href="#L-429"><span class="linenos" data-line="429"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">count</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-430"><a href="#L-430"><span class="linenos" data-line="430"></span></a> <span class="kd">local</span> <span class="n">args</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getParameters</span><span class="p">(</span><span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="p">{</span><span class="s1">'source'</span><span class="p">,</span> <span class="s1">'pattern'</span><span class="p">,</span> <span class="s1">'plain'</span><span class="p">})</span> </span><span id="L-431"><a href="#L-431"><span class="linenos" data-line="431"></span></a> <span class="kd">local</span> <span class="n">source</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">source</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-432"><a href="#L-432"><span class="linenos" data-line="432"></span></a> <span class="kd">local</span> <span class="n">pattern</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">pattern</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-433"><a href="#L-433"><span class="linenos" data-line="433"></span></a> <span class="kd">local</span> <span class="n">plain</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getBoolean</span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">plain</span> <span class="ow">or</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-434"><a href="#L-434"><span class="linenos" data-line="434"></span></a> <span class="kr">if</span> <span class="n">plain</span> <span class="kr">then</span> </span><span id="L-435"><a href="#L-435"><span class="linenos" data-line="435"></span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_escapePattern</span><span class="p">(</span><span class="n">pattern</span><span class="p">)</span> </span><span id="L-436"><a href="#L-436"><span class="linenos" data-line="436"></span></a> <span class="kr">end</span> </span><span id="L-437"><a href="#L-437"><span class="linenos" data-line="437"></span></a> <span class="kd">local</span> <span class="n">_</span><span class="p">,</span> <span class="n">count</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">pattern</span><span class="p">,</span> <span class="s1">''</span><span class="p">)</span> </span><span id="L-438"><a href="#L-438"><span class="linenos" data-line="438"></span></a> <span class="kr">return</span> <span class="n">count</span> </span><span id="L-439"><a href="#L-439"><span class="linenos" data-line="439"></span></a><span class="kr">end</span> </span><span id="L-440"><a href="#L-440"><span class="linenos" data-line="440"></span></a> </span><span id="L-441"><a href="#L-441"><span class="linenos" data-line="441"></span></a><span class="cm">--[[</span> </span><span id="L-442"><a href="#L-442"><span class="linenos" data-line="442"></span></a><span class="cm">endswith</span> </span><span id="L-443"><a href="#L-443"><span class="linenos" data-line="443"></span></a><span class="cm">This function determines whether a string ends with another string.</span> </span><span id="L-444"><a href="#L-444"><span class="linenos" data-line="444"></span></a><span class="cm">]]</span> </span><span id="L-445"><a href="#L-445"><span class="linenos" data-line="445"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">endswith</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-446"><a href="#L-446"><span class="linenos" data-line="446"></span></a> <span class="kd">local</span> <span class="n">args</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">_getParameters</span><span class="p">(</span><span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="p">{</span><span class="s1">'source'</span><span class="p">,</span> <span class="s1">'pattern'</span><span class="p">})</span> </span><span id="L-447"><a href="#L-447"><span class="linenos" data-line="447"></span></a> <span class="kd">local</span> <span class="n">source</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">source</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-448"><a href="#L-448"><span class="linenos" data-line="448"></span></a> <span class="kd">local</span> <span class="n">pattern</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">pattern</span> <span class="ow">or</span> <span class="s1">''</span> </span><span id="L-449"><a href="#L-449"><span class="linenos" data-line="449"></span></a> <span class="kr">if</span> <span class="n">pattern</span> <span class="o">==</span> <span class="s1">''</span> <span class="kr">then</span> </span><span id="L-450"><a href="#L-450"><span class="linenos" data-line="450"></span></a> <span class="c1">-- All strings end with the empty string.</span> </span><span id="L-451"><a href="#L-451"><span class="linenos" data-line="451"></span></a> <span class="kr">return</span> <span class="s2">"yes"</span> </span><span id="L-452"><a href="#L-452"><span class="linenos" data-line="452"></span></a> <span class="kr">end</span> </span><span id="L-453"><a href="#L-453"><span class="linenos" data-line="453"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">sub</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="o">-</span><span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">len</span><span class="p">(</span><span class="n">pattern</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="n">pattern</span> <span class="kr">then</span> </span><span id="L-454"><a href="#L-454"><span class="linenos" data-line="454"></span></a> <span class="kr">return</span> <span class="s2">"yes"</span> </span><span id="L-455"><a href="#L-455"><span class="linenos" data-line="455"></span></a> <span class="kr">else</span> </span><span id="L-456"><a href="#L-456"><span class="linenos" data-line="456"></span></a> <span class="kr">return</span> <span class="s2">""</span> </span><span id="L-457"><a href="#L-457"><span class="linenos" data-line="457"></span></a> <span class="kr">end</span> </span><span id="L-458"><a href="#L-458"><span class="linenos" data-line="458"></span></a><span class="kr">end</span> </span><span id="L-459"><a href="#L-459"><span class="linenos" data-line="459"></span></a> </span><span id="L-460"><a href="#L-460"><span class="linenos" data-line="460"></span></a><span class="cm">--[[</span> </span><span id="L-461"><a href="#L-461"><span class="linenos" data-line="461"></span></a><span class="cm">join</span> </span><span id="L-462"><a href="#L-462"><span class="linenos" data-line="462"></span></a> </span><span id="L-463"><a href="#L-463"><span class="linenos" data-line="463"></span></a><span class="cm">Join all non empty arguments together; the first argument is the separator.</span> </span><span id="L-464"><a href="#L-464"><span class="linenos" data-line="464"></span></a><span class="cm">Usage:</span> </span><span id="L-465"><a href="#L-465"><span class="linenos" data-line="465"></span></a><span class="cm">{{#invoke:String|join|sep|one|two|three}}</span> </span><span id="L-466"><a href="#L-466"><span class="linenos" data-line="466"></span></a><span class="cm">]]</span> </span><span id="L-467"><a href="#L-467"><span class="linenos" data-line="467"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">join</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-468"><a href="#L-468"><span class="linenos" data-line="468"></span></a> <span class="kd">local</span> <span class="n">args</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-469"><a href="#L-469"><span class="linenos" data-line="469"></span></a> <span class="kd">local</span> <span class="n">sep</span> </span><span id="L-470"><a href="#L-470"><span class="linenos" data-line="470"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">v</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span> <span class="p">)</span> <span class="kr">do</span> </span><span id="L-471"><a href="#L-471"><span class="linenos" data-line="471"></span></a> <span class="kr">if</span> <span class="n">sep</span> <span class="kr">then</span> </span><span id="L-472"><a href="#L-472"><span class="linenos" data-line="472"></span></a> <span class="kr">if</span> <span class="n">v</span> <span class="o">~=</span> <span class="s1">''</span> <span class="kr">then</span> </span><span id="L-473"><a href="#L-473"><span class="linenos" data-line="473"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> </span><span id="L-474"><a href="#L-474"><span class="linenos" data-line="474"></span></a> <span class="kr">end</span> </span><span id="L-475"><a href="#L-475"><span class="linenos" data-line="475"></span></a> <span class="kr">else</span> </span><span id="L-476"><a href="#L-476"><span class="linenos" data-line="476"></span></a> <span class="n">sep</span> <span class="o">=</span> <span class="n">v</span> </span><span id="L-477"><a href="#L-477"><span class="linenos" data-line="477"></span></a> <span class="kr">end</span> </span><span id="L-478"><a href="#L-478"><span class="linenos" data-line="478"></span></a> <span class="kr">end</span> </span><span id="L-479"><a href="#L-479"><span class="linenos" data-line="479"></span></a> <span class="kr">return</span> <span class="nb">table.concat</span><span class="p">(</span> <span class="n">args</span><span class="p">,</span> <span class="n">sep</span> <span class="ow">or</span> <span class="s1">''</span> <span class="p">)</span> </span><span id="L-480"><a href="#L-480"><span class="linenos" data-line="480"></span></a><span class="kr">end</span> </span><span id="L-481"><a href="#L-481"><span class="linenos" data-line="481"></span></a> </span><span id="L-482"><a href="#L-482"><span class="linenos" data-line="482"></span></a><span class="cm">--[[</span> </span><span id="L-483"><a href="#L-483"><span class="linenos" data-line="483"></span></a><span class="cm">Helper function that populates the argument list given that user may need to use a mix of</span> </span><span id="L-484"><a href="#L-484"><span class="linenos" data-line="484"></span></a><span class="cm">named and unnamed parameters. This is relevant because named parameters are not</span> </span><span id="L-485"><a href="#L-485"><span class="linenos" data-line="485"></span></a><span class="cm">identical to unnamed parameters due to string trimming, and when dealing with strings</span> </span><span id="L-486"><a href="#L-486"><span class="linenos" data-line="486"></span></a><span class="cm">we sometimes want to either preserve or remove that whitespace depending on the application.</span> </span><span id="L-487"><a href="#L-487"><span class="linenos" data-line="487"></span></a><span class="cm">]]</span> </span><span id="L-488"><a href="#L-488"><span class="linenos" data-line="488"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">_getParameters</span><span class="p">(</span> <span class="n">frame_args</span><span class="p">,</span> <span class="n">arg_list</span> <span class="p">)</span> </span><span id="L-489"><a href="#L-489"><span class="linenos" data-line="489"></span></a> <span class="kd">local</span> <span class="n">new_args</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-490"><a href="#L-490"><span class="linenos" data-line="490"></span></a> <span class="kd">local</span> <span class="n">index</span> <span class="o">=</span> <span class="mi">1</span> </span><span id="L-491"><a href="#L-491"><span class="linenos" data-line="491"></span></a> <span class="kd">local</span> <span class="n">value</span> </span><span id="L-492"><a href="#L-492"><span class="linenos" data-line="492"></span></a> </span><span id="L-493"><a href="#L-493"><span class="linenos" data-line="493"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">arg</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span> <span class="n">arg_list</span> <span class="p">)</span> <span class="kr">do</span> </span><span id="L-494"><a href="#L-494"><span class="linenos" data-line="494"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">frame_args</span><span class="p">[</span><span class="n">arg</span><span class="p">]</span> </span><span id="L-495"><a href="#L-495"><span class="linenos" data-line="495"></span></a> <span class="kr">if</span> <span class="n">value</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-496"><a href="#L-496"><span class="linenos" data-line="496"></span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">frame_args</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> </span><span id="L-497"><a href="#L-497"><span class="linenos" data-line="497"></span></a> <span class="n">index</span> <span class="o">=</span> <span class="n">index</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-498"><a href="#L-498"><span class="linenos" data-line="498"></span></a> <span class="kr">end</span> </span><span id="L-499"><a href="#L-499"><span class="linenos" data-line="499"></span></a> <span class="n">new_args</span><span class="p">[</span><span class="n">arg</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> </span><span id="L-500"><a href="#L-500"><span class="linenos" data-line="500"></span></a> <span class="kr">end</span> </span><span id="L-501"><a href="#L-501"><span class="linenos" data-line="501"></span></a> </span><span id="L-502"><a href="#L-502"><span class="linenos" data-line="502"></span></a> <span class="kr">return</span> <span class="n">new_args</span> </span><span id="L-503"><a href="#L-503"><span class="linenos" data-line="503"></span></a><span class="kr">end</span> </span><span id="L-504"><a href="#L-504"><span class="linenos" data-line="504"></span></a> </span><span id="L-505"><a href="#L-505"><span class="linenos" data-line="505"></span></a><span class="cm">--[[</span> </span><span id="L-506"><a href="#L-506"><span class="linenos" data-line="506"></span></a><span class="cm">Helper function to handle error messages.</span> </span><span id="L-507"><a href="#L-507"><span class="linenos" data-line="507"></span></a><span class="cm">]]</span> </span><span id="L-508"><a href="#L-508"><span class="linenos" data-line="508"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">_error</span><span class="p">(</span> <span class="n">error_str</span> <span class="p">)</span> </span><span id="L-509"><a href="#L-509"><span class="linenos" data-line="509"></span></a> <span class="kd">local</span> <span class="n">frame</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">getCurrentFrame</span><span class="p">()</span> </span><span id="L-510"><a href="#L-510"><span class="linenos" data-line="510"></span></a> <span class="kd">local</span> <span class="n">error_category</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">error_category</span> <span class="ow">or</span> <span class="s1">'Errors reported by Module String'</span> </span><span id="L-511"><a href="#L-511"><span class="linenos" data-line="511"></span></a> <span class="kd">local</span> <span class="n">ignore_errors</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">ignore_errors</span> <span class="ow">or</span> <span class="kc">false</span> </span><span id="L-512"><a href="#L-512"><span class="linenos" data-line="512"></span></a> <span class="kd">local</span> <span class="n">no_category</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">.</span><span class="n">no_category</span> <span class="ow">or</span> <span class="kc">false</span> </span><span id="L-513"><a href="#L-513"><span class="linenos" data-line="513"></span></a> </span><span id="L-514"><a href="#L-514"><span class="linenos" data-line="514"></span></a> <span class="kr">if</span> <span class="n">str</span><span class="p">.</span><span class="n">_getBoolean</span><span class="p">(</span><span class="n">ignore_errors</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-515"><a href="#L-515"><span class="linenos" data-line="515"></span></a> <span class="kr">return</span> <span class="s1">''</span> </span><span id="L-516"><a href="#L-516"><span class="linenos" data-line="516"></span></a> <span class="kr">end</span> </span><span id="L-517"><a href="#L-517"><span class="linenos" data-line="517"></span></a> </span><span id="L-518"><a href="#L-518"><span class="linenos" data-line="518"></span></a> <span class="kd">local</span> <span class="n">error_str</span> <span class="o">=</span> <span class="s1">'<strong class="error">String Module Error: '</span> <span class="o">..</span> <span class="n">error_str</span> <span class="o">..</span> <span class="s1">'</strong>'</span> </span><span id="L-519"><a href="#L-519"><span class="linenos" data-line="519"></span></a> <span class="kr">if</span> <span class="n">error_category</span> <span class="o">~=</span> <span class="s1">''</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">str</span><span class="p">.</span><span class="n">_getBoolean</span><span class="p">(</span> <span class="n">no_category</span> <span class="p">)</span> <span class="kr">then</span> </span><span id="L-520"><a href="#L-520"><span class="linenos" data-line="520"></span></a> <span class="n">error_str</span> <span class="o">=</span> <span class="s1">'[[Category:'</span> <span class="o">..</span> <span class="n">error_category</span> <span class="o">..</span> <span class="s1">']]'</span> <span class="o">..</span> <span class="n">error_str</span> </span><span id="L-521"><a href="#L-521"><span class="linenos" data-line="521"></span></a> <span class="kr">end</span> </span><span id="L-522"><a href="#L-522"><span class="linenos" data-line="522"></span></a> </span><span id="L-523"><a href="#L-523"><span class="linenos" data-line="523"></span></a> <span class="kr">return</span> <span class="n">error_str</span> </span><span id="L-524"><a href="#L-524"><span class="linenos" data-line="524"></span></a><span class="kr">end</span> </span><span id="L-525"><a href="#L-525"><span class="linenos" data-line="525"></span></a> </span><span id="L-526"><a href="#L-526"><span class="linenos" data-line="526"></span></a><span class="cm">--[[</span> </span><span id="L-527"><a href="#L-527"><span class="linenos" data-line="527"></span></a><span class="cm">Helper Function to interpret boolean strings</span> </span><span id="L-528"><a href="#L-528"><span class="linenos" data-line="528"></span></a><span class="cm">]]</span> </span><span id="L-529"><a href="#L-529"><span class="linenos" data-line="529"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">_getBoolean</span><span class="p">(</span> <span class="n">boolean_str</span> <span class="p">)</span> </span><span id="L-530"><a href="#L-530"><span class="linenos" data-line="530"></span></a> <span class="kd">local</span> <span class="n">boolean_value</span> </span><span id="L-531"><a href="#L-531"><span class="linenos" data-line="531"></span></a> </span><span id="L-532"><a href="#L-532"><span class="linenos" data-line="532"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span> <span class="n">boolean_str</span> <span class="p">)</span> <span class="o">==</span> <span class="s1">'string'</span> <span class="kr">then</span> </span><span id="L-533"><a href="#L-533"><span class="linenos" data-line="533"></span></a> <span class="n">boolean_str</span> <span class="o">=</span> <span class="n">boolean_str</span><span class="p">:</span><span class="n">lower</span><span class="p">()</span> </span><span id="L-534"><a href="#L-534"><span class="linenos" data-line="534"></span></a> <span class="kr">if</span> <span class="n">boolean_str</span> <span class="o">==</span> <span class="s1">'false'</span> <span class="ow">or</span> <span class="n">boolean_str</span> <span class="o">==</span> <span class="s1">'no'</span> <span class="ow">or</span> <span class="n">boolean_str</span> <span class="o">==</span> <span class="s1">'0'</span> </span><span id="L-535"><a href="#L-535"><span class="linenos" data-line="535"></span></a> <span class="ow">or</span> <span class="n">boolean_str</span> <span class="o">==</span> <span class="s1">''</span> <span class="kr">then</span> </span><span id="L-536"><a href="#L-536"><span class="linenos" data-line="536"></span></a> <span class="n">boolean_value</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-537"><a href="#L-537"><span class="linenos" data-line="537"></span></a> <span class="kr">else</span> </span><span id="L-538"><a href="#L-538"><span class="linenos" data-line="538"></span></a> <span class="n">boolean_value</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-539"><a href="#L-539"><span class="linenos" data-line="539"></span></a> <span class="kr">end</span> </span><span id="L-540"><a href="#L-540"><span class="linenos" data-line="540"></span></a> <span class="kr">elseif</span> <span class="nb">type</span><span class="p">(</span> <span class="n">boolean_str</span> <span class="p">)</span> <span class="o">==</span> <span class="s1">'boolean'</span> <span class="kr">then</span> </span><span id="L-541"><a href="#L-541"><span class="linenos" data-line="541"></span></a> <span class="n">boolean_value</span> <span class="o">=</span> <span class="n">boolean_str</span> </span><span id="L-542"><a href="#L-542"><span class="linenos" data-line="542"></span></a> <span class="kr">else</span> </span><span id="L-543"><a href="#L-543"><span class="linenos" data-line="543"></span></a> <span class="nb">error</span><span class="p">(</span> <span class="s1">'No boolean value found'</span> <span class="p">)</span> </span><span id="L-544"><a href="#L-544"><span class="linenos" data-line="544"></span></a> <span class="kr">end</span> </span><span id="L-545"><a href="#L-545"><span class="linenos" data-line="545"></span></a> <span class="kr">return</span> <span class="n">boolean_value</span> </span><span id="L-546"><a href="#L-546"><span class="linenos" data-line="546"></span></a><span class="kr">end</span> </span><span id="L-547"><a href="#L-547"><span class="linenos" data-line="547"></span></a> </span><span id="L-548"><a href="#L-548"><span class="linenos" data-line="548"></span></a><span class="cm">--[[</span> </span><span id="L-549"><a href="#L-549"><span class="linenos" data-line="549"></span></a><span class="cm">Helper function that escapes all pattern characters so that they will be treated</span> </span><span id="L-550"><a href="#L-550"><span class="linenos" data-line="550"></span></a><span class="cm">as plain text.</span> </span><span id="L-551"><a href="#L-551"><span class="linenos" data-line="551"></span></a><span class="cm">]]</span> </span><span id="L-552"><a href="#L-552"><span class="linenos" data-line="552"></span></a><span class="kr">function</span> <span class="nc">str</span><span class="p">.</span><span class="nf">_escapePattern</span><span class="p">(</span> <span class="n">pattern_str</span> <span class="p">)</span> </span><span id="L-553"><a href="#L-553"><span class="linenos" data-line="553"></span></a> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span> <span class="n">pattern_str</span><span class="p">,</span> <span class="s2">"([%(%)%.%%%+%-%*%?%[%^%$%]])"</span><span class="p">,</span> <span class="s2">"%%%1"</span> <span class="p">)</span> </span><span id="L-554"><a href="#L-554"><span class="linenos" data-line="554"></span></a><span class="kr">end</span> </span><span id="L-555"><a href="#L-555"><span class="linenos" data-line="555"></span></a> </span><span id="L-556"><a href="#L-556"><span class="linenos" data-line="556"></span></a><span class="kr">return</span> <span class="n">str</span> </span></pre></div></div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1&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://www.wikidata.org/w/index.php?title=Module:String&oldid=1340914894">https://www.wikidata.org/w/index.php?title=Module:String&oldid=1340914894</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">Categories</a>: <ul><li><a href="/wiki/Category:Lua_metamodules" title="Category:Lua metamodules">Lua metamodules</a></li><li><a href="/wiki/Category:Global_Templates" title="Category:Global Templates">Global Templates</a></li></ul></div></div> </div> </div> <div id="mw-navigation"> <h2>Navigation menu</h2> <div id="mw-head"> <nav id="p-personal" class="mw-portlet mw-portlet-personal vector-user-menu-legacy vector-menu" aria-labelledby="p-personal-label" > <h3 id="p-personal-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Personal tools</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-uls" class="mw-list-item active"><a class="uls-trigger" href="#"><span>English</span></a></li><li id="pt-anonuserpage" class="mw-list-item"><span title="The user page for the IP address you are editing as">Not logged in</span></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><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-createaccount" class="mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Module%3AString&returntoquery=diff%3Dprev%26oldid%3D1340914894" title="You are encouraged to create an account and log in; however, it is not mandatory"><span>Create account</span></a></li><li id="pt-login" class="mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Module%3AString&returntoquery=diff%3Dprev%26oldid%3D1340914894" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span>Log in</span></a></li> </ul> </div> </nav> <div id="left-navigation"> <nav id="p-namespaces" class="mw-portlet mw-portlet-namespaces vector-menu-tabs vector-menu-tabs-legacy vector-menu" aria-labelledby="p-namespaces-label" > <h3 id="p-namespaces-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Namespaces</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-module" class="selected mw-list-item"><a href="/wiki/Module:String" title="View the module page [c]" accesskey="c"><span>Module</span></a></li><li id="ca-talk" class="new mw-list-item"><a href="/w/index.php?title=Module_talk:String&action=edit&redlink=1" rel="discussion" class="new" title="Discussion about the content page (page does not exist) [t]" accesskey="t"><span>Discussion</span></a></li> </ul> </div> </nav> <nav id="p-variants" class="mw-portlet mw-portlet-variants emptyPortlet vector-menu-dropdown vector-menu" aria-labelledby="p-variants-label" > <input type="checkbox" id="p-variants-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-variants" class="vector-menu-checkbox" aria-labelledby="p-variants-label" > <label id="p-variants-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">English</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </nav> </div> <div id="right-navigation"> <nav id="p-views" class="mw-portlet mw-portlet-views vector-menu-tabs vector-menu-tabs-legacy vector-menu" aria-labelledby="p-views-label" > <h3 id="p-views-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Views</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected mw-list-item"><a href="/wiki/Module:String"><span>Read</span></a></li><li id="ca-edit" class="mw-list-item"><a href="/w/index.php?title=Module:String&action=edit&oldid=1340914894" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="mw-list-item"><a href="/w/index.php?title=Module:String&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </nav> <nav id="p-cactions" class="mw-portlet mw-portlet-cactions emptyPortlet vector-menu-dropdown vector-menu" aria-labelledby="p-cactions-label" title="More options" > <input type="checkbox" id="p-cactions-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-cactions" class="vector-menu-checkbox" aria-labelledby="p-cactions-label" > <label id="p-cactions-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">More</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </nav> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box"> <h3 >Search</h3> <form action="/w/index.php" id="searchform" class="vector-search-box-form"> <div id="simpleSearch" class="vector-search-box-inner" data-search-loc="header-navigation"> <input class="vector-search-box-input" type="search" name="search" placeholder="Search Wikidata" aria-label="Search Wikidata" autocapitalize="sentences" title="Search Wikidata [f]" accesskey="f" id="searchInput" > <input type="hidden" name="title" value="Special:Search"> <input id="mw-searchButton" class="searchButton mw-fallbackSearchButton" type="submit" name="fulltext" title="Search the pages for this text" value="Search"> <input id="searchButton" class="searchButton" type="submit" name="go" title="Go to a page with this exact name if it exists" value="Go"> </div> </form> </div> </div> </div> <div id="mw-panel" class="vector-legacy-sidebar"> <div id="p-logo" role="banner"> <a class="mw-wiki-logo" href="/wiki/Wikidata:Main_Page" title="Visit the main page"></a> </div> <nav id="p-navigation" class="mw-portlet mw-portlet-navigation vector-menu-portal portal vector-menu" aria-labelledby="p-navigation-label" > <h3 id="p-navigation-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Navigation</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Wikidata:Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Project:Community_portal" title="About the project, what you can do, where to find things"><span>Community portal</span></a></li><li id="n-villagepump" class="mw-list-item"><a href="/wiki/Wikidata:Project_chat"><span>Project chat</span></a></li><li id="n-special-newitem" class="mw-list-item"><a href="/wiki/Special:NewItem"><span>Create a new Item</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-wikibase-randomitem" class="mw-list-item"><a href="/wiki/Special:Random/Main" title="[x]" accesskey="x"><span>Random Item</span></a></li><li id="n-wikibase-queryservice" class="mw-list-item"><a href="//query.wikidata.org/"><span>Query Service</span></a></li><li id="n-nearby-pages-title" class="mw-list-item"><a href="/wiki/Special:Nearby"><span>Nearby</span></a></li><li id="n-help" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Help:Contents" title="The place to find out"><span>Help</span></a></li><li id="n-sitesupport" class="mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_wikidata.org&uselang=en" title="Support us"><span>Donate</span></a></li> </ul> </div> </nav> <nav id="p-wikibase-lexeme-lexicographical-data" class="mw-portlet mw-portlet-wikibase-lexeme-lexicographical-data vector-menu-portal portal vector-menu" aria-labelledby="p-wikibase-lexeme-lexicographical-data-label" > <h3 id="p-wikibase-lexeme-lexicographical-data-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Lexicographical data</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-special-newlexeme" class="mw-list-item"><a href="/wiki/Special:NewLexeme"><span>Create a new Lexeme</span></a></li><li id="n-recentchanges-lexemes" class="mw-list-item"><a href="https://www.wikidata.org/wiki/Special:RecentChanges?namespace=146%3B147"><span>Recent changes</span></a></li><li id="n-wikibase-lexeme-randomlexeme" class="mw-list-item"><a href="/wiki/Special:Random/Lexeme"><span>Random Lexeme</span></a></li> </ul> </div> </nav> <nav id="p-tb" class="mw-portlet mw-portlet-tb vector-menu-portal portal vector-menu" aria-labelledby="p-tb-label" > <h3 id="p-tb-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Tools</span> </h3> <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:String" 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:String" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</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:String&oldid=1340914894" 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:String&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%2Fwww.wikidata.org%2Fw%2Findex.php%3Ftitle%3DModule%3AString%26diff%3Dprev%26oldid%3D1340914894"><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%2Fwww.wikidata.org%2Fw%2Findex.php%3Ftitle%3DModule%3AString%26diff%3Dprev%26oldid%3D1340914894"><span>Download QR code</span></a></li> </ul> </div> </nav> <nav id="p-electronpdfservice-sidebar-portlet-heading" class="mw-portlet mw-portlet-electronpdfservice-sidebar-portlet-heading vector-menu-portal portal vector-menu" aria-labelledby="p-electronpdfservice-sidebar-portlet-heading-label" > <h3 id="p-electronpdfservice-sidebar-portlet-heading-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Print/export</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <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> </nav> <nav id="p-wikibase-otherprojects" class="mw-portlet mw-portlet-wikibase-otherprojects vector-menu-portal portal vector-menu" aria-labelledby="p-wikibase-otherprojects-label" > <h3 id="p-wikibase-otherprojects-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">In other projects</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Module:String" hreflang="en"><span>Wikimedia Commons</span></a></li><li class="wb-otherproject-link wb-otherproject-foundation mw-list-item"><a href="https://foundation.wikimedia.org/wiki/Module:String" hreflang="en"><span>Wikimedia Foundation</span></a></li><li class="wb-otherproject-link wb-otherproject-mediawiki mw-list-item"><a href="https://www.mediawiki.org/wiki/Module:String" hreflang="en"><span>MediaWiki</span></a></li><li class="wb-otherproject-link wb-otherproject-meta mw-list-item"><a href="https://meta.wikimedia.org/wiki/Module:String" hreflang="en"><span>Meta-Wiki</span></a></li><li class="wb-otherproject-link wb-otherproject-outreach mw-list-item"><a href="https://outreach.wikimedia.org/wiki/Module:String" hreflang="en"><span>Wikimedia Outreach</span></a></li><li class="wb-otherproject-link wb-otherproject-sources mw-list-item"><a href="https://wikisource.org/wiki/Module:String" hreflang="en"><span>Multilingual Wikisource</span></a></li><li class="wb-otherproject-link wb-otherproject-species mw-list-item"><a href="https://species.wikimedia.org/wiki/Module:String" hreflang="en"><span>Wikispecies</span></a></li><li class="wb-otherproject-link wb-otherproject-wikibooks mw-list-item"><a href="https://en.wikibooks.org/wiki/Module:String" hreflang="en"><span>Wikibooks</span></a></li><li class="wb-otherproject-link wb-otherproject-wikifunctions mw-list-item"><a href="https://www.wikifunctions.org/wiki/Module:String" hreflang="en"><span>Wikifunctions</span></a></li><li class="wb-otherproject-link wb-otherproject-wikimania mw-list-item"><a href="https://wikimania.wikimedia.org/wiki/Module:String" hreflang="en"><span>Wikimania</span></a></li><li class="wb-otherproject-link wb-otherproject-wikipedia mw-list-item"><a href="https://en.wikipedia.org/wiki/Module:String" hreflang="en"><span>Wikipedia</span></a></li><li class="wb-otherproject-link wb-otherproject-wikiquote mw-list-item"><a href="https://en.wikiquote.org/wiki/Module:String" hreflang="en"><span>Wikiquote</span></a></li><li class="wb-otherproject-link wb-otherproject-wikisource mw-list-item"><a href="https://en.wikisource.org/wiki/Module:String" hreflang="en"><span>Wikisource</span></a></li><li class="wb-otherproject-link wb-otherproject-wikiversity mw-list-item"><a href="https://en.wikiversity.org/wiki/Module:String" hreflang="en"><span>Wikiversity</span></a></li><li class="wb-otherproject-link wb-otherproject-wikivoyage mw-list-item"><a href="https://en.wikivoyage.org/wiki/Module:String" hreflang="en"><span>Wikivoyage</span></a></li><li class="wb-otherproject-link wb-otherproject-wiktionary mw-list-item"><a href="https://en.wiktionary.org/wiki/Module:string" hreflang="en"><span>Wiktionary</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q7253814" title="Link to connected data repository item [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </nav> <nav id="p-lang" class="mw-portlet mw-portlet-lang vector-menu-portal portal vector-menu" aria-labelledby="p-lang-label" > <h3 id="p-lang-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">In Wikipedia</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ab mw-list-item"><a href="https://ab.wikipedia.org/wiki/%D0%90%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Амодуль:String – Abkhazian" lang="ab" hreflang="ab" data-title="Амодуль:String" data-language-autonym="Аԥсшәа" data-language-local-name="Abkhazian" class="interlanguage-link-target"><span>Аԥсшәа</span></a></li><li class="interlanguage-link interwiki-ace mw-list-item"><a href="https://ace.wikipedia.org/wiki/Modul:String" title="Modul:String – Acehnese" lang="ace" hreflang="ace" data-title="Modul:String" data-language-autonym="Acèh" data-language-local-name="Acehnese" class="interlanguage-link-target"><span>Acèh</span></a></li><li class="interlanguage-link interwiki-af mw-list-item"><a href="https://af.wikipedia.org/wiki/Module:String" title="Module:String – Afrikaans" lang="af" hreflang="af" data-title="Module:String" data-language-autonym="Afrikaans" data-language-local-name="Afrikaans" class="interlanguage-link-target"><span>Afrikaans</span></a></li><li class="interlanguage-link interwiki-als mw-list-item"><a href="https://als.wikipedia.org/wiki/Modul:Str" title="Modul:Str – Alemannic" lang="gsw" hreflang="gsw" data-title="Modul:Str" data-language-autonym="Alemannisch" data-language-local-name="Alemannic" class="interlanguage-link-target"><span>Alemannisch</span></a></li><li class="interlanguage-link interwiki-alt mw-list-item"><a href="https://alt.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Southern Altai" lang="alt" hreflang="alt" data-title="Модуль:String" data-language-autonym="Алтай тил" data-language-local-name="Southern Altai" class="interlanguage-link-target"><span>Алтай тил</span></a></li><li class="interlanguage-link interwiki-am mw-list-item"><a href="https://am.wikipedia.org/wiki/Module:String" title="Module:String – Amharic" lang="am" hreflang="am" data-title="Module:String" data-language-autonym="አማርኛ" data-language-local-name="Amharic" class="interlanguage-link-target"><span>አማርኛ</span></a></li><li class="interlanguage-link interwiki-ang mw-list-item"><a href="https://ang.wikipedia.org/wiki/Module:String" title="Module:String – Old English" lang="ang" hreflang="ang" data-title="Module:String" data-language-autonym="Ænglisc" data-language-local-name="Old English" class="interlanguage-link-target"><span>Ænglisc</span></a></li><li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D9%88%D8%AD%D8%AF%D8%A9:String" title="وحدة:String – Arabic" lang="ar" hreflang="ar" data-title="وحدة:String" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-ary mw-list-item"><a href="https://ary.wikipedia.org/wiki/%D9%85%D9%88%D8%AF%D9%88%D9%84:String" title="مودول:String – Moroccan Arabic" lang="ary" hreflang="ary" data-title="مودول:String" data-language-autonym="الدارجة" data-language-local-name="Moroccan Arabic" class="interlanguage-link-target"><span>الدارجة</span></a></li><li class="interlanguage-link interwiki-arz mw-list-item"><a href="https://arz.wikipedia.org/wiki/%D9%88%D8%AD%D8%AF%D8%A9:String" title="وحدة:String – Egyptian Arabic" lang="arz" hreflang="arz" data-title="وحدة:String" data-language-autonym="مصرى" data-language-local-name="Egyptian Arabic" class="interlanguage-link-target"><span>مصرى</span></a></li><li class="interlanguage-link interwiki-as mw-list-item"><a href="https://as.wikipedia.org/wiki/Module:String" title="Module:String – Assamese" lang="as" hreflang="as" data-title="Module:String" data-language-autonym="অসমীয়া" data-language-local-name="Assamese" class="interlanguage-link-target"><span>অসমীয়া</span></a></li><li class="interlanguage-link interwiki-ast mw-list-item"><a href="https://ast.wikipedia.org/wiki/M%C3%B3dulu:String" title="Módulu:String – Asturian" lang="ast" hreflang="ast" data-title="Módulu:String" data-language-autonym="Asturianu" data-language-local-name="Asturian" class="interlanguage-link-target"><span>Asturianu</span></a></li><li class="interlanguage-link interwiki-atj mw-list-item"><a href="https://atj.wikipedia.org/wiki/Aitapihikewin:String" title="Aitapihikewin:String – Atikamekw" lang="atj" hreflang="atj" data-title="Aitapihikewin:String" data-language-autonym="Atikamekw" data-language-local-name="Atikamekw" class="interlanguage-link-target"><span>Atikamekw</span></a></li><li class="interlanguage-link interwiki-av mw-list-item"><a href="https://av.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Avaric" lang="av" hreflang="av" data-title="Модуль:String" data-language-autonym="Авар" data-language-local-name="Avaric" class="interlanguage-link-target"><span>Авар</span></a></li><li class="interlanguage-link interwiki-avk mw-list-item"><a href="https://avk.wikipedia.org/wiki/Siba:String" title="Siba:String – Kotava" lang="avk" hreflang="avk" data-title="Siba:String" data-language-autonym="Kotava" data-language-local-name="Kotava" class="interlanguage-link-target"><span>Kotava</span></a></li><li class="interlanguage-link interwiki-awa mw-list-item"><a href="https://awa.wikipedia.org/wiki/%E0%A4%85%E0%A4%A8%E0%A5%81%E0%A4%96%E0%A4%82%E0%A4%A1:String" title="अनुखंड:String – Awadhi" lang="awa" hreflang="awa" data-title="अनुखंड:String" data-language-autonym="अवधी" data-language-local-name="Awadhi" class="interlanguage-link-target"><span>अवधी</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikipedia.org/wiki/Modul:String" title="Modul:String – Azerbaijani" lang="az" hreflang="az" data-title="Modul:String" data-language-autonym="Azərbaycanca" data-language-local-name="Azerbaijani" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-azb mw-list-item"><a href="https://azb.wikipedia.org/wiki/%D9%85%D8%A7%DA%98%D9%88%D9%84:String" title="ماژول:String – South Azerbaijani" lang="azb" hreflang="azb" data-title="ماژول:String" data-language-autonym="تۆرکجه" data-language-local-name="South Azerbaijani" class="interlanguage-link-target"><span>تۆرکجه</span></a></li><li class="interlanguage-link interwiki-ba mw-list-item"><a href="https://ba.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Bashkir" lang="ba" hreflang="ba" data-title="Модуль:String" data-language-autonym="Башҡортса" data-language-local-name="Bashkir" class="interlanguage-link-target"><span>Башҡортса</span></a></li><li class="interlanguage-link interwiki-ban mw-list-item"><a href="https://ban.wikipedia.org/wiki/Modul:String" title="Modul:String – Balinese" lang="ban" hreflang="ban" data-title="Modul:String" data-language-autonym="Basa Bali" data-language-local-name="Balinese" class="interlanguage-link-target"><span>Basa Bali</span></a></li><li class="interlanguage-link interwiki-bar mw-list-item"><a href="https://bar.wikipedia.org/wiki/Modul:Str" title="Modul:Str – Bavarian" lang="bar" hreflang="bar" data-title="Modul:Str" data-language-autonym="Boarisch" data-language-local-name="Bavarian" class="interlanguage-link-target"><span>Boarisch</span></a></li><li class="interlanguage-link interwiki-bcl mw-list-item"><a href="https://bcl.wikipedia.org/wiki/Module:String" title="Module:String – Central Bikol" lang="bcl" hreflang="bcl" data-title="Module:String" data-language-autonym="Bikol Central" data-language-local-name="Central Bikol" class="interlanguage-link-target"><span>Bikol Central</span></a></li><li class="interlanguage-link interwiki-be mw-list-item"><a href="https://be.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Belarusian" lang="be" hreflang="be" data-title="Модуль:String" data-language-autonym="Беларуская" data-language-local-name="Belarusian" class="interlanguage-link-target"><span>Беларуская</span></a></li><li class="interlanguage-link interwiki-be-x-old mw-list-item"><a href="https://be-tarask.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Belarusian (Taraškievica orthography)" lang="be-tarask" hreflang="be-tarask" data-title="Модуль:String" data-language-autonym="Беларуская (тарашкевіца)" data-language-local-name="Belarusian (Taraškievica orthography)" class="interlanguage-link-target"><span>Беларуская (тарашкевіца)</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:String" title="Модул:String – Bulgarian" lang="bg" hreflang="bg" data-title="Модул:String" data-language-autonym="Български" data-language-local-name="Bulgarian" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-bh mw-list-item"><a href="https://bh.wikipedia.org/wiki/Module:String" title="Module:String – Bhojpuri" lang="bh" hreflang="bh" data-title="Module:String" data-language-autonym="भोजपुरी" data-language-local-name="Bhojpuri" class="interlanguage-link-target"><span>भोजपुरी</span></a></li><li class="interlanguage-link interwiki-bjn mw-list-item"><a href="https://bjn.wikipedia.org/wiki/Modul:String" title="Modul:String – Banjar" lang="bjn" hreflang="bjn" data-title="Modul:String" data-language-autonym="Banjar" data-language-local-name="Banjar" class="interlanguage-link-target"><span>Banjar</span></a></li><li class="interlanguage-link interwiki-blk mw-list-item"><a href="https://blk.wikipedia.org/wiki/%E1%80%99%E1%80%B1%E1%80%AC%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0%E1%80%B8:String" title="မော်ဂျူး:String – Pa'O" lang="blk" hreflang="blk" data-title="မော်ဂျူး:String" data-language-autonym="ပအိုဝ်ႏဘာႏသာႏ" data-language-local-name="Pa'O" class="interlanguage-link-target"><span>ပအိုဝ်ႏဘာႏသာႏ</span></a></li><li class="interlanguage-link interwiki-bn mw-list-item"><a href="https://bn.wikipedia.org/wiki/%E0%A6%AE%E0%A6%A1%E0%A6%BF%E0%A6%89%E0%A6%B2:String" title="মডিউল:String – Bangla" lang="bn" hreflang="bn" data-title="মডিউল:String" data-language-autonym="বাংলা" data-language-local-name="Bangla" class="interlanguage-link-target"><span>বাংলা</span></a></li><li class="interlanguage-link interwiki-bpy mw-list-item"><a href="https://bpy.wikipedia.org/wiki/%E0%A6%AE%E0%A6%A1%E0%A6%BF%E0%A6%89%E0%A6%B2:String" title="মডিউল:String – Bishnupriya" lang="bpy" hreflang="bpy" data-title="মডিউল:String" data-language-autonym="বিষ্ণুপ্রিয়া মণিপুরী" data-language-local-name="Bishnupriya" class="interlanguage-link-target"><span>বিষ্ণুপ্রিয়া মণিপুরী</span></a></li><li class="interlanguage-link interwiki-br mw-list-item"><a href="https://br.wikipedia.org/wiki/Modulenn:String" title="Modulenn:String – Breton" lang="br" hreflang="br" data-title="Modulenn:String" data-language-autonym="Brezhoneg" data-language-local-name="Breton" class="interlanguage-link-target"><span>Brezhoneg</span></a></li><li class="interlanguage-link interwiki-bs mw-list-item"><a href="https://bs.wikipedia.org/wiki/Modul:String" title="Modul:String – Bosnian" lang="bs" hreflang="bs" data-title="Modul:String" data-language-autonym="Bosanski" data-language-local-name="Bosnian" class="interlanguage-link-target"><span>Bosanski</span></a></li><li class="interlanguage-link interwiki-btm mw-list-item"><a href="https://btm.wikipedia.org/wiki/Modul:String" title="Modul:String – Batak Mandailing" lang="btm" hreflang="btm" data-title="Modul:String" data-language-autonym="Batak Mandailing" data-language-local-name="Batak Mandailing" class="interlanguage-link-target"><span>Batak Mandailing</span></a></li><li class="interlanguage-link interwiki-bxr mw-list-item"><a href="https://bxr.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Russia Buriat" lang="bxr" hreflang="bxr" data-title="Модуль:String" data-language-autonym="Буряад" data-language-local-name="Russia Buriat" class="interlanguage-link-target"><span>Буряад</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/M%C3%B2dul:String" title="Mòdul:String – Catalan" lang="ca" hreflang="ca" data-title="Mòdul:String" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cbk-zam mw-list-item"><a href="https://cbk-zam.wikipedia.org/wiki/M%C3%B3dulo:String" title="Módulo:String – Chavacano" lang="cbk" hreflang="cbk" data-title="Módulo:String" data-language-autonym="Chavacano de Zamboanga" data-language-local-name="Chavacano" class="interlanguage-link-target"><span>Chavacano de Zamboanga</span></a></li><li class="interlanguage-link interwiki-cdo mw-list-item"><a href="https://cdo.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:String" title="模組:String – Mindong" lang="cdo" hreflang="cdo" data-title="模組:String" data-language-autonym="閩東語 / Mìng-dĕ̤ng-ngṳ̄" data-language-local-name="Mindong" class="interlanguage-link-target"><span>閩東語 / Mìng-dĕ̤ng-ngṳ̄</span></a></li><li class="interlanguage-link interwiki-ce mw-list-item"><a href="https://ce.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Chechen" lang="ce" hreflang="ce" data-title="Модуль:String" data-language-autonym="Нохчийн" data-language-local-name="Chechen" class="interlanguage-link-target"><span>Нохчийн</span></a></li><li class="interlanguage-link interwiki-ceb mw-list-item"><a href="https://ceb.wikipedia.org/wiki/Module:String" title="Module:String – Cebuano" lang="ceb" hreflang="ceb" data-title="Module:String" data-language-autonym="Cebuano" data-language-local-name="Cebuano" class="interlanguage-link-target"><span>Cebuano</span></a></li><li class="interlanguage-link interwiki-ch mw-list-item"><a href="https://ch.wikipedia.org/wiki/Module:String" title="Module:String – Chamorro" lang="ch" hreflang="ch" data-title="Module:String" data-language-autonym="Chamoru" data-language-local-name="Chamorro" class="interlanguage-link-target"><span>Chamoru</span></a></li><li class="interlanguage-link interwiki-ckb mw-list-item"><a href="https://ckb.wikipedia.org/wiki/%D9%85%DB%86%D8%AF%DB%8C%D9%88%D9%88%D9%84:String" title="مۆدیوول:String – Central Kurdish" lang="ckb" hreflang="ckb" data-title="مۆدیوول:String" data-language-autonym="کوردی" data-language-local-name="Central Kurdish" class="interlanguage-link-target"><span>کوردی</span></a></li><li class="interlanguage-link interwiki-co mw-list-item"><a href="https://co.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Corsican" lang="co" hreflang="co" data-title="Modulo:String" data-language-autonym="Corsu" data-language-local-name="Corsican" class="interlanguage-link-target"><span>Corsu</span></a></li><li class="interlanguage-link interwiki-crh mw-list-item"><a href="https://crh.wikipedia.org/wiki/Modul:String" title="Modul:String – Crimean Tatar" lang="crh" hreflang="crh" data-title="Modul:String" data-language-autonym="Qırımtatarca" data-language-local-name="Crimean Tatar" class="interlanguage-link-target"><span>Qırımtatarca</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Modul:String" title="Modul:String – Czech" lang="cs" hreflang="cs" data-title="Modul:String" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-cv mw-list-item"><a href="https://cv.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Chuvash" lang="cv" hreflang="cv" data-title="Модуль:String" data-language-autonym="Чӑвашла" data-language-local-name="Chuvash" class="interlanguage-link-target"><span>Чӑвашла</span></a></li><li class="interlanguage-link interwiki-cy mw-list-item"><a href="https://cy.wikipedia.org/wiki/Modiwl:String" title="Modiwl:String – Welsh" lang="cy" hreflang="cy" data-title="Modiwl:String" data-language-autonym="Cymraeg" data-language-local-name="Welsh" class="interlanguage-link-target"><span>Cymraeg</span></a></li><li class="interlanguage-link interwiki-da mw-list-item"><a href="https://da.wikipedia.org/wiki/Modul:String" title="Modul:String – Danish" lang="da" hreflang="da" data-title="Modul:String" data-language-autonym="Dansk" data-language-local-name="Danish" class="interlanguage-link-target"><span>Dansk</span></a></li><li class="interlanguage-link interwiki-dag mw-list-item"><a href="https://dag.wikipedia.org/wiki/Module:String" title="Module:String – Dagbani" lang="dag" hreflang="dag" data-title="Module:String" data-language-autonym="Dagbanli" data-language-local-name="Dagbani" class="interlanguage-link-target"><span>Dagbanli</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Modul:Str" title="Modul:Str – German" lang="de" hreflang="de" data-title="Modul:Str" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-din mw-list-item"><a href="https://din.wikipedia.org/wiki/Muk%C3%A4%C3%A4c%C3%ABt%C3%B6k:String" title="Mukääcëtök:String – Dinka" lang="din" hreflang="din" data-title="Mukääcëtök:String" data-language-autonym="Thuɔŋjäŋ" data-language-local-name="Dinka" class="interlanguage-link-target"><span>Thuɔŋjäŋ</span></a></li><li class="interlanguage-link interwiki-diq mw-list-item"><a href="https://diq.wikipedia.org/wiki/Modul:String" title="Modul:String – Zazaki" lang="diq" hreflang="diq" data-title="Modul:String" data-language-autonym="Zazaki" data-language-local-name="Zazaki" class="interlanguage-link-target"><span>Zazaki</span></a></li><li class="interlanguage-link interwiki-dsb mw-list-item"><a href="https://dsb.wikipedia.org/wiki/Modul:String" title="Modul:String – Lower Sorbian" lang="dsb" hreflang="dsb" data-title="Modul:String" data-language-autonym="Dolnoserbski" data-language-local-name="Lower Sorbian" class="interlanguage-link-target"><span>Dolnoserbski</span></a></li><li class="interlanguage-link interwiki-dty mw-list-item"><a href="https://dty.wikipedia.org/wiki/%E0%A4%AE%E0%A5%8B%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%81%E0%A4%B2:String" title="मोड्युल:String – Doteli" lang="dty" hreflang="dty" data-title="मोड्युल:String" data-language-autonym="डोटेली" data-language-local-name="Doteli" class="interlanguage-link-target"><span>डोटेली</span></a></li><li class="interlanguage-link interwiki-dv mw-list-item"><a href="https://dv.wikipedia.org/wiki/%DE%89%DE%AE%DE%91%DE%A8%DE%87%DE%AA%DE%8D%DE%B0:String" title="މޮޑިއުލް:String – Divehi" lang="dv" hreflang="dv" data-title="މޮޑިއުލް:String" data-language-autonym="ދިވެހިބަސް" data-language-local-name="Divehi" class="interlanguage-link-target"><span>ދިވެހިބަސް</span></a></li><li class="interlanguage-link interwiki-ee mw-list-item"><a href="https://ee.wikipedia.org/wiki/Module:String" title="Module:String – Ewe" lang="ee" hreflang="ee" data-title="Module:String" data-language-autonym="Eʋegbe" data-language-local-name="Ewe" class="interlanguage-link-target"><span>Eʋegbe</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/Module:String" title="Module:String – Greek" lang="el" hreflang="el" data-title="Module:String" data-language-autonym="Ελληνικά" data-language-local-name="Greek" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-eml mw-list-item"><a href="https://eml.wikipedia.org/wiki/M%C3%B2dul:String" title="Mòdul:String – Emiliano-Romagnolo" lang="egl" hreflang="egl" data-title="Mòdul:String" data-language-autonym="Emiliàn e rumagnòl" data-language-local-name="Emiliano-Romagnolo" class="interlanguage-link-target"><span>Emiliàn e rumagnòl</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/Module:String" title="Module:String – English" lang="en" hreflang="en" data-title="Module:String" data-language-autonym="English" data-language-local-name="English" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-eo mw-list-item"><a href="https://eo.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Esperanto" lang="eo" hreflang="eo" data-title="Modulo:String" data-language-autonym="Esperanto" data-language-local-name="Esperanto" class="interlanguage-link-target"><span>Esperanto</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/M%C3%B3dulo:String" title="Módulo:String – Spanish" lang="es" hreflang="es" data-title="Módulo:String" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/Moodul:String" title="Moodul:String – Estonian" lang="et" hreflang="et" data-title="Moodul:String" data-language-autonym="Eesti" data-language-local-name="Estonian" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-eu mw-list-item"><a href="https://eu.wikipedia.org/wiki/Modulu:String" title="Modulu:String – Basque" lang="eu" hreflang="eu" data-title="Modulu:String" data-language-autonym="Euskara" data-language-local-name="Basque" class="interlanguage-link-target"><span>Euskara</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:String" title="پودمان:String – Persian" lang="fa" hreflang="fa" data-title="پودمان:String" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fat mw-list-item"><a href="https://fat.wikipedia.org/wiki/Module:String" title="Module:String – Fanti" lang="fat" hreflang="fat" data-title="Module:String" data-language-autonym="Mfantse" data-language-local-name="Fanti" class="interlanguage-link-target"><span>Mfantse</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Moduuli:String" title="Moduuli:String – Finnish" lang="fi" hreflang="fi" data-title="Moduuli:String" data-language-autonym="Suomi" data-language-local-name="Finnish" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-fj mw-list-item"><a href="https://fj.wikipedia.org/wiki/Module:String" title="Module:String – Fijian" lang="fj" hreflang="fj" data-title="Module:String" data-language-autonym="Na Vosa Vakaviti" data-language-local-name="Fijian" class="interlanguage-link-target"><span>Na Vosa Vakaviti</span></a></li><li class="interlanguage-link interwiki-fo mw-list-item"><a href="https://fo.wikipedia.org/wiki/Module:String" title="Module:String – Faroese" lang="fo" hreflang="fo" data-title="Module:String" data-language-autonym="Føroyskt" data-language-local-name="Faroese" class="interlanguage-link-target"><span>Føroyskt</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Module:String" title="Module:String – French" lang="fr" hreflang="fr" data-title="Module:String" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-frp mw-list-item"><a href="https://frp.wikipedia.org/wiki/Module:String" title="Module:String – Arpitan" lang="frp" hreflang="frp" data-title="Module:String" data-language-autonym="Arpetan" data-language-local-name="Arpitan" class="interlanguage-link-target"><span>Arpetan</span></a></li><li class="interlanguage-link interwiki-frr mw-list-item"><a href="https://frr.wikipedia.org/wiki/Modul:Str" title="Modul:Str – Northern Frisian" lang="frr" hreflang="frr" data-title="Modul:Str" data-language-autonym="Nordfriisk" data-language-local-name="Northern Frisian" class="interlanguage-link-target"><span>Nordfriisk</span></a></li><li class="interlanguage-link interwiki-fur mw-list-item"><a href="https://fur.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Friulian" lang="fur" hreflang="fur" data-title="Modulo:String" data-language-autonym="Furlan" data-language-local-name="Friulian" class="interlanguage-link-target"><span>Furlan</span></a></li><li class="interlanguage-link interwiki-fy mw-list-item"><a href="https://fy.wikipedia.org/wiki/Module:String" title="Module:String – Western Frisian" lang="fy" hreflang="fy" data-title="Module:String" data-language-autonym="Frysk" data-language-local-name="Western Frisian" class="interlanguage-link-target"><span>Frysk</span></a></li><li class="interlanguage-link interwiki-ga mw-list-item"><a href="https://ga.wikipedia.org/wiki/Module:String" title="Module:String – Irish" lang="ga" hreflang="ga" data-title="Module:String" data-language-autonym="Gaeilge" data-language-local-name="Irish" class="interlanguage-link-target"><span>Gaeilge</span></a></li><li class="interlanguage-link interwiki-gan mw-list-item"><a href="https://gan.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:String" title="模組:String – Gan" lang="gan" hreflang="gan" data-title="模組:String" data-language-autonym="贛語" data-language-local-name="Gan" class="interlanguage-link-target"><span>贛語</span></a></li><li class="interlanguage-link interwiki-gd mw-list-item"><a href="https://gd.wikipedia.org/wiki/M%C3%B2ideal:String" title="Mòideal:String – Scottish Gaelic" lang="gd" hreflang="gd" data-title="Mòideal:String" data-language-autonym="Gàidhlig" data-language-local-name="Scottish Gaelic" class="interlanguage-link-target"><span>Gàidhlig</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/M%C3%B3dulo:String" title="Módulo:String – Galician" lang="gl" hreflang="gl" data-title="Módulo:String" data-language-autonym="Galego" data-language-local-name="Galician" class="interlanguage-link-target"><span>Galego</span></a></li><li class="interlanguage-link interwiki-glk mw-list-item"><a href="https://glk.wikipedia.org/wiki/%D9%85%D8%A7%D8%AC%DB%8A%D9%84:String" title="ماجۊل:String – Gilaki" lang="glk" hreflang="glk" data-title="ماجۊل:String" data-language-autonym="گیلکی" data-language-local-name="Gilaki" class="interlanguage-link-target"><span>گیلکی</span></a></li><li class="interlanguage-link interwiki-gn mw-list-item"><a href="https://gn.wikipedia.org/wiki/M%C3%B3dulo:String" title="Módulo:String – Guarani" lang="gn" hreflang="gn" data-title="Módulo:String" data-language-autonym="Avañe'ẽ" data-language-local-name="Guarani" class="interlanguage-link-target"><span>Avañe'ẽ</span></a></li><li class="interlanguage-link interwiki-gom mw-list-item"><a href="https://gom.wikipedia.org/wiki/%E0%A4%8F%E0%A4%95%E0%A4%95:String" title="एकक:String – Goan Konkani" lang="gom" hreflang="gom" data-title="एकक:String" data-language-autonym="गोंयची कोंकणी / Gõychi Konknni" data-language-local-name="Goan Konkani" class="interlanguage-link-target"><span>गोंयची कोंकणी / Gõychi Konknni</span></a></li><li class="interlanguage-link interwiki-gor mw-list-item"><a href="https://gor.wikipedia.org/wiki/Modul:String" title="Modul:String – Gorontalo" lang="gor" hreflang="gor" data-title="Modul:String" data-language-autonym="Bahasa Hulontalo" data-language-local-name="Gorontalo" class="interlanguage-link-target"><span>Bahasa Hulontalo</span></a></li><li class="interlanguage-link interwiki-gu mw-list-item"><a href="https://gu.wikipedia.org/wiki/%E0%AA%B5%E0%AA%BF%E0%AA%AD%E0%AA%BE%E0%AA%97:String" title="વિભાગ:String – Gujarati" lang="gu" hreflang="gu" data-title="વિભાગ:String" data-language-autonym="ગુજરાતી" data-language-local-name="Gujarati" class="interlanguage-link-target"><span>ગુજરાતી</span></a></li><li class="interlanguage-link interwiki-guc mw-list-item"><a href="https://guc.wikipedia.org/wiki/M%C3%B3dulo:String" title="Módulo:String – Wayuu" lang="guc" hreflang="guc" data-title="Módulo:String" data-language-autonym="Wayuunaiki" data-language-local-name="Wayuu" class="interlanguage-link-target"><span>Wayuunaiki</span></a></li><li class="interlanguage-link interwiki-ha mw-list-item"><a href="https://ha.wikipedia.org/wiki/Module:String" title="Module:String – Hausa" lang="ha" hreflang="ha" data-title="Module:String" data-language-autonym="Hausa" data-language-local-name="Hausa" class="interlanguage-link-target"><span>Hausa</span></a></li><li class="interlanguage-link interwiki-hak mw-list-item"><a href="https://hak.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:String" title="模組:String – Hakka Chinese" lang="hak" hreflang="hak" data-title="模組:String" data-language-autonym="客家語 / Hak-kâ-ngî" data-language-local-name="Hakka Chinese" class="interlanguage-link-target"><span>客家語 / Hak-kâ-ngî</span></a></li><li class="interlanguage-link interwiki-haw mw-list-item"><a href="https://haw.wikipedia.org/wiki/Module:String" title="Module:String – Hawaiian" lang="haw" hreflang="haw" data-title="Module:String" data-language-autonym="Hawaiʻi" data-language-local-name="Hawaiian" class="interlanguage-link-target"><span>Hawaiʻi</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/%D7%99%D7%97%D7%99%D7%93%D7%94:String" title="יחידה:String – Hebrew" lang="he" hreflang="he" data-title="יחידה:String" data-language-autonym="עברית" data-language-local-name="Hebrew" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-hi mw-list-item"><a href="https://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%89%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%82%E0%A4%B2:String" title="मॉड्यूल:String – Hindi" lang="hi" hreflang="hi" data-title="मॉड्यूल:String" data-language-autonym="हिन्दी" data-language-local-name="Hindi" class="interlanguage-link-target"><span>हिन्दी</span></a></li><li class="interlanguage-link interwiki-hif mw-list-item"><a href="https://hif.wikipedia.org/wiki/Module:String" title="Module:String – Fiji Hindi" lang="hif" hreflang="hif" data-title="Module:String" data-language-autonym="Fiji Hindi" data-language-local-name="Fiji Hindi" class="interlanguage-link-target"><span>Fiji Hindi</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wikipedia.org/wiki/Modul:String" title="Modul:String – Croatian" lang="hr" hreflang="hr" data-title="Modul:String" data-language-autonym="Hrvatski" data-language-local-name="Croatian" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-hsb mw-list-item"><a href="https://hsb.wikipedia.org/wiki/Modul:String" title="Modul:String – Upper Sorbian" lang="hsb" hreflang="hsb" data-title="Modul:String" data-language-autonym="Hornjoserbsce" data-language-local-name="Upper Sorbian" class="interlanguage-link-target"><span>Hornjoserbsce</span></a></li><li class="interlanguage-link interwiki-ht mw-list-item"><a href="https://ht.wikipedia.org/wiki/Module:String" title="Module:String – Haitian Creole" lang="ht" hreflang="ht" data-title="Module:String" data-language-autonym="Kreyòl ayisyen" data-language-local-name="Haitian Creole" class="interlanguage-link-target"><span>Kreyòl ayisyen</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Modul:String" title="Modul:String – Hungarian" lang="hu" hreflang="hu" data-title="Modul:String" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/%D5%84%D5%B8%D5%A4%D5%B8%D6%82%D5%AC:String" title="Մոդուլ:String – Armenian" lang="hy" hreflang="hy" data-title="Մոդուլ:String" data-language-autonym="Հայերեն" data-language-local-name="Armenian" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-hyw mw-list-item"><a href="https://hyw.wikipedia.org/wiki/%D5%84%D5%B8%D5%A4%D5%B8%D6%82%D5%AC:String" title="Մոդուլ:String – Western Armenian" lang="hyw" hreflang="hyw" data-title="Մոդուլ:String" data-language-autonym="Արեւմտահայերէն" data-language-local-name="Western Armenian" class="interlanguage-link-target"><span>Արեւմտահայերէն</span></a></li><li class="interlanguage-link interwiki-ia mw-list-item"><a href="https://ia.wikipedia.org/wiki/Module:String" title="Module:String – Interlingua" lang="ia" hreflang="ia" data-title="Module:String" data-language-autonym="Interlingua" data-language-local-name="Interlingua" class="interlanguage-link-target"><span>Interlingua</span></a></li><li class="interlanguage-link interwiki-iba mw-list-item"><a href="https://iba.wikipedia.org/wiki/Modul:String" title="Modul:String – Iban" lang="iba" hreflang="iba" data-title="Modul:String" data-language-autonym="Jaku Iban" data-language-local-name="Iban" class="interlanguage-link-target"><span>Jaku Iban</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/Modul:String" title="Modul:String – Indonesian" lang="id" hreflang="id" data-title="Modul:String" data-language-autonym="Bahasa Indonesia" data-language-local-name="Indonesian" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-ig mw-list-item"><a href="https://ig.wikipedia.org/wiki/Module:String" title="Module:String – Igbo" lang="ig" hreflang="ig" data-title="Module:String" data-language-autonym="Igbo" data-language-local-name="Igbo" class="interlanguage-link-target"><span>Igbo</span></a></li><li class="interlanguage-link interwiki-ilo mw-list-item"><a href="https://ilo.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Iloko" lang="ilo" hreflang="ilo" data-title="Modulo:String" data-language-autonym="Ilokano" data-language-local-name="Iloko" class="interlanguage-link-target"><span>Ilokano</span></a></li><li class="interlanguage-link interwiki-inh mw-list-item"><a href="https://inh.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Ingush" lang="inh" hreflang="inh" data-title="Модуль:String" data-language-autonym="ГӀалгӀай" data-language-local-name="Ingush" class="interlanguage-link-target"><span>ГӀалгӀай</span></a></li><li class="interlanguage-link interwiki-io mw-list-item"><a href="https://io.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Ido" lang="io" hreflang="io" data-title="Modulo:String" data-language-autonym="Ido" data-language-local-name="Ido" class="interlanguage-link-target"><span>Ido</span></a></li><li class="interlanguage-link interwiki-is mw-list-item"><a href="https://is.wikipedia.org/wiki/Module:Strengur" title="Module:Strengur – Icelandic" lang="is" hreflang="is" data-title="Module:Strengur" data-language-autonym="Íslenska" data-language-local-name="Icelandic" class="interlanguage-link-target"><span>Íslenska</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Italian" lang="it" hreflang="it" data-title="Modulo:String" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:String" title="モジュール:String – Japanese" lang="ja" hreflang="ja" data-title="モジュール:String" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-jbo mw-list-item"><a href="https://jbo.wikipedia.org/wiki/Module:String" title="Module:String – Lojban" lang="jbo" hreflang="jbo" data-title="Module:String" data-language-autonym="La .lojban." data-language-local-name="Lojban" class="interlanguage-link-target"><span>La .lojban.</span></a></li><li class="interlanguage-link interwiki-jv mw-list-item"><a href="https://jv.wikipedia.org/wiki/Modhul:String" title="Modhul:String – Javanese" lang="jv" hreflang="jv" data-title="Modhul:String" data-language-autonym="Jawa" data-language-local-name="Javanese" class="interlanguage-link-target"><span>Jawa</span></a></li><li class="interlanguage-link interwiki-ka mw-list-item"><a href="https://ka.wikipedia.org/wiki/%E1%83%9B%E1%83%9D%E1%83%93%E1%83%A3%E1%83%9A%E1%83%98:String" title="მოდული:String – Georgian" lang="ka" hreflang="ka" data-title="მოდული:String" data-language-autonym="ქართული" data-language-local-name="Georgian" class="interlanguage-link-target"><span>ქართული</span></a></li><li class="interlanguage-link interwiki-kab mw-list-item"><a href="https://kab.wikipedia.org/wiki/Module:String" title="Module:String – Kabyle" lang="kab" hreflang="kab" data-title="Module:String" data-language-autonym="Taqbaylit" data-language-local-name="Kabyle" class="interlanguage-link-target"><span>Taqbaylit</span></a></li><li class="interlanguage-link interwiki-kbd mw-list-item"><a href="https://kbd.wikipedia.org/wiki/Module:String" title="Module:String – Kabardian" lang="kbd" hreflang="kbd" data-title="Module:String" data-language-autonym="Адыгэбзэ" data-language-local-name="Kabardian" class="interlanguage-link-target"><span>Адыгэбзэ</span></a></li><li class="interlanguage-link interwiki-kg mw-list-item"><a href="https://kg.wikipedia.org/wiki/Module:String" title="Module:String – Kongo" lang="kg" hreflang="kg" data-title="Module:String" data-language-autonym="Kongo" data-language-local-name="Kongo" class="interlanguage-link-target"><span>Kongo</span></a></li><li class="interlanguage-link interwiki-kk mw-list-item"><a href="https://kk.wikipedia.org/wiki/Module:String" title="Module:String – Kazakh" lang="kk" hreflang="kk" data-title="Module:String" data-language-autonym="Қазақша" data-language-local-name="Kazakh" class="interlanguage-link-target"><span>Қазақша</span></a></li><li class="interlanguage-link interwiki-km mw-list-item"><a href="https://km.wikipedia.org/wiki/Module:String" title="Module:String – Khmer" lang="km" hreflang="km" data-title="Module:String" data-language-autonym="ភាសាខ្មែរ" data-language-local-name="Khmer" class="interlanguage-link-target"><span>ភាសាខ្មែរ</span></a></li><li class="interlanguage-link interwiki-kn mw-list-item"><a href="https://kn.wikipedia.org/wiki/%E0%B2%AE%E0%B2%BE%E0%B2%A1%E0%B3%8D%E0%B2%AF%E0%B3%82%E0%B2%B2%E0%B3%8D:String" title="ಮಾಡ್ಯೂಲ್:String – Kannada" lang="kn" hreflang="kn" data-title="ಮಾಡ್ಯೂಲ್:String" data-language-autonym="ಕನ್ನಡ" data-language-local-name="Kannada" class="interlanguage-link-target"><span>ಕನ್ನಡ</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%93%88:String" title="모듈:String – Korean" lang="ko" hreflang="ko" data-title="모듈:String" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-koi mw-list-item"><a href="https://koi.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Komi-Permyak" lang="koi" hreflang="koi" data-title="Модуль:String" data-language-autonym="Перем коми" data-language-local-name="Komi-Permyak" class="interlanguage-link-target"><span>Перем коми</span></a></li><li class="interlanguage-link interwiki-ks mw-list-item"><a href="https://ks.wikipedia.org/wiki/%D9%85%D8%A7%DA%88%DB%8C%D9%88%D9%97%D9%84:String" title="ماڈیوٗل:String – Kashmiri" lang="ks" hreflang="ks" data-title="ماڈیوٗل:String" data-language-autonym="कॉशुर / کٲشُر" data-language-local-name="Kashmiri" class="interlanguage-link-target"><span>कॉशुर / کٲشُر</span></a></li><li class="interlanguage-link interwiki-ku mw-list-item"><a href="https://ku.wikipedia.org/wiki/Modul:String" title="Modul:String – Kurdish" lang="ku" hreflang="ku" data-title="Modul:String" data-language-autonym="Kurdî" data-language-local-name="Kurdish" class="interlanguage-link-target"><span>Kurdî</span></a></li><li class="interlanguage-link interwiki-kv mw-list-item"><a href="https://kv.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Komi" lang="kv" hreflang="kv" data-title="Модуль:String" data-language-autonym="Коми" data-language-local-name="Komi" class="interlanguage-link-target"><span>Коми</span></a></li><li class="interlanguage-link interwiki-kw mw-list-item"><a href="https://kw.wikipedia.org/wiki/Module:String" title="Module:String – Cornish" lang="kw" hreflang="kw" data-title="Module:String" data-language-autonym="Kernowek" data-language-local-name="Cornish" class="interlanguage-link-target"><span>Kernowek</span></a></li><li class="interlanguage-link interwiki-ky mw-list-item"><a href="https://ky.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Kyrgyz" lang="ky" hreflang="ky" data-title="Модуль:String" data-language-autonym="Кыргызча" data-language-local-name="Kyrgyz" class="interlanguage-link-target"><span>Кыргызча</span></a></li><li class="interlanguage-link interwiki-la mw-list-item"><a href="https://la.wikipedia.org/wiki/Modulus:String" title="Modulus:String – Latin" lang="la" hreflang="la" data-title="Modulus:String" data-language-autonym="Latina" data-language-local-name="Latin" class="interlanguage-link-target"><span>Latina</span></a></li><li class="interlanguage-link interwiki-lad mw-list-item"><a href="https://lad.wikipedia.org/wiki/M%C3%B3dulo:String" title="Módulo:String – Ladino" lang="lad" hreflang="lad" data-title="Módulo:String" data-language-autonym="Ladino" data-language-local-name="Ladino" class="interlanguage-link-target"><span>Ladino</span></a></li><li class="interlanguage-link interwiki-lb mw-list-item"><a href="https://lb.wikipedia.org/wiki/Modul:String" title="Modul:String – Luxembourgish" lang="lb" hreflang="lb" data-title="Modul:String" data-language-autonym="Lëtzebuergesch" data-language-local-name="Luxembourgish" class="interlanguage-link-target"><span>Lëtzebuergesch</span></a></li><li class="interlanguage-link interwiki-lbe mw-list-item"><a href="https://lbe.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Lak" lang="lbe" hreflang="lbe" data-title="Модуль:String" data-language-autonym="Лакку" data-language-local-name="Lak" class="interlanguage-link-target"><span>Лакку</span></a></li><li class="interlanguage-link interwiki-lez mw-list-item"><a href="https://lez.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Lezghian" lang="lez" hreflang="lez" data-title="Модуль:String" data-language-autonym="Лезги" data-language-local-name="Lezghian" class="interlanguage-link-target"><span>Лезги</span></a></li><li class="interlanguage-link interwiki-lfn mw-list-item"><a href="https://lfn.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Lingua Franca Nova" lang="lfn" hreflang="lfn" data-title="Modulo:String" data-language-autonym="Lingua Franca Nova" data-language-local-name="Lingua Franca Nova" class="interlanguage-link-target"><span>Lingua Franca Nova</span></a></li><li class="interlanguage-link interwiki-lg mw-list-item"><a href="https://lg.wikipedia.org/wiki/Module:String" title="Module:String – Ganda" lang="lg" hreflang="lg" data-title="Module:String" data-language-autonym="Luganda" data-language-local-name="Ganda" class="interlanguage-link-target"><span>Luganda</span></a></li><li class="interlanguage-link interwiki-lij mw-list-item"><a href="https://lij.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Ligurian" lang="lij" hreflang="lij" data-title="Modulo:String" data-language-autonym="Ligure" data-language-local-name="Ligurian" class="interlanguage-link-target"><span>Ligure</span></a></li><li class="interlanguage-link interwiki-lld mw-list-item"><a href="https://lld.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Ladin" lang="lld" hreflang="lld" data-title="Modulo:String" data-language-autonym="Ladin" data-language-local-name="Ladin" class="interlanguage-link-target"><span>Ladin</span></a></li><li class="interlanguage-link interwiki-lmo mw-list-item"><a href="https://lmo.wikipedia.org/wiki/M%C3%B2dul:String" title="Mòdul:String – Lombard" lang="lmo" hreflang="lmo" data-title="Mòdul:String" data-language-autonym="Lombard" data-language-local-name="Lombard" class="interlanguage-link-target"><span>Lombard</span></a></li><li class="interlanguage-link interwiki-ln mw-list-item"><a href="https://ln.wikipedia.org/wiki/Module:String" title="Module:String – Lingala" lang="ln" hreflang="ln" data-title="Module:String" data-language-autonym="Lingála" data-language-local-name="Lingala" class="interlanguage-link-target"><span>Lingála</span></a></li><li class="interlanguage-link interwiki-lo mw-list-item"><a href="https://lo.wikipedia.org/wiki/Module:String" title="Module:String – Lao" lang="lo" hreflang="lo" data-title="Module:String" data-language-autonym="ລາວ" data-language-local-name="Lao" class="interlanguage-link-target"><span>ລາວ</span></a></li><li class="interlanguage-link interwiki-lt mw-list-item"><a href="https://lt.wikipedia.org/wiki/Module:String" title="Module:String – Lithuanian" lang="lt" hreflang="lt" data-title="Module:String" data-language-autonym="Lietuvių" data-language-local-name="Lithuanian" class="interlanguage-link-target"><span>Lietuvių</span></a></li><li class="interlanguage-link interwiki-ltg mw-list-item"><a href="https://ltg.wikipedia.org/wiki/Modulis:String" title="Modulis:String – Latgalian" lang="ltg" hreflang="ltg" data-title="Modulis:String" data-language-autonym="Latgaļu" data-language-local-name="Latgalian" class="interlanguage-link-target"><span>Latgaļu</span></a></li><li class="interlanguage-link interwiki-lv mw-list-item"><a href="https://lv.wikipedia.org/wiki/Modulis:String" title="Modulis:String – Latvian" lang="lv" hreflang="lv" data-title="Modulis:String" data-language-autonym="Latviešu" data-language-local-name="Latvian" class="interlanguage-link-target"><span>Latviešu</span></a></li><li class="interlanguage-link interwiki-mad mw-list-item"><a href="https://mad.wikipedia.org/wiki/Modul:String" title="Modul:String – Madurese" lang="mad" hreflang="mad" data-title="Modul:String" data-language-autonym="Madhurâ" data-language-local-name="Madurese" class="interlanguage-link-target"><span>Madhurâ</span></a></li><li class="interlanguage-link interwiki-mai mw-list-item"><a href="https://mai.wikipedia.org/wiki/%E0%A4%AE%E0%A5%8B%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%81%E0%A4%B2:String" title="मोड्युल:String – Maithili" lang="mai" hreflang="mai" data-title="मोड्युल:String" data-language-autonym="मैथिली" data-language-local-name="Maithili" class="interlanguage-link-target"><span>मैथिली</span></a></li><li class="interlanguage-link interwiki-map-bms mw-list-item"><a href="https://map-bms.wikipedia.org/wiki/Modhul:String" title="Modhul:String – Banyumasan" lang="jv-x-bms" hreflang="jv-x-bms" data-title="Modhul:String" data-language-autonym="Basa Banyumasan" data-language-local-name="Banyumasan" class="interlanguage-link-target"><span>Basa Banyumasan</span></a></li><li class="interlanguage-link interwiki-mdf mw-list-item"><a href="https://mdf.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Moksha" lang="mdf" hreflang="mdf" data-title="Модуль:String" data-language-autonym="Мокшень" data-language-local-name="Moksha" class="interlanguage-link-target"><span>Мокшень</span></a></li><li class="interlanguage-link interwiki-mg mw-list-item"><a href="https://mg.wikipedia.org/wiki/Module:String" title="Module:String – Malagasy" lang="mg" hreflang="mg" data-title="Module:String" data-language-autonym="Malagasy" data-language-local-name="Malagasy" class="interlanguage-link-target"><span>Malagasy</span></a></li><li class="interlanguage-link interwiki-mhr mw-list-item"><a href="https://mhr.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Eastern Mari" lang="mhr" hreflang="mhr" data-title="Модуль:String" data-language-autonym="Олык марий" data-language-local-name="Eastern Mari" class="interlanguage-link-target"><span>Олык марий</span></a></li><li class="interlanguage-link interwiki-mi mw-list-item"><a href="https://mi.wikipedia.org/wiki/Module:String" title="Module:String – Māori" lang="mi" hreflang="mi" data-title="Module:String" data-language-autonym="Māori" data-language-local-name="Māori" class="interlanguage-link-target"><span>Māori</span></a></li><li class="interlanguage-link interwiki-min mw-list-item"><a href="https://min.wikipedia.org/wiki/Modul:String" title="Modul:String – Minangkabau" lang="min" hreflang="min" data-title="Modul:String" data-language-autonym="Minangkabau" data-language-local-name="Minangkabau" class="interlanguage-link-target"><span>Minangkabau</span></a></li><li class="interlanguage-link interwiki-mk mw-list-item"><a href="https://mk.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:String" title="Модул:String – Macedonian" lang="mk" hreflang="mk" data-title="Модул:String" data-language-autonym="Македонски" data-language-local-name="Macedonian" class="interlanguage-link-target"><span>Македонски</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:String" title="ഘടകം:String – Malayalam" lang="ml" hreflang="ml" data-title="ഘടകം:String" data-language-autonym="മലയാളം" data-language-local-name="Malayalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-mn mw-list-item"><a href="https://mn.wikipedia.org/wiki/Module:String" title="Module:String – Mongolian" lang="mn" hreflang="mn" data-title="Module:String" data-language-autonym="Монгол" data-language-local-name="Mongolian" class="interlanguage-link-target"><span>Монгол</span></a></li><li class="interlanguage-link interwiki-mni mw-list-item"><a href="https://mni.wikipedia.org/wiki/Module:String" title="Module:String – Manipuri" lang="mni" hreflang="mni" data-title="Module:String" data-language-autonym="ꯃꯤꯇꯩ ꯂꯣꯟ" data-language-local-name="Manipuri" class="interlanguage-link-target"><span>ꯃꯤꯇꯩ ꯂꯣꯟ</span></a></li><li class="interlanguage-link interwiki-mnw mw-list-item"><a href="https://mnw.wikipedia.org/wiki/%E1%80%99%E1%80%9D%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0:String" title="မဝ်ဂျူ:String – Mon" lang="mnw" hreflang="mnw" data-title="မဝ်ဂျူ:String" data-language-autonym="ဘာသာမန်" data-language-local-name="Mon" class="interlanguage-link-target"><span>ဘာသာမန်</span></a></li><li class="interlanguage-link interwiki-mr mw-list-item"><a href="https://mr.wikipedia.org/wiki/%E0%A4%B5%E0%A4%BF%E0%A4%AD%E0%A4%BE%E0%A4%97:String" title="विभाग:String – Marathi" lang="mr" hreflang="mr" data-title="विभाग:String" data-language-autonym="मराठी" data-language-local-name="Marathi" class="interlanguage-link-target"><span>मराठी</span></a></li><li class="interlanguage-link interwiki-mrj mw-list-item"><a href="https://mrj.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Western Mari" lang="mrj" hreflang="mrj" data-title="Модуль:String" data-language-autonym="Кырык мары" data-language-local-name="Western Mari" class="interlanguage-link-target"><span>Кырык мары</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Modul:String" title="Modul:String – Malay" lang="ms" hreflang="ms" data-title="Modul:String" 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-mt mw-list-item"><a href="https://mt.wikipedia.org/wiki/Module:String" title="Module:String – Maltese" lang="mt" hreflang="mt" data-title="Module:String" data-language-autonym="Malti" data-language-local-name="Maltese" class="interlanguage-link-target"><span>Malti</span></a></li><li class="interlanguage-link interwiki-mwl mw-list-item"><a href="https://mwl.wikipedia.org/wiki/M%C3%B3dulo:String" title="Módulo:String – Mirandese" lang="mwl" hreflang="mwl" data-title="Módulo:String" data-language-autonym="Mirandés" data-language-local-name="Mirandese" class="interlanguage-link-target"><span>Mirandés</span></a></li><li class="interlanguage-link interwiki-my mw-list-item"><a href="https://my.wikipedia.org/wiki/%E1%80%99%E1%80%B1%E1%80%AC%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0%E1%80%B8:String" title="မော်ဂျူး:String – Burmese" lang="my" hreflang="my" data-title="မော်ဂျူး:String" data-language-autonym="မြန်မာဘာသာ" data-language-local-name="Burmese" class="interlanguage-link-target"><span>မြန်မာဘာသာ</span></a></li><li class="interlanguage-link interwiki-myv mw-list-item"><a href="https://myv.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Erzya" lang="myv" hreflang="myv" data-title="Модуль:String" data-language-autonym="Эрзянь" data-language-local-name="Erzya" class="interlanguage-link-target"><span>Эрзянь</span></a></li><li class="interlanguage-link interwiki-mzn mw-list-item"><a href="https://mzn.wikipedia.org/wiki/%D9%85%D8%A7%DA%98%D9%88%D9%84:String" title="ماژول:String – Mazanderani" lang="mzn" hreflang="mzn" data-title="ماژول:String" data-language-autonym="مازِرونی" data-language-local-name="Mazanderani" class="interlanguage-link-target"><span>مازِرونی</span></a></li><li class="interlanguage-link interwiki-nah mw-list-item"><a href="https://nah.wikipedia.org/wiki/M%C3%B3dulo:String" title="Módulo:String – Nahuatl" lang="nah" hreflang="nah" data-title="Módulo:String" data-language-autonym="Nāhuatl" data-language-local-name="Nahuatl" class="interlanguage-link-target"><span>Nāhuatl</span></a></li><li class="interlanguage-link interwiki-nap mw-list-item"><a href="https://nap.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Neapolitan" lang="nap" hreflang="nap" data-title="Modulo:String" data-language-autonym="Napulitano" data-language-local-name="Neapolitan" class="interlanguage-link-target"><span>Napulitano</span></a></li><li class="interlanguage-link interwiki-nds-nl mw-list-item"><a href="https://nds-nl.wikipedia.org/wiki/Module:String" title="Module:String – Low Saxon" lang="nds-NL" hreflang="nds-NL" data-title="Module:String" data-language-autonym="Nedersaksies" data-language-local-name="Low Saxon" class="interlanguage-link-target"><span>Nedersaksies</span></a></li><li class="interlanguage-link interwiki-ne mw-list-item"><a href="https://ne.wikipedia.org/wiki/%E0%A4%AE%E0%A5%8B%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%81%E0%A4%B2:String" title="मोड्युल:String – Nepali" lang="ne" hreflang="ne" data-title="मोड्युल:String" data-language-autonym="नेपाली" data-language-local-name="Nepali" class="interlanguage-link-target"><span>नेपाली</span></a></li><li class="interlanguage-link interwiki-nia mw-list-item"><a href="https://nia.wikipedia.org/wiki/Modul:String" title="Modul:String – Nias" lang="nia" hreflang="nia" data-title="Modul:String" data-language-autonym="Li Niha" data-language-local-name="Nias" class="interlanguage-link-target"><span>Li Niha</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Module:String" title="Module:String – Dutch" lang="nl" hreflang="nl" data-title="Module:String" data-language-autonym="Nederlands" data-language-local-name="Dutch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-nn mw-list-item"><a href="https://nn.wikipedia.org/wiki/Modul:String" title="Modul:String – Norwegian Nynorsk" lang="nn" hreflang="nn" data-title="Modul:String" data-language-autonym="Norsk nynorsk" data-language-local-name="Norwegian Nynorsk" class="interlanguage-link-target"><span>Norsk nynorsk</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/Modul:String" title="Modul:String – Norwegian Bokmål" lang="nb" hreflang="nb" data-title="Modul:String" data-language-autonym="Norsk bokmål" data-language-local-name="Norwegian Bokmål" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-nov mw-list-item"><a href="https://nov.wikipedia.org/wiki/Module:String" title="Module:String – Novial" lang="nov" hreflang="nov" data-title="Module:String" data-language-autonym="Novial" data-language-local-name="Novial" class="interlanguage-link-target"><span>Novial</span></a></li><li class="interlanguage-link interwiki-nso mw-list-item"><a href="https://nso.wikipedia.org/wiki/Module:String" title="Module:String – Northern Sotho" lang="nso" hreflang="nso" data-title="Module:String" data-language-autonym="Sesotho sa Leboa" data-language-local-name="Northern Sotho" class="interlanguage-link-target"><span>Sesotho sa Leboa</span></a></li><li class="interlanguage-link interwiki-ny mw-list-item"><a href="https://ny.wikipedia.org/wiki/Module:String" title="Module:String – Nyanja" lang="ny" hreflang="ny" data-title="Module:String" data-language-autonym="Chi-Chewa" data-language-local-name="Nyanja" class="interlanguage-link-target"><span>Chi-Chewa</span></a></li><li class="interlanguage-link interwiki-oc mw-list-item"><a href="https://oc.wikipedia.org/wiki/M%C3%B2dul:String" title="Mòdul:String – Occitan" lang="oc" hreflang="oc" data-title="Mòdul:String" data-language-autonym="Occitan" data-language-local-name="Occitan" class="interlanguage-link-target"><span>Occitan</span></a></li><li class="interlanguage-link interwiki-olo mw-list-item"><a href="https://olo.wikipedia.org/wiki/Moduuli:String" title="Moduuli:String – Livvi-Karelian" lang="olo" hreflang="olo" data-title="Moduuli:String" data-language-autonym="Livvinkarjala" data-language-local-name="Livvi-Karelian" class="interlanguage-link-target"><span>Livvinkarjala</span></a></li><li class="interlanguage-link interwiki-or mw-list-item"><a href="https://or.wikipedia.org/wiki/%E0%AC%AE%E0%AC%A1%E0%AD%8D%E0%AD%9F%E0%AD%81%E0%AC%B2:String" title="ମଡ୍ୟୁଲ:String – Odia" lang="or" hreflang="or" data-title="ମଡ୍ୟୁଲ:String" data-language-autonym="ଓଡ଼ିଆ" data-language-local-name="Odia" class="interlanguage-link-target"><span>ଓଡ଼ିଆ</span></a></li><li class="interlanguage-link interwiki-os mw-list-item"><a href="https://os.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Ossetic" lang="os" hreflang="os" data-title="Модуль:String" data-language-autonym="Ирон" data-language-local-name="Ossetic" class="interlanguage-link-target"><span>Ирон</span></a></li><li class="interlanguage-link interwiki-pa mw-list-item"><a href="https://pa.wikipedia.org/wiki/%E0%A8%AE%E0%A9%8C%E0%A8%A1%E0%A8%BF%E0%A8%8A%E0%A8%B2:String" title="ਮੌਡਿਊਲ:String – Punjabi" lang="pa" hreflang="pa" data-title="ਮੌਡਿਊਲ:String" data-language-autonym="ਪੰਜਾਬੀ" data-language-local-name="Punjabi" class="interlanguage-link-target"><span>ਪੰਜਾਬੀ</span></a></li><li class="interlanguage-link interwiki-pag mw-list-item"><a href="https://pag.wikipedia.org/wiki/Module:String" title="Module:String – Pangasinan" lang="pag" hreflang="pag" data-title="Module:String" data-language-autonym="Pangasinan" data-language-local-name="Pangasinan" class="interlanguage-link-target"><span>Pangasinan</span></a></li><li class="interlanguage-link interwiki-pam mw-list-item"><a href="https://pam.wikipedia.org/wiki/Module:String" title="Module:String – Pampanga" lang="pam" hreflang="pam" data-title="Module:String" data-language-autonym="Kapampangan" data-language-local-name="Pampanga" class="interlanguage-link-target"><span>Kapampangan</span></a></li><li class="interlanguage-link interwiki-pap mw-list-item"><a href="https://pap.wikipedia.org/wiki/Module:String" title="Module:String – Papiamento" lang="pap" hreflang="pap" data-title="Module:String" data-language-autonym="Papiamentu" data-language-local-name="Papiamento" class="interlanguage-link-target"><span>Papiamentu</span></a></li><li class="interlanguage-link interwiki-pcd mw-list-item"><a href="https://pcd.wikipedia.org/wiki/Module:String" title="Module:String – Picard" lang="pcd" hreflang="pcd" data-title="Module:String" data-language-autonym="Picard" data-language-local-name="Picard" class="interlanguage-link-target"><span>Picard</span></a></li><li class="interlanguage-link interwiki-pi mw-list-item"><a href="https://pi.wikipedia.org/wiki/Module:String" title="Module:String – Pali" lang="pi" hreflang="pi" data-title="Module:String" data-language-autonym="पालि" data-language-local-name="Pali" class="interlanguage-link-target"><span>पालि</span></a></li><li class="interlanguage-link interwiki-pih mw-list-item"><a href="https://pih.wikipedia.org/wiki/Module:String" title="Module:String – Norfuk / Pitkern" lang="pih" hreflang="pih" data-title="Module:String" data-language-autonym="Norfuk / Pitkern" data-language-local-name="Norfuk / Pitkern" class="interlanguage-link-target"><span>Norfuk / Pitkern</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Modu%C5%82:String" title="Moduł:String – Polish" lang="pl" hreflang="pl" data-title="Moduł:String" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pms mw-list-item"><a href="https://pms.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Piedmontese" lang="pms" hreflang="pms" data-title="Modulo:String" data-language-autonym="Piemontèis" data-language-local-name="Piedmontese" class="interlanguage-link-target"><span>Piemontèis</span></a></li><li class="interlanguage-link interwiki-pnb mw-list-item"><a href="https://pnb.wikipedia.org/wiki/%D9%85%D8%A7%DA%88%DB%8C%D9%88%D9%84:String" title="ماڈیول:String – Western Punjabi" lang="pnb" hreflang="pnb" data-title="ماڈیول:String" data-language-autonym="پنجابی" data-language-local-name="Western Punjabi" class="interlanguage-link-target"><span>پنجابی</span></a></li><li class="interlanguage-link interwiki-ps mw-list-item"><a href="https://ps.wikipedia.org/wiki/Module:String" title="Module:String – Pashto" lang="ps" hreflang="ps" data-title="Module:String" data-language-autonym="پښتو" data-language-local-name="Pashto" class="interlanguage-link-target"><span>پښتو</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/M%C3%B3dulo:String" title="Módulo:String – Portuguese" lang="pt" hreflang="pt" data-title="Módulo:String" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-qu mw-list-item"><a href="https://qu.wikipedia.org/wiki/M%C3%B3dulo:String" title="Módulo:String – Quechua" lang="qu" hreflang="qu" data-title="Módulo:String" data-language-autonym="Runa Simi" data-language-local-name="Quechua" class="interlanguage-link-target"><span>Runa Simi</span></a></li><li class="interlanguage-link interwiki-rm mw-list-item"><a href="https://rm.wikipedia.org/wiki/Modul:Str" title="Modul:Str – Romansh" lang="rm" hreflang="rm" data-title="Modul:Str" data-language-autonym="Rumantsch" data-language-local-name="Romansh" class="interlanguage-link-target"><span>Rumantsch</span></a></li><li class="interlanguage-link interwiki-rn mw-list-item"><a href="https://rn.wikipedia.org/wiki/Module:String" title="Module:String – Rundi" lang="rn" hreflang="rn" data-title="Module:String" data-language-autonym="Ikirundi" data-language-local-name="Rundi" class="interlanguage-link-target"><span>Ikirundi</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wikipedia.org/wiki/Modul:String" title="Modul:String – Romanian" lang="ro" hreflang="ro" data-title="Modul:String" data-language-autonym="Română" data-language-local-name="Romanian" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-roa-tara mw-list-item"><a href="https://roa-tara.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Tarantino" lang="nap-x-tara" hreflang="nap-x-tara" data-title="Modulo:String" data-language-autonym="Tarandíne" data-language-local-name="Tarantino" class="interlanguage-link-target"><span>Tarandíne</span></a></li><li class="interlanguage-link interwiki-rsk mw-list-item"><a href="https://rsk.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:String" title="Модул:String – Pannonian Rusyn" lang="rsk" hreflang="rsk" data-title="Модул:String" data-language-autonym="Руски" data-language-local-name="Pannonian Rusyn" class="interlanguage-link-target"><span>Руски</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Russian" lang="ru" hreflang="ru" data-title="Модуль:String" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-rue mw-list-item"><a href="https://rue.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Rusyn" lang="rue" hreflang="rue" data-title="Модуль:String" data-language-autonym="Русиньскый" data-language-local-name="Rusyn" class="interlanguage-link-target"><span>Русиньскый</span></a></li><li class="interlanguage-link interwiki-rw mw-list-item"><a href="https://rw.wikipedia.org/wiki/Module:String" title="Module:String – Kinyarwanda" lang="rw" hreflang="rw" data-title="Module:String" data-language-autonym="Ikinyarwanda" data-language-local-name="Kinyarwanda" class="interlanguage-link-target"><span>Ikinyarwanda</span></a></li><li class="interlanguage-link interwiki-sa mw-list-item"><a href="https://sa.wikipedia.org/wiki/%E0%A4%AA%E0%A4%9F%E0%A4%B2%E0%A4%AE%E0%A5%8D:String" title="पटलम्:String – Sanskrit" lang="sa" hreflang="sa" data-title="पटलम्:String" data-language-autonym="संस्कृतम्" data-language-local-name="Sanskrit" class="interlanguage-link-target"><span>संस्कृतम्</span></a></li><li class="interlanguage-link interwiki-sah mw-list-item"><a href="https://sah.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Yakut" lang="sah" hreflang="sah" data-title="Модуль:String" data-language-autonym="Саха тыла" data-language-local-name="Yakut" class="interlanguage-link-target"><span>Саха тыла</span></a></li><li class="interlanguage-link interwiki-sat mw-list-item"><a href="https://sat.wikipedia.org/wiki/%E1%B1%A2%E1%B1%B3%E1%B1%B0%E1%B1%A9%E1%B1%9E:String" title="ᱢᱳᱰᱩᱞ:String – Santali" lang="sat" hreflang="sat" data-title="ᱢᱳᱰᱩᱞ:String" data-language-autonym="ᱥᱟᱱᱛᱟᱲᱤ" data-language-local-name="Santali" class="interlanguage-link-target"><span>ᱥᱟᱱᱛᱟᱲᱤ</span></a></li><li class="interlanguage-link interwiki-sc mw-list-item"><a href="https://sc.wikipedia.org/wiki/Module:String" title="Module:String – Sardinian" lang="sc" hreflang="sc" data-title="Module:String" data-language-autonym="Sardu" data-language-local-name="Sardinian" class="interlanguage-link-target"><span>Sardu</span></a></li><li class="interlanguage-link interwiki-scn mw-list-item"><a href="https://scn.wikipedia.org/wiki/M%C3%B2dulu:String" title="Mòdulu:String – Sicilian" lang="scn" hreflang="scn" data-title="Mòdulu:String" data-language-autonym="Sicilianu" data-language-local-name="Sicilian" class="interlanguage-link-target"><span>Sicilianu</span></a></li><li class="interlanguage-link interwiki-sco mw-list-item"><a href="https://sco.wikipedia.org/wiki/Module:String" title="Module:String – Scots" lang="sco" hreflang="sco" data-title="Module:String" data-language-autonym="Scots" data-language-local-name="Scots" class="interlanguage-link-target"><span>Scots</span></a></li><li class="interlanguage-link interwiki-sd mw-list-item"><a href="https://sd.wikipedia.org/wiki/%D9%85%D8%A7%DA%8A%D9%8A%D9%88%D9%84:String" title="ماڊيول:String – Sindhi" lang="sd" hreflang="sd" data-title="ماڊيول:String" data-language-autonym="سنڌي" data-language-local-name="Sindhi" class="interlanguage-link-target"><span>سنڌي</span></a></li><li class="interlanguage-link interwiki-se mw-list-item"><a href="https://se.wikipedia.org/wiki/Modula:String" title="Modula:String – Northern Sami" lang="se" hreflang="se" data-title="Modula:String" data-language-autonym="Davvisámegiella" data-language-local-name="Northern Sami" class="interlanguage-link-target"><span>Davvisámegiella</span></a></li><li class="interlanguage-link interwiki-sh mw-list-item"><a href="https://sh.wikipedia.org/wiki/Modul:String" title="Modul:String – Serbo-Croatian" lang="sh" hreflang="sh" data-title="Modul:String" data-language-autonym="Srpskohrvatski / српскохрватски" data-language-local-name="Serbo-Croatian" class="interlanguage-link-target"><span>Srpskohrvatski / српскохрватски</span></a></li><li class="interlanguage-link interwiki-shi mw-list-item"><a href="https://shi.wikipedia.org/wiki/Module:String" title="Module:String – Tachelhit" lang="shi" hreflang="shi" data-title="Module:String" data-language-autonym="Taclḥit" data-language-local-name="Tachelhit" class="interlanguage-link-target"><span>Taclḥit</span></a></li><li class="interlanguage-link interwiki-shn mw-list-item"><a href="https://shn.wikipedia.org/wiki/%E1%80%99%E1%80%B1%E1%82%83%E1%82%87%E1%81%B5%E1%80%BB%E1%80%B0%E1%80%B8:String" title="မေႃႇၵျူး:String – Shan" lang="shn" hreflang="shn" data-title="မေႃႇၵျူး:String" data-language-autonym="ၽႃႇသႃႇတႆး " data-language-local-name="Shan" class="interlanguage-link-target"><span>ၽႃႇသႃႇတႆး </span></a></li><li class="interlanguage-link interwiki-si mw-list-item"><a href="https://si.wikipedia.org/wiki/Module:String" title="Module:String – Sinhala" lang="si" hreflang="si" data-title="Module:String" data-language-autonym="සිංහල" data-language-local-name="Sinhala" class="interlanguage-link-target"><span>සිංහල</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Module:String" title="Module:String – Simple English" lang="en-simple" hreflang="en-simple" data-title="Module:String" 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-sk mw-list-item"><a href="https://sk.wikipedia.org/wiki/Modul:String" title="Modul:String – Slovak" lang="sk" hreflang="sk" data-title="Modul:String" data-language-autonym="Slovenčina" data-language-local-name="Slovak" class="interlanguage-link-target"><span>Slovenčina</span></a></li><li class="interlanguage-link interwiki-skr mw-list-item"><a href="https://skr.wikipedia.org/wiki/%D9%85%D8%A7%DA%88%DB%8C%D9%88%D9%84:String" title="ماڈیول:String – Saraiki" lang="skr" hreflang="skr" data-title="ماڈیول:String" data-language-autonym="سرائیکی" data-language-local-name="Saraiki" class="interlanguage-link-target"><span>سرائیکی</span></a></li><li class="interlanguage-link interwiki-sl mw-list-item"><a href="https://sl.wikipedia.org/wiki/Modul:Niz" title="Modul:Niz – Slovenian" lang="sl" hreflang="sl" data-title="Modul:Niz" data-language-autonym="Slovenščina" data-language-local-name="Slovenian" class="interlanguage-link-target"><span>Slovenščina</span></a></li><li class="interlanguage-link interwiki-sm mw-list-item"><a href="https://sm.wikipedia.org/wiki/Module:String" title="Module:String – Samoan" lang="sm" hreflang="sm" data-title="Module:String" data-language-autonym="Gagana Samoa" data-language-local-name="Samoan" class="interlanguage-link-target"><span>Gagana Samoa</span></a></li><li class="interlanguage-link interwiki-smn mw-list-item"><a href="https://smn.wikipedia.org/wiki/Mooduul:String" title="Mooduul:String – Inari Sami" lang="smn" hreflang="smn" data-title="Mooduul:String" data-language-autonym="Anarâškielâ" data-language-local-name="Inari Sami" class="interlanguage-link-target"><span>Anarâškielâ</span></a></li><li class="interlanguage-link interwiki-sn mw-list-item"><a href="https://sn.wikipedia.org/wiki/Module:String" title="Module:String – Shona" lang="sn" hreflang="sn" data-title="Module:String" data-language-autonym="ChiShona" data-language-local-name="Shona" class="interlanguage-link-target"><span>ChiShona</span></a></li><li class="interlanguage-link interwiki-so mw-list-item"><a href="https://so.wikipedia.org/wiki/Module:String" title="Module:String – Somali" lang="so" hreflang="so" data-title="Module:String" data-language-autonym="Soomaaliga" data-language-local-name="Somali" class="interlanguage-link-target"><span>Soomaaliga</span></a></li><li class="interlanguage-link interwiki-sq mw-list-item"><a href="https://sq.wikipedia.org/wiki/Moduli:String" title="Moduli:String – Albanian" lang="sq" hreflang="sq" data-title="Moduli:String" data-language-autonym="Shqip" data-language-local-name="Albanian" class="interlanguage-link-target"><span>Shqip</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:String" title="Модул:String – Serbian" lang="sr" hreflang="sr" data-title="Модул:String" data-language-autonym="Српски / srpski" data-language-local-name="Serbian" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-ss mw-list-item"><a href="https://ss.wikipedia.org/wiki/Module:String" title="Module:String – Swati" lang="ss" hreflang="ss" data-title="Module:String" data-language-autonym="SiSwati" data-language-local-name="Swati" class="interlanguage-link-target"><span>SiSwati</span></a></li><li class="interlanguage-link interwiki-su mw-list-item"><a href="https://su.wikipedia.org/wiki/Modul:String" title="Modul:String – Sundanese" lang="su" hreflang="su" data-title="Modul:String" data-language-autonym="Sunda" data-language-local-name="Sundanese" class="interlanguage-link-target"><span>Sunda</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Modul:String" title="Modul:String – Swedish" lang="sv" hreflang="sv" data-title="Modul:String" data-language-autonym="Svenska" data-language-local-name="Swedish" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-sw mw-list-item"><a href="https://sw.wikipedia.org/wiki/Module:String" title="Module:String – Swahili" lang="sw" hreflang="sw" data-title="Module:String" data-language-autonym="Kiswahili" data-language-local-name="Swahili" class="interlanguage-link-target"><span>Kiswahili</span></a></li><li class="interlanguage-link interwiki-szl mw-list-item"><a href="https://szl.wikipedia.org/wiki/Modu%C5%82:String" title="Moduł:String – Silesian" lang="szl" hreflang="szl" data-title="Moduł:String" data-language-autonym="Ślůnski" data-language-local-name="Silesian" class="interlanguage-link-target"><span>Ślůnski</span></a></li><li class="interlanguage-link interwiki-szy mw-list-item"><a href="https://szy.wikipedia.org/wiki/bacu-saupu:String" title="bacu-saupu:String – Sakizaya" lang="szy" hreflang="szy" data-title="bacu-saupu:String" data-language-autonym="Sakizaya" data-language-local-name="Sakizaya" class="interlanguage-link-target"><span>Sakizaya</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/Module:String" title="Module:String – Tamil" lang="ta" hreflang="ta" data-title="Module:String" data-language-autonym="தமிழ்" data-language-local-name="Tamil" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-tcy mw-list-item"><a href="https://tcy.wikipedia.org/wiki/%E0%B2%AE%E0%B3%8B%E0%B2%A1%E0%B3%8D%E0%B2%AF%E0%B3%82%E0%B2%B2%E0%B3%8D:String" title="ಮೋಡ್ಯೂಲ್:String – Tulu" lang="tcy" hreflang="tcy" data-title="ಮೋಡ್ಯೂಲ್:String" data-language-autonym="ತುಳು" data-language-local-name="Tulu" class="interlanguage-link-target"><span>ತುಳು</span></a></li><li class="interlanguage-link interwiki-tdd mw-list-item"><a href="https://tdd.wikipedia.org/wiki/%E1%A5%9B%E1%A5%A8%E1%A5%9D%E1%A5%B1_%E1%A5%93%E1%A5%A7%E1%A5%B0:String" title="ᥛᥨᥝᥱ ᥓᥧᥰ:String – Tai Nuea" lang="tdd" hreflang="tdd" data-title="ᥛᥨᥝᥱ ᥓᥧᥰ:String" data-language-autonym="ᥖᥭᥰ ᥖᥬᥲ ᥑᥨᥒᥰ" data-language-local-name="Tai Nuea" class="interlanguage-link-target"><span>ᥖᥭᥰ ᥖᥬᥲ ᥑᥨᥒᥰ</span></a></li><li class="interlanguage-link interwiki-te mw-list-item"><a href="https://te.wikipedia.org/wiki/%E0%B0%AE%E0%B0%BE%E0%B0%A1%E0%B1%8D%E0%B0%AF%E0%B1%82%E0%B0%B2%E0%B1%8D:String" title="మాడ్యూల్:String – Telugu" lang="te" hreflang="te" data-title="మాడ్యూల్:String" data-language-autonym="తెలుగు" data-language-local-name="Telugu" class="interlanguage-link-target"><span>తెలుగు</span></a></li><li class="interlanguage-link interwiki-tg mw-list-item"><a href="https://tg.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:String" title="Модул:String – Tajik" lang="tg" hreflang="tg" data-title="Модул:String" data-language-autonym="Тоҷикӣ" data-language-local-name="Tajik" class="interlanguage-link-target"><span>Тоҷикӣ</span></a></li><li class="interlanguage-link interwiki-th mw-list-item"><a href="https://th.wikipedia.org/wiki/%E0%B8%A1%E0%B8%AD%E0%B8%94%E0%B8%B9%E0%B8%A5:String" title="มอดูล:String – Thai" lang="th" hreflang="th" data-title="มอดูล:String" data-language-autonym="ไทย" data-language-local-name="Thai" class="interlanguage-link-target"><span>ไทย</span></a></li><li class="interlanguage-link interwiki-ti mw-list-item"><a href="https://ti.wikipedia.org/wiki/%E1%88%9E%E1%8B%B5%E1%8B%A9%E1%88%8D:String" title="ሞድዩል:String – Tigrinya" lang="ti" hreflang="ti" data-title="ሞድዩል:String" data-language-autonym="ትግርኛ" data-language-local-name="Tigrinya" class="interlanguage-link-target"><span>ትግርኛ</span></a></li><li class="interlanguage-link interwiki-tk mw-list-item"><a href="https://tk.wikipedia.org/wiki/Module:String" title="Module:String – Turkmen" lang="tk" hreflang="tk" data-title="Module:String" data-language-autonym="Türkmençe" data-language-local-name="Turkmen" class="interlanguage-link-target"><span>Türkmençe</span></a></li><li class="interlanguage-link interwiki-tl mw-list-item"><a href="https://tl.wikipedia.org/wiki/Module:String" title="Module:String – Tagalog" lang="tl" hreflang="tl" data-title="Module:String" data-language-autonym="Tagalog" data-language-local-name="Tagalog" class="interlanguage-link-target"><span>Tagalog</span></a></li><li class="interlanguage-link interwiki-tn mw-list-item"><a href="https://tn.wikipedia.org/wiki/Module:String" title="Module:String – Tswana" lang="tn" hreflang="tn" data-title="Module:String" data-language-autonym="Setswana" data-language-local-name="Tswana" class="interlanguage-link-target"><span>Setswana</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/Mod%C3%BCl:Dizgi" title="Modül:Dizgi – Turkish" lang="tr" hreflang="tr" data-title="Modül:Dizgi" data-language-autonym="Türkçe" data-language-local-name="Turkish" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-ts mw-list-item"><a href="https://ts.wikipedia.org/wiki/Module:String" title="Module:String – Tsonga" lang="ts" hreflang="ts" data-title="Module:String" data-language-autonym="Xitsonga" data-language-local-name="Tsonga" class="interlanguage-link-target"><span>Xitsonga</span></a></li><li class="interlanguage-link interwiki-tt mw-list-item"><a href="https://tt.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Tatar" lang="tt" hreflang="tt" data-title="Модуль:String" data-language-autonym="Татарча / tatarça" data-language-local-name="Tatar" class="interlanguage-link-target"><span>Татарча / tatarça</span></a></li><li class="interlanguage-link interwiki-tum mw-list-item"><a href="https://tum.wikipedia.org/wiki/Module:String" title="Module:String – Tumbuka" lang="tum" hreflang="tum" data-title="Module:String" data-language-autonym="ChiTumbuka" data-language-local-name="Tumbuka" class="interlanguage-link-target"><span>ChiTumbuka</span></a></li><li class="interlanguage-link interwiki-tyv mw-list-item"><a href="https://tyv.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Tuvinian" lang="tyv" hreflang="tyv" data-title="Модуль:String" data-language-autonym="Тыва дыл" data-language-local-name="Tuvinian" class="interlanguage-link-target"><span>Тыва дыл</span></a></li><li class="interlanguage-link interwiki-udm mw-list-item"><a href="https://udm.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Udmurt" lang="udm" hreflang="udm" data-title="Модуль:String" data-language-autonym="Удмурт" data-language-local-name="Udmurt" class="interlanguage-link-target"><span>Удмурт</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String" title="Модуль:String – Ukrainian" lang="uk" hreflang="uk" data-title="Модуль:String" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-ur mw-list-item"><a href="https://ur.wikipedia.org/wiki/%D9%85%D8%A7%DA%88%DB%8C%D9%88%D9%84:String" title="ماڈیول:String – Urdu" lang="ur" hreflang="ur" data-title="ماڈیول:String" data-language-autonym="اردو" data-language-local-name="Urdu" class="interlanguage-link-target"><span>اردو</span></a></li><li class="interlanguage-link interwiki-uz mw-list-item"><a href="https://uz.wikipedia.org/wiki/Modul:String" title="Modul:String – Uzbek" lang="uz" hreflang="uz" data-title="Modul:String" 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-ve mw-list-item"><a href="https://ve.wikipedia.org/wiki/Module:String" title="Module:String – Venda" lang="ve" hreflang="ve" data-title="Module:String" data-language-autonym="Tshivenda" data-language-local-name="Venda" class="interlanguage-link-target"><span>Tshivenda</span></a></li><li class="interlanguage-link interwiki-vec mw-list-item"><a href="https://vec.wikipedia.org/wiki/Modulo:String" title="Modulo:String – Venetian" lang="vec" hreflang="vec" data-title="Modulo:String" data-language-autonym="Vèneto" data-language-local-name="Venetian" class="interlanguage-link-target"><span>Vèneto</span></a></li><li class="interlanguage-link interwiki-vep mw-list-item"><a href="https://vep.wikipedia.org/wiki/Moodul:String" title="Moodul:String – Veps" lang="vep" hreflang="vep" data-title="Moodul:String" data-language-autonym="Vepsän kel’" data-language-local-name="Veps" class="interlanguage-link-target"><span>Vepsän kel’</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/M%C3%B4_%C4%91un:String" title="Mô đun:String – Vietnamese" lang="vi" hreflang="vi" data-title="Mô đun:String" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamese" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-vo mw-list-item"><a href="https://vo.wikipedia.org/wiki/Module:String" title="Module:String – Volapük" lang="vo" hreflang="vo" data-title="Module:String" data-language-autonym="Volapük" data-language-local-name="Volapük" class="interlanguage-link-target"><span>Volapük</span></a></li><li class="interlanguage-link interwiki-war mw-list-item"><a href="https://war.wikipedia.org/wiki/Module:String" title="Module:String – Waray" lang="war" hreflang="war" data-title="Module:String" data-language-autonym="Winaray" data-language-local-name="Waray" class="interlanguage-link-target"><span>Winaray</span></a></li><li class="interlanguage-link interwiki-wo mw-list-item"><a href="https://wo.wikipedia.org/wiki/Module:String" title="Module:String – Wolof" lang="wo" hreflang="wo" data-title="Module:String" data-language-autonym="Wolof" data-language-local-name="Wolof" class="interlanguage-link-target"><span>Wolof</span></a></li><li class="interlanguage-link interwiki-wuu mw-list-item"><a href="https://wuu.wikipedia.org/wiki/%E6%A8%A1%E5%9D%97:String" title="模块:String – Wu" lang="wuu" hreflang="wuu" data-title="模块:String" data-language-autonym="吴语" data-language-local-name="Wu" class="interlanguage-link-target"><span>吴语</span></a></li><li class="interlanguage-link interwiki-xh mw-list-item"><a href="https://xh.wikipedia.org/wiki/Module:String" title="Module:String – Xhosa" lang="xh" hreflang="xh" data-title="Module:String" data-language-autonym="IsiXhosa" data-language-local-name="Xhosa" class="interlanguage-link-target"><span>IsiXhosa</span></a></li><li class="interlanguage-link interwiki-xmf mw-list-item"><a href="https://xmf.wikipedia.org/wiki/%E1%83%9B%E1%83%9D%E1%83%93%E1%83%A3%E1%83%9A%E1%83%98:String" title="მოდული:String – Mingrelian" lang="xmf" hreflang="xmf" data-title="მოდული:String" data-language-autonym="მარგალური" data-language-local-name="Mingrelian" class="interlanguage-link-target"><span>მარგალური</span></a></li><li class="interlanguage-link interwiki-yi mw-list-item"><a href="https://yi.wikipedia.org/wiki/%D7%99%D7%97%D7%99%D7%93%D7%94:String" title="יחידה:String – Yiddish" lang="yi" hreflang="yi" data-title="יחידה:String" data-language-autonym="ייִדיש" data-language-local-name="Yiddish" class="interlanguage-link-target"><span>ייִדיש</span></a></li><li class="interlanguage-link interwiki-yo mw-list-item"><a href="https://yo.wikipedia.org/wiki/Module:String" title="Module:String – Yoruba" lang="yo" hreflang="yo" data-title="Module:String" data-language-autonym="Yorùbá" data-language-local-name="Yoruba" class="interlanguage-link-target"><span>Yorùbá</span></a></li><li class="interlanguage-link interwiki-za mw-list-item"><a href="https://za.wikipedia.org/wiki/%E6%A8%A1%E5%9D%97:String" title="模块:String – Zhuang" lang="za" hreflang="za" data-title="模块:String" data-language-autonym="Vahcuengh" data-language-local-name="Zhuang" class="interlanguage-link-target"><span>Vahcuengh</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/Module:String" title="Module:String – Chinese" lang="zh" hreflang="zh" data-title="Module:String" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li><li class="interlanguage-link interwiki-zh-classical mw-list-item"><a href="https://zh-classical.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:String" title="模組:String – Literary Chinese" lang="lzh" hreflang="lzh" data-title="模組:String" data-language-autonym="文言" data-language-local-name="Literary Chinese" class="interlanguage-link-target"><span>文言</span></a></li><li class="interlanguage-link interwiki-zh-min-nan mw-list-item"><a href="https://zh-min-nan.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:String" title="模組:String – Minnan" lang="nan" hreflang="nan" data-title="模組:String" data-language-autonym="閩南語 / Bân-lâm-gú" data-language-local-name="Minnan" class="interlanguage-link-target"><span>閩南語 / Bân-lâm-gú</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:String" title="模組:String – Cantonese" lang="yue" hreflang="yue" data-title="模組:String" data-language-autonym="粵語" data-language-local-name="Cantonese" class="interlanguage-link-target"><span>粵語</span></a></li><li class="interlanguage-link interwiki-zu mw-list-item"><a href="https://zu.wikipedia.org/wiki/Module:String" title="Module:String – Zulu" lang="zu" hreflang="zu" data-title="Module:String" data-language-autonym="IsiZulu" data-language-local-name="Zulu" class="interlanguage-link-target"><span>IsiZulu</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/Q7253814#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </nav> </div> </div> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 3 November 2019, at 02:30.</li> <li id="footer-info-copyright">All structured data from the main, Property, Lexeme, and EntitySchema namespaces is available under the <a rel="nofollow" class="external text" href="//creativecommons.org/publicdomain/zero/1.0/">Creative Commons CC0 License</a>; text in the other namespaces is 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/Special:MyLanguage/Project:Introduction">About Wikidata</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Special:MyLanguage/Project: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/#/www.wikidata.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="//m.wikidata.org/w/index.php?title=Module:String&diff=prev&oldid=1340914894&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> <li id="footer-places-data-access"><a href="/wiki/Special:MyLanguage/Wikidata:Data_access">Data access</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> <script>(RLQ=window.RLQ||[]).push(function(){mw.log.warn("This page is using the deprecated ResourceLoader module \"codex-search-styles\".\n[1.43] Use a CodexModule with codexComponents to set your specific components used: https://www.mediawiki.org/wiki/Codex#Using_a_limited_subset_of_components");mw.config.set({"wgHostname":"mw-web.codfw.main-7fc47fc68d-hgmcx","wgBackendResponseTime":518,"wgPageParseReport":{"limitreport":{"cputime":"0.076","walltime":"0.182","ppvisitednodes":{"value":445,"limit":1000000},"postexpandincludesize":{"value":11793,"limit":2097152},"templateargumentsize":{"value":224,"limit":2097152},"expansiondepth":{"value":7,"limit":100},"expensivefunctioncount":{"value":0,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":1100,"limit":5000000},"entityaccesscount":{"value":0,"limit":500},"timingprofile":["100.00% 137.935 1 -total"," 72.80% 100.412 1 Template:Module-nav"," 23.88% 32.943 1 Module:String/doc"," 21.57% 29.751 5 Template:Module-nav/i18n"," 18.11% 24.977 5 Template:LangSwitch"," 3.19% 4.399 1 Template:LuaLogo"," 2.74% 3.782 2 Template:Tl"]},"scribunto":{"limitreport-timeusage":{"value":"0.011","limit":"10.000"},"limitreport-memusage":{"value":1019013,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-7fc47fc68d-hgmcx","timestamp":"20241128193859","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>