Modulo:Bio/Parametri/sandbox
< Modulo:Bio | Parametri
local config = {}
--[[
Configurazione dei parametri del Modulo:Bio.
Definisce quali sono gli unici parametri accettati.
]]
config.params = {
["Titolo"] = true,
["Nome"] = true,
["Cognome"] = true,
["PostCognome"] = true,
["PostCognomeVirgola"] = true,
["ForzaOrdinamento"] = true,
["PreData"] = true,
["Sesso"] = true,
["LuogoNascita"] = true,
["LuogoNascitaLink"] = true,
["LuogoNascitaAlt"] = true,
["GiornoMeseNascita"] = true,
["AnnoNascita"] = true,
["NoteNascita"] = true,
["LuogoMorte"] = true,
["LuogoMorteLink"] = true,
["LuogoMorteAlt"] = true,
["GiornoMeseMorte"] = true,
["AnnoMorte"] = true,
["NoteMorte"] = true,
["PreAttività"] = true,
["Epoca"] = true,
["Epoca2"] = true,
["Attività"] = true,
["Attività2"] = true,
["Attività3"] = true,
["AttivitàAltre"] = true,
["Nazionalità"] = true,
["NazionalitàNaturalizzato"] = true,
["Cittadinanza"] = true,
["PostNazionalità"] = true,
["Categorie"] = true,
["FineIncipit"] = true,
["Punto"] = true,
["Immagine"] = true,
["Didascalia"] = true,
["Didascalia2"] = true,
["DimImmagine"] = true
}
--[[
Configurazione dei controlli effettuati sui parametri (ogni parametro può averne più di uno).
Ogni controllo è configurabile tramite:
* "param ": il parametro su cui effettuare il controllo
* "valuetest": il controllo da effettuare sul valore del parametro, può valere:
* un pattern Lua: è accettato il valore se soddisfa il pattern Lua descritto
* una funzione Lua: funzione Lua che esegue il controllo di validità,
da usare quando i pattern Lua non sono sufficienti o per controlli più complessi.
* "errmsg": il messaggio di errore da visualizzare, è facoltativo.
Se assente la voce sarà comunque categorizzata tra le voci con errori.
Nel caso della funzione, deve accettare due parametri: il valore del parametro e
la tabella con gli altri argomenti (per fare controlli in relazione agli altri parametri).
Deve ritornare true se il valore del parametro è valido altrimenti false.
Esempio: scommentando la seguente funzione checkNome e aggiungendo la riga:
{ param = "Nome", valuetest = checkNome },
saranno categorizzate come errore la pagine con Nome contenente "soprannominato" o "al secolo".
Inoltre non verrà visualizzato il messaggio di errore (errmsg è assente).
]]
--local function checkNome(value, args)
-- return value:find("soprannominato") == nil and
-- value:find("al secolo") == nil
--end
local function checkEpoca(value, args)
return mw.loadData("Modulo:Bio/Configurazione").epoche[value] ~= nil
end
local function checkLen1000(value, args)
-- ignora eventuali tag span, solitamente generati da template inclusi
return value:gsub("<span.+</span>", ""):len() < 1000
end
-- Applicato su AnnoMorte per verificare che in presenza di AnnoNascita sia uguale o posteriore
local function checkMorteDopoNascita(value, args)
local annoNascita, annoMorte
local ret = true
if args["AnnoNascita"] then
annoNascita = tonumber(args["AnnoNascita"])
annoMorte = tonumber(value)
if annoNascita and annoMorte then
ret = annoMorte >= annoNascita
end
end
return ret
end
config.validators = {
{ param = "Sesso", valuetest = "^[MF]$", errmsg = "il valore del parametro Sesso non è valido, accettato solo 'M' o 'F'" },
{ param = "Epoca", valuetest = checkEpoca, errmsg = "il valore del parametro Epoca non è valido" },
{ param = "Epoca2", valuetest = checkEpoca, errmsg = "il valore del parametro Epoca2 non è valido" },
{ param = "Punto", valuetest = "^no$", errmsg = "il valore del parametro Punto non è valido, accettato solo 'no'" },
{ param = "DimImmagine", valuetest = "^%d+$", errmsg = "il valore del parametro DimImmagine non è valido, inserire la dimensione senza px" },
{ param = "Categorie", valuetest = "^no$", errmsg = "il valore del parametro Categorie non è valido, accettato solo 'no'" },
{ param = "PostNazionalità", valuetest = checkLen1000 },
{ param = "FineIncipit", valuetest = checkLen1000 },
{ param = "AnnoMorte", valuetest = checkMorteDopoNascita, errmsg = "il valore del parametro AnnoMorte è anteriore ad AnnoNascita" },
}
return config