Modül:kategori ağacı/alfabe

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


p = {}

local temaAlt = {
	["alfabe"] = {
		ebeveynler = {"tüm alfabeler"},
		alt = {"diller"}
	},
	["diller"] = {
		kategori = "dilleri",
		ebeveynler = {"alfabe"},
		aciklama = "ni kullanan dillerin listesi."
	}
}

local function buyukHarf(x)
	return mw.getContentLanguage():ucfirst(x)
end

function p.hiyerasi(tum)
	local scr = require("Modül:alfabeler").getirKodaGore(tum.par["alfabe"])
	local tema = tum.par['tema']
	local tablo = {}
	
	table.insert(tablo, "[[:Kategori:Ana kategoriler|Ana kategoriler]]")
	table.insert(tablo, "[[:Kategori:Tüm alfabeler|Tüm alfabeler]]")
	if tema then
		table.insert(tablo, "[[:Kategori:" .. scr:getirKategoriAdi() .. "|" .. scr:getirKategoriAdi() .. "]]")
		table.insert(tablo, "'''" .. buyukHarf(temaAlt[tema].kategori) .. "'''")
	else
		table.insert(tablo, "'''" .. scr:getirKategoriAdi() .. "'''")
	end
	
	return "<p class=\"clearThis\"><small>" .. table.concat(tablo, " » ") .. "</small></p>"
end

function bagKutu(scr, vikipedi)
	local canonicalName = scr:getirAsilAd()
	local categoryName = scr:getirKategoriAdi()
	local wikipediaArticle = vikipedi or scr:getirVikipediMaddesi()
	
	return [=[<div style="clear: right; border: solid #aaa 1px; margin: 1 1 1 1; background: #f9f9f9; width: 250px; padding: 5px; text-align: left; float: right">
<div style="text-align: center; margin-bottom: 10px; margin-top: 5px">''']=] .. categoryName .. [=['''</div>

{| style="font-size: 90%; background: #f9f9f9"
| style="vertical-align: middle; height: 35px;" | [[Dosya:Wikipedia-logo.png|35px|none|Vikipedi]] || '']=] .. categoryName .. [=[ hakkındaki Vikipedi maddesi''
|-
| colspan="2" style="padding-left: 50px; border-bottom: 1px solid lightgray;" | '''[[w:]=] .. wikipediaArticle .. [=[|]=] .. wikipediaArticle .. [=[]]'''
|-
| style="vertical-align: middle; height: 35px;" | [[Dosya:Crystal kfind.png|35px|none|Açıklamalar]] || ]=] .. categoryName .. [=[ açıklamaları
|-
| colspan="2" style="padding-left: 50px; border-bottom: 1px solid lightgray;" | '''[[Vikisözlük:]=] .. categoryName .. [=[ hakkında]]'''
|-
| style="vertical-align: middle; height: 35px;" | [[Dosya:Book notice.png|35px|none|Bilgi]] || ]=] .. categoryName .. [=[ bilgileri
|-
| colspan="2" style="padding-left: 50px; border-bottom: 1px solid lightgray;" | '''[[Ek:]=] .. categoryName .. [=[]]'''
|-
| style="vertical-align: Middle; height: 35px;" | [[Dosya:Abc box.svg|35px|none|Kod]] || ]=] .. categoryName .. [=[ kodu
|-
| colspan="2" style="padding-left: 50px;" | ''']=] .. scr:getirKod() .. [=['''
|}
</div>]=]
end

function kodlar(scr, tum)
	local kodlar = {}
	
	for code, data in pairs(mw.loadData("Modül:alfabeler/veri")) do
		if data.asilAd == scr:getirAsilAd() then
			table.insert(kodlar, "'''" .. code .. "'''")
		end
	end
	local tek = 1
	if kodlar[2] then
		tek = 2
	end
	
	if kodlar[2] then
		table.sort(
			kodlar,
			-- Dört harfli kodların uzunluğu 10'dur, çünkü kalınlaştırmaları var: '''Latn'''.
			function(code1, code2)
				if #code1 == 10 then
					if #code2 == 10 then
						return code1 < code2
					else
						return true
					end
				else
					if #code2 == 10 then
						return false -- dört harfli kodlar diğerlerinden önce gelir
					else
						return code1 < code2
					end
				end
			end)
	end
	
	table.insert(tum.gor, scr:getirKategoriAdi() .. " hakkında bilgi, [[Ek:" .. scr:getirKategoriAdi() .. "]] sayfasında bulunabilir.")
	
	table.insert(tum.gor, "Vikisözlük'ün çeşitli yerlerinde " .. scr:getirKategoriAdi() .. 
			(tek == 2 and "; " or ", ") .. table.concat(kodlar, ", ") .. (tek == 2 and " [[Vikisözlük:Alfabeler|kodları]]" or " [[Vikisözlük:Alfabeler|kodu]]") .. " ile sunulmuştur.")
	
end

function kategoriler(scr, tema, tum)
	if tema then
		table.insert(tum.kat, "[[Kategori:" .. scr:getirKategoriAdi() .. "|" .. tema .. "]]")
		table.insert(tum.kat, "[[Kategori:Alfabelerine göre diller]]")
	else
		table.insert(tum.kat, "[[Kategori:Tüm alfabeler]]")
	end
end

function alt(scr, tema)
	local tablo = {}
	
	for _, child in ipairs(temaAlt["alfabe"].alt) do
		i = mw.ustring.find(mw.ustring.sub( scr:getirKategoriAdi(), -1 ), "[aAeEıIiİoOöÖuUüÜ]$")
		if mw.title.new("Kategori:" .. scr:getirKategoriAdi() .. " " .. temaAlt[child].kategori).exists then
			table.insert(tablo, "<li>[[:Kategori:" .. scr:getirKategoriAdi() .. " " .. temaAlt[child].kategori .. "]]: " 
				.. scr:getirKategoriAdi() .. (i and "n" or "") .. temaAlt[child].aciklama .. "</li>")
		elseif mw.title.new("Kategori:" .. scr:getirKategoriAdi() .. " " .. child).exists then
			table.insert(tablo, "<li>[[:Kategori:" .. scr:getirKategoriAdi() .. " " .. child .. "]]: " 
				.. scr:getirKategoriAdi() .. (i and "n" or "") .. temaAlt[child].aciklama .. "</li>")
		end
	end
	
	return table.concat(tablo, "\n")
end

function p.kategoriAgaci(tum)
	local alfabe = tum.par['alfabe']
	local tema = tum.par['tema']
	local scr = require("Modül:alfabeler").getirKodaGore(alfabe)
	local vikipedi = tum.par['vikipedi']
	
	if scr then
		vikipedi = tum.par['vikipedi'] or scr:getirKategoriAdi()
	end
	
	if scr then
		if tema then
			table.insert(tum.gor, scr:getirKategoriAdi() .. temaAlt[tema].aciklama)
		else
			i = mw.ustring.find(mw.ustring.sub( scr:getirKategoriAdi(), -1 ), "[aAeEıIiİoOöÖuUüÜ]$")
			table.insert(tum.gor, "Bir yazı sistemi olan '''" .. scr:getirKategoriAdi() .. (i and "n" or "") .. "in''' ana kategorisi.")
			kodlar(scr, tum)
			table.insert(tum.tab, bagKutu(scr, vikipedi))
			table.insert(tum.gor, alt(scr, tema))
		end
	end
	
	kategoriler(scr, tema, tum)
end

return p