İçeriğe atla

Modül:temalar

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

Modülün alt sayfaları:


local cikart = {}


local Tema = {}


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


function Tema:getirKategori()
	if self._rawData.kategori then
		return self._rawData.kategori
	else
		return self._asilAd
	end
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.find(asilAd, "ön ekiyle oluşmuş sözcükler") then
		tablo = {[asilAd] = {
			ebeveynler = {"ön eklerine göre sözcükler"},
			sira_anahtari = mw.ustring.sub( asilAd, 1, 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

function cikart.split_labels_on_comma(term)
	if term:find("[%[<]") then
		local put = require("Modül:parse utilities")
		local segments = put.parse_multi_delimiter_balanced_segment_run(term, {{"<", ">"}, {"[", "]"}})
		local comma_separated_groups = put.split_alternating_runs_on_comma(segments)
		for i, group in ipairs(comma_separated_groups) do
			comma_separated_groups[i] = table.concat(group)
		end
		return comma_separated_groups
	elseif term:find(",%s") then
		-- This won't split on comma+whitespace.
		return require("Modül:parse utilities").split_on_comma(term)
	elseif term:find(",") then
		return require("Modül:string araçları").split(term, ",")
	else
		return {term}
	end
end


return cikart