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, "", ""), -1 )
end
function cikart.sozTuruCogul(soz_kategorisi)
-- Söz türünü çoğul hale çevir
if mw.ustring.find(soz_kategorisi, "$") then
soz_kategorisi = mw.ustring.gsub( soz_kategorisi, "()$", "%1leri" )
elseif mw.ustring.find(soz_kategorisi, "dı$") then
soz_kategorisi = mw.ustring.gsub( soz_kategorisi, "()$", "%1ları" )
elseif secSonUnlu(soz_kategorisi):find("") or soz_kategorisi:find("sembol") or soz_kategorisi:find("harf") then
soz_kategorisi = soz_kategorisi .. "ler"
elseif secSonUnlu(soz_kategorisi):find("") then
soz_kategorisi = soz_kategorisi .. "lar"
else
soz_kategorisi = soz_kategorisi
end
return soz_kategorisi
end
function cikart.bas_s(frame)
local params = {
= {required = true, default = "und"},
= {},
= {},
= {},
= {required = true, default = "adlar"},
= {},
= {},
= {},
= {list = true, allow_holes = true, default = ""},
= {},
= {list = true, allow_holes = true},
= {alias_of = "ç", list = true},
= {list = true},
= {list = true, allow_holes = true},
= {list = true, allow_holes = true},
= {list = true, allow_holes = true},
= {list = true, allow_holes = true},
= {list = true, allow_holes = true},
= {list = true, allow_holes = true},
= {list = true, allow_holes = true},
= {list = true, allow_holes = true},
= {list = true, allow_holes = true},
= {list = true, allow_holes = true, type = "boolean"},
= {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) or require("Modül:diller").err(args, 1)
veri.sira_anahtari = args
veri.baslar = args
veri.id = args
veri.alfabecevler = args
veri.cinsiyetler = args
-- Alfabe
local kat_alf
if args then
veri.alf = (args and (require("Modül:alfabeler").getirKodaGore(args) or error("Alfabe kodu \"" .. args .. "\" geçerli değil.")) or nil)
kat_alf = kat_alf
else
veri.alf = (args and (require("Modül:alfabeler").getirKodaGore(args) or error("Alfabe kodu \"" .. args .. "\" geçerli değil.")) or nil)
end
-- Söz türü kategorisi
veri.soz_kategorisi = args
if not invariable 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 then
table.insert(veri.kategoriler, veri.dil:getirAsilAd() .. " " .. args)
end
if args then
table.insert(veri.kategoriler, veri.dil:getirAsilAd() .. " " .. args)
end
if args then
table.insert(veri.kategoriler, veri.dil:getirAsilAd() .. " " .. args)
end
-- Çekim halleri
veri.cekimler = {}
for i = 1, math.ceil(args.maxindex / 2) do
local cekim_kisim = {
etiket = args,
accel = args,
istek = args,
}
local bicim = {
sozcuk = args,
alt = args,
cinsiyetler = {args},
id = args,
dil = args,
bagyok = args,
belirticiler = {args},
alf = args,
alfabecev = args,
}
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 then
table.insert(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