Modül:cinsiyet ve numara

Merhaba, buraya Modül:cinsiyet ve numara kelimesinin anlamını aramaya geldiniz. DICTIOUS'da Modül:cinsiyet ve numara kelimesinin tüm sözlük anlamlarını bulmakla kalmayacak, aynı zamanda etimolojisini, özelliklerini ve Modül:cinsiyet ve numara kelimesinin tekil ve çoğul olarak nasıl söylendiğini de öğreneceksiniz. Modül:cinsiyet ve numara kelimesi hakkında bilmeniz gereken her şey burada. Modül:cinsiyet ve numara kelimesinin tanımı, konuşurken veya metinlerinizi yazarken daha kesin ve doğru olmanıza yardımcı olacaktır. XXX'in ve diğer kelimelerin tanımını bilmek, kelime dağarcığınızı zenginleştirir ve size daha fazla ve daha iyi dilsel kaynaklar sağlar.
Modül belgelemesi
--[=[
	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 = '<abbr title="eril cinsiyet">e</abbr>'
kodlar = '<abbr title="eril cinsiyet">e</abbr>'
kodlar = '<abbr title="dişil cinsiyet">d</abbr>'
kodlar = '<abbr title="dişil cinsiyet">d</abbr>'
kodlar = '<abbr title="nötr cinsiyet">n</abbr>'
kodlar = '<abbr title="genel cinsiyet">g</abbr>'
kodlar = '<abbr title="genel cinsiyet">g</abbr>'

-- Fazladan belirticiler
kodlar = '<abbr title="animate">anim</abbr>'
kodlar = '<abbr title="cansız, ">cansız</abbr>'
kodlar = '<abbr title="personal">pers</abbr>'
kodlar = '<abbr title="non-personal">npers</abbr>'

-- Numaralar
kodlar = '<abbr title="tekil sayı">te</abbr>'
kodlar = '<abbr title="tekil sayı">te</abbr>'
kodlar = '<abbr title="ikil sayı">ik</abbr>'
kodlar = '<abbr title="ikil sayı">ik</abbr>'
kodlar = '<abbr title="çoğul sayı">ç</abbr>'
kodlar = '<abbr title="çoğul sayı">ç</abbr>'

-- Eylem belirticileri
kodlar = '<abbr title="imperfective aspect">impf</abbr>'
kodlar = '<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; if dil == "" then dil = nil end
	local liste = {}
	local i = 1
	
	while args and args ~= "" do
		table.insert(liste, args)
		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, 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("^") 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 then
				kisimlar = kodlar
			else
				error("\"" .. kisa .. "\" cinsiyet belirticisi geçerli değil.")
			end
		end
		
		-- Tüm kodları bir boşluk ile birleştir
		ret = table.concat(kisimlar, "&nbsp;")
	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