Modul:Statîstîkên Wîkîprojeyê

Belgekirina modulê[biafirîne]
local p = {}

local function generateCategoryName(muhimi, sinif, mijar, hemu, proje)
    local category =""

    if sinif ~= '' and muhimi ~= '' then
        if sinif == "Nesinifandî" then
            category = "Gotarên" .. category .. " " .. (string.len(mijar) > 0 and mijar .. " yên nehatine sinifandin û muhîmiya " or "nehatine sinifandin û muhîmiya ") .. muhimi
        else
            category = "Gotarên" .. category .. " " .. (string.len(mijar) > 0 and mijar .. " " or "") .. "bi sinifa " .. sinif .. " û muhîmiya " .. muhimi
        end
    elseif muhimi ~= '' then
        category = "Gotarên" .. category .. " " .. (string.len(mijar) > 0 and mijar .. " " or "") .. "bi muhîmiya " .. muhimi
    elseif sinif ~= '' then
        if sinif == "Nesinifandî" then
            category = "Gotarên" .. category .. " " .. (string.len(mijar) > 0 and mijar .. " yên nehatine sinifandin" or "nehatine sinifandin")
        else
            category = "Gotarên" .. category .. " " .. (string.len(mijar) > 0 and mijar .. " " or "") .. "bi sinifa " .. sinif
        end
	elseif string.len(proje) > 0 and hemu ~= false then 
	    category = "Hemû rûpelên Wîkîproje " .. proje
	elseif hemu ~= false then 
	    category = "Hemû Gotarên Wîkîprojeyan"
	end

    return category
end

local function createCategoryLink(category, pagesInCategory, proje, sinif, mijar, muhimi)
    local preload_temp
    if sinif ~= '' and muhimi ~= '' then
        preload_temp = "Şablon:Statîstîkên Wîkîprojeyê/preload"
    elseif muhimi ~= '' then
        preload_temp = "Şablon:WPBannerMeta/templatepage/preloadimp"
    elseif sinif ~= '' then    
        preload_temp = "Şablon:WPBannerMeta/templatepage/preloadqual"
    end
    
    local projebisine = proje
    local sinifbisine = sinif
    local mijarbisine = mijar
    local muhimibisine = muhimi
    
    -- Create a table to store class data
    local classData = {}
    
    -- Add class data based on the provided information
    if proje ~= "" then
    	proje = string.gsub(proje, " ", "_") -- Replace space with underscore
        table.insert(classData, "proje-" .. proje)
    end
    if sinif ~= "" then
        table.insert(classData, "sinif-" .. sinif)
    end
    if mijar ~= "" then
        table.insert(classData, "mijar-" .. mijar)
    end
    if muhimi ~= "" then
    	muhimi = string.gsub(muhimi, " ", "_") -- Replace space with underscore
        table.insert(classData, "muhimi-" .. muhimi)
    end
    
    local divClass = "Wikiproje-ceke"
    local divInfo = table.concat(classData, " ")
    
    local divContent = '<div class="' .. divClass .. '">'
    if divInfo ~= "" then
        divContent = divContent .. '<div class="' .. divInfo .. '">'
    end
    
    local url = mw.uri.fullUrl('Kategorî:' .. category, {
        action = 'edit',
        preload = preload_temp,
        editintro = "Kategoriya nû",
        preview = 'no',
        summary = "Ji [[Wîkîpediya:Wîkîproje|Wîkîprojeyê]] kategorî hat çêkirin",
        ['preloadparams[1]'] = projebisine,
        ['preloadparams[2]'] = sinifbisine,
        ['preloadparams[3]'] = mijarbisine,
        ['preloadparams[4]'] = muhimibisine
    })
    
    local label = '<b>çêke</b>'
    divContent = divContent .. '[[:Kategorî:' .. category .. '|' .. pagesInCategory .. ']] &ndash; ([' .. tostring(url) .. ' ' .. label .. '])'

    if divInfo ~= "" then
        divContent = divContent .. '</div>'
    end
    divContent = divContent .. '</div>'
    
    return divContent
end



-- Function to create wikilink for the category name
local function createWikilink(category, muhimi, sinif, mijar, proje)
	local category_link = mw.title.new("Kategorî:" .. category)

    local pagesInCategory = p.getHejmar(category)

     if not category_link.exists and (muhimi ~= "" or sinif ~= "" or mijar ~= "" or proje ~= "") then
        return createCategoryLink(category, pagesInCategory, proje, sinif, mijar, muhimi)
    elseif pagesInCategory > 0  then
        return "[[:Kategorî:" .. category .. "|" .. pagesInCategory .. "]]"
    end
end

function p.getHejmar(category)
    local pagesInCategory = mw.site.stats.pagesInCategory(category, "pages")
	if pagesInCategory then
		return pagesInCategory
	end
end

function p.hesabesinifandi(imp, topic, hemu, project)
    local nesinifandiHemu = p.getHejmar("Gotarên nehatine sinifandin")
	if string.len(topic) > 0 then
		mijar = topic
	end
	if string.len(project) > 0 then
		proje = project
	end
		
	if string.len(imp) > 0 then
		muhimi = imp
	end
	local besinif_hz = p.getHejmar("Gotarên " .. (mijar and mijar .. " yên " or "").. "nehatine sinifandin û muhîmiya Herî zêde")
	local besinif_zede = p.getHejmar("Gotarên " .. (mijar and mijar .. " yên " or "").. "nehatine sinifandin û muhîmiya Zêde")
	local besinif_navin = p.getHejmar("Gotarên " .. (mijar and mijar .. " yên " or "").. "nehatine sinifandin û muhîmiya Navîn")
	local besinif_kem = p.getHejmar("Gotarên " .. (mijar and mijar .. " yên " or "").. "nehatine sinifandin û muhîmiya Kêm")
	local besinif_NA = p.getHejmar("Gotarên " .. (mijar and mijar .. " yên " or "").. "nehatine sinifandin û muhîmiya NA")
	local besinif_hk = p.getHejmar("Gotarên " .. (mijar and mijar .. " yên " or "").. "nehatine sinifandin û muhîmiya Herî kêm")
	local besinif_hk = p.getHejmar("Gotarên " .. (mijar and mijar .. " yên " or "").. "nehatine sinifandin û muhîmiya Nayê zanîn")
    local besinif_hemu = p.getHejmar("Gotarên " .. (mijar and mijar .. " yên " or "").. "nehatine sinifandin")

	local hemu_hz = p.getHejmar("Gotarên " .. (mijar and mijar .. " " or "").. "bi muhîmiya Herî zêde")
	local hemu_zede = p.getHejmar("Gotarên " .. (mijar and mijar .. " " or "").. "bi muhîmiya Zêde")
	local hemu_navin = p.getHejmar("Gotarên " .. (mijar and mijar .. " " or "").. "bi muhîmiya Navîn")
	local hemu_kem = p.getHejmar("Gotarên " .. (mijar and mijar .. " " or "").. "bi muhîmiya Kêm")
	local hemu_NA = p.getHejmar("Gotarên " .. (mijar and mijar .. " " or "").. "bi muhîmiya NA")
	local hemu_hk = p.getHejmar("Gotarên " .. (mijar and mijar .. " " or "").. "bi muhîmiya Herî kêm")
	local hemu_hk = p.getHejmar("Gotarên " .. (mijar and mijar .. " " or "").. "bi muhîmiya Nayê zanîn")
	local hemu_gotar = p.getHejmar("Hemû " .. (proje and "rûpelên Wîkîproje " .. proje or "Gotarên Wîkîprojeyan"))

	if muhimi == "Herî zêde" then
		return hemu_hz-besinif_hz
		
	elseif muhimi == "Zêde" then
		return hemu_zede-besinif_zede
	
	elseif muhimi == "Navîn" then
		return hemu_navin-besinif_navin
	
	elseif muhimi == "Kêm" then
		return hemu_kem-besinif_kem
	
	elseif muhimi == "NA" then
		return hemu_NA-besinif_NA
	
	elseif muhimi == "Herî kêm" then
		return hemu_hk-besinif_hk
		
	elseif muhimi == "Nayê zanîn" then
		return hemu_hk-besinif_hk
	else 
		return hemu_gotar-besinif_hemu
	end
end

function p.sinifandi(frame)
    local args = frame:getParent().args
    local muhimi = args["muhîmî"] or ""
    local mijar = args["mijar"] or ""
    local proje = args["proje"] or ""
    local hemu = args["hemu"] or ""
    local hesab = p.hesabesinifandi(muhimi, mijar, hemu, proje)
    
    return hesab
end


-- Main function
function p.main(frame)
    local args = frame:getParent().args
    local muhimi = args["muhîmî"] or ""
    local sinif = args["sinif"] or ""
    local mijar = args["mijar"] or ""
    local proje = args["proje"] or ""
    local hemu = args["hemu"] or ""
    local categoryName = generateCategoryName(muhimi, sinif, mijar, hemu, proje)
    local output = createWikilink(categoryName, muhimi, sinif, mijar, proje)
    
    return output
end


return p