Module:Class mask
Appearance
| This Lua module is used on approximately 457,000 pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them. |
| This module depends on the following other modules: |
This module implements {{class mask}}. See the template page for documentation.
local p = {}
local ucfirst = function(s)
return s:sub(1, 1):upper() .. s:sub(2, -1)
end
local inlist = function(string, list)
for _, s in ipairs(list) do
if s==string then
return true
end
end
return false
end
p._main = function(args, title)
local resolveFQSgrade = function(grade)
if (args[grade] or args.FQS)=='yes' then
return ucfirst(grade)
else
return 'NA'
end
end
local page = title and title.prefixedText
local out = ''
local grade = args[1]
if not grade or grade == '¬' then -- undefined
out = '¬'
else
local pagetype = require('Module:Pagetype')._main{
dab = 'dab',
sia = 'sia',
portal = 'yes',
wikipedia = 'yes',
draft = 'yes',
timedtext = 'yes',
help = 'yes',
user = 'yes',
page = page
}
grade = grade:match('^%s*(.-)%s*$'):lower()
if pagetype=='redirect' then
out = resolveFQSgrade('redirect')
elseif pagetype=='dab' then
out = resolveFQSgrade('disambig')
elseif pagetype=='article' then
if inlist(grade, {'start', 'stub'}) and args[grade]~='no' then
out = ucfirst(grade)
elseif inlist(grade, {'b', 'c', 'fa', 'fl', 'a', 'ga'}) and args[grade]~='no' then
out = grade:upper()
elseif args[grade:upper()] then -- upper-case syntax
out = args[grade:upper()]
elseif args[grade:lower()]=='yes' then -- lower-case syntax
out = mw.language.getContentLanguage():ucfirst(grade:lower())
elseif inlist(grade, {'list', 'sia', 'si', 'sl'}) and args['list']~='no' then
out = 'List'
end
elseif pagetype=='sia' then
out = 'List'
elseif inlist(pagetype, {'file', 'Timed Text page'}) then
if grade=='fm' and (args.fm or args.FQS)=='yes' then
out = 'FM'
else
out = resolveFQSgrade('file')
end
elseif pagetype=='category' then
out = resolveFQSgrade('category')
elseif pagetype=='portal' then
out = resolveFQSgrade('portal')
elseif pagetype=='template' or pagetype=='module' then
out = resolveFQSgrade('template')
elseif pagetype=='project page' then
out = resolveFQSgrade('project')
elseif pagetype=='draft' then
out = resolveFQSgrade('draft')
elseif pagetype=='help page' and args['help']=='yes' then
out = 'Help'
elseif pagetype=='user page' and args['user']=='yes' then
out = 'User'
else
out = 'NA'
end
end
return out
end
p.main = function(frame)
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame, {
removeBlanks = false,
wrappers = 'Template:Class mask'
})
return p._main(args)
end
return p