İçeriğe atla

Modül:otomatik kategori

Vikisözlük sitesinden
Modül belgelemesi [Oluştur]


local getirDil = require("Modül:diller").getirAsilAdaGore
local getirTema = require("Modül:temalar").getirAsilAdaGore
local ekEkle = require("Modül:tr-araçlar").dilDuzenle

--bu fonksiyon girilen bir yazıda birinci değeri bulup
--onu ikinci değer ile değiştirmeye yarar
local function bulvedeg(yazi, bir, iki)
	return mw.ustring.sub( mw.ustring.gsub(yazi, bir, iki), 1, -1 )
end

function saptaTema(sayfa)
	local ek = nil
	
	local function dilBul(d, s)
		for i=1,5 do
			if getirDil(d) then
				return d
			else
				d = d .. (d~="" and " " or "") .. bulvedeg(s, "%s.*", "")
				s = bulvedeg(s, "^[^%s]*%s*", "")
			end
		end
	end
	
	--kategorinin dilini saptayalım
	--
	
	--burası ilk kontrol
	local dilBulma = dilBul("", sayfa)
	
	--eğer hala bir dil bulamadıysak, belki de dil eki vardır?
	if not getirDil(dilBulma) then
		sayfa2 = bulvedeg(bulvedeg(sayfa, "nd[ea]%s", " "), "d[ea]%s", " ")
		dilBulma = dilBul("", sayfa2)
		if getirDil(dilBulma) then ek = true end
	end
	
	--hataları aştıysak, dil nesnesini çağıralım
	local dil = getirDil(dilBulma)
	
	--şimdi de temayı bulalım
	--
	
	--şimdi sıra temayı saptamada
	dilBulma = dilBulma and bulvedeg(dilBulma, "%-", "%-")
	local tema = dil and (ek and bulvedeg(sayfa, ekEkle(dilBulma).."%s", "") or bulvedeg(sayfa, dilBulma.."%s", "")) or ""
	
	if not dil then tema = mw.language.getContentLanguage():lcfirst(sayfa) end
	
	--şablonları ve modülleri istisnası
	if tema == "modülleri" or tema == "şablonları" then tema = mw.ustring.sub(tema, 1, -2) end

	return (dil and dil:getirKod() or nil), tema
end

function goster(frame, args)
	local sayfa = mw.title.getCurrentTitle()
	local dil, tema
	
	--{{kategori tema}} şablonu için
	if args["şablon"] == "konu" then
		args["dil"], args["tema"] = saptaTema(sayfa.text)
		
	--{{kategori dil}} şablonu için
	elseif args["şablon"] == "dil" then
		args["dil"] = getirDil(sayfa.text):getirKod()
	end
	
	return args
end

--deneme çalışması için
function deneme(frame, args)
	local sayfa = mw.title.getCurrentTitle()
	local dil, tema
	
	if args["şablon"] == "konu" then
		args["dil"], args["tema"] = saptaTema(sayfa.text)
	end
	
	return args
end

return {goster = goster, deneme = deneme}