Modül:temalar

Vikisözlük sitesinden
Gezinti kısmına atla Arama kısmına atla
local cikart = {}


local Tema = {}


function Tema:getirAsilAd()
	return mw.getContentLanguage():ucfirst(self._asilAd)
end


function Tema:getirKategori()
	return self._asilAd
end


function Tema:getirBaslikAdi()
	return self._rawData.baslikAdi
end


function Tema:getirEbeveynler()
	ebeveynler = self._rawData.ebeveynler
	
	return ebeveynler or {}
end


function Tema:direktMi()
	return self._rawData.direkt
end


function Tema:varmiDilKategorisi()
	if self._rawData.dil_kategorisi == false then
		return nil
	else
		return true
	end
end


function Tema:getirAciklama(ekliDil)
	if self._rawData.aciklama then
		if ekliDil then
			return ekliDil .. " " .. self._rawData.aciklama[1]
		else
			return mw.getContentLanguage():ucfirst(self._rawData.aciklama[1])
		end
	else
		return ""
	end
end


function Tema:getirYanlisYazimlar()
	return self._rawData.yanlisYazimlar
end


function Tema:getirTip()
	return self._rawData.tip or self._tip or nil
end


function Tema:getirOrtak()
	if self._rawData.ortak == false then
		return false
	else
		return true
	end
end


function Tema:getirAnahtar()
	return self._rawData.anahtar or false
end


function Tema:getirGizli()
	return self._rawData.gizli or false
end


function Tema:getirVeriModulu()
	return "Modül:temalar/veri" .. (self._tip == "" and "" or "/") .. self._tip
end


function Tema:getirSiraAnahtari()
	return self._rawData.sira_anahtari or mw.getContentLanguage():ucfirst(self._asilAd)
end


function Tema:getirKategoriAdi(ekliDil)
	if self._asilAd == "ana kategoriler" or self._asilAd == "tüm diller" or not ekliDil then
		return mw.getContentLanguage():ucfirst(self._asilAd)
	else
		return mw.getContentLanguage():ucfirst(ekliDil .. " " .. self._asilAd)
	end
end


function Tema:toJSON()
	local ret = {
		ebeveynler = self:getirEbeveynler(),
		alt = self:getirAlt(),
		aciklama = self:getirAciklama(),
		direkt = self:direktMi(),
		tip = _tip,
		asilAd = _asilAd,
		sira_anahtari = self:getirSiraAnahtari(),
		dil_kategorisi = self:varmiDilKategorisi(),
		}
	
	return require("Modül:JSON").toJSON(ret)
end


function Tema:getRawData()
	return self._rawData
end


Tema.__index = Tema


function cikart.olusturNesne(asilAd, veri, tip)
	return veri and setmetatable({ _rawData = veri, _asilAd = asilAd, _tip = tip }, Tema) or nil
end


function cikart.getirBaslikAdinaGore(baslik)
	tablo = {}
	
	for ad, veri in pairs(mw.loadData("Modül:temalar/veri/söz türü")) do
		if veri.baslikAdi then
			tablo[veri.baslikAdi] = ad
		end
	end
	
	local asilAd = tablo[baslik]
	
	return cikart.olusturNesne(asilAd, require("Modül:temalar/veri/söz türü")[asilAd], "söz türü")
end


function cikart.getirAsilAdaGore(asilAd, anah)
	local altsayfalar = {
		"",
		"konu",
		"grup",
		"şablon",
		"söz türü",
		"söz biçim"
	}
	
	local verimodulu
	
	for _, altsayfa in ipairs(altsayfalar) do
		verimodulu = "Modül:temalar/veri" .. (altsayfa == "" and "" or "/") .. altsayfa
		tip = altsayfa
		if require(verimodulu)[asilAd] then
			break
		end
	end
	
	local tablo = mw.loadData(verimodulu)
	
	if mw.ustring.find(asilAd, "Dillerine göre") then
		tablo = {[asilAd] = {
			ebeveynler = {mw.ustring.gsub( asilAd, "Dillerine göre ", "" )},
			sira_anahtari = "+"
		}}
	end
	
	if mw.ustring.find(asilAd, "son ekiyle oluşmuş sözcükler") then
		tablo = {[asilAd] = {
			ebeveynler = {"son eklerine göre sözcükler"},
			sira_anahtari = mw.ustring.sub( asilAd, 2, -1 ),
			ortak = false
		}}
	end
	
	if mw.ustring.len( asilAd ) == 1 then
		tablo = {[asilAd] = {
			ebeveynler = {"bireysel karakterlerine göre sözcükler"},
		}}
	end
	
	return cikart.olusturNesne(asilAd, tablo[asilAd], tip)
end


return cikart