Modulo:Bio/Parametri

Modulo Lua di supporto a Modulo:Bio. Contiene la configurazione dei parametri del modulo.


local config = {}--[[Configurazione dei parametri del Modulo:Bio.Definisce quali sono gli unici parametri accettati.]]config.params = {["Titolo"] = true,["Nome"] = true,["Cognome"] = true,["Soprannome"] = true,["PostSoprannome"] = true,["Pseudonimo"] = true,["PostPseudonimo"] = 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,["Floruit"] = 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,["CognomePrima"] = true,["Debug"] = 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 ela 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--endlocal function checkEpoca(value, args)return mw.loadData("Modulo:Bio/Configurazione").epoche[value] ~= nilendlocal function checkLen1000(value, args)-- ignora eventuali tag span, solitamente generati da template inclusireturn value:gsub("<span.+</span>", ""):len() < 1000endlocal function checkQuestionMark(value, args)-- non è valida una squenza di uno o più punti interrogativireturn not value:match("^[%?]+$")endlocal function checkEllipsis(value, args)return value ~= "..."endlocal function checkPeriod(value, args)return not value:match("^%.")end-- Applicato su AnnoMorte per verificare che in presenza di AnnoNascita sia uguale o posteriorelocal function checkMorteDopoNascita(value, args)local annoNascita, annoMortelocal ret = trueif args["AnnoNascita"] thenannoNascita = tonumber(args["AnnoNascita"])annoMorte = tonumber(value)if annoNascita and annoMorte thenret = annoMorte >= annoNascitaendendreturn retend-- Per controllare la dipendenza da un altro parametrolocal function hasParam(param)return function(value, args)return args[param] ~= nilendend-- Per controllare il conflitto con un altro parametrolocal function unusedParam(param)return function(value, args)return args[param] == nilendend-- Per controllare che un altro parametro abbia valore diversolocal function diffParam(param)return function(value, args)return value ~= args[param]endendconfig.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 = "Epoca2", valuetest = hasParam("Epoca"), errmsg = "Epoca2 è usato ma Epoca è vuoto" },{ param = "Epoca2", valuetest = diffParam("Epoca"), errmsg = "Epoca2 ha lo stesso valore di Epoca" },{ 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 = checkPeriod, errmsg = "PostNazionalità inizia con il punto. Spostarne il contenuto alla riga successiva dopo la chiusura del template Bio"  },{ param = "PostNazionalità", valuetest = checkLen1000 },{ param = "FineIncipit", valuetest = checkLen1000 },{ param = "PostCognomeVirgola", valuetest = unusedParam("PostCognome"), errmsg = "PostCognome e PostCognomeVirgola non possono essere utilizzati insieme" },{ param = "AnnoNascita", valuetest = checkQuestionMark, errmsg = "il valore in AnnoNascita non è valido: se sconosciuto va lasciato vuoto e il template visualizzerà i punti di sospensione" },{ param = "AnnoNascita", valuetest = checkEllipsis, errmsg = "il valore '...' in AnnoNascita non è valido: se sconosciuto va lasciato vuoto e il template visualizzerà i punti di sospensione" },{ param = "AnnoMorte", valuetest = checkEllipsis, errmsg = "il valore '...' in AnnoMorte non è valido: se sconosciuto va utilizzato '?' e il template visualizzerà i punti di sospensione" },{ param = "AnnoMorte", valuetest = checkMorteDopoNascita, errmsg = "il valore del parametro AnnoMorte è anteriore ad AnnoNascita" },{ param = "LuogoNascitaLink", valuetest = hasParam("LuogoNascita"), errmsg = "LuogoNascitaLink è usato ma LuogoNascita è vuoto" },{ param = "LuogoNascitaLink", valuetest = diffParam("LuogoNascita"), errmsg = "LuogoNascitaLink va usato solo se diverso da LuogoNascita" },{ param = "LuogoNascitaAlt", valuetest = hasParam("LuogoNascita"), errmsg = "LuogoNascitaAlt è usato ma LuogoNascita è vuoto" },{ param = "LuogoMorteLink", valuetest = hasParam("LuogoMorte"), errmsg = "LuogoMorteLink è usato ma LuogoMorte è vuoto" },{ param = "LuogoMorteLink", valuetest = diffParam("LuogoMorte"), errmsg = "LuogoMorteLink va usato solo se diverso da LuogoMorte" },{ param = "LuogoMorteAlt", valuetest = hasParam("LuogoMorte"), errmsg = "LuogoMorteAlt è usato ma LuogoMorte è vuoto" },{ param = "LuogoMorte", valuetest = hasParam("AnnoMorte"), errmsg = "LuogoMorte è usato ma AnnoMorte è vuoto" },{ param = "GiornoMeseMorte", valuetest = hasParam("AnnoMorte"), errmsg = "GiornoMeseMorte è usato ma AnnoMorte è vuoto" },{ param = "Floruit", valuetest = unusedParam("AnnoNascita"), errmsg = "AnnoNascita e Floruit non possono essere utilizzati insieme" },{ param = "Attività3", valuetest = hasParam("Attività2"), errmsg = "Attività3 è usato ma Attività2 è vuoto" }}return config