Modulo:Bio/Parametri

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

Modulo:Bio/Parametri
Info Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Bio/Parametri/man (modifica · cronologia)
Sandbox: Modulo:Bio/Parametri/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Bio/Parametri/test

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 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)
	-- non è valida una squenza di uno o più punti interrogativi
	return not value:match("^[%?]+$")
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 = "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

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.