İçeriğe atla

Modül:kategori ağacı/köken

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


p = {}

--köken kategorilerinin hiyeraşisini oluşturan fonksiyon
function p.hiyerasi(tum)
	--gerekli tabloları oluştur
	local tablo = {}
	local zincir = {}
	
	--girilen dil koduna göre dil nesnesini çağır
	local dil = tum.par["dil"] and require("Modül:diller").getirKodaGore(tum.par["dil"])
	--girilen köken dil koduna göre köken dilin veya köken dil ailesinin nesnesini çağır
	local koken = require("Modül:diller").getirKodaGore(tum.par["köken"]) or require("Modül:köken dilleri").getirKodaGore(tum.par["köken"])
		or require("Modül:aileler").getirKodaGore(tum.par["köken"])
	
	--en başta her zaman ana kategoriler ve tüm diller kategorileri yer almalı
	table.insert(tablo, "[[:Kategori:Ana kategoriler|Ana kategoriler]]")
	table.insert(tablo, "[[:Kategori:Tüm diller|Tüm diller]]")
	
	--nesneyi hiyeraşiye eklemek için yardımcı fonksiyon
	local function diladi(nesne)
		table.insert(tablo, "[[:Kategori:".. nesne:getirKategoriAdi() .."|".. nesne:getirKategoriAdi() .."]]")
	end
	
	--eğer köken tipi bir köken dili ise
	if not dil and koken:getirTip() == "köken dili" then
		table.insert(tablo, "[[:Kategori:".. koken:getirAile():getirKategoriAdi() .."|".. koken:getirAile():getirKategoriAdi() .."]]")
		table.insert(tablo, "[[:Kategori:".. koken:getirAile():getirKategoriAdi() ..
			" halk ağzı|Halk ağzı]]")
	end
	
	if tum.par["tip"] then
		if dil then
			diladi(dil)
			table.insert(tablo, "[[:Kategori:"..dil:getirAsilAd().." kökenlerine göre sözcükler|Kökenlerine göre sözcükler]]")
			table.insert(tablo, "[[:Kategori:"..dil:getirAsilAd().." "..tum.par["tip"].." sözcükler|"..mw.getContentLanguage():ucfirst(tum.par["tip"]).." sözcükler]]")
		else
			diladi(koken)
			table.insert(tablo, "[[:Kategori:"..koken:getirAsilAd().." kökenli sözcükler|Kökenli sözcükler]]")
		end
		table.insert(tablo, "'''"..require("Modül:tr-araçlar").dilDuzenle(koken:getirAsilAd()).."n "..tum.par["tip"].."'''")
	elseif mw.ustring.find(mw.title.getCurrentTitle()["text"], "diğer dillerden alınan sözcükler$") then
		diladi(dil)
		table.insert(tablo, "'''Diğer dillerden alınan sözcükler'''")
	else
		if dil then
			diladi(dil)
			table.insert(tablo, "[[:Kategori:"..dil:getirAsilAd().." kökenlerine göre sözcükler|Kökenlerine göre sözcükler]]")
			table.insert(tablo, "[[:Kategori:"..dil:getirAsilAd().." diğer dillerden alınan sözcükler|Diğer dillerden alınan sözcükler]]")
			ebeveyn = koken:getirAile()
			while ebeveyn and ebeveyn:getirKod() ~= "qfa-iso" do
				table.insert (zincir, "[[:Kategori:" .. ebeveyn:getirKategoriAdi() .. " kökenli "
					.. dil:getirAsilAd() .. " sözcükler|" .. ebeveyn:getirKategoriAdi() .. "]]")
				ebeveyn = ebeveyn:getirAile()
			end
			for i = #zincir, 1, -1 do
				table.insert(tablo, zincir[i])
			end
			table.insert(tablo, "'''" .. koken:getirKategoriAdi() .. "'''")
		else
			if koken:getirTip() == "dil ailesi" then
				table.insert(tablo, "[[:Kategori:Ailelerine göre diller|Ailelerine göre diller]]")
				ebeveyn = koken:getirAile()
				while ebeveyn and ebeveyn:getirKod() ~= "qfa-iso" do
					table.insert (zincir, "[[:Kategori:" .. ebeveyn:getirKategoriAdi() .. "|" .. ebeveyn:getirAsilAd() .. "]]")
					ebeveyn = ebeveyn:getirAile()
				end
				for i = #zincir, 1, -1 do
					table.insert(tablo, zincir[i])
				end
			end
			diladi(koken)
			table.insert(tablo, "'''Kökenli sözcükler'''")
		end
	end
	
	return "<p class=\"clearThis\"><small>" .. table.concat(tablo, " » ") .. "</small></p>"
end

function p.kategoriAgaci(tum)
	local dil = tum.par["dil"] and require("Modül:diller").getirKodaGore(tum.par["dil"])
	local koken = require("Modül:diller").getirKodaGore(tum.par["köken"]) or require("Modül:köken dilleri").getirKodaGore(tum.par["köken"])
		or require("Modül:aileler").getirKodaGore(tum.par["köken"])
	local ad = tum.par['ad'] or mw.title.getCurrentTitle().text
	
	if tum.par["tip"] then
		if dil then
			table.insert(tum.kat, "[[Kategori:" .. dil:getirAsilAd() .. " "..tum.par["tip"].." sözcükler|" .. koken:getirKategoriAdi() .. "]]")
			table.insert(tum.kat, "[[Kategori:" .. koken:getirKategoriAdi() .. " kökenli " .. dil:getirAsilAd() .. " sözcükler| ]]")
			table.insert(tum.kat, "[[Kategori:" .. require("Modül:tr-araçlar").dilDuzenle(koken:getirKategoriAdi())
				.. "n "..tum.par["tip"].." sözcükler|"..dil:getirAsilAd().."]]")
		else
			table.insert (tum.kat, "[[Kategori:" .. koken:getirKategoriAdi() .. " kökenli sözcükler| ]]")
		end
	elseif mw.ustring.find(mw.title.getCurrentTitle()["text"], "diğer dillerden alınan sözcükler$") then
		table.insert(tum.kat, "[[Kategori:Dillerine göre diğer dillerden alınan sözcükler|".. dil .. "]]")
		table.insert(tum.kat, "[[Kategori:" .. dil:getirAsilAd() .. "|Diğer dillerden alınan sözcükler]]")
	else
		if dil then
			ebeveyn =  koken:getirAile()
			if ebeveyn and ebeveyn:getirKod() ~= "qfa-iso" then
				table.insert (tum.kat, "[[Kategori:" .. ebeveyn:getirKategoriAdi() .. " kökenli "
						.. dil:getirAsilAd() .. " sözcükler|" .. koken:getirKategoriAdi() .. "]]")
			else
				table.insert(tum.kat, "[[Kategori:" .. dil:getirAsilAd() .. " diğer dillerden alınan sözcükler|" .. koken:getirAsilAd() .. "]]")
			end
			table.insert(tum.kat, "[[Kategori:" .. koken:getirKategoriAdi() .. " kökenli sözcükler|" .. dil:getirAsilAd() .. "]]")
		else
			if koken:getirTip() == "dil ailesi" then
				anahtar = mw.ustring.char(0x0020)
			else
				anahtar = "Kökenli sözcükler"
				table.insert(tum.kat, "[[Kategori:Kökenlerine göre sözcükler|".. koken:getirAsilAd() .. "]]")
			end
			table.insert(tum.kat, "[[Kategori:" .. koken:getirKategoriAdi() .. "|" .. anahtar .. "]]")
		end
	end
end

return p