Modulo:Categorizzazione verbi italiani

Questo modulo serve per categorizzare i verbi italiani in base alla declinazione a cui appartengono.

Sintassi

Questo modulo ha un solo parametro possibile, e cioè il codice ISO della lingua a cui appartiene il verbo, parametro che il modulo recupera in autonomia se inserito nel template {{-verb-}} a patto che quest'ultimo sia correttamente compilato.

Funzioni

  • p.categorizza(cat, titolo): Questa funzione serve per aggiungere la categorizzazione al lemma, facendo prima il controllo del numero di namespace per evitare categorizzazioni al di fuori del namespace principale;
  • p.desinenze(arg): Questa funzione viene usato al solo scopo di isolare la parte finale del titolo del lemma per poterla usare per determinare la declinazione corretta;
  • p.main(frame): Questa è la funzione principale, determina innanzitutto se il verbo è italiano, se lo è analizza la desinenza per determinare la categorizzazione corretta: categorizzerà i verbi che terminano in:
Se invece il lemma non è italiano, la gestione della categorizzazione sarà demandata al template {{-verb-}} che categorizzerà semplicemente nella categoria "Verbi in xyz" dove xyz è il nome esteso della lingua, esempio "inglese".

Variabili

  • titolo: Questa variabile è utilizzabile direttamente da tutti i moduli che sfrutteranno questo. In pratica è la variabile che recupera il titolo della pagina;
  • NS: Questa variabile è interna alla funzione p.categorizza, è il numero del namespaces in cui viene richiamato il modulo;
  • desinenza: Questa variabile è il risultato della funzione p.desinenze. Sono le ultime 4 lettere del titolo della pagina;
  • lingua: Questa variabile è l'unico parato passato al modulo, è il codice ISO passato dal template che richiama il modulo;
  • categoria: Questa variabile è il risultato della funzione p.main, in pratica è la categoria in cui dovrà essere categorizzato il verbo.

Uso in altri moduli

Per sfruttare questo moduli in altri, esempio il Modulo:Categorizzazione verbi italiani/Riflessivi, bisogna prima di tutto includerlo con conf = require('Modulo:Categorizzazione verbi italiani')

Da questo momento le funzioni p.categorizza e p.desinenze saranno automaticamente accessibili, ma per sfruttarle bisogna anteporre "conf." al nome della funzione, in questo modo:

  • conf.desinenze(parametro)
  • conf.categorizza(categoria)

titolo = mw.title.getCurrentTitle().subpageText	

local p = {}

-- Funzione per categorizzare
function p.categorizza(cat, titolo)

	local NS = tostring(mw.title.getCurrentTitle().namespace);

	if NS == '0' then
		return string.format('[[%s:%s|%s]]', mw.site.namespaces[14].name, cat, titolo)
	else
		return ''
	end
end

-- funzione per confrontare le desinenze
function p.desinenze(arg)
	local desinenza = string.sub(titolo, -4)
	return string.match (desinenza, arg)
end


function p.main(frame)
	lingua =  frame.args[1]
	-- Variabile per sfruttare "wz:switch_lang" 
	-- Commento perché probabilmente in futuro questo modulo verrà usato per verbi stranieri
	-- switchLang = frame:expandTemplate{ title = 'wz:switch_lang', args = { lingua } }

	if lingua == '' then
		--[[ Lascio lo spazio vuoto se non trova la lingua. Predispongo per il futuro
		se volessimo aggiungere un errore o qualcosa. Prima di rivoluzionare il
		 codice in futuro, già che ci sono lo faccio subito. ]]--
		else
	
		if lingua == 'it' then
			if p.desinenze('%abox', -4) then -- usata per debug in wz:sandbox
				categoria = 'Sei nella pagina: '..titolo..' (sezione dei verbi)'
			elseif p.desinenze('%aare') then
				categoria = p.categorizza('Verbi di prima coniugazione in italiano', titolo)
			elseif p.desinenze('%aere') or p.desinenze('arre') or p.desinenze('orre') or p.desinenze('urre') then
				categoria =  p.categorizza('Verbi di seconda coniugazione in italiano', titolo)
			elseif p.desinenze('%aire') then
				categoria =  p.categorizza('Verbi di terza coniugazione in italiano', titolo)
			else
				categoria = p.categorizza('Verbi in italiano', titolo) -- così becchiamo i riflessivi ed evitiamo di dover ripere il codice sotto... tanto si spera che se ha il {{-verb-|it}} SIA un verbo
			end
		else
			-- azioni da intraprendere se la lingua specificata non fosse l'italiano
		end
		
		return categoria 
	end
end

return p