Modül:kategori ağacı/aile

Vikisözlük sitesinden
Modül belgelemesi [Düzenle] [Tazele]


p = {}

function p.hiyerasi(tum)
	local fam = require("Modül:aileler").getirKodaGore(tum.par["aile"])
	local tablo = {}
	local zincir = {}
	
	local son = ""
	
	if fam then
		son = "'''" .. fam:getirKategoriAdi() .. "'''"
	end
	
	table.insert (tablo, "[[:Kategori:Ana kategoriler|Ana kategoriler]]")
	table.insert (tablo, "[[:Kategori:Tüm diller|Tüm diller]]")
	table.insert (tablo, "[[:Kategori:Ailelerine göre diller|Ailelerine göre diller]]")
	
	local parent = fam:getirAile()
	if fam:getirAile() and fam:getirAile():getirKod() == "qfa-not" then
	else
		while parent do
			table.insert (zincir, "[[:Kategori:" .. parent:getirKategoriAdi() .. "|" .. parent:getirAsilAd() .. "]]")
			parent = parent:getirAile()
		end
		for i = #zincir, 1, -1 do
			table.insert(tablo, zincir[i])
		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\">[//tr.wiktionary.org/w/index.php?title=Modül:aileler/veri&action=edit Aile verisini düzenle]</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>[[Vikisözlük:Dil aileleri|Aile kodu]]</th><td style='background:white;'><code>" .. fam:getirKod() .. "</code></td>\n</tr>\n")
	table.insert(ret, "<tr>\n<th>[[w:Proto dil|Yaygın ata]]</th><td style='background:white;'>")
	
	local protoLanguage = fam:getirProtoDili()
	
	if protoLanguage then
		table.insert(ret, "[[:Kategori:" .. mw.getContentLanguage():ucfirst(protoLanguage:getirKategoriAdi()) .. "|" .. protoLanguage:getirAsilAd() .. "]]")
	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>[[Vikisözlük:Dil aileleri|Soyu]]</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>[[Vikisözlük:Dil aileleri|Soyu]]</th>\n<td style='background:white;'>")
		table.insert(ret, "bir dil ailesi değil")
	else
		local chain = {}
		while parent do
			table.insert(chain, "[[:Kategori:" .. mw.ustring.gsub(parent:getirKategoriAdi(), "^.", mw.ustring.upper) .. "|" .. parent:getirAsilAd() .. "]]")
			parent = parent:getirAile()
		end
		
		table.insert(ret, "<tr>\n<th>[[Vikisözlük:Dil aileleri|Soyu]]</th>\n<td style='background:white;'>")
		
		for i = #chain, 1, -1 do
			table.insert(ret, "<ul><li>" .. chain[i])
		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 = '[' .. mw.wikibase.getEntityUrl(fam:getirVikiveriItemi()) .. ' ' .. fam:getirVikiveriItemi() .. ']'
		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, "[[Kategori:Ailelerine göre diller| ]]")
			else
				table.insert (tum.kat, "[[Kategori:" .. fam:getirAile():getirKategoriAdi() .. "]]")
			end
		else
			table.insert (tum.kat, "[[Kategori:Ailelerine göre diller]]")
		end
	end
	table.insert (tum.kat, "[[Kategori:Tüm dil aileleri]]")
end

function p.kategoriAgaci(tum)
	local ad = mw.title.getCurrentTitle()["text"]
	local aile = tum.par["aile"]
	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 ), "[aAeEıIiİoOöÖuUüÜ]$")
		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