మాడ్యూల్:User
--[=[ -- This module implements Script error: No such module "user".. Script error: No such module "user". is a high-use template, sometimes -- with thousands of transclusions on a page. This module optimises the -- template's performance by reducing the number of parameters called from -- wikitext, while still allowing all the features provided by -- Module:UserLinks. It is about twice as fast as the version of Script error: No such module "user". -- that called the User-multi error: no username detected (help). template from wikitext. --]=]
local mUserLinks = require('Module:UserLinks') local mShared = require('Module:UserLinks/shared') local yesno = require('Module:Yesno')
local p = {}
local function validateArg(arg) -- Validates one argument. Whitespace is stripped, and blank arguments -- are treated as nil. if not arg then return nil end arg = arg:match('^%s*(.-)%s*$') if arg ~= then return arg else return nil end end
function p.main(frame, opts) -- Grab the user, project and lang args from wikitext. local argKeys = { user = { 1, 'User', 'user' }, project = { 2, 'Project', 'project' }, lang = { 3, 'Lang', 'lang' } } local origArgs = require('Module:Arguments').getArgs(frame) local args = {} for argKey, t in pairs(argKeys) do for i, origArgKey in ipairs(t) do local value = origArgs[origArgKey] value = validateArg(value) if value then args[argKey] = value -- If we have found a value, break the loop. For the average -- invocation this saves two argument lookups. break end end end
-- Generate options. Some of these need wikitext args also. local options = { span = false, separator = validateArg(origArgs.separator) or 'dot', isDemo = yesno(validateArg(origArgs.demo)) }
-- Input the codes directly. This saves two argument lookups for each -- invocation. local codes = type(opts) and opts or {'t', 'c'}
-- Generate mop icon for formeradmin local mop = (origArgs.mop and yesno(origArgs.mop)) and require('Module:Icon')._main({'mop'}) or
-- Plug the data into Module:UserLinks. local snippets = mUserLinks.getSnippets(args) local links = mUserLinks.getLinks(snippets) local success, result = pcall(mUserLinks.export, codes, links, options) if success then return mop .. result else return mShared.makeWikitextError(result, options.isDemo) end end
function p.admin(frame)
return p.main(frame, {'t','c','bls','pr','del','m','rl','rfa'})
end
function p.eight(frame) return p.main(frame, {'t', 'c', 'ca', 'ct', 'e'}) end
function p.five(frame) return p.main(frame, {'t', 'c', 'dc', 'm', 'bu', 'bl'}) end
function p.four(frame) return p.main(frame, {'t', 'c', 'e'}) end
function p.formeradmin(frame) return p.main(frame, {'t','c','fa','bls','pr','del','rl','mr','lr'}) end
function p.seven(frame) return p.main(frame, {'t', 'c', 'ct', 'l', 'e'}) end
function p.six(frame) return p.main(frame, {'t', 'c', 'ct', 'l', 'm', 'bl'}) end
function p.three(frame) return p.main(frame, {'t', 'c', 'l'}) end
function p.two(frame) return p.main(frame, {'t', 'c', 'ct'}) end
p[] = p.main p['2'] = p.two p['3'] = p.three p['4'] = p.four p['5'] = p.five p['6'] = p.six p['7'] = p.seven p['8'] = p.eight p['former admin'] = p.formeradmin
return p