require('strict')
local classes =
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/SimpleRoundlocal function round(num) return math.floor(num * 10 + 0.5) / 10end
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 classCountend
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 endend
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