Modul:Otokat/ceribandin

  • Ev modul li gorî navê kategoriyekê şablona kategorîkirinê lê zêde dike. Bi şablona {{otokat}} tê bikaranîn.
--Ev modul li gorî navê kategoriyekê şablona kategorîkirinê lê zêde dike. Bi şablona {{ş|kategorîkirin}} tê bikaranîn

local k = {}

local bibine = mw.ustring.find
local rupel = mw.title.getCurrentTitle().text

local dane = 
{
	    {template = "Katsal b.z.", 
	    	kuwiki_regex = "^(%d+) b%.z%.$", 
	    	kuwiki_title = "%d b.z.", 
	    	enwiki_regex = "^(%d+) BC$",
	    	enwiki_title = "%d BC"
	    },
		{template = "Katsal", 
			kuwiki_regex = "^(%d+)$", 
	    	kuwiki_title = "%d", 
			enwiki_regex = "^(%d+)$",
	    	enwiki_title = "%d", 
		},
		{template = "katdehsal b.z.", 
			kuwiki_regex = "^(%d+)î b%.z%.$", 
	    	kuwiki_title = "%dî b.z.", 
	    	enwiki_title = "%ds BC", 
			enwiki_regex = "^(%d+)s BC$"
		},
		{template = "katdehsal", 
			kuwiki_regex = "^(%d+)î$", 
	    	kuwiki_title = "%dî", 
	    	enwiki_title = "%ds",
			enwiki_regex = "^(%d+)s$"			
		},
		{template = "katsedsal b.z.",
			kuwiki_regex = "^Sedsala (%d+)ê?a?n? b%.z%.$",
			kuwiki_title = "Sedsala %d b.z.", 
			enwiki_title = "%d century BE",
			enwiki_regex = "^(%d+)" .. en_sfx .. " century BC"
		},
		{template = "katsedsal",
			 kuwiki_regex = "^Sedsala (%d+)" .. ku_sfx .. " $",
			 kuwiki_title = "Sedsala %d" .. ku_sfx, 
			 enwiki_title = "%d" .. en_sfx .. " century",
			 enwiki_regex = "^(%d+)" .. en_sfx .. " century$"
		},

		{template = "MirinSal b.z.",
			 kuwiki_regex = "^Mirin (%d+) b%.z%.$",
			 enwiki_regex = "%d BC deaths"
		},
		{template = "MirinSal",
			 kuwiki_regex = "^Mirin (%d+)$",
			 enwiki_regex = "%d deaths"
		},
		{template = "MirinDehsal b.z.",
			 kuwiki_regex = "^Mirin (%d+)î b%.z%.$",
			 enwiki_regex = "%ds BC deaths"
		},
		{template = "MirinDehsal",
			 kuwiki_regex = "^Mirin (%d+)î$",
			 enwiki_regex = "^Mirin (%d+)î$"
		},
		{template = "MirinSedsal b.z.",
			 kuwiki_regex = "^Mirin sedsala (%d+)a?n?ê? b%.z%.$",
			 enwiki_regex = "^Mirin sedsala (%d+)a?n?ê? b%.z%.$"
		},

		{template = "JidayikbûnSal b.z.",
			 kuwiki_regex = "^Jidayikbûn (%d+) b%.z%.$",
			 enwiki_regex = "^Jidayikbûn (%d+) b%.z%.$"
		},
		{template = "JidayikbûnSal",
			 kuwiki_regex = "^Jidayikbûn (%d+)$",
			 enwiki_regex = "^Jidayikbûn (%d+)$"
		},
		{template = "JidayikbûnDehsal b.z.",
			 kuwiki_regex = "^Jidayikbûn (%d+)î b%.z%.$",
			 enwiki_regex = "^Jidayikbûn (%d+)î b%.z%.$"
		},
		{template = "JidayikbûnDehsal",
			 kuwiki_regex = "^Jidayikbûn (%d+)î$",
			 enwiki_regex = "^Jidayikbûn (%d+)î$"
		},
		{template = "JidayikbûnSedsal b.z.",
			 kuwiki_regex = "^Jidayikbûn sedsala (%d+)a?n?ê? b%.z%.$",
			 enwiki_regex = "^Jidayikbûn sedsala (%d+)a?n?ê? b%.z%.$"
		},

		{template = "DestpêkirinDehsal",
			 kuwiki_regex = "^Destpêkirinên (%d+)î$",
			 enwiki_regex = "^Destpêkirinên (%d+)î$"
		},
		{template = "BidawîbûnDehsal",
			 kuwiki_regex = "^Bidawîbûnên (%d+)î$",
			 enwiki_regex = "^Bidawîbûnên (%d+)î$"
		},
		{template = "YYYY beginnings or endings category header",
			 kuwiki_regex = "^Destpêkirinên (%d+)a?n?ê?",
			 enwiki_regex = "^Destpêkirinên (%d+)a?n?ê?"
		},
		{template = "DestpêkirinSedsal b.z.",
			 kuwiki_regex = "^Destpêkirinên sedsala (%d+)a?n?ê? b%.z%.$",
			 enwiki_regex = "^Destpêkirinên sedsala (%d+)a?n?ê? b%.z%.$"
		},
		{template = "DestpêkirinSedsal",
			 kuwiki_regex = "^Destpêkirinên sedsala (%d+)a?n?ê?$",
			 enwiki_regex = "^Destpêkirinên sedsala (%d+)a?n?ê?$"
		},
		{template = "YYYY beginnings or endings category header",
			 kuwiki_regex = "^Bidawîbûnên (%d+)a?n?ê?",
			 enwiki_regex = "^Bidawîbûnên (%d+)a?n?ê?"
		},
		{template = "BidawîbûnSedsal",
			 kuwiki_regex = "^Bidawîbûnên sedsala (%d+)a?n?ê?$",
			 enwiki_regex = "^Bidawîbûnên sedsala (%d+)a?n?ê?$"
		},
		{template = "FîlmSal",
			 kuwiki_regex = "^Fîlmên (%d+)a?n?ê?$",
			 enwiki_regex = "^Fîlmên (%d+)a?n?ê?$"
		},
		{template = "FîlmDehsal",
			 kuwiki_regex = "^Fîlmên (%d+)î$",
			 enwiki_regex = "^Fîlmên (%d+)î$"
		},
		{template = "FîlmSedsal",
			 kuwiki_regex = "^Fîlmên sedsala (%d+)ê?a?n?$",
			 enwiki_regex = "^Fîlmên sedsala (%d+)ê?a?n?$"
		},

		{template = "BerhemSal",
			 kuwiki_regex = "^Berhemên (%d+)ê?a?n?$",
			 enwiki_regex = "^Berhemên (%d+)ê?a?n?$"
		},
		{template = "BerhemDehsal",
			 kuwiki_regex = "^Berhemên (%d+)î$",
			 enwiki_regex = "^Berhemên (%d+)î$"
		},
		{template = "BerhemSedsal",
			 kuwiki_regex = "^Berhemên sedsala (%d+)ê?a?n?$",
			 enwiki_regex = "^Berhemên sedsala (%d+)ê?a?n?$"
		},

		{template = "PirtûkSal",
			 kuwiki_regex = "^Pirtûkên (%d+)ê?a?n?$",
			 enwiki_regex = "^Pirtûkên (%d+)ê?a?n?$"
		},
		{template = "PirtûkDehsal",
			 kuwiki_regex = "^Pirtûkên (%d+)î$",
			 enwiki_regex = "^Pirtûkên (%d+)î$"
		},
		{template = "PirtûkSedsal",
			 kuwiki_regex = "^Pirtûkên sedsala (%d+)ê?a?n?$",
			 enwiki_regex = "^Pirtûkên sedsala (%d+)ê?a?n?$"
		},

		{template = "KesSedsal b.z.",
			 kuwiki_regex = "^Kesên sedsala (%d+)ê?a?n? b%.z%.$",
			 enwiki_regex = "^Kesên sedsala (%d+)ê?a?n? b%.z%.$"
		},
		{template = "KesSedsal",
			 kuwiki_regex = "^Kesên sedsala (%d+)ê?a?n?$",
			 enwiki_regex = "^Kesên sedsala (%d+)ê?a?n?$"
		},
		{template = "KesHezarsal b.z.",
			 kuwiki_regex = "^Kesên hezarsala (%d+)ê?a?n? b%.z%.$",
			 enwiki_regex = "^Kesên hezarsala (%d+)ê?a?n? b%.z%.$"
		},
		{template = "KesHezarsal",
			 kuwiki_regex = "^Kesên hezarsala (%d+)ê?a?n?$",
			 enwiki_regex = "^Kesên hezarsala (%d+)ê?a?n?$"
		},

		{template = "KurdSedsal",
			 kuwiki_regex = "^Kurdên sedsala (%d+)ê?a?n?$",
			 enwiki_regex = "^Kurdên sedsala (%d+)ê?a?n?$"
		},

		{template = "Salên sedsalê li gorî welatan",
			 kuwiki_regex = "^Salên sedsala (%d+)a?n?ê? li gorî welatan$",
			 enwiki_regex = "^Salên sedsala (%d+)a?n?ê? li gorî welatan$"
		},
		{template = "Salên sedsalê li welatekî",
			 kuwiki_regex = "^Salên sedsala (%d+)a?n?ê? li.+$",
			 enwiki_regex = "^Salên sedsala (%d+)a?n?ê? li.+$"
		},

		{template = "(Dis)establishments in year category header",
			 kuwiki_regex = "^Avabûnên (%d+)ê?a?n?$",
			 enwiki_regex = "^Avabûnên (%d+)ê?a?n?$"
		},
		{template = "(Dis)establishments in decade category header",
			 kuwiki_regex = "^Avabûnên (%d+)î$",
			 enwiki_regex = "^Avabûnên (%d+)î$"
		},
		{template = "(Dis)establishments in year category header",
			 kuwiki_regex = "^Hilweşînên (%d+)ê?a?n?$",
			 enwiki_regex = "^Hilweşînên (%d+)ê?a?n?$"
		},
		{template = "(Dis)establishments in decade category header",
			 kuwiki_regex = "^Hilweşînên (%d+)î$",
			 enwiki_regex = "^Hilweşînên (%d+)î$"
		},
		{template = "AvabûnSedsal b.z.",
			 kuwiki_regex = "^Avabûnên sedsala (%d+)ê?a?n? b%.z%.$",
			 enwiki_regex = "^Avabûnên sedsala (%d+)ê?a?n? b%.z%.$"
		},
		{template = "AvabûnSedsal",
			 kuwiki_regex = "^Avabûnên sedsala (%d+)ê?a?n?$",
			 enwiki_regex = "^Avabûnên sedsala (%d+)ê?a?n?$"
		},
		{template = "HilweşînSedsal b.z.",
			 kuwiki_regex = "^Hilweşînên sedsala (%d+)ê?a?n? b%.z%.$",
			 enwiki_regex = "^Hilweşînên sedsala (%d+)ê?a?n? b%.z%.$"
		},
		{template = "HilweşînSedsal",
			 kuwiki_regex = "^Hilweşînên sedsala (%d+)ê?a?n?$",
			 enwiki_regex = "^Hilweşînên sedsala (%d+)ê?a?n?$"
		},

		{template = "Estcatbycountry",
			 kuwiki_regex = "^Avabûnên (%d+)ê?a?n? li gorî welatan",
			 enwiki_regex = "^Avabûnên (%d+)ê?a?n? li gorî welatan"
		},
		{template = "Avabûnên dehsalê li gorî welatan",
			 kuwiki_regex = "^Avabûnên (%d+)î li gorî welatan",
			 enwiki_regex = "^Avabûnên (%d+)î li gorî welatan"
		},
		{template = "Sal li gorî welatan",
			 kuwiki_regex = "^(%d+) li gorî welatan$",
			 enwiki_regex = "^(%d+) li gorî welatan$"
		},
		{template = "Dehsal li gorî welatan",
			 kuwiki_regex = "^(%d+)î li gorî welatan$",
			 enwiki_regex = "^(%d+)î li gorî welatan$"
		},
		{template = "Sedsal li gorî welatan",
			 kuwiki_regex = "^Sedsala (%d+)ê?a?n li gorî welatan$",
			 enwiki_regex = "^Sedsala (%d+)ê?a?n li gorî welatan$"
		},
		{template = "Sedsal li gorî parzemînan",
			 kuwiki_regex = "^Sedsala (%d+)ê?a?n li gorî parzemînan$",
			 enwiki_regex = "^Sedsala (%d+)ê?a?n li gorî parzemînan$"
		},

		{template = "katavaWelat",
			 kuwiki_regex = "^Avabûnên (%d+)ê?a?n? li .+$",
			 enwiki_regex = "^Avabûnên (%d+)ê?a?n? li .+$"
		},

		{template = "Kat çêkirina xelatê sal",
			 kuwiki_regex = "^Xelatên di (%d+)a?n?ê? de hatine çêkirin$",
			 enwiki_regex = "^Xelatên di (%d+)a?n?ê? de hatine çêkirin$"
		},

		{template = "Sedsal li welat/parzemîn",
			 kuwiki_regex = "^Sedsala (%d+)ê?a?n? li .+$",
			 enwiki_regex = "^Sedsala (%d+)ê?a?n? li .+$"
		},
		{template = "Dehsal li welatekî",
			 kuwiki_regex = "^(%d+)î li .+$",
			 enwiki_regex = "^(%d+)î li .+$"
		},
		{template = "Sal li welatekî", 
			kuwiki_regex = "^(%d+) li .+$", 
			enwiki_regex = "^(%d+) li .+$"
			
		},
		{template = "Salekî li welatekî", 
			kuwiki_regex = "^Sal li .+$", 
			enwiki_regex = "^Sal li .+$"
		},	
}


function link_box(content)
	return "<div class=\"noprint plainlinks\" style=\"float: right; clear: both; margin: 0 0 .5em 1em; background: #f9f9f9; border: 1px #aaaaaa solid; margin-top: -1px; padding: 5px; font-weight: bold;\">"
		.. content .. "</div>"
end

function show_editlink(current)
	return link_box(
		"[" .. tostring(mw.uri.fullUrl('Şablon:'..current, "action=edit"))
		.. " Daneyên kategoriyê biguhêre]")
end

function k.biwesine(frame)

	if mw.title.getCurrentTitle().nsText == 'Şablon' then
			return '(Ev şablon tenê li ser rûpelên [[Wîkîpediya:Kategorîkirin|kategoriyan]] tê bikaranîn.)'
	end

    for _, entry in ipairs(dane) do
        local template = entry.template
        local kuwikiRegex = entry.kuwiki_regex
        local enwikiRegex = entry.enwiki_regex

        if bibine(rupel, kuwikiRegex) then
            return show_editlink(template) .. mw.getCurrentFrame():expandTemplate{title = template, args = {}}
        end
    end
		if not entry.template  then
			return error('Şablona vê kategoriyê hîn nehatiye çêkirin')
			.. '[[Kategorî:Xeletiyên kategorîkirinê]]'
		end	
	
end

function k.biwesine_en(frame)
	local args = frame:getParent().args
	local title  = args[1] or frame.args[1]
	local enwiki = k.getEnwikiTitle(title)
	
	return enwiki
end

function k.getEnwikiTitle(title)
    for _, entry in ipairs(dane) do
        local template = entry.template
        local kuwikiRegex = entry.kuwiki_regex
        local enwikiRegex = entry.enwiki_regex

        local match = mw.ustring.match(title, kuwikiRegex)
        if match then

            local enwikiTitle = "Category:" .. getOrdinalSuffix(enwikiRegex:gsub("%%d", match)):gsub("%%a", match)
            return enwikiTitle

        end
    end
    -- Handle cases when no match is found
end
function k.getOrdinalSuffix(number)
    local lastDigit = tonumber(string.sub(number, -1))
    if lastDigit == 1 and number ~= "11" then
        return "st"
    elseif lastDigit == 2 and number ~= "12" then
        return "nd"
    elseif lastDigit == 3 and number ~= "13" then
        return "rd"
    else
        return "th"
    end
end


return k