Module:WikiProject assessment progression
MyWikiBiz, Author Your Legacy — Friday December 27, 2024
Jump to navigationJump to searchTemplate:Module rating 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 = { '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