Modül:başlık başı/şablonlar
Bu belgeleme Modül:başlık başı/şablonlar/belge (düzenle | geçmiş) sayfasından yansıtılmaktadır. Arayüz düzenleyicilerinin deney yapabilmeleri için ayrıca Modül:başlık başı/şablonlar/deneme tahtası sayfası kullanılabilir.
local cikart = {}
-- Çoğul hale getirilmemesi gereken söz türleri.
local invariable = mw.loadData("Modül:başlık başı/veri").invariable
function secSonUnlu(yazi)
return mw.ustring.sub( mw.ustring.gsub( yazi, "[%s%d%p%'bBcCçÇdDfFgGğĞhHjJkKlLmMnNpPrRsSşŞtTvVyYzZ']", ""), -1 )
end
function cikart.sozTuruCogul(soz_kategorisi)
-- Söz türünü çoğul hale çevir
if mw.ustring.find(soz_kategorisi, "[tlrz][iü]$") then
soz_kategorisi = mw.ustring.gsub( soz_kategorisi, "([tlrz])[eiöüî]$", "%1leri" )
elseif mw.ustring.find(soz_kategorisi, "dı$") then
soz_kategorisi = mw.ustring.gsub( soz_kategorisi, "([d])[aıouâ]$", "%1ları" )
elseif secSonUnlu(soz_kategorisi):find("[eiöüî]") or soz_kategorisi:find("sembol") or soz_kategorisi:find("harf") then
soz_kategorisi = soz_kategorisi .. "ler"
elseif secSonUnlu(soz_kategorisi):find("[aıouâ]") then
soz_kategorisi = soz_kategorisi .. "lar"
else
soz_kategorisi = soz_kategorisi
end
return soz_kategorisi
end
function cikart.bas_s(frame)
local params = {
[1] = {required = true, default = "und"},
["ak"] = {},
["kat ak"] = {},
["sıra"] = {},
[2] = {required = true, default = "adlar"},
["kat2"] = {},
["kat3"] = {},
["kat4"] = {},
["baş"] = {list = true, allow_holes = true, default = ""},
["id"] = {},
["ç"] = {list = true, allow_holes = true},
["tr"] = {alias_of = "ç", list = true},
["c"] = {list = true},
[3] = {list = true, allow_holes = true},
["ce=accel"] = {list = true, allow_holes = true},
["ce=istek"] = {list = true, allow_holes = true},
["ce=alt"] = {list = true, allow_holes = true},
["ce=ak"] = {list = true, allow_holes = true},
["ce=id"] = {list = true, allow_holes = true},
["ce=ç"] = {list = true, allow_holes = true},
["ce=c"] = {list = true, allow_holes = true},
["ce=bel"] = {list = true, allow_holes = true},
["ce=bağyok"] = {list = true, allow_holes = true, type = "boolean"},
["ce=dil"] = {list = true, allow_holes = true},
}
local args = require("Modül:parameters").process(frame:getParent().args, params)
-- Dil ve alfabe verisini al
local veri = {}
veri.dil = require("Modül:diller").getirKodaGore(args[1]) or require("Modül:diller").err(args[1], 1)
veri.sira_anahtari = args["sıra"]
veri.baslar = args["baş"]
veri.id = args["id"]
veri.alfabecevler = args["ç"]
veri.cinsiyetler = args["c"]
-- Alfabe
local kat_alf
if args["kat ak"] then
veri.alf = (args["kat ak"] and (require("Modül:alfabeler").getirKodaGore(args["kat ak"]) or error("Alfabe kodu \"" .. args["kat ak"] .. "\" geçerli değil.")) or nil)
kat_alf = kat_alf
else
veri.alf = (args["ak"] and (require("Modül:alfabeler").getirKodaGore(args["ak"]) or error("Alfabe kodu \"" .. args["ak"] .. "\" geçerli değil.")) or nil)
end
-- Söz türü kategorisi
veri.soz_kategorisi = args[2]
if not invariable[veri.soz_kategorisi] then
veri.soz_kategorisi = cikart.sozTuruCogul(veri.soz_kategorisi)
end
if kat_alf then
veri.soz_kategorisi = kat_alf:getirKategoriAdi() .. " ile yazılmış " .. veri.soz_kategorisi
end
-- Fazladan kategoriler
veri.kategoriler = {}
if args["kat2"] then
table.insert(veri.kategoriler, veri.dil:getirAsilAd() .. " " .. args["kat2"])
end
if args["kat3"] then
table.insert(veri.kategoriler, veri.dil:getirAsilAd() .. " " .. args["kat3"])
end
if args["kat4"] then
table.insert(veri.kategoriler, veri.dil:getirAsilAd() .. " " .. args["kat4"])
end
-- Çekim halleri
veri.cekimler = {}
for i = 1, math.ceil(args[3].maxindex / 2) do
local cekim_kisim = {
etiket = args[3][i * 2 - 1],
accel = args["ceaccel"][i],
istek = args["ceistek"][i],
}
local bicim = {
sozcuk = args[3][i * 2],
alt = args["cealt"][i],
cinsiyetler = {args["cec"][i]},
id = args["ceid"][i],
dil = args["cedil"][i],
bagyok = args["cebağyok"][i],
belirticiler = {args["cebel"][i]},
alf = args["ceak"][i],
alfabecev = args["ceç"][i],
}
if bicim.dil then
bicim.dil = require("Modül:diller").getirKodaGore(bicim.dil) or require("Modül:diller").err(bicim.dil, "f" .. i .. "dil")
end
if bicim.alf then
bicim.alf = require("Modül:alfabeler").getirKodaGore(bicim.alf) or error("Alfabe kodu \"" .. bicim.alf .. "\" geçerli değil.")
end
-- Eğer hiçbir sözcük veya alternatif girilmediyse, o zaman etiket tek başına görüntülenir.
if bicim.sozcuk or bicim.alt then
table.insert(cekim_kisim, bicim)
end
if cekim_kisim.etiket == "veya" then
-- Bir önceki çekim kısmını başa ekle, eğer varsa
if #cekim_kisim > 0 and veri.cekimler[1] then
table.insert(veri.cekimler[#veri.cekimler], bicim)
end
elseif cekim_kisim.etiket then
-- Yeni bir çekim kısmı ekle
table.insert(veri.cekimler, cekim_kisim)
end
end
return require("Modül:başlık başı").tam_baslikbasi(veri)
end
return cikart