Modül:kategori ağacı/aile

Merhaba, buraya Modül:kategori ağacı/aile kelimesinin anlamını aramaya geldiniz. DICTIOUS'da Modül:kategori ağacı/aile kelimesinin tüm sözlük anlamlarını bulmakla kalmayacak, aynı zamanda etimolojisini, özelliklerini ve Modül:kategori ağacı/aile kelimesinin tekil ve çoğul olarak nasıl söylendiğini de öğreneceksiniz. Modül:kategori ağacı/aile kelimesi hakkında bilmeniz gereken her şey burada. Modül:kategori ağacı/aile 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


p = {}

function p.hiyerasi(tum)
	local fam = require("Modül:aileler").getirKodaGore(tum.par)
	local tablo = {}
	local zincir = {}
	
	local son = ""
	
	if fam then
		son = "'''" .. fam:getirKategoriAdi() .. "'''"
	end
	
	table.insert (tablo, "]")
	table.insert (tablo, "]")
	table.insert (tablo, "]")
	
	local parent = fam:getirAile()
	if fam:getirAile() and fam:getirAile():getirKod() == "qfa-not" then
	else
		while parent do
			table.insert (zincir, "]")
			parent = parent:getirAile()
		end
		for i = #zincir, 1, -1 do
			table.insert(tablo, zincir)
		end
	end
	
	table.insert (tablo, son)

	return "<p class=\"clearThis\"><small>" .. table.concat(tablo, " » ") .. "</small></p>"
end

local function bilgiKutusu(fam)
	local ret = {}
	
	table.insert(ret, "<div class=\"main-box\" style=\"display:inline-block;padding:0;\">\n")
	table.insert(ret, "<table class=\"main-table\">\n")
	table.insert(ret, "<tr>\n<th colspan=\"2\" class=\"plainlinks\"></th>\n</tr>\n")
	table.insert(ret, "<tr>\n<th>Asıl adı</th><td style='background:white;'>" .. fam:getirAsilAd() .. "</td>\n</tr>\n")
	
	local digerAdlari = fam:getirDigerAdlari(true)
	if digerAdlari then
		local adlar = {}
		
		for _, ad in ipairs(digerAdlari) do
			table.insert(adlar, "<li>" .. ad .. "</li>")
		end
		
		if #adlar > 0 then
			table.insert(ret, "<tr>\n<th>Diğer adları</th><td style='background:white;'><ul>" .. table.concat(adlar, "\n") .. "</ul></td>\n</tr>\n")
		end
	end
	
	local digerleri = fam:getirDigerleri()
	if digerleri then
		local adlar = {}
		
		for _, ad in ipairs(digerleri) do
			table.insert(adlar, "<li>" .. ad .. "</li>")
		end
		
		if #adlar > 0 then
			table.insert(ret, "<tr>\n<th>Diğer adları</th><td style='background:white;'><ul>" .. table.concat(adlar, "\n") .. "</ul></td>\n</tr>\n")
		end
	end

	local cesitleri = fam:getirCesitleri()
	if cesitleri then
		local adlar = {}
		
		for _, ad in ipairs(cesitleri) do
			if type(ad) == "string" then
				table.insert(adlar, "<li>" .. ad .. "</li>")
			else
				assert(type(ad) == "table")
				local first_var
				local subvars = {}
				for i, var in ipairs(ad) do
					if i == 1 then
						first_var = var
					else
						table.insert(subvars, "<li>" .. var .. "</li>")
					end
				end
				if #subvars > 0 then
					table.insert(adlar, "<li><dl><dt>" .. first_var .. "</dt>\n<dd><ul>" .. table.concat(subvars, "\n") .. "</ul></dd></dl></li>")
				elseif first_var then
					table.insert(adlar, "<li>" .. first_var .. "</li>")
				end
			end
		end
		
		if #adlar > 0 then
			table.insert(ret, "<tr>\n<th>Çeşitleri</th><td><ul>" .. table.concat(adlar, "\n") .. "</ul></td>\n</tr>\n")
		end
	end
	
	table.insert(ret, "<tr>\n<th>]</th><td style='background:white;'><code>" .. fam:getirKod() .. "</code></td>\n</tr>\n")
	table.insert(ret, "<tr>\n<th>]</th><td style='background:white;'>")
	
	local protoLanguage = fam:getirProtoDili()
	
	if protoLanguage then
		table.insert(ret, "]")
	else
		table.insert(ret, "yok")
	end
	
	table.insert(ret, "</td>\n")
	table.insert(ret, "\n</tr>\n")
	
	local parent = fam:getirAile()
	
	if not parent then
		table.insert(ret, "<tr>\n<th>]</th>\n<td style='background:white;'>")
		table.insert(ret, "sınıflandırılmamış")
	elseif parent:getirKod() == "qfa-not" then
		table.insert(ret, "<tr>\n<th>]</th>\n<td style='background:white;'>")
		table.insert(ret, "bir dil ailesi değil")
	else
		local chain = {}
		while parent do
			table.insert(chain, "]")
			parent = parent:getirAile()
		end
		
		table.insert(ret, "<tr>\n<th>]</th>\n<td style='background:white;'>")
		
		for i = #chain, 1, -1 do
			table.insert(ret, "<ul><li>" .. chain)
		end
		
		table.insert(ret, string.rep("</li></ul>", #chain))
	end
	
	table.insert(ret, "</td>\n</tr>\n")
	
	if fam:getirVikiveriItemi() and mw.wikibase then
		local link = ''
		table.insert(ret, "<tr><th>Vikiveri</th><td style='background:white;'>" .. link .. "</td></tr>")
	end
	
	table.insert(ret, "</table></div>")
	
	return table.concat(ret)
end

function kategoriler(fam, tum, aile)
	if fam then
		if fam:getirAile() then
			if fam:getirAile():getirKod() == "qfa-not" then
				table.insert (tum.kat, "]")
			else
				table.insert (tum.kat, "]")
			end
		else
			table.insert (tum.kat, "]")
		end
	end
	table.insert (tum.kat, "]")
end

function p.kategoriAgaci(tum)
	local ad = mw.title.getCurrentTitle()
	local aile = tum.par
	local fam = require("Modül:aileler").getirKodaGore(aile)
	
	if not fam then
		kategoriler(fam, tum, aile)
	else
		i = mw.ustring.find(mw.ustring.sub( fam:getirKategoriAdi(), -1 ), "$")
		local ret =
			"Bu kategori '''" .. fam:getirKategoriAdi() .. (i and "n" or "") .. "in''' ana kategorisidir.\n\n" .. fam:getirKategoriAdi() .. " hakkında bilgi:\n\n" .. bilgiKutusu(fam)
		
		table.insert(tum.tab, mw.getCurrentFrame():expandTemplate{title = "kardeşbağlantılar", args = {fam:getirKategoriAdi()}})
		table.insert(tum.tab, mw.getCurrentFrame():expandTemplate{title = "Vikipedi", args = {}})
		table.insert(tum.gor, ret)
		kategoriler(fam, tum, aile)
	end
end

return p