Module:language tracking


local export = {}

local function generate_lemmas(langs)
	local output = "<table class=\"infobox\" style=\"border: #99B3FF solid 1px; text-align:center;\"><tr style=\"background-color: #e1f5fe; font-weight: bold; font-size:250%\">"

    for _, language in ipairs(langs) do
        output = output .. "<th style=\"padding: 15px\">" .. mw.site.stats.pagesInCategory(language .. " lemmas", "pages") .. "</th>"
    end

    output = output .. "</tr><tr style=\"background-color: #45aaf2; font-weight: bold;\">"

    for _, language in ipairs(langs) do
        output = output .. "<th style=\"padding: 15px\">[[Special:RecentChangesLinked/Category:" .. language .. " lemmas|" .. language .. " lemmas]]</th>"
    end
	
    output = output .. "</tr></table>"
    
    return output
end

local function generate_nonlemmas(langs)
	local output = "<table class=\"infobox\" style=\"border: #99B3FF solid 1px; text-align:center;\"><tr style=\"background-color: #e1f5fe; font-weight: bold; font-size:250%\">"

    for _, language in ipairs(langs) do
        output = output .. "<th style=\"padding: 15px\">" .. mw.site.stats.pagesInCategory(language .. " non-lemma forms", "pages") .. "</th>"
    end

    output = output .. "</tr><tr style=\"background-color: #45aaf2; font-weight: bold;\">"

    for _, language in ipairs(langs) do
        output = output .. "<th style=\"padding: 15px\">[[Special:RecentChangesLinked/Category:" .. language .. " non-lemma forms|" .. language .. " non-lemmas]]</th>"
    end

    output = output .. "</tr></table>"
    
    return output
end

local function generate_both(langs)
	local output = "<table class=\"infobox\" style=\"border: #99B3FF solid 1px; text-align:center;\"><tr style=\"background-color: #e1f5fe; font-weight: bold; font-size:250%\">"

    for _, language in ipairs(langs) do
        output = output .. "<th style=\"padding: 15px\">" .. mw.site.stats.pagesInCategory(language .. " lemmas", "pages") .. "</th>"
    end
    
    output = output .. "</tr><tr style=\"background-color: #45aaf2; font-weight: bold;\">"

    for _, language in ipairs(langs) do
        output = output .. "<th style=\"padding: 15px\">[[Special:RecentChangesLinked/Category:" .. language .. " lemmas|" .. language .. " lemmas]]</th>"
    end
    
    output = output .. "</tr><tr style=\"background-color: #e1f5fe; font-weight: bold; font-size:250%\">"
    
    for _, language in ipairs(langs) do
        output = output .. "<th style=\"padding: 15px\">" .. mw.site.stats.pagesInCategory(language .. " non-lemma forms", "pages") .. "</th>"
    end

    output = output .. "</tr><tr style=\"background-color: #45aaf2; font-weight: bold;\">"

    for _, language in ipairs(langs) do
        output = output .. "<th style=\"padding: 15px\">[[Special:RecentChangesLinked/Category:" .. language .. " non-lemma forms|" .. language .. " non-lemmas]]</th>"
    end

    output = output .. "</tr></table>"
    
    return output
end

function export.show(frame)
    local args = require("Module:parameters").process(
		frame:getParent().args,
		{
			[1] = { list = true },
			["type"] = { default = "lemma" },
		})

    local langs = {}

    local languageData = mw.loadData("Module:languages/code to canonical name")

    for _, language in ipairs(args[1]) do
        language = languageData[language]
        table.insert(langs, (language ~= "") and language or nil)
    end
    
    local output

	if args.type == "lemma" then
		output = generate_lemmas(langs) 
	elseif args.type == "nonlemma" then
		output = generate_nonlemmas(langs)
	elseif args.type == "both" then
		output = generate_both(langs)
	else 
		error("Invalid type.")
	end
	
    return output
end

return export