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ı
[kaynağı değiştir]Mevcut sezona bağlantı almak için:
{{#invoke:Televizyon sezon adı|simdiki|Buffy the Vampire Slayer|1}}
- Buffy the Vampire Slayer (1. sezon) maddesinde: Buffy the Vampire Slayer (1. sezon)
Ö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: 1. sezon
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: 2. sezon
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}}
- Angel bölümleri
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
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
}