Modul:WikiProject assessment progression
Xuyakirin
Belgekirina modulê[nîşan bide] [biguhêre] [dîrokê bibîne] [rojane bike]
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
[çavkaniyê biguhêre]{{#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
[çavkaniyê biguhêre]
require('strict')
local classes = {
'Lîste','Şitil','Destpêkî','C','B',
'GBA','A','GB','LB','WB',
'Kategorî','Cudakirin','Wêne',
'Portal','Proje','Beralîkirin','Şablon',
}
local p = {}
local getArgs = require('Module:Arguments').getArgs
local function categoryCount(category, project)
return mw.site.stats.pagesInCategory(
string.format('Gotarên %s %s', project, category),
'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('bi sinifa '.. class, project)
end
return classCount
end
local function calculateProjectTotal(project)
return countCategoryArticles(classes, project) + categoryCount('Nesinifandî', 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