Modulo:Categorizzazione verbi italiani
![Info](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Lua-Logo.svg/30px-Lua-Logo.svg.png)
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Categorizzazione verbi italiani/man (modifica • cronologia)
Sandbox: Modulo:Categorizzazione verbi italiani/Sandbox (modifica•cronologia) • Test: Modulo:Categorizzazione verbi italiani/Test (modifica•cronologia)
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:- are nella categoria Verbi di prima coniugazione in italiano;
- ere, arre, orre e urre nella categoria Verbi di seconda coniugazione in italiano;
- ire nella categoria Verbi di terza coniugazione in italiano;
- 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 funzionep.categorizza
, è il numero del namespaces in cui viene richiamato il modulo;desinenza
: Questa variabile è il risultato della funzionep.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 funzionep.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