local cikart = {}
function cikart.sonUnluBul(eylem)
return mw.ustring.sub( mw.ustring.gsub( eylem, "", ""), -1 )
end
--sözcüklerden sesli veya sessiz harfleri ayıklamaya yarar
function cikart.harfAyikla(ad, harfTipi)
if harfTipi == "sessiz" then
return mw.ustring.gsub( ad, "", "")
elseif harfTipi == "sesli" then
return mw.ustring.gsub( ad, "", "")
end
end
--Türkçe'deki ünlü uyumuna göre hazır bir "if" fonksiyonunu size tek satırda sunar, tamamen fazla kod satırlarından kurtulmak için idealdir
function cikart.unluUyumu(ad, s1, s2, s3, s4)
sonUnlu = mw.ustring.sub( cikart.harfAyikla(ad, "sessiz"), -1 )
if s1 and s2 and s3 and s4 then
if mw.ustring.find(sonUnlu, "$") then
ad = ad .. s1
elseif mw.ustring.find(sonUnlu, "$") then
ad = ad .. s2
elseif mw.ustring.find(sonUnlu, "$") then
ad = ad .. s3
elseif mw.ustring.find(sonUnlu, "$") then
ad = ad .. s4
end
elseif s1 and s2 then
if mw.ustring.find(sonUnlu, "$") then
ad = ad .. s1
elseif mw.ustring.find(sonUnlu, "$") then
ad = ad .. s2
end
end
return ad
end
--Türkçe eylemleri yalın hallerine çevirir
function cikart.yalinYap(eylem)
if mw.ustring.sub( eylem, -3 ) == "mek" or mw.ustring.sub( eylem, -3 ) == "mak" then
return mw.ustring.sub( eylem, 1, -4 )
else
return eylem
end
end
--Bir eylemin yalın olup olmadığı bilgisini verir
function cikart.yaliniTersCevir(eylem)
if mw.ustring.sub( eylem, -3 ) == "mek" or mw.ustring.sub( eylem, -3 ) == "mak" then
return eylem
else
return eylem .. "m" .. (mw.ustring.find(cikart.sonUnluBul(eylem), "$") and "a" or "e") .. "k" or ""
end
end
--bir sözcüğün son harfinin ünlü olup olmadığını saptayan fonksiyon
function cikart.sonHarfUnluMu(yazi)
local sonHarf = mw.ustring.sub( yazi, -1 )
local sonUnlu = mw.ustring.sub( cikart.harfAyikla(yazi, "sessiz"), -1 )
return sonHarf == sonUnlu and true or nil
end
--Dil adlarına ek geldiğinde bu ekleri Türkçe yazım kurallarına göre ayarla.
function cikart.dilDuzenle(dil)
-- Girilen dil parametresinin son kelimesi "dili" ile bitiyorsa onu belirt, çünkü dilden sonra gelecek ek buna göre ayarlanacaktır.
local sonHece1 = mw.ustring.sub( dil, -4 )
-- Girilen dil parametresinin son iki hecesini ayırt et, çünkü dilden sonra gelecek ek buna göre ayarlanacaktır.
local sonHece2 = mw.ustring.sub( dil, -2 )
-- Daha önceden son heceleri/kelimesi ayırt edilen dil adlarının sonrasına "de", "da", "nde", "nda" eklerini ekle.
local ekliDil = ""
-- Son iki harfi "si" ile biten (Örneğin: İskoç İngilizcesi) veya son kelimesi "dili" olan (Örneğin: İdo dili) dil adlarından sonra "nde" ekini ekle.
if dil and sonHece1 == "dili" or sonHece2 == "si" then
ekliDil = ekliDil .. dil .. "nde"
-- Son iki harfi "sı" ile (Örneğin: İsviçre Almancası) dil adlarından sonra "nda" ekini ekle.
elseif dil and sonHece2 == "sı" then
ekliDil = ekliDil .. dil .. "nda"
-- Son iki harfi "ce" ile (Örneğin: İngilizce) veya "çe" ile biten (Örneğin: Türkçe) dil adlarından sonra "de" ekini ekle.
elseif dil and sonHece2 == "ce" or sonHece2 == "çe" then
ekliDil = ekliDil .. dil .. "de"
-- Son iki harfi "ca" ile (Örneğin: Almanca) veya "ça" ile biten (Örneğin: Başkça) dil adlarından sonra "da" ekini ekle.
elseif dil and sonHece2 == "ca" or sonHece2 == "ça" then
ekliDil = ekliDil .. dil .. "da"
end
return ekliDil
end
return cikart