Modül:Kategori dolaşım
Bu modül için bir Modül:Kategori dolaşım/belge belgelendirmesi oluşturabilirsiniz
local p = {}
-- İllerin listesi
local iller = {
"Adana", "Adıyaman", "Afyonkarahisar", "Ağrı", "Amasya", "Ankara", "Antalya", "Ardahan", "Artvin", "Aydın", "Balıkesir", "Bartın", "Batman", "Bayburt", "Bilecik", "Bingöl", "Bitlis", "Bolu", "Burdur", "Bursa", "Çanakkale", "Çankırı", "Çorum", "Denizli", "Diyarbakır", "Düzce", "Edirne", "Elazığ", "Erzincan", "Erzurum", "Eskişehir", "Gaziantep", "Giresun", "Gümüşhane", "Hakkâri", "Hatay", "Iğdır", "Isparta", "İstanbul", "İzmir", "Kahramanmaraş", "Karabük", "Karaman", "Kars", "Kastamonu", "Kayseri", "Kırıkkale", "Kırklareli", "Kırşehir", "Kilis", "Kocaeli", "Konya", "Kütahya", "Malatya", "Manisa", "Mardin", "Mersin", "Muğla", "Muş", "Nevşehir", "Niğde", "Ordu", "Osmaniye", "Rize", "Sakarya", "Samsun", "Siirt", "Sinop", "Sivas", "Şanlıurfa", "Şırnak", "Tekirdağ", "Tokat", "Trabzon", "Tunceli", "Uşak", "Van", "Yalova", "Yozgat", "Zonguldak"
}
-- Ünlü uyumuna göre doğru ekleri belirleyen fonksiyon
local function ek_belirle(il, kategori)
local son_unlu = il:match("[aeiouöüıâîû][^aeiouöüıâîû]*$"):sub(1,1)
local son_harf = il:sub(-1)
local sert_unsuzler = {["p"]=true, ["ç"]=true, ["t"]=true, ["k"]=true}
local de_ek, ki_ek
if sert_unsuzler[son_harf] then
if son_unlu:find("[aıou]") then
de_ek = "'ta"
ki_ek = "'taki"
else
de_ek = "'te"
ki_ek = "'teki"
end
else
if son_unlu:find("[aıou]") then
de_ek = "'da"
ki_ek = "'daki"
else
de_ek = "'de"
ki_ek = "'deki"
end
end
local nin_ek
if son_unlu:find("[aı]") then
nin_ek = "nın"
elseif son_unlu:find("[ei]") then
nin_ek = "nin"
elseif son_unlu:find("[ou]") then
nin_ek = "nun"
else
nin_ek = "nün"
end
if kategori:find("de ") or kategori:find("da ") then
return de_ek .. " "
elseif kategori:find("te ") or kategori:find("ta ") then
return de_ek .. " "
elseif kategori:find("daki") or kategori:find("deki") then
return ki_ek
elseif kategori:find("nın") or kategori:find("nin") or kategori:find("nun") or kategori:find("nün") then
return "'n" .. nin_ek
else
return " ili"
end
end
-- Modül fonksiyonu
function p.dolasim(frame)
local kategori = mw.title.getCurrentTitle().text
kategori = kategori:gsub("^Kategori:", "")
local il_adi = kategori:match("^([%aşçğüöİŞÇĞÜÖ]+)")
local geri_kalan = kategori:sub(#il_adi + 1)
if not il_adi or #geri_kalan < 1 then
return "Hatalı kategori adı formatı: " .. kategori
end
-- Kategori adında zaten bir ek var mı kontrolü
local ek = ""
if geri_kalan:find("da ") or geri_kalan:find("de ") or geri_kalan:find("ta ") or geri_kalan:find("te ") or geri_kalan:find("daki") or geri_kalan:find("deki") then
ek = ""
else
ek = ek_belirle(il_adi, kategori)
end
local sonuc = ""
for i, il in ipairs(iller) do
local yeni_kategori = il .. ek .. geri_kalan
local link = "[[:Kategori:" .. yeni_kategori .. "|" .. il .. "]]"
if i > 1 then
sonuc = sonuc .. " • "
end
sonuc = sonuc .. link
end
return sonuc
end
return p