Modül:Televizyon sezon adı
Bu modül, {{televizyon sezonu bilgi kutusu}} ve {{televizyon bölümü bilgi kutusu}} şablonlarında kullanılmaktadır.
Kullanımı
düzenleMevcut sezona bağlantı almak için:
{{#invoke:Televizyon sezon adı|simdiki|Buffy the Vampire Slayer|1}}- Buffy the Vampire Slayer (1. sezon) maddesinde:
Ö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):
{{#invoke:Televizyon sezon adı|onceki}}- Hanedan (dizi, 2017, 2. sezon) maddesinde:
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):
{{#invoke:Televizyon sezon adı|sonraki}}- Doctor Who (klasik seri, 1. sezon) maddesinde:
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 (Şablon:K 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
if maddeVarMi(sonuc) then
return bagYap(sonuc, "''" .. mw.ustring.gsub( dizi, "%(.*", "" ) .. "'' " .. parantez(sezon .. ". sezon"))
end
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
local yil = mw.ustring.match(tarih, "%d%d%d%d")
if yil == "0000" then -- devam eden sezonlar için
yil = os.date("%Y")
end
table.insert(kategori, "[[Kategori:".. yil .. " 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
}