Modül:cinsiyet ve numara
Bu belgeleme Modül:cinsiyet ve numara/belge (düzenle | geçmiş) sayfasından yansıtılmaktadır. Arayüz düzenleyicilerinin deney yapabilmeleri için ayrıca Modül:cinsiyet ve numara/deneme tahtası sayfası kullanılabilir.
--[=[
Bu modül cinsiyet ve numaralar için standart görünümler oluşturur.
Bir cinsiyet birimini viki/HTML biçimine çevirir.
Bir cinsiyet birimi aşağıda listelenmiş unsurlardan bir tanesidir,
tire ile ayrılmış şekildedir. Örnek olarak: "g", "n", "d-ç", "e-an-ç"
]=]--
local cikart = {}
local kodlar = {}
-- Tüm muhtemel "kısımların" oluşabileceği kodların lsitesi.
kodlar["?"] = '<abbr title="cinsiyet tamamlanmamış">?</abbr>'
-- Cinsiyetler
kodlar["m"] = '<abbr title="eril cinsiyet">e</abbr>'
kodlar["e"] = '<abbr title="eril cinsiyet">e</abbr>'
kodlar["f"] = '<abbr title="dişil cinsiyet">d</abbr>'
kodlar["d"] = '<abbr title="dişil cinsiyet">d</abbr>'
kodlar["n"] = '<abbr title="nötr cinsiyet">n</abbr>'
kodlar["c"] = '<abbr title="genel cinsiyet">g</abbr>'
kodlar["g"] = '<abbr title="genel cinsiyet">g</abbr>'
-- Fazladan belirticiler
kodlar["an"] = '<abbr title="animate">anim</abbr>'
kodlar["in"] = '<abbr title="cansız, ">cansız</abbr>'
kodlar["pr"] = '<abbr title="personal">pers</abbr>'
kodlar["np"] = '<abbr title="non-personal">npers</abbr>'
-- Numaralar
kodlar["s"] = '<abbr title="tekil sayı">te</abbr>'
kodlar["t"] = '<abbr title="tekil sayı">te</abbr>'
kodlar["du"] = '<abbr title="ikil sayı">ik</abbr>'
kodlar["i"] = '<abbr title="ikil sayı">ik</abbr>'
kodlar["p"] = '<abbr title="çoğul sayı">ç</abbr>'
kodlar["ç"] = '<abbr title="çoğul sayı">ç</abbr>'
-- Eylem belirticileri
kodlar["impf"] = '<abbr title="imperfective aspect">impf</abbr>'
kodlar["pf"] = '<abbr title="perfective aspect">pf</abbr>'
-- biçimlendir_liste'nin bir şablondan çağırılabilir hali.
function cikart.goster_liste(frame)
local args = frame.args
local dil = args["dil"]; if dil == "" then dil = nil end
local liste = {}
local i = 1
while args[i] and args[i] ~= "" do
table.insert(liste, args[i])
i = i + 1
end
return cikart.bicimlendir_liste(liste, dil)
end
-- Bir veya daha fazla cinsiyet ayrıştırmasını hallet, belirtici listesi şeklinde.
function cikart.bicimlendir_liste(liste, dil)
local adsinifi_mi = nil
-- Her bir belirticiyi işlemden geçir ve biçimlendir
for anahtar, kisa in ipairs(liste) do
local as
liste[anahtar], as = cikart.bicimlendir_belirtici(kisa, dil)
-- Tüm belirticilerin bir ad sınıfı olduğundan veya olmadığından emin ol.
if adsinifi_mi == nil then
adsinifi_mi = as
elseif adsinifi_mi ~= as then
error("Ad sınıfları ve cinsiyetler karıştırılamaz. Lütfen ikisinden birini seçip kullanın.")
end
end
if adsinifi_mi then
-- Tüm kodları eğik çizgi ile ayırarak birleştir
return "<span class=\"gender\">class " .. table.concat(liste, "/") .. "</span>"
else
-- Tüm kodları virgül ile ayırarak birleştir
return "<span class=\"gender\">" .. table.concat(liste, ", ") .. "</span>"
end
end
-- Tek bir cinsiyet belirticisinin alt parçalarını biçimlendir.
function cikart.bicimlendir_belirtici(kisa, dil)
local kategoriler = ""
local ret = ""
local adsinifi_mi = false
-- Eğer belirtici cX ile başlıyorsa, o zaman bir ad belirticisidir.
if kisa:find("^[1-9]") or kisa:find("^c[^-]") then
adsinifi_mi = true
kod = kisa:gsub("^c", "")
if kod == "?" then
ret = "<abbr class=\"noun-class\" title=\"noun class missing\">?</abbr>"
else
ret = "<abbr class=\"noun-class\" title=\"noun class " .. kod .. "\">" .. kod .. "</abbr>"
end
else
-- Kısımları ayır ve hepsini işlemden geçir, kendi görüntü haline biçimlendir
local kisimlar = mw.text.split(kisa, "-")
for anahtar, kod in ipairs(kisimlar) do
-- Bu kod geçerli mi?
if kodlar[kod] then
kisimlar[anahtar] = kodlar[kod]
else
error("\"" .. kisa .. "\" cinsiyet belirticisi geçerli değil.")
end
end
-- Tüm kodları bir boşluk ile birleştir
ret = table.concat(kisimlar, " ")
end
-- Eğer dil verildiyse fazladan işlemler yap
if dil then
-- Bu desteklenmeyen bir cinsiyet mi?
if kisa:find("?") then
local m_araclar = require("Modül:araçlar")
kategoriler = m_araclar.format_categories({dil:getirAsilAd() .. " cinsiyeti eksik sözcükler"}, nil)
end
end
return ret .. kategoriler, adsinifi_mi
end
return cikart