Modulo:Bio/Parametri/sandbox

local config = {}

--[[
Configurazione dei parametri del Modulo:Bio.
Definisce quali sono gli unici parametri accettati nella forma:
["Nome parametro"] = true,
]]
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
* "type": il tipo di parametro, può valere:
  * "number": è accettato solo un valore numerico
  * 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 tipi precedenti non sono sufficienti.
* "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 usando alla riga "Nome":
    { param = "Nome", type = 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

config.handlers = {
    { param = "Sesso", type = "^[MF]$", errmsg = "il valore del parametro Sesso non è valido, accettato solo 'M' o 'F'" },
    { param = "Epoca", type = checkEpoca, errmsg = "il valore del parametro Epoca non è valido" },
    { param = "Epoca2", type = checkEpoca, errmsg = "il valore del parametro Epoca non è valido" },
    { param = "Punto", type = "^no$", errmsg = "il valore del parametro Punto non è valido, accettato solo 'no'" },
    { param = "DimImmagine", type = "^%d+$", errmsg = "il valore del parametro DimImmagine non è valido, inserire la dimensione senza px" },
    { param = "Categorie", type = "^no$", errmsg = "il valore del parametro Categorie non è valido, accettato solo 'no'" }
}

return config