Module:WikiProject assessment progression
Appearance
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
[edit]{{#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
[edit]
require('strict')
local classes = {
'List','Stub','Start','C','B',
'GA','A','FA','FL','FM',
'Book','Category','Disambig','File',
'Portal','Project','Redirect','Template',
}
local p = {}
local getArgs = require('Module:Arguments').getArgs
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 countCategoryArticles(classesToCount, project)
local classCount = 0
for _, class in ipairs(classesToCount) do
classCount = classCount + categoryCount(class..'-Class', project)
end
return classCount
end
local function calculateProjectTotal(project)
return countCategoryArticles(classes, project) + categoryCount('Unassessed', project)
end
local function arg_or_default(args, from_arg, default)
if args[from_arg] and args[from_arg] ~= '' then
return args[from_arg]
else
return default
end
end
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function p._main(args)
local project = arg_or_default(args, "project", nil)
local classCount = countCategoryArticles(classes, project)
local total = calculateProjectTotal(project)
return percentComplete(classCount, total)
end
return p