Jump to content

Module:WikiProject assessment progression and Module:WikiProject assessment progression/sandbox: Difference between pages

(Difference between pages)
Page 1
Page 2
Content deleted Content added
Replace Module:No globals with require( "strict" )
 
use require('strict') instead of require('Module:No globals')
 
Line 1: Line 1:
require('strict')
require('strict')


local classes = {
local assessedClasses = {
'List','Stub','Start','C','B',
'List','Stub','Start','C','B',
'GA','A','FA','FL','FM',
'GA','A','FA','FL','FM',
Line 10: Line 10:
local p = {}
local p = {}
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs
local errorMessage = require('Module:Error')


local function categoryCount(category, project)
local function categoryCount(category, project)
Line 36: Line 37:


local function calculateProjectTotal(project)
local function calculateProjectTotal(project)
return countCategoryArticles(classes, project) + categoryCount('Unassessed', project)
return countCategoryArticles(assessedClasses, project) + categoryCount('Unassessed', project)
end
end


local function arg_or_default(args, from_arg, default)
local function countHigherCategories(targetClass, project)
local higherCategories = {}
if args[from_arg] and args[from_arg] ~= '' then
local classKey = getKeyForValue(targetClass, assessedClasses)
return args[from_arg]
for k, v in ipairs(assessedClasses) do
if k > classKey then
higherCategories[k - classKey] = v
end
end
return countCategoryArticles(higherCategories, project)
end

local function getKeyForValue(value, enclosingTable)
for k, v in ipairs(enclosingTable) do
if v == value then
return k
end
end
return nil
end

local function setClasses(args)
local classes = {}
if args['class'] then
classes = {args['class']}
else
else
classes = assessedClasses
return default
end
end
return classes
end
end


Line 53: Line 76:


function p._main(args)
function p._main(args)
local project = arg_or_default(args, "project", nil)
local project = args['project']
local classes = setClasses(args)
local classCount = countCategoryArticles(classes, project)
local classCount = countCategoryArticles(classes, project)
local total = calculateProjectTotal(project)
local total = calculateProjectTotal(project)
if total == 0 then
return percentComplete(classCount, total)
return errorMessage('Error: project not found for project name "'..project..'"')
else
return percentComplete(classCount, total)
end
end
end