Mòdul:categoria gramatical

De Viccionari
Icona de documentació de mòdul Documentació del mòdul[mostra] [modifica] [refresca]

A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]


Aquest mòdul mostra la categoria gramatical que complementa la informació de la categoria lèxica, com ara el gènere i el nombre. Per exemple: m. o bé f. pl.. També pot indicar característiques sintàctiques com verbs transitius o intransitius. El mòdul es crida amb una llista d'una o més "especificacions". Una especificació pot ser simplement el gènere, com "m", o una combinació com "m-p".

Cada especificació és una llista de codis proporcionada en una única cadena amb els codis separats per guions. Cada codi es converteix en una abreviatura amb text complet emergent. Els diferents codis d'una especificació es mostren separats per espais. Si es proporciona una llista d'especificacions, cada element se separa amb una coma.

Exemples:

Llista Resultat
{"m"} m.
{"m-p"} m. pl.
{"m-an-p"} m. anim. pl.
{"f-d", "m-p"} f. dual, m. pl.
{"m-p", "f-p"} m. pl., f. pl.
{"m", "f", "p"} m., f., pl.

Les especificacions que comencen per "v" són categories verbals per característiques sintàctiques: vt transitiu, vi intransitiu, vp pronominal.

No hi ha límit en el número de paràmetres, el mòdul els processarà tots fins trobar-ne un de buit.

--[=[
	This module creates standardised displays for gender and number.
	It converts a gender specification into Wiki/HTML format.
	
	A gender specification is a list of one of the elements listed below,
	separated by hyphens. Examples are: "c", "n", "f-p", "m-an-p"
]=]--

local export = {}

local codes = {}

-- A list of all possible "parts" that a specification can be made out of.

codes["?"] = '<abbr title="gènere incomplet">?</abbr>'

-- Genders
codes["m"] = '<abbr title="masculí">m.</abbr>'
codes["f"] = '<abbr title="femení">f.</abbr>'
codes["c"] = '<abbr title="gènere comú">c.</abbr>'
codes["n"] = '<abbr title="gènere neutre">n.</abbr>'
codes["i"] = '<abbr title="invariable en gènere">inv.</abbr>'
-- Combined codes
codes["mof"] = codes["m"] .. ' o ' .. codes["f"]
codes["fom"] = codes["f"] .. ' o ' .. codes["m"]

-- Additional qualifiers
codes["an"] = '<abbr title="animat">anim.</abbr>'
codes["in"] = '<abbr title="inanimat">inan.</abbr>'
codes["anml"] = '<abbr title="animal">animal</abbr>' -- ucraïnès, belarús, polonès
codes["per"] = '<abbr title="personal">pers.</abbr>' -- ucraïnès, belarús, polonès
codes["vir"] = '<abbr title="viril">vir.</abbr>' -- polonès
codes["nv"] = '<abbr title="no viril">nvir.</abbr>' -- polonès
codes["loc"] = '<abbr title="locució">loc.</abbr>'

-- Numbers
codes["s"] = '<abbr title="nombre singular">sing.</abbr>'
codes["d"] = '<abbr title="nombre dual">dual</abbr>'
codes["p"] = '<abbr title="nombre plural">pl.</abbr>'
codes["indef"] = '<abbr title="indefinit">indef.</abbr>' -- basc

-- Verbs
codes["vt"] = '<abbr title="verb usat transitivament">trans.</abbr>'
codes["vi"] = '<abbr title="verb usat intransitivament">intr.</abbr>'
codes["vp"] = '<abbr title="verb pronominal">pron.</abbr>'
codes["va"] = '<abbr title="verb auxiliar">aux.</abbr>'
codes["vm"] = '<abbr title="verb impersonal">impers.</abbr>'

-- Version of format_list that can be invoked from a template.
function export.show_list(frame)
	local args = frame.args
	local lang = args["lang"]; if lang == "" then lang = nil end
	local list = {}
	local i = 1
	
	while args[i] and args[i] ~= "" do
		table.insert(list, args[i])
		i = i + 1
	end
	
	return export.format_list(list, lang)
end

-- Format one or more gender specifications, in the form of a table of specifications.
function export.format_list(list, lang)
	for key, spec in ipairs(list) do
		local parts = mw.text.split(spec, "%-")
		for key, code in ipairs(parts) do
			if codes[code] then
				parts[key] = codes[code]
			else
				return '<span class="error">El gènere "' .. code .. '" no és vàlid, reviseu la documentació de la plantilla.</span>'
			end
		end
		list[key] = table.concat(parts, "&nbsp;")
	end
	return "<span class=\"gender\">" .. table.concat(list, ", ") .. "</span>"
end

return export