Modül:Televizyon sezon adı

Vikikaynak, özgür kütüphane

Bu modül, {{televizyon sezonu bilgi kutusu}} ve {{televizyon bölümü bilgi kutusu}} şablonlarında kullanılmaktadır.

Kullanımı[değiştir]

Mevcut sezona bağlantı almak için:

Önceki sezona, bir sezon sayfasından bağlantı almak için (bu fonksiyon sayfa adından çıkarım yapar, yani yalnızca sezon sayfalarında işe yarar, zaten başka bir sayfada kullanımı gereksiz):

Sonraki sezona, bir sezon sayfasından bağlantı almak için (bu fonksiyon sayfa adından çıkarım yapar, yani yalnızca sezon sayfalarında işe yarar, zaten başka bir sayfada kullanımı gereksiz):

Bir dizinin, bölüm listesi sayfasına bağlantı üretmek için (eğer bir sezon sayfasındaysanız, parametre girmenize gerek yok, fakat diğer sayfalarda gerekli):

  • {{#invoke:Televizyon sezon adı|bolumListesi|Angel}}

Sezon sayfalarında, bilgi kutularına dizinin başlığını otomatik yerleştirir (bu fonksiyon tek başına kullanışsızdır, bilgi kutusu içerisinde gömülüdür):

  • {{#invoke:Televizyon sezon adı|baslik}}

Sezon sayfalarında, bilgi kutularına dizinin başlığının altına sezon numarasını otomatik yerleştirir (bu fonksiyon tek başına kullanışsızdır, bilgi kutusu içerisinde gömülüdür):

  • {{#invoke:Televizyon sezon adı|sezonNo}}

Herhangi bir televizyon sezonu veya bölümü maddesinde kullanılan tarih parametresindeki yılı alıp, o sezonu/bölümü uygun kategoriye yerleştirmeyi sağlar (2010 televizyon bölümleri gibi):

  • {{#invoke:Televizyon sezon adı|tarih|TARİH|TİP}}
    • TARİH normal tarih değeridir, TİP ise ya sezon ya da bölüm olabilir.

--[[
Bu modül televizyon sezonu bilgi kutusu içerisinde kullanılan fonksiyonları içerir.
--]]

--yazıyı parantez içine al
function parantez(yazi) return "("..yazi..")" end

--maddenin varlığını kontrol et
function maddeVarMi(yazi)
	local madde = mw.title.new(yazi)
	if (madde ~= nil and madde.exists) then
		local yonlendirme = madde.redirectTarget
		if (yonlendirme) then
			local tamBag = yonlendirme.fullText
			local baslikMi = tamBag:find("#")
			if (baslikMi) then
				return "true"								-- Madde bir başlığa yönlendiriyor; Geçerli.
			else
				return nil									-- Madde genel bir yönlendirme; Geçersiz.
			end
		else
			return "true"									-- Madde mevcut ve yönlendirme değil; Geçerli.
		end
	else
		return nil											-- Madde veya yönlendirme mevcut değil; Geçersiz.
	end
end

function bagYap(baglanti, yazi)
	return "[[" .. baglanti .. "|" .. yazi .. "]]"
end

function diziAdiBul(yazi, par)
	local dizi = mw.ustring.gsub( yazi, "%(.*", "" )
	
	dizi = mw.ustring.gsub( dizi, "%|.*", "" )
	dizi = mw.ustring.gsub( dizi, "%[", "" )
	dizi = mw.ustring.gsub( dizi, "%]", "" )
	
	--parantez içini yok edersek direkt dizi adını alabiliriz
	--birçok zaman, fakat parantez içerisine "dizi" ifadesi yoksa
	if sezonNoBul(yazi).ek and mw.ustring.find(sezonNoBul(yazi).ek, "dizi,%s%d%d%d%d") then
		dizi = dizi .. (par and parantez(sezonNoBul(yazi).ek) or "")
	end
	
	if mw.ustring.find(dizi, ":%s") then
		dizi = mw.ustring.gsub( yazi, "%:.*", "" )
	end
	
	return dizi
end

function sezonNoBul(yazi)
	--parantez içini alalım önce başlıktan
	--çünkü sezon bilgimiz orada
	local sezonNo = mw.ustring.gsub( mw.ustring.gsub( yazi, ".*%(", "" ), "%).*", "" )
	
	--eğer sezon numaramızın içerisinde bir ek yazı varsa, bunu ayıracağız ki, ileride
	--bir sonraki veya önceki sezona bağlantı verirken lazım olacak
	local sezonEk
	
	--her sezondaki ". sezon" ifadesini silelim, bakalım
	--geriye elimizde bir sayı kaldı mı?
	sezonNo = mw.ustring.gsub( sezonNo, "%.[%s]sezon", "" )
	
	--şimdi elimizdeki hala sayı değilse
	--diye bir kontrol edelim
	if type(tonumber(sezonNo)) ~= "number" then
		--demek ki hala sayı değilmiş, bazı gerekli kalan işlemleri yapalım
		sezonEk = mw.ustring.gsub( sezonNo, "%,[^,]-$", "" )
		sezonNo = mw.ustring.gsub( sezonNo, ".*%,[%s]", "" )
	end
	
	return {no = tonumber(sezonNo), ek = sezonEk}
end

function noArti(yazi)
	return tonumber(sezonNoBul(yazi).no) and sezonNoBul(yazi).no + 1 or ""
end

function noEksi(yazi)
	return tonumber(sezonNoBul(yazi).no) and sezonNoBul(yazi).no - 1 or ""
end

function bolumListesi(frame)
	local yazi = mw.getCurrentFrame().args[1] or mw.title.getCurrentTitle().text
	
	return maddeVarMi(diziAdiBul(yazi, true) .. " bölümleri listesi")
		and bagYap(diziAdiBul(yazi, true) .. " bölümleri listesi", "''" .. diziAdiBul(yazi) .. "'' bölümleri")
end

function onceki(frame)
	local yazi = mw.getCurrentFrame().args[1] or mw.title.getCurrentTitle().text
	
	local sayfa = diziAdiBul(yazi)
		.. parantez((sezonNoBul(yazi).ek and sezonNoBul(yazi).ek..", " or "")
		.. noEksi(yazi) .. ". sezon")
	local acik = noEksi(yazi) .. ". sezon"
	return maddeVarMi(sayfa) and bagYap(sayfa, acik) or nil
end

function simdiki(frame)
	local dizi = diziAdiBul(mw.getCurrentFrame().args[1])
	local sezon = mw.getCurrentFrame().args[2]
	local sonuc
	
	if maddeVarMi(mw.ustring.gsub( dizi, "%)", "" ) .. ", " .. sezon .. ". sezon)") then
		sonuc = mw.ustring.gsub( dizi, "%)", "" ) .. ", " .. sezon .. ". sezon)"
	else
		dizi = mw.ustring.gsub( dizi, "%(.*", "" )
		sonuc = dizi .. " " .. parantez(sezon .. ". sezon")
	end
	
	return bagYap(sonuc, "''" .. mw.ustring.gsub( dizi, "%(.*", "" ) .. "'' " .. parantez(sezon .. ". sezon"))
end

function sonraki(frame)
	local yazi = mw.getCurrentFrame().args[1] or mw.title.getCurrentTitle().text
	
	local sayfa = diziAdiBul(yazi)
		.. parantez((sezonNoBul(yazi).ek and sezonNoBul(yazi).ek..", " or "")
		.. noArti(yazi) .. ". sezon")
	local acik = noArti(yazi) .. ". sezon"
	return maddeVarMi(sayfa) and bagYap(sayfa, acik) or nil
end

function sezonNo(frame)
	local yazi = mw.getCurrentFrame().args[1] or mw.title.getCurrentTitle().text
	local onek = ""
	
	if sezonNoBul(yazi).ek then
		onek = mw.ustring.find(sezonNoBul(yazi).ek, "dizi") and "" or sezonNoBul(yazi).ek .. ", "
	end
	
	return onek .. (sezonNoBul(yazi).no or "") .. ". sezon"
end

function baslik(frame)
	local yazi = mw.getCurrentFrame().args[1] or mw.title.getCurrentTitle().text

	local kategori = {}
	
	if maddeVarMi("Kategori:" .. diziAdiBul(yazi, true) .. " sezonları") then
		table.insert(kategori, "[[Kategori:".. diziAdiBul(yazi, true) .. " sezonları]]")
	end
	
	return diziAdiBul(yazi) .. table.concat(kategori)
end

--bu fonksiyon başlama tarihi ve bitiş tarihindeki yılları alıp
--diziyi uygun ".... televizyon sezonları" kategorilerine eklemeye yarar
function tarih(frame)
	local tarih = mw.getCurrentFrame().args[1]
	local tip = mw.getCurrentFrame().args[2]

	local tipler = {["sezon"] = "sezonları", ["bölüm"] = "bölümleri"}
	local kategori = {}
	
	if mw.ustring.find(tarih, "%d%d%d%d") and mw.title.getCurrentTitle().nsText ~= "Şablon" then
		table.insert(kategori, "[[Kategori:".. mw.ustring.match(tarih, "%d%d%d%d") .. " televizyon " .. tipler[tip] .. "]]")
	end
	
	return tarih .. table.concat(kategori)
end

return {
	tarih = tarih,
	baslik = baslik,
	sezonNo = sezonNo,
	bolumListesi = bolumListesi,
	onceki = onceki,
	sonraki = sonraki,
	simdiki = simdiki
}