Modül:ad-hâl

Vikisözlük sitesinden
Gezinti kısmına atla Arama kısmına atla
[Düzenle] [Tazele] Template-info.svg Modül belgelemesi


local cikart = {}

--Türkçe dilindeki adlara gelen ekleri ayırt eden fonksiyon
function tr(args, sonuc)
	local sahiplik = {}
	
	if mw.ustring.find(args[2], "[ıiuü]n$") then
		table.insert(sahiplik, "[[tamlayan]] ")
	elseif mw.ustring.find(args[2], "^s[ıiuü]$") then
		table.insert(sahiplik, "[[belirtme hâli|belirtme]] ")
	elseif mw.ustring.find(args[2], "[td][ea]$") then
		table.insert(sahiplik, "[[bulunma hâli|bulunma]] ")
	elseif mw.ustring.find(args[2], "[td][ea]n$") then
		table.insert(sahiplik, "[[ayrılma hâli|ayrılma]] ")
	elseif mw.ustring.find(args[2], "^[ae]$") or mw.ustring.find(args[2], "y[ae]$") or mw.ustring.find(args[2], "l[ae]r[ae]$") then
		table.insert(sahiplik, "[[yönelme hâli|yönelme]] ")
	end
	if mw.ustring.find(args[2], "^m") or mw.ustring.find(args[2], "[aeıiuü]m") then
		table.insert(sahiplik, "birinci şahıs ")
		ek = "m"
	end
	if mw.ustring.find(args[2], "^n") or mw.ustring.find(args[2], "[aeıiuü]n") then
		table.insert(sahiplik, "ikinci şahıs ")
		ek = "n"
	end
	if mw.ustring.find(args[2], "^[ıiuü]$") or mw.ustring.find(args[2], "[cçrydğs][ıiuü]$") then
		table.insert(sahiplik, "")
		table.insert(sahiplik, "üçüncü şahıs ")
		ek = ""
	end
	if mw.ustring.find(args[2], "[cç][aeıiuü]k$") then
		table.insert(sonuc.yazilar, "[[küçültme]]si")
	end
	if mw.ustring.find(args[2], "[cç][ae]$") then
		table.insert(sonuc.yazilar, "[[eşitlik]] hâli")
	end
	
	--Bu kısım iyelik (sahiplik) ekleri içindir
	for _,her in ipairs(sahiplik) do
		if mw.ustring.find(args[2], "[ıiuü]z") then
			tek = "çoğul"
		else
			tek = "tekil"
		end
		if mw.ustring.find(her, "şahıs") then
			her = mw.ustring.gsub(her, "(şahıs)", tek .. " %1")
		end
		
		if not mw.ustring.find(her, "%]%] ") then
			if mw.ustring.find(args[2], ek .. "[ıiuü]$") then
				her = her .. "[[belirtme hâli|belirtme]] "
			elseif mw.ustring.find(args[2], ek .. "d[ae]$") then
				her = her .. "[[bulunma hâli|bulunma]] "
			elseif mw.ustring.find(args[2], ek .. "d[ae]n$") then
				her = her .. "[[ayrılma hâli|ayrılma]] "
			elseif mw.ustring.find(args[2], ek .. "[ıiuü]n$") then
				her = her .. "[[tamlayan hâli|tamlayan]] "
			elseif mw.ustring.find(args[2], ek .. "[ae]$") then
				her = her .. "[[yönelme hâli|yönelme]] "
			end
		end
		
		her = her .. "hâli"
		
		if mw.ustring.find(args[2], "l[ea]r") then
			her = her .. "nin [[çoğul]]u"
			table.insert(sonuc.kategoriler, "[[Kategori:Çoğul ad formları]]")
			table.insert(sonuc.kategoriler, "[[Kategori:Türkçe çoğul ad formları]]")
		end
		
		table.insert(sonuc.yazilar, her)
	end
end

--İngilizce dilindeki adların eklerini ayırt eden fonksiyon
function en(args, sonuc)
	if args[2] == "s" then
		table.insert(sonuc.yazilar, "[[çoğul]] hâli")
	elseif args[2] == "es" then
		table.insert(sonuc.yazilar, "[[çoğul]] hâli")
	elseif args[2] == "ies" then
		table.insert(sonuc.yazilar, "[[çoğul]] hâli")
	end
	table.insert(sonuc.kategoriler, "[[Kategori:Çoğul ad formları]]")
	table.insert(sonuc.kategoriler, "[[Kategori:İngilizce çoğul ad formları]]")
end

--Almanca dilindeki adların eklerini ayırt eden fonksiyon
function de(args, sonuc)
	if args[2] == "e" then
		table.insert(sonuc.yazilar, "[[çoğul]]u")
	elseif args[2] == "en" then
		table.insert(sonuc.yazilar, "[[çoğul]]u ve [[tamlayan]]ı")
	elseif args[2] == "es" then
		table.insert(sonuc.yazilar, "[[çoğul]]u")
	elseif args[2] == "s" then
		table.insert(sonuc.yazilar, "[[çoğul]]u ve [[tamlayan]]ı")
	end
end

function cikart.goster(frame)
	local params = {
		[1] = {default = ""},
		[2] = {default = ""},
		["tr"] = {},
		["dil"] = {default = "tr"},
	}
	args = require("Modül:parameters").process(frame:getParent().args, params)
	
	local sonuc = { kategoriler = {}, yazilar = {} }
	
	dil = require("Modül:diller").getirKodaGore(args["dil"])
	
	local veri = {
    	lang = dil,
    	term = args[1],
    	tr = args["tr"],
    }
	
	if dil:getirKod() == "tr" then
		tr(args, sonuc)
	elseif dil:getirKod() == "en" then
		en(args, sonuc)
	elseif dil:getirKod() == "de" then
		de(args, sonuc)
	end
	--Şimdilik diğer dillerin fonksiyonu veya alt modülü olmadığı için bu parametreler geçerli olacaktır.
	if args[2] == "bulunma" then
		table.insert(sonuc.yazilar, "[[bulunma hâli|bulunma]] hâli")
	end
	if args[2] == "belirtme" then
		table.insert(sonuc.yazilar, "[[belirtme hâli|belirtme]] hâli")
	end
	if args[2] == "yönelme" then
		table.insert(sonuc.yazilar, "[[yönelme hâli|yönelme]] hâli")
	end
	if args[2] == "ayrılma" or args[2] == "çıkma" then
		table.insert(sonuc.yazilar, "[[ayrılma hâli|ayrılma]] hâli")
	end
	if args[2] == "tamlayanı" or args[2] == "çıkma" then
		table.insert(sonuc.yazilar, "[[tamlayan hâli|tamlayan]] hâli")
	end
	if args[2] == "belirli" then
		table.insert(sonuc.yazilar, "[[belirli hâli|belirli]] hâli")
	end
	
	if mw.ustring.find(args[2], "l[ea]r$") then
		table.insert(sonuc.yazilar, "[[çoğul]] hâli")
		table.insert(sonuc.kategoriler, "[[Kategori:Çoğul ad formları]]")
		table.insert(sonuc.kategoriler, "[[Kategori:" .. dil:getirAsilAd() .. " çoğul ad formları]]")
	end
	
	if table.maxn( sonuc.yazilar ) == 0 then
		table.insert(sonuc.yazilar, "[[yalın hâl|yalın]] hâli")
	end
	
	table.insert(sonuc.kategoriler, "[[Kategori:Çekimli adlar]]")
	table.insert(sonuc.kategoriler, "[[Kategori:" .. dil:getirAsilAd() .. " çekimli adlar]]")
	
	if mw.title.getCurrentTitle().nsText == "Şablon" then
		sonuc.kategoriler = {}
	end
	
	return require("Modül:bağlantılar").full_link(veri, "translation", true) .. " adının " .. table.concat(sonuc.yazilar, ", ") .. "."
		.. table.concat(sonuc.kategoriler, "\n")
end

function cikart.cogulAd(frame)
	local params = {
		[1] = {},
		[2] = {},
		["dil"] = {default = "tr"},
	}
	args = require("Modül:parameters").process(frame:getParent().args, params)
	
	local kategoriler = {}
	
	table.insert(kategoriler, "[[Kategori:Çoğul ad formları]]")
	dil = require("Modül:diller").getirKodaGore(args["dil"])
	table.insert(kategoriler, "[[Kategori:" .. dil:getirAsilAd() .. " çoğul ad formları]]")
	
	--Alfabe kontrolü
	if dil and require("Modül:alfabekontrol").goster(mw.title.getCurrentTitle().subpageText, dil:getirAsilAd()) == false then
		kategoriler = {}
	end
	
	if args[1] then
		veri = {lang = dil, term = args[1]}
		return require("Modül:bağlantılar").full_link(veri, "translation", true) .. " adının çoğul çekimi."
		.. table.concat(kategoriler, "\n")
	else
		return "Çoğul ad çekimi." .. table.concat(kategoriler, "\n")
	end
	
end

return cikart