FANDOM


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
 
local function checkQuestionMark(value, args)
	return value ~= "?"
end
 
local function checkEllipsis(value, args)
	return value ~= "..."
end
 
local function checkPeriod(value, args)
	return not value:match("^%.")
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
 
-- Per controllare la dipendenza da un altro parametro
local function hasParam(param)
	return function(value, args)
		return args[param] ~= nil
	end	
end
 
-- Per controllare il conflitto con un altro parametro
local function unusedParam(param)
	return function(value, args)
		return args[param] == nil
	end	
end
 
-- Per controllare che un altro parametro abbia valore diverso
local function diffParam(param)
	return function(value, args)
		return value ~= args[param]
	end	
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 = "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 = "Attività3", valuetest = hasParam("Attività2"), errmsg = "Attività3 è usato ma Attività2 è vuoto" }
}
 
return config

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Inoltre su FANDOM

Wiki casuale