Mô đun:WikiProject assessment progression
Tài liệu mô đun[tạo]
require('strict')
local classes = {
'Danh sách','Sơ khai','Sơ khởi','C','B',
'GA','A','FA','FL','FM',
'Sách','Thể loại','Định hướng','Tập tin',
'Cổng thông tin','Dự án','Đổi hướng','Bản mẫu',
}
local p = {}
local getArgs = require('Mô đun:Arguments').getArgs
local function categoryCount(category, project)
return mw.site.stats.pagesInCategory(
string.format('Bài viết %s %s', 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('Chất lượng '..class, project)
end
return classCount
end
local function calculateProjectTotal(project)
return countCategoryArticles(classes, project) + categoryCount('Chưa đánh giá', 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