Module:WikiProject assessment progression/sandbox
![]() | This is the module sandbox page for Module:WikiProject assessment progression (diff). See also the companion subpage for test cases (run). |
![]() | This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
This module calculates the proportion of articles in a given WikiProject that have been assessed for quality ratings (i.e. any articles that are not tagged as "Unassessed"), and returns this as a simple number. It is used by {{WikiProject assessment progression}} to populate the value for a progress bar that updates automatically based on category memberships.
Usage
{{#invoke:WikiProject assessment progression|main}}
When invoked by a template that supplies a parameter called "project", it will use that parameter as a WikiProject name for class-rating categories, and return the percentage of articles in those categories that are not listed as "Unassessed". This value is a number (with one decimal place) returned as a string.
See also
require('Module:No globals')
local classes = {
{count = 0, class = 'List', category = 'List-Class'},
{count = 0, class = 'Stub', category = 'Stub-Class'},
{count = 0, class = 'Start', category = 'Start-Class'},
{count = 0, class = 'C', category = 'C-Class'},
{count = 0, class = 'B', category = 'B-Class'},
{count = 0, class = 'GA', category = 'GA-Class'},
{count = 0, class = 'A', category = 'A-Class'},
{count = 0, class = 'FA', category = 'FA-Class'},
{count = 0, class = 'FL', category = 'FL-Class'},
{count = 0, class = 'FM', category = 'FM-Class'},
{count = 0, class = 'Book', category = 'Book-Class'},
{count = 0, class = 'Category', category = 'Category-Class'},
{count = 0, class = 'Disambig', category = 'Disambig-Class'},
{count = 0, class = 'File', category = 'File-Class'},
{count = 0, class = 'Portal', category = 'Portal-Class'},
{count = 0, class = 'Project', category = 'Project-Class'},
{count = 0, class = 'Redirect', category = 'Redirect-Class'},
{count = 0, class = 'Template', category = 'Template-Class'},
}
local p = {}
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame)
local function categoryCount(category, project)
return mw.site.stats.pagesInCategory(
string.format('%s %s articles', category, project),
'pages'
)
end
-- rounding to first decimal, from http://lua-users.org/wiki/SimpleRound
local function round(num)
return math.floor(num * 10 + 0.5) / 10
end
local function percentComplete(sum, total)
return tostring(round(100 * sum / total))
end
local function arg_or_default(args, from_arg, default)
if args[from_arg] and args[from_arg] ~= '' then
return mw.ustring.lower(args[from_arg])
else
return default
end
end
function p.main(args)
return p._main(args)
end
function p._main(args)
local project = arg_or_default(args, "project", nil)
local classCount = 0
for _, class in ipairs(classes) do
classCount = classCount + categoryCount(class.category, project)
end
local total = classCount + categoryCount('Unassessed', project)
return percentComplete(classCount, total)
end
return p