require('strict')

local getArgs = require('Module:Arguments').getArgs
local p = {}

local function genQuery(str)
    local queryStr = ''
    local quality, importance = mw.ustring.match(str, '^([^,]*)%s*,%s*(.*)$')

    if quality ~= '' then
        queryStr = '%?quality=' .. quality .. '%-Class'
        queryStr = queryStr .. (importance ~= '' and '&' or '')
    else
        queryStr = importance ~= '' and '%?' or ''
    end

    if importance ~= '' then
        importance = importance == '???' and 'Unknown' or importance
        queryStr = queryStr .. 'importance=' .. importance .. '%-Class'
    end

    queryStr = '/articles' .. queryStr .. '%s+' .. '([0-9,]+)%]'

    return queryStr
end

function p.main(frame)
    local args = getArgs(frame)
    return p._main(args)
end

function p._main(args)
    local text = mw.title.new('User:WP 1.0 bot/Tables/Project/' .. args.subpage):getContent()
    local sum, count = 0, 0

    for _, v in ipairs(args) do
        count = mw.ustring.match(text, genQuery(v)) or 0
        count = mw.ustring.gsub(count, ',', '')
        sum = sum + count
    end

    return sum
end

return p