Modül:çekim/şablonlar

Merhaba, buraya Modül:çekim/şablonlar kelimesinin anlamını aramaya geldiniz. DICTIOUS'da Modül:çekim/şablonlar kelimesinin tüm sözlük anlamlarını bulmakla kalmayacak, aynı zamanda etimolojisini, özelliklerini ve Modül:çekim/şablonlar kelimesinin tekil ve çoğul olarak nasıl söylendiğini de öğreneceksiniz. Modül:çekim/şablonlar kelimesi hakkında bilmeniz gereken her şey burada. Modül:çekim/şablonlar kelimesinin tanımı, konuşurken veya metinlerinizi yazarken daha kesin ve doğru olmanıza yardımcı olacaktır. XXX'in ve diğer kelimelerin tanımını bilmek, kelime dağarcığınızı zenginleştirir ve size daha fazla ve daha iyi dilsel kaynaklar sağlar.
Modül belgelemesi


local cikart = {}

local etiket_turunden_aciklamaya = {
	-- If not listed, we just capitalize the first letter
	 = "Zaman",
	 = "Çatı",
	 = "Karşılaştırma dereceleri",
	 = "Inflectional class",
	 = "Sound changes",
	 = "Sınıflandırılmamış dil bilgisi",
	 = "Diğer etiketler",
}

local etiket_turu_sirasi = {
	"şahıs",
	"miktar",
	"cinsiyet",
	"animacy",
	"zaman",
	"kip",
	"çatı",
	"non-finite",
	"hâl",
	"durum",
	"karşılaştırma",
	"register",
	"deixis",
	"clusivity",
	"class",
	"attitude",
	"sound change",
	"dilbilgisi",
	"diğer",
}

local function sirala_birinciye_gore(veriadi1, veriadi2)
	return veriadi1 < veriadi2
end

function cikart.etikettablosu()
	m_veri = mw.loadData("Modül:çekim/veri")
	m_veri2 = mw.loadData("Modül:çekim/veri2")
	m_cekim = require("Modül:çekim")

	local function organize_data(data_module)
		local tab = {}
		for name, data in pairs(data_module.etiketler) do
			if not data.etiket_turu then
				-- Throw an error because hopefully it will get noticed and fixed.
				-- If we just skip it, it may never get fixed.
				error("Tag '" .. name .. "' has no tag_type")
			end
			if not tab then
				tab = {}
			end
			table.insert(tab, {name, data})
		end
		local tag_type_order_set = require("Modül:table").listToSet(etiket_turu_sirasi)
		for tag_type, tags_of_type in pairs(tab) do
			if not tag_type_order_set then
				-- See justification above for throwing an error.
				error("Tag type '" .. tag_type .. "' not listed in tag_type_order")
			end
			table.sort(tags_of_type, sirala_birinciye_gore)
		end
		local multitag_shortcuts = {}
		local list_shortcuts = {}
		local function get_display_form(tags)
			local normtags = m_cekim.normallestir_etiketleri(tags)
			local display_forms = {}
			for _, normtag in ipairs(normtags) do
				table.insert(display_forms, m_cekim.getir_etiket_gorunum_bicimi(normtag))
			end
			return table.concat(display_forms, " ")
		end

		for shortcut, full in pairs(data_module.kisayollar) do
			if type(full) == "table" then
				table.insert(list_shortcuts, {shortcut, get_display_form(full)})
			elseif full:find("//") then
				table.insert(multitag_shortcuts, {shortcut, get_display_form({full})})
			end
		end

		table.sort(list_shortcuts, sirala_birinciye_gore)
		table.sort(multitag_shortcuts, sirala_birinciye_gore)

		return tab, multitag_shortcuts, list_shortcuts
	end

	local data_tab, data_multitag_shortcuts, data_list_shortcuts = organize_data(m_veri)
	local data2_tab, data2_multitag_shortcuts, data2_list_shortcuts = organize_data(m_veri2)

	local parts = {}

	local function insert_group(group)
		for _, veriadi in ipairs(group) do
			local sparts = {}
			local name = veriadi
			local data = veriadi
			table.insert(sparts, "| <code>" .. name .. "</code> || ")
			if data.kisayollar then
				local ssparts = {}
				for _, shortcut in ipairs(data.kisayollar) do
					table.insert(ssparts, "<code>" .. shortcut .. "</code>")
				end
				table.insert(sparts, table.concat(ssparts, ", ") .. " ")
			end
			table.insert(sparts, "|| " .. m_cekim.getir_etiket_gorunum_bicimi(name))
			table.insert(parts, "|-")
			table.insert(parts, table.concat(sparts))
		end
	end

	local function insert_shortcut_group(shortcuts)
		for _, namedisp in ipairs(shortcuts) do
			local name = namedisp
			local disp = namedisp
			table.insert(parts, "|-")
			table.insert(parts, "| || <code>" .. name .. "</code> || " .. disp)
		end
	end

	table.insert(parts, '{|class="wikitable"')
	table.insert(parts, "! Etiketin adı !! Kısayol(lar) !! Görüntülenen biçimi")
	for _, tag_type in ipairs(etiket_turu_sirasi) do
		local group_tab = data_tab
		if group_tab then
			table.insert(parts, "|-")
			table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | ' ..
				(etiket_turunden_aciklamaya or m_cekim.ucfirst(tag_type)) .. " (daha çok yaygın)")
			insert_group(group_tab)
		end
		group_tab = data2_tab
		if group_tab then
			table.insert(parts, "|-")
			table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | ' ..
				(etiket_turunden_aciklamaya or m_cekim.ucfirst(tag_type)) .. " (daha az yaygın)")
			insert_group(group_tab)
		end
	end
	if #data_multitag_shortcuts > 0 then
		table.insert(parts, "|-")
		table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | Birdenfazla etiketli kısayollar (daha çok yaygın)')
		insert_shortcut_group(data_multitag_shortcuts)
	end
	if #data2_multitag_shortcuts > 0 then
		table.insert(parts, "|-")
		table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | Birdenfazla etiketli kısayollar (daha az yaygın)')
		insert_shortcut_group(data2_multitag_shortcuts)
	end
	if #data_list_shortcuts > 0 then
		table.insert(parts, "|-")
		table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | Liste kısayolları (daha çok yaygın)')
		insert_shortcut_group(data_list_shortcuts)
	end
	if #data2_list_shortcuts > 0 then
		table.insert(parts, "|-")
		table.insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | Liste kısayolları (daha az yaygın)')
		insert_shortcut_group(data2_list_shortcuts)
	end
	table.insert(parts, "|}")
	return table.concat(parts, "\n")
end

function cikart.cekimlemesi_s(frame)
	local params = {
		 = {required = true},
		 = {},
		 = {list = true},
		
		 = {},
		 = {alias_of = "anlam"},
		 = {},
		 = {required = true},
		 = {type = "boolean"},
		 = {type = "boolean"},
		 = {type = "boolean"},
		 = {},
		 = {},
		 = {},
		 = {alias_of = "tr"},
		 = {},
		 = {},
		 = {},
		 = {},
	}
	
	local args = require("Modül:parameters").process(frame:getParent().args, params)
	
	local lang = args or "und"
	local sc = args
	
	lang = require("Modül:diller").getirKodaGore(lang) or
		require("Modül:diller").err(lang, "dil")
	sc = (sc and (require("Modül:alfabeler").getirKodaGore(sc) or
		error(sc .. "\" alfabe kodu geçerli değil.")) or nil)
	
	--NOT: bu kısım dil bazıl fonksiyonları çalıştırmak içindir,
	--yani eğer bir dilin kendi modülünde otomatik çekimleme
	--fonksiyonu var ise ona bağlanıp hiçbir parametre gerektirmeden
	--çekimleme açıklamalarını çağırabiliriz
	if args == "tr-çekim" then
		if args == "ad" then
			require("Modül:tr-ad").cekim_tr(args)
		elseif args == "eylem" then
			require("Modül:tr-eylem").cekim_tr(args)
		end
	elseif args == "ota-çekim" then
		if args == "ad" then
			require("Modül:ota-ad").cekim_ota(args)
		end
	end

	return require("Modül:çekim").etiketlenmis_cekimler(
		args,
		{
			dil = lang,
			alf = sc,
			sozcuk = args or "sözcük",
			alt = args,
			id = args,
			anlam = args,
			soz = args,
			c = args,
		}
	)
end

return cikart