Questo modulo serve per categorizzare i verbi italiani in base alla declinazione a cui appartengono.
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.
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:
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.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(']', mw.site.namespaces.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
-- 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