Modulo:Tabs
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Tabs/man (modifica • cronologia)
Sandbox: Modulo:Tabs/Sandbox (modifica•cronologia) • Test: Modulo:Tabs/Test (modifica•cronologia)
Questo modulo utilizza: |
Questo modulo è stato scritto per implementare le funzioni presente nel {{Tabs}}, perciò il suo funzionamento è strettamente legato alla necessità di suddetto template.
Funzioni interne
Questo modulo si avvale di funzioni interne:
categorizzazione
: La gestione di quando un lemma deve essere categorizzato o meno;categorizza
: La funzione che aggiunge materialmente la funzione;titleExists
: La funzione che valuta se una pagina esiste o meno;- tabs: La funzione principale che crea la tabella e ordina funzioni e variabili.
Funzione esterna
Questo modulo, sfrutta la funzione Differenze del Modulo:FormeFlesse per gestire la parte delle desinenze, relative allo script per scrivere le forme flesse, tramite la funzione FFLink.Differenze richiamata con la variabile "differenze
".
Variabili
Variabile | Valore di riferimento | Valore del template |
---|---|---|
masc |
arg.m |
Link al lemma maschile singolare |
mascPl |
arg.mp |
Link al lemma maschile plurale |
fem |
arg.f |
Link al lemma femminile singolare |
femPl |
arg.fp |
Link al lemma femminile plurale |
masc2 |
arg.m2 |
Link al lemma maschile singolare (Forma alternativa) |
mascPl2 |
arg.mp2 |
Link al lemma maschile plurale (Forma alternativa) |
fem2 |
arg.f2 |
Link al lemma femminile singolare (Forma alternativa) |
femPl2 |
arg.fp2 |
Link al lemma femminile plurale (Forma alternativa) |
Categorizzazioni
categorie dei lemmi da scrivere
Il modulo è anche in grado di categorizzare i lemmi se all'interno della tabella ci sono delle forme flesse da scrivere, le categorie sono:
- Lemmi con forma maschile da scrivere
- Lemmi con forma maschile plurale da scrivere
- Lemmi con forma femminile da scrivere
- Lemmi con forma femminile plurale da scrivere
Forma alternative
- Lemmi con forma maschile alternativa da scrivere
- Lemmi con forma maschile plurale alternativa da scrivere
- Lemmi con forma femminile alternativa da scrivere
- Lemmi con forma femminile plurale alternativa da scrivere
Manutenzione
In caso un campo del template sia stato lasciato vuoto, oltre l'avviso a comparsa nel lemma, il modulo categorizzerà la pagine in Categoria:Template per le forme flesse senza informazioni
Dipendenze
Questo modulo sfrutta il Modulo:FormeFlesse per gestire la parte delle desinenze, relative allo script per scrivere le forme flesse
-- Moduli necessari
local getArgs = require('Modulo:Arguments').getArgs -- carica i valori dei parametri
local FFLink = require('Modulo:FormeFlesse') -- carica la funzione per le desinenze delle forme flesse
-- Funzione della categorizzazione
local function categorizza(cat)
return string.format('[[%s:%s]]', mw.site.namespaces[14].name, cat)
end
-- funzione per rilevare se una determinata pagina esiste o no
local function titleExists(pagina)
local title = mw.title.new(pagina)
return title and title.exists
end
local p = {}
function p.Tabs(frame)
local arg = getArgs(frame)
-- variabile a me sconosciuta ma che comunque nel template c'è, io ce la metto
-- credo sia un titolo, e io la chiamo titolo, poi vediamo...
local titolo = arg[5] or ' '
--Forme base
local masc = arg.m or arg[1]
local mascPl = arg.mp or arg[2]
local fem = arg.f or arg[3]
local femPl = arg.fp or arg[4]
-- Forme alternative
local masc2 = arg.m2 or ''
local mascPl2 = arg.mp2 or ''
local fem2 = arg.f2 or ''
local femPl2 = arg.fp2 or ''
-- Gestione per mostrare o meno le forme alternative
if masc2 ~= '' then masc2Insert = '/ [[' .. masc2 .. ']]' else masc2Insert = '' end
if mascPl2 ~= '' then mascPl2Insert = '/ [[' .. mascPl2 .. ']]' else mascPl2Insert = '' end
if fem2 ~= '' then fem2Insert = '/ [[' .. fem2 .. ']]' else fem2Insert = '' end
if femPl2 ~= '' then femPl2Insert = '/ [[' .. femPl2 .. ']]' else femPl2Insert = '' end
-- Funzione per separare le desinenze, fondamentale per l'autocompilazione della pagina [[Speciale:FormeFlesse]]
-- Usa la funzione "differenze" del [[Modulo:FormeFlesse]]
-- IF per controllare che tutti i parametri minimi siano stati scritti
if masc == nil or mascPl == nil or fem == nil or femPl == nil then
modifica = ' ['..mw.title.getCurrentTitle():fullUrl{action = 'edit'}..' correggi il template]'
ErrVuoti ='<strong class="error plainlinks">Uno o più parametri del {{[[Template:Tabs|Tabs]]}} sono stati lasciati vuoti, '..modifica..'</strong>'
return ErrVuoti..''..categorizza('Template per le forme flesse senza informazioni')
else
local differenze = FFLink.Differenze(arg)
local function categorizzazione (frame)
--[=[###########################################################################
GESTIONE DELLA CATEGORIZZAZIONE
#############################################################################]=]
--Categorizzazione forme semplici
if titleExists(masc) == false then
categoriaMasc = ''..categorizza('Lemmi con forma maschile da scrivere')
else
categoriaMasc = ''
end
if titleExists(mascPl) == false then
categoriaMascPl = ''..categorizza('Lemmi con forma maschile plurale da scrivere')
else
categoriaMascPl = ''
end
if titleExists(fem) == false then
categoriaFem = ''..categorizza('Lemmi con forma femminile da scrivere')
else
categoriaFem = ''
end
if titleExists(femPl) == false then
categoriaFemPl = ''..categorizza('Lemmi con forma femminile plurale da scrivere')
else
categoriaFemPl = ''
end
-- Categorizzazione forme alternative
if titleExists(masc2) == false then
categoriaMasc2 = ''..categorizza('Lemmi con forma maschile alternativa da scrivere')
else
categoriaMasc2 = ''
end
if titleExists(mascPl2) == false then
categoriaMascPl2 = ''..categorizza('Lemmi con forma maschile plurale alternativa da scrivere')
else
categoriaMascPl2 = ''
end
if titleExists(fem2) == false then
categoriaFem2 = ''..categorizza('Lemmi con forma femminile alternativa da scrivere')
else
categoriaFem2 = ''
end
if titleExists(femPl2) == false then
categoriaFemPl2 = ''..categorizza('Lemmi con forma femminile plurale alternativa da scrivere')
else
categoriaFemPl2 = ''
end
return ''..categoriaMasc..''..categoriaMasc2..''..categoriaMascPl..''..categoriaMascPl2..''..categoriaFem..''..categoriaFem2..''..categoriaFemPl..''..categoriaFemPl2
end
--[=[###########################################################################
CREAZIONE DELLA TABELLA
#############################################################################]=]
tabs = '{| style="float:right; margin-left:0.5em; margin-bottom:0.5em;'
tabs = tabs .. 'border: 1px solid #AAAAAA; border-collapse:collapse;" cellpadding="3" rules="all"\n'
tabs = tabs .. '|- align="center"\n'
tabs = tabs .. '!'..titolo..--[=['<div class="sost" id="ButtonFF" >'.. differenze .. '</div>]=]'\n'
tabs = tabs .. '! bgcolor="#FFFFE0" | \'\'[[singolare]]\'\' \n'
tabs = tabs .. '! bgcolor="#FFFFE0" | \'\'[[plurale]]\'\' \n'
tabs = tabs .. '|- align="center"\n'
tabs = tabs .. '! bgcolor="#FFFFE0" | \'\'[[maschile]]\'\' \n'
tabs = tabs .. '| [['..masc..']] '..masc2Insert..'\n'
tabs = tabs .. '| [['..mascPl..']] '..mascPl2Insert..'\n'
tabs = tabs .. '|- align="center"\n'
tabs = tabs .. '! bgcolor="#FFFFE0" | \'\'[[femminile]]\'\' \n'
tabs = tabs .. '| [['..fem..']] '..fem2Insert..'\n'
tabs = tabs .. '| [['..femPl..']] '..femPl2Insert..'\n'
tabs = tabs .. '|}\n' ..categorizzazione(frame)
return tabs
end
end
return p