https://en.wikipedia.org/w/index.php?action=history&feed=atom&title=Module%3AUser%2Fsandbox Module:User/sandbox - Revision history 2025-06-26T01:15:13Z Revision history for this page on the wiki MediaWiki 1.45.0-wmf.6 https://en.wikipedia.org/w/index.php?title=Module:User/sandbox&diff=1048572910&oldid=prev Pppery: Create sandbox version of Module:User 2021-10-06T19:01:42Z <p>Create sandbox version of <a href="/wiki/Module:User" title="Module:User">Module:User</a></p> <p><b>New page</b></p><div>--[=[<br /> -- This module implements {{user}}. {{user}} is a high-use template, sometimes<br /> -- with thousands of transclusions on a page. This module optimises the<br /> -- template&#039;s performance by reducing the number of parameters called from<br /> -- wikitext, while still allowing all the features provided by<br /> -- [[Module:UserLinks]]. It is about twice as fast as the version of {{user}}<br /> -- that called the {{user-multi}} template from wikitext.<br /> --]=]<br /> <br /> local mUserLinks = require(&#039;Module:UserLinks&#039;)<br /> local mShared = require(&#039;Module:UserLinks/shared&#039;)<br /> local yesno = require(&#039;Module:Yesno&#039;)<br /> <br /> local p = {}<br /> <br /> local function validateArg(arg)<br /> -- Validates one argument. Whitespace is stripped, and blank arguments<br /> -- are treated as nil.<br /> if not arg then<br /> return nil<br /> end<br /> arg = arg:match(&#039;^%s*(.-)%s*$&#039;)<br /> if arg ~= &#039;&#039; then<br /> return arg<br /> else<br /> return nil<br /> end<br /> end<br /> <br /> function p.main(frame)<br /> -- Grab the user, project and lang args from wikitext.<br /> local argKeys = {<br /> user = {<br /> 1,<br /> &#039;User&#039;,<br /> &#039;user&#039;<br /> },<br /> project = {<br /> 2,<br /> &#039;Project&#039;,<br /> &#039;project&#039;<br /> },<br /> lang = {<br /> 3,<br /> &#039;Lang&#039;,<br /> &#039;lang&#039;<br /> }<br /> }<br /> local origArgs = frame:getParent().args<br /> local args = {}<br /> for argKey, t in pairs(argKeys) do<br /> for i, origArgKey in ipairs(t) do<br /> local value = origArgs[origArgKey]<br /> value = validateArg(value)<br /> if value then<br /> args[argKey] = value<br /> -- If we have found a value, break the loop. For the average<br /> -- invocation this saves two argument lookups.<br /> break<br /> end<br /> end<br /> end<br /> <br /> -- Generate options. Some of these need wikitext args also.<br /> local options = {<br /> span = false,<br /> separator = validateArg(origArgs.separator) or &#039;dot&#039;,<br /> isDemo = yesno(validateArg(origArgs.demo))<br /> }<br /> <br /> -- Input the codes directly. This saves two argument lookups for each<br /> -- invocation.<br /> local codes = {&#039;t&#039;, &#039;c&#039;}<br /> <br /> -- Plug the data into [[Module:UserLinks]].<br /> local snippets = mUserLinks.getSnippets(args)<br /> local links = mUserLinks.getLinks(snippets)<br /> local success, result = pcall(mUserLinks.export, codes, links, options)<br /> if success then<br /> return result<br /> else<br /> return mShared.makeWikitextError(result, options.isDemo)<br /> end<br /> end<br /> <br /> return p</div> Pppery