Modül:alfabe araçları

Merhaba, buraya Modül:alfabe araçları kelimesinin anlamını aramaya geldiniz. DICTIOUS'da Modül:alfabe araçları kelimesinin tüm sözlük anlamlarını bulmakla kalmayacak, aynı zamanda etimolojisini, özelliklerini ve Modül:alfabe araçları kelimesinin tekil ve çoğul olarak nasıl söylendiğini de öğreneceksiniz. Modül:alfabe araçları kelimesi hakkında bilmeniz gereken her şey burada. Modül:alfabe araçları 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 = {}

--[=[
	Kullanılan modüller:
	]
	]
	]
	]
	]
	]
]=]

function cikart.Latin_alfabesi_mi(alf)
	-- Latn, Latf, Latinx, nv-Latn, pjt-Latn
	return alf:getirKod():find("Lat") and true or false
end

-- {{dil}} şablonu için
function cikart.dil_s(frame)
	params = {
		 = {},
		 = { allow_empty = true, default = "" },
		 = {},
		 = {},
		 = {},
	}
	
	local args = require("Modül:parameters").process(frame:getParent().args, params)
	local NAMESPACE = mw.title.getCurrentTitle().nsText
	
	local dil = args or (NAMESPACE == "Şablon" and "und") or error("Dil kodu belirtilmedi. Lütfen 1 numaralı parametreye girin.")
	dil = require("Modül:diller").getirKodaGore(dil) or require("Modül:diller").err(dil, 1)
	
	local yazi = args
	
	local alf = args
	alf = (alf and (require("Modül:alfabeler").getirKodaGore(alf) or error("\"" .. alf .. "\" alfabe kodu geçersiz.")) or nil)
	
	local tip = args
	
	return cikart.etiket_yazi(yazi, dil, alf, tip, sinif)
end

-- Ustring turns on the codepoint-aware string matching. The basic string function
-- should be used for simple sequences of characters, Ustring function for
-- sets – .
local function takipetDuzen(yazi, duzen, takip, ustring)
	local find = ustring and mw.ustring.find or string.find
	if duzen and find(yazi, duzen) then
		--require("Modül:debug").track("script/" .. takip)
	end
end

local function takipet(yazi, dil, alf)
	local U = mw.ustring.char
	
	if dil and yazi then
		local dilKodu = dil:getirKod()
		
		-- ]
		if dilKodu == "ang" then
			local ayrik = mw.ustring.toNFD(yazi)
			local akut = U(0x301)
			
			takipetDuzen(ayrik, akut, "ang/acute")
		
		--[=[
		]
		]
		]
		]
			ϑ, ϰ, ϱ, ϕ should generally be replaced with θ, κ, ρ, φ.
		]=]
		elseif dilKodu == "el" or dilKodu == "grc" then
			takipetDuzen(yazi, "ϑ", "Greek/wrong-theta")
			takipetDuzen(yazi, "ϰ", "Greek/wrong-kappa")
			takipetDuzen(yazi, "ϱ", "Greek/wrong-rho")
			takipetDuzen(yazi, "ϕ", "Greek/wrong-phi")
		
			--[=[
			]
			]
			]
				When spacing coronis and spacing smooth breathing are used as apostrophes, 
				they should be replaced with right single quotation marks (’).
			]=]
			if dilKodu == "grc" then
				takipetDuzen(yazi, U(0x1FBD), "Ancient Greek/spacing-coronis")
				takipetDuzen(yazi, U(0x1FBF), "Ancient Greek/spacing-smooth-breathing")
				takipetDuzen(yazi, "", "Ancient Greek/wrong-apostrophe", true)
			end
		
		-- ]
		elseif dilKodu == "ru" then
			local ayrik = mw.ustring.toNFD(yazi)
			
			takipetDuzen(ayrik, U(0x300), "Russian/grave-accent")
		
		-- ]
		elseif dilKodu == "bo" then
			takipetDuzen(yazi, "$", "Tibetan/trailing-punctuation", true)
			takipetDuzen(yazi, "%]%]$", "Tibetan/trailing-punctuation", true)

		--[=[
		]
		]
		]
		]=]
		elseif dilKodu == "th" then
			takipetDuzen(yazi, "เ".."เ", "Thai/broken-ae")
			takipetDuzen(yazi, "ํ?า", "Thai/broken-am", true)
			takipetDuzen(yazi, "า", "Thai/wrong-rue-lue", true)

		--[=[
		]
		]
		]
		]
		]
		]=]
		elseif dilKodu == "lo" then
			takipetDuzen(yazi, "ເ".."ເ", "Lao/broken-ae")
			takipetDuzen(yazi, "ໍ?າ", "Lao/broken-am", true)
			takipetDuzen(yazi, "ຫນ", "Lao/possible-broken-ho-no")
			takipetDuzen(yazi, "ຫມ", "Lao/possible-broken-ho-mo")
			takipetDuzen(yazi, "ຫລ", "Lao/possible-broken-ho-lo")

		--[=[
		]
		]
		]=]
		elseif dilKodu == "khb" then
			takipetDuzen(yazi, "ᦵ".."ᦵ", "Lü/broken-ae")
			takipetDuzen(yazi, "", "Lü/possible-wrong-sequence", true)
		end
	end
end

-- Yazının HTML etiketlerini uygun dil ve alfabe sınıflarıyla kapla.
function cikart.etiket_yazi(yazi, dil, alf, tip, sinif, id)
	if not alf then
		alf = require("Modül:alfabeler").bulEnIyiAlfabe(yazi, dil)
	end
	
	takipet(yazi, dil, alf)
		
	-- Moğol alfabesindeki yazılarda boşluk karakterlerini satır başı ile değiştir, çünkü bu alfabe yukarıdan aşağı yazılmakta.
	if alf and alf:getirYon() == "down" then
		--[[	Önce, vikibağlantıları ve HTML etiketlerinin hedeflerinden kaçarak
				boşluklarının satır aralarıyla değiştirilmediğinden emin ol
		  ]]
		local kacildi = {}
		local i = 0
		local kacis_bicimi = "$%d"
		
		local function kacis(yazi, duzen, onek)
			return yazi:gsub(
				duzen,
				function(item)
					i = i + 1
					kacildi = item
					return (onek or "") .. kacis_bicimi:format(i)
				end)
		end
		
		yazi = kacis(yazi, "%+|)", "[[")
		yazi = kacis(yazi, "<+>")
		
		yazi = yazi:gsub(" +", "<br>")
		
		-- Eğer kaçınma başarılıysa bunu geri al.
		yazi = yazi:gsub(
			"$(%d)",
			function(a)
				a = tonumber(a)
				return kacildi
			end
		)
	end

	if alf:getirKod() == "Imag" then
		tip = nil
	end

	local function sinif_ozell(siniflar)
		table.insert(siniflar, 1, alf:getirKod())
		if sinif and sinif ~= '' then
			table.insert(siniflar, sinif)
		end
		return 'class="' .. table.concat(siniflar, ' ') .. '"'
	end
	
	local function etiket_ozell(...)
		local cikti = {}
		if id then
			table.insert(cikti, 'id="' .. require("Modül:araçlar").make_id(dil, id) .. '"')
		end
		
		table.insert(cikti, sinif_ozell({...}) )
		
		if dil then
			table.insert(cikti, 'lang="' .. dil:getirKod() .. '"')
		end
		
		return table.concat(cikti, " ")
	end
	
	if tip == "varsayımsal" then
	-- ]
		--require("Modül:debug").track("script-utilities/face/hypothetical")
	end
	
	local veri = mw.loadData("Modül:alfabe araçları/veri").tipler
	
	local sonrasi = ""
	if alf:getirYon() == "rtl" and (tip == "çeviri" or mw.ustring.find(yazi, "%p$")) then
		sonrasi = "&lrm;"
	end
	
	-- Alfabe kaplayıcı ekle
	if veri then
		return ( veri.onek or "" ) .. '<' .. veri.etiket .. ' ' .. etiket_ozell(veri.sinif) .. '>' .. yazi .. '</' .. veri.etiket .. '>' .. sonrasi
	else
		error('"' .. tip .. '" geçersiz bir alfabe tipidir.')
	end
end

function cikart.etiket_alfabecev(alfabecev, dil, tur, ozellikler, elle_eklenmis)
	if type(dil) == "table" then
		dil = dil.getirKod and dil:getirKod()
			or error("etiket_alfabecev fonksiyonunun üçüncü parametresi bir dil kodu veya dil nesnesi olmalıdır.")
	end
	
	local veri = mw.loadData("Modül:alfabe araçları/veri").alfabecev
	
	local acilis_etiketi = {}
	
	table.insert(acilis_etiketi, veri.etiket)
	if dil == "ja" then
		table.insert(acilis_etiketi, 'class="' .. (veri.sinif and veri.sinif .. " " or "") .. (elle_eklenmis and "manual-tr " or "") .. 'tr"')
	else
		table.insert(acilis_etiketi, 'lang="' .. dil .. '-Latn"')
		table.insert(acilis_etiketi, 'class="' .. (veri.sinif and veri.sinif .. " " or "") .. (elle_eklenmis and "manual-tr " or "") .. 'tr Latn"')
	end
	
	if veri.dir then
		table.insert(acilis_etiketi, 'dir="' .. veri.dir .. '"')
	end
	
	table.insert(acilis_etiketi, ozellikler)
	
	return "<" .. table.concat(acilis_etiketi, " ") .. ">" .. alfabecev .. "</" .. veri.etiket .. ">"
end

-- Bir sözcüğün anadil alfabesinin istenildiğini belirten bir uyarı ekle
function cikart.iste_alfabe(dil, alf, ornek, katyok, sira_anahtari)
	local alfabeler = dil.getirAlfabeler and dil:getirAlfabeler() or error('"' .. dil:getirKod() .. '" dili getirAlfabeler metoduna sahip değil. Alfabesi belirtilmemiş olabilir.')
	
	-- Varsayılan istek "anadil" alfabedir
	local kat_alfabe = "anadil"
	local gorun_alfabe = "alfabe"
	
	-- Eğer alfabe belirtilmediyse ve dil tek bir alfabeye sahipse, onu kullan.
	if not alf and #alfabeler == 1 then
		alf = alfabeler
	end
	
	-- Alfabe tanınınıyor mu?
	if alf then
		-- Eğer alfabe Latin ise, hiçbir şey çıkartma.
		if cikart.Latin_alfabesi_mi(alf) then
			return ""
		end
		
		if alf:getirKod() ~= alfabeler:getirKod() then
			gorun_alfabe = alf:getirAsilAd()
		end
		
		-- Eğer iki anlama gelme durumu varsa kategori alfabeye özel olmalı
		-- Bu durum dil=und ise veya dil birden fazla alfabeye sahipse
		-- meydana gelebilir.
		if dil:getirKod() == "und" or alfabeler then
			kat_alfabe = alf:getirAsilAd()
		end
	else
		-- Alfabe tanınmıyor ise.
		-- Dil, listesinde en azından bir tane Latin olmayan harf içeriyor mu?
		local varmi_Latinolmayan = false
		
		for i, deger in ipairs(alfabeler) do
			if not cikart.Latin_alfabesi_mi(deger) then
				varmi_Latinolmayan = true
				break
			end
		end
		
		-- Eğer Latin olmayan harfler yoksa, hiçbir şey çıkartma.
		if not varmi_Latinolmayan then
			return ""
		end
	end
	
	local kategori
	
	if ornek then
		kategori = dil:getirAsilAd() .. " kullanım örneklerinde " .. kat_alfabe .. " isteniyor"
	else
		kategori = dil:getirAsilAd() .. " söz türlerinde " .. kat_alfabe .. " isteniyor"
	end
	
	return "<small></small>" ..
		(katyok and "" or require("Modül:araçlar").format_categories({kategori}, dil, sira_anahtari))
end

function cikart.rfalfabe_s(frame)
	params = {
		 = { required = true, default = "und" },
		 = {},
		 = { type = "boolean" },
		 = { type = "boolean" },
		 = {},
	}
	
	local args = require("Modül:parameters").process(frame:getParent().args, params)
	
	local dil = require("Modül:diller").getirKodaGore(args, 1)
	local alf = args.ak and require("Modül:alfabeler").getirKodaGore(args.ak, true)

	local tekrar = cikart.iste_alfabe(dil, alf, args, args.katyok, args)
	
	if tekrar == "" then
		error("Bu dil Latin alfabesini kullanmaktadır. Bir alfabe koduna ihtiyaç duymamaktadır.")
	else
		return tekrar
	end
end

function cikart.kontroletAlfabe(yazi, alfKodu, sonuc)
	local alfabeNesnesi = require("Modül:alfabeler").getirKodaGore(alfKodu)
	
	if not alfabeNesnesi then
		error('"' .. alfKodu .. '" alfabe kodu tanınmıyor.')
	end
	
	local asilYazi = yazi
	
	-- Harf olmayan karakterleri kaldır.
	yazi = mw.ustring.gsub(yazi, "", "")
	
	-- Bahsi geçen alfabenin tüm karakterlerini kaldır.
	yazi = mw.ustring.gsub(yazi, "", "")
	
	if yazi ~= "" then
		if type(sonuc) == "string" then
			error(sonuc)
		else
			error('"' .. asilYazi .. '" yazısı "' .. alfabeNesnesi:getirKategoriAdi() .. " alfabesine ait olmayan " .. yazi .. '" karakterlerini içermekte.', 2)
		end
	end
end

return cikart