Modül:ca-başlıkbaşı

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

Bu Lua modülü, şu şablonların çıktısını vermektedir:


local m_com = require("Modül:ca-araçlar")

local export = {}
local pos_functions = {}

local lang = require("Modül:diller").getirKodaGore("ca")

-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
	PAGENAME = mw.title.getCurrentTitle().text
	
	local poscat = frame.args or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")
	
	local params = {
		 = {list = true, default = ""},
		 = {type = "boolean"},
	}
	
	if pos_functions then
		for key, val in pairs(pos_functions.params) do
			params = val
		end
	end
	
	local args = require("Modül:parameters").process(frame:getParent().args, params)
	local veri = {dil = lang, soz_kategorisi = poscat, kategoriler = {}, baslar = args, cinsiyetler = {}, cekimler = {}}
	
	if args then
		veri.soz_kategorisi = "son ekler"
		
		if poscat == "ön adlar" then
			table.insert(veri.kategoriler, lang:getCanonicalName() .. " ön adlar yapan son ekler")
		elseif poscat == "belirteçler" then
			table.insert(veri.kategoriler, lang:getCanonicalName() .. " belirteç yapan son ekler")
		elseif poscat == "adlar" then
			table.insert(veri.kategoriler, lang:getCanonicalName() .. " ad yapan son ekler")
		elseif poscat == "eylemler" then
			table.insert(veri.kategoriler, lang:getCanonicalName() .. " eylem yapan son ekler")
		else
			error(poscat .. " söz türünü dönüştüren bir son ek mevcut değil.")
		end
	end
	
	if pos_functions then
		pos_functions.func(args, veri)
	end
	
	return require("Modül:başlık başı").tam_baslikbasi(veri)
end

-- Display additional inflection information for an adjective
pos_functions = {
	params = {
		 = {},
		 = {},
		 = {},
		},
	func = function(args, veri)
		local feminine = args
		local masculine_plural
		local masculine_plural2
		local feminine_plural
		
		-- Indeclinable/invariable adjectives
		if feminine == "ind" or feminine == "inv" then
			table.insert(veri.kategoriler, "Katalanca indeclinable adjectives")
			table.insert(veri.cekimler, {etiket = "indeclinable"})
		else
			-- Adjectives with identical forms in the masculine and feminine singular
			if feminine == "ed" or feminine == "fm" then
				feminine = PAGENAME
				table.insert(veri.kategoriler, "Katalanca epicene adjectives")
				
				-- Adjectives ending in -ç or -x behave as mf-type in the singular, but
				-- regular type in the plural.
				if PAGENAME:find("$") then
					masculine_plural = make_plural(PAGENAME, "e")
					feminine_plural = make_plural(PAGENAME .. "a", "d")
				else
					masculine_plural = make_plural(PAGENAME, "e")
					feminine_plural = masculine_plural
				end
				
				-- Has anyone provided forms to override the defaults?
				masculine_plural = args or masculine_plural
				feminine_plural = args or feminine_plural
				masculine_plural2 = args or masculine_plural2
			-- Adjectives with distinct masculine and feminine singular forms
			-- (the majority)
			else
				feminine = feminine or make_feminine(PAGENAME)
				feminine_plural = make_plural(feminine, "d")
				
				-- If the feminine ends in -ssa, assume that the -ss- is also in the
				-- masculine plural form
				if feminine:find("ssa$") then
					masculine_plural = feminine:gsub("a$", "os")
				elseif feminine == PAGENAME .. "na" then
					masculine_plural = PAGENAME .. "ns"
				-- Adjectives in -ig have two masculine plural forms, one derived from
				-- the m.sg. and the other derived from the f.sg.
				elseif PAGENAME:find("ig$") then
					masculine_plural = PAGENAME .. "s"
					masculine_plural2 = feminine:gsub("ja$", "jos")
				else
					masculine_plural, masculine_plural2 = make_plural(PAGENAME, "e")
				end
				
				-- Has anyone provided forms to override the defaults?
				masculine_plural = args or masculine_plural
				masculine_plural2 = args or masculine_plural2
			end
			
			-- Display the forms.
			-- If masculine and feminine are identical, show m,f as the gender and
			-- leave out the feminine.
			if feminine ~= PAGENAME then
				table.insert(veri.cekimler, {etiket = "feminine", accel = {form = "d|t"}, feminine})
			end
			
			-- If the plurals are identical, show only one form as well.
			if masculine_plural == feminine_plural then
				local infl_parts = {etiket = "masculine and feminine plural", accel = {form = "ç"}}
				table.insert(infl_parts, masculine_plural)
				
				if masculine_plural2 then
					table.insert(infl_parts, masculine_plural2)
				end
				
				table.insert(veri.cekimler, infl_parts)
			else
				local infl_parts = {etiket = "eril çoğulu", accel = {form = "e|ç"}}
				table.insert(infl_parts, masculine_plural)
				
				if masculine_plural2 then
					table.insert(infl_parts, masculine_plural2)
				end
				
				table.insert(veri.cekimler, infl_parts)
				table.insert(veri.cekimler, {etiket = "dişil çoğulu", accel = {form = "d|ç"}, feminine_plural})
			end
			
			-- Check for missing forms
			if feminine and not mw.title.new(feminine).exists then
				table.insert(veri.kategoriler, "Katalanca kırmızı bağlantılı çekimi olan ön adlar")
			elseif masculine_plural and not mw.title.new(masculine_plural).exists then
				table.insert(veri.kategoriler, "Katalanca kırmızı bağlantılı çekimi olan ön adlar")
			elseif masculine_plural2 and not mw.title.new(masculine_plural2).exists then
				table.insert(veri.kategoriler, "Katalanca kırmızı bağlantılı çekimi olan ön adlar")
			elseif feminine_plural and not mw.title.new(feminine_plural).exists then
				table.insert(veri.kategoriler, "Katalanca kırmızı bağlantılı çekimi olan ön adlar")
			end
		end
	end
}

-- Display information for a noun's gender
-- This is separate so that it can also be used for proper nouns
function noun_gender(args, veri)
	local gender = args
	
	if gender == "m-p" or gender == "f-p" or gender == "e-ç" or gender == "d-ç" then
		table.insert(veri.kategoriler, "Katalanca topluluk adları")
	end
	
	if gender == "ed" or gender == "mf" then
		table.insert(veri.cinsiyetler, "e")
		table.insert(veri.cinsiyetler, "d")
	else
		table.insert(veri.cinsiyetler, gender)
	end
	
	if #veri.cinsiyetler == 0 then
		table.insert(veri.cinsiyetler, "?")
	end
	
	-- Is this a noun with an unexpected ending (for its gender)?
	-- Only check if the term is one word (there are no spaces in the term).
	if not PAGENAME:find(" ") then
		if PAGENAME:find("a$") and (veri.cinsiyetler == "e" or veri.cinsiyetler == "m") then
			table.insert(veri.kategoriler, "Katalanca masculine nouns ending in -a")
		elseif not (PAGENAME:find("a$") or PAGENAME:find("ió$") or PAGENAME:find("tat$") or PAGENAME:find("tud$") or PAGENAME:find("riu$")) and (veri.cinsiyetler == "f" or veri.cinsiyetler == "d") then
			table.insert(veri.kategoriler, "Katalanca feminine nouns with no feminine ending")
		end
	end
end

pos_functions = {
	params = {
		 = {},
		 = {},
		},
	func = function(args, veri)
		noun_gender(args, veri)
	end
}

-- Display additional inflection information for a noun
pos_functions = {
	params = {
		 = {},
		 = {},
		 = {},
		 = {},
		 = {},
		},
	func = function(args, veri)
		noun_gender(args, veri)
		
		-- Plural
		if veri.cinsiyetler == "m-p" or veri.cinsiyetler == "f-p" then
			table.insert(veri.cekimler, {etiket = "]"})
		else
			local plural = args
			
			if plural == "-" then
				table.insert(veri.cekimler, {etiket = "]"})
				table.insert(veri.kategoriler, "Katalanca uncountable nouns")
			else
				local infl_parts = {etiket = "çoğul", accel = {form = "p"}}
				local plural2 = args
				
				if not plural then
					local p, p2 = make_plural(PAGENAME, veri.cinsiyetler)
					plural = p
					plural2 = plural2 or p2
				end
				
				table.insert(infl_parts, plural)
				
				if plural2 then
					table.insert(infl_parts, plural2)
					if not mw.title.new(plural2).exists then
						table.insert(veri.kategoriler, "Katalanca kırmızı bağlantılı çoğulu olan adlar")
					end
				end
				if plural and not mw.title.new(plural).exists then
					table.insert(veri.kategoriler, "Katalanca kırmızı bağlantılı çoğulu olan adlar")
				end
				table.insert(veri.cekimler, infl_parts)
			end
		end
		
		-- Gendered forms
		local feminine = args
		local masculine = args
		
		if feminine then
			table.insert(veri.cekimler, {etiket = "feminine", feminine})
		end
		
		if masculine then
			table.insert(veri.cekimler, {etiket = "masculine", masculine})
		end
	end
}

-- Display additional inflection information for a verb
pos_functions = {
	params = {
		 = {},
		 = {},
		},
	func = function(args, veri)
		-- Does this verb end in a recognised verb ending (possibly reflexive)?
		if not PAGENAME:find(" ") and (PAGENAME:find("re?$") or PAGENAME:find("r%-se$") or PAGENAME:find("re's$")) then
			local base = PAGENAME:gsub("r%-se$", "r"):gsub("re's$", "re")
			local pres_1_sg
			local past_part
			
			-- Generate inflected forms.
			-- The 2nd conjugation is generally irregular
			-- so generate nothing for that, explicit parameters are required.
			
			-- 1st conjugation
			if base:find("ar$") then
				local stem = base:gsub("ar$", "")
				pres_1_sg = stem .. "o"
				past_part = stem .. "at"
			-- 3rd conjugation (except -tenir/-venir)
			elseif base:find("ir$") and not base:find("enir$") then
				local stem = base:gsub("ir$", "")
				pres_1_sg = stem .. "eixo"
				
				if stem:find("$") and not stem:find("u$") then
					past_part = stem .. "ït"
				else
					past_part = stem .. "it"
				end
			end
			
			-- Overridden forms
			pres_1_sg = {etiket = "first-person singular present", request = true, args or pres_1_sg}
			past_part = {etiket = "past participle", request = true, args or past_part}
			
			table.insert(veri.cekimler, pres_1_sg)
			table.insert(veri.cekimler, past_part)
		end
	end
}

-- Display additional inflection information for a numeral
pos_functions = {
	params = {
		 = {},
		 = {},
		},
	func = function(args, veri)
		local feminine = args
		local noun_form = args
		
		if feminine then
			table.insert(veri.cinsiyetler, "e")
			table.insert(veri.cekimler, {etiket = "dişili", feminine})
			
			if noun_form then
				table.insert(veri.cekimler, {etiket = "ad biçimi", noun_form})
			end
		else
			table.insert(veri.cinsiyetler, "e")
			table.insert(veri.cinsiyetler, "d")
		end
	end
}

function make_feminine(base)
	-- final vowel -> -a
	if base:find("a$") then return base end
	if base:find("o$") then return (base:gsub("o$", "a")) end	
	if base:find("e$") then return m_com.front_to_back(base:gsub("e$", "")) .. "a" end
	
	-- -u -> -va
	if base:find("u$") then return (base:gsub("u$", "v") .. "a") end
	
	-- accented vowel -> -na
	if mw.ustring.find(base, "$") then return m_com.remove_accents(base) .. "na" end
	
	-- accented vowel + -s -> -sa
	if mw.ustring.find(base, "s$") then return m_com.remove_accents(base) .. "a" end
	
	return base .. "a"
end

function make_plural(base, gender)
	-- a -> es
	if base:find("a$") then return m_com.back_to_front(base:gsub("a$", "")) .. "es", nil end
	
	-- accented vowel -> -ns
	if mw.ustring.find(base, "$") then
		return m_com.remove_accents(base) .. "ns", nil
	end
	
	if gender == "m" or gender == "e" then
		if mw.ustring.find(base, "s$") then
			return m_com.remove_accents(base) .. "os", nil
		end
		
		if base:find("s$") or base:find("ç$") or base:find("x$") or base:find("z$") then
			return base .. "os", nil
		end
		
		if base:find("sc$") or base:find("st$") or base:find("xt$") then
			return base .. "s", base .. "os"
		end
	end
	
	if gender == "f" or gender == "d" then
		if base:find("s$") then return base end
		if base:find("sc$") or base:find("st$") or base:find("xt$") then return base .. "s", base .. "es" end
	end
	
	return base .. "s", nil
end

return export