Modül:birleşim
Bu belgeleme Modül:birleşim/belge (düzenle | geçmiş) sayfasından yansıtılmaktadır. Arayüz düzenleyicilerinin deney yapabilmeleri için ayrıca Modül:birleşim/deneme tahtası sayfası kullanılabilir.
local cikart = {}
local cizgiYok = {
"ar",
"ja",
"ota",
}
--Bu fonksiyon girilen parametrenin boş olup olmadığını kontrol eder
local function ine(arg)
if arg == "" then
return nil
else
return arg
end
end
--Tüm birleşim olayları bu fonksiyonda gerçekleşiyor.
--Şablon:birleşik, Şablon:ek ve Şablon:ön ek
function cikart.ek(frame)
--Parametrelerimizi çağıralım:
args = frame:getParent().args
--İzleyici kategorileri yüklemek için bir array.
local kategoriler = {}
--Eğer dil kodu girilmemiş ise bir izleme kategorisi oluşturmalı.
if not args["dil"] then
table.insert(kategoriler, "[[Kategori:Dil parametresi olmayan " .. frame.args["şablon"] .. " şablonları]]")
return "<span style='color:red'>'''Lütfen bir dil kodu girin.'''</span>" .. table.concat(kategoriler, "\n")
end
--Dil
local dil = require("Modül:diller").getirKodaGore(args["dil"])
--Girilen tüm birimlerin depolanacağı array
local ilk = {}
local son = {}
--Eklerden önce veya sonra gelen tire
local ciz = "-"
for _,dKodu in ipairs(cizgiYok) do
if dKodu == dil:getirKod() then
ciz = ""
end
end
--Bu da girilen ilk parametre, bunu döngü başlamadan önce
--hata çıkmasını önlemek amacıyla dışarıda başlatıyoruz.
--Eğer "ön ek" şablonu kullanılıyorsa, ekten sonra "-" eklenmeli,
--çünkü bu şablonda ilk parametre daima ektir.
ayrik = frame.args["şablon"] == "ön ek" and ine(args[1]) .. ciz or ine(args[1])
--bu da döngünün tekrar etmesini sağlayacak sabit herhangi bir sayı
i = 1
--Döngü burada başlıyor.
while ayrik do
--Girilen herhangi bir birimin çeviri anlamı belirtiliyorsa, bunu
--"ç1, ç2, ç3..." gibi değerler ile belirtebiliriz
anlam = ine(args["a"..i]) or ine(args["anlam"..i])
ceviri = ine(args["ç"..i]) or ine(args["tr"..i])
alt = ine(args["alt"..i])
soz = ine(args["söz"..i])
table.insert(ilk, ayrik)
--Burada bağlantı oluşturabiliriz.
table.insert(son, require("Modül:bağlantılar").tam_bag(
{dil = dil, sozcuk = ayrik, alt = alt, c = ceviri, anlam = anlam, soz = soz}, "çeviri", true))
--Burada da "ek" şablonu için izleme kategorileri bulunuyor.
if frame.args["şablon"] == "ek" and mw.title.getCurrentTitle().namespace == 0 and i ~= 1 then
table.insert(kategoriler, "[[Kategori:" .. dil:getirAsilAd()
.. " " .. ayrik .. " son ekiyle oluşmuş sözcükler]]")
elseif frame.args["şablon"] == "ön ek" and mw.title.getCurrentTitle().namespace == 0 and i == 1 then
table.insert(kategoriler, "[[Kategori:" .. dil:getirAsilAd()
.. " " .. ayrik .. " ön ekiyle oluşmuş sözcükler]]")
end
--Döngünün bir üst katmana devam etmesi için sabit sayıyı artırıyoruz.
i = i + 1
if frame.args["şablon"] == "ek" and args[i] then
--Eğer "ek" şablonu kullanılıyorsa tüm birimlerin başına "-" gelmeli,
--çünkü bu şablonda ilk parametreden sonra girilen tüm birimler bir ek
args[i] = ciz .. args[i]
elseif frame.args["şablon"] == "ön ek" and args[i+1] then
--Eğer "ön ek" şablonu kullanılıyorsa, girilen tüm ön parametrelerde "-" gelmeli,
--ta ki en son birime kadar, çünkü en son birim hariç girilen tüm birimler bir ön ektir
args[i] = args[i] .. ciz
end
--ve son olarak da bir sonraki birimimizin boş olup olmadığını kontrol ediyoruz ki,
--döngünün devam edip etmeyeceğine karar verilsin.
ayrik = ine(args[i])
end
--Burada da "birleşik" şablonu için izleme kategorileri bulunuyor
if frame.args["şablon"] == "birleşik" and mw.title.getCurrentTitle().namespace == 0 then
table.insert(kategoriler, "[[Kategori:" .. dil:getirAsilAd() .. " birleşik sözcükler]]")
end
--Tüm her şeyi çıktı alma zamanı
return table.concat(son, " + ") .. table.concat(kategoriler, "")
end
return cikart