İçeriğe atla

Modül:aileler

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

Bu modül, dil ailelerinin objelerini çağırmaya yarar.


local cikart = {}

local Aile = {}


function Aile:getirKod()
	return self._kod
end


function Aile:getirAsilAd()
	return self._rawData.asilAd
end


--function Aile:getirTumAdlar()
--	return self._rawData.adlar
--end


function Aile:getirDigerAdlari()
	return self._rawData.digerAdlari or {}
end


function Aile:getirDigerAdlari(sadeceDigerAdlari)
	return require("Modül:dil-benzeri").getirDigerAdlari(self, sadeceDigerAdlari)
end


function Aile:getirDigerleri()
	return self._rawData.digerleri or {}
end


function Aile:getirCesitleri(flatten)
	return require("Modül:dil-benzeri").getirCesitleri(self, flatten)
end


function Aile:getirTip()
	return "dil ailesi"
end


function Aile:getirAile()
	if self._rawData.aile and not self._aileNesnesi then
		self._aileNesnesi = cikart.getirKodaGore(self._rawData.aile)
	end
	
	return self._aileNesnesi
end


function Aile:getirProtoDili()
	if not self._protoDili then
		self._protoDili = require("Modül:diller").getirKodaGore(self._rawData.protoDili or self._kod .. "-pro")
	end
	
	return self._protoDili
end


function Aile:getirKategoriAdi()
	local ad = self._rawData.asilAd
	
	-- If the name already has "languages" in it, don't add it.
	if ad:find("[Dd]iller$") then
		return mw.getContentLanguage():ucfirst(ad)
	else
		return mw.getContentLanguage():ucfirst(ad) .. " dilleri"
	end
end


function Aile:getirVikiveriItemi()
	return self._rawData[2] or self._rawData.vikiveri
end


function Aile:getirVikipediMaddesi()
	return (self:getirVikiveriItemi() and mw.wikibase and mw.wikibase.sitelink(self:getirVikiveriItemi(), 'trwiki')) or
		self:getirAsilAd()
end


function Aile:yapVikipediBaglantisi()
	return "[[w:" .. self:getirKategoriAdi() .. "|" .. self:getirAsilAd() .. "]]"
end


function Aile:toJSON()
	local ret = {
		asilAd = self:getirAsilAd(),
		kategoriAdi = self:getirKategoriAdi(),
		kod = self._kod,
		aile = self._rawData.aile,
		digerAdlari = self:getirDigerAdlari(true),
		digerleri = self:getirDigerleri(),
		cesitleri = self:getirCesitleri(),
		tip = self:getirTip(),
		vikiveriItemi = self:getirVikiveriItemi(),
		}
	
	return require("Modül:JSON").toJSON(ret)
end


function Aile:getRawData()
	return self._rawData
end


Aile.__index = Aile


function cikart.yapNesne(kod, veri)
	return veri and setmetatable({ _rawData = veri, _kod = kod }, Aile) or nil
end


function cikart.getirKodaGore(kod)
--	if kod == 'kdo' then
--		require('Modül:debug').track('Kordofanian')
--	end
	
	return cikart.yapNesne(kod, mw.loadData("Modül:aileler/veri")[kod])
end

function cikart.getirAsilAdaGore(ad)
	local kod = mw.loadData("Modül:aileler/ada göre")[ad]
	
	if not kod then
		return nil
	end
	
	return cikart.yapNesne(kod, mw.loadData("Modül:aileler/veri")[kod])
end

function cikart.kodaDonustur(frame)
	aile = frame.args["aile"]
	if cikart.getirAsilAdaGore(aile) then
		return cikart.getirAsilAdaGore(aile):getirKod()
	elseif cikart.getirKodaGore(aile) then
		return cikart.getirKodaGore(aile):getirAsilAd()
	end
end

return cikart