Va ô cuntinutu

Mòdulu:Bio/Paràmitri

Dâ Wikipedia, la nciclupidìa lìbbira.

La ducumintazzioni di stu mòdulu si pò criari nta Mòdulu:Bio/Paràmitri/doc

local config = {}

--[[
Configurazione dei parametri del Modulo:Bio.
Definisce quali sono gli unici parametri accettati.
]]
config.params = {
	["Tìtulu"] = true,
	["Nomu"] = true,
	["Cugnomu"] = true,
	["Suprannomu"] = true,
	["DoppuSuprannomu"] = true,
	["CanusciutuComu"] = true,
	["DoppuCanusciutuComu"] = true,
	["DoppuCugnomu"] = true,
	["DoppuCugnomuVìrgula"] = true,
	["FurzaUrdinamentu"] = true,
	["PreData"] = true,
	["Gèniri"] = true,
	["LocuNàscita"] = true,
	["LocuNàscitaLijami"] = true,
	["LocuNàscitaAutru"] = true,
	["JornuMisiNàscita"] = true,
	["AnnuNàscita"] = true,
	["NotiNàscita"] = true,
	["LocuMorti"] = true,
	["LocuMortiLijami"] = true,
	["LocuMortiAutru"] = true,
	["JornuMisiMorti"] = true,
	["AnnuMorti"] = true,
	["NotiMorti"] = true,
	["Floruit"] = true,
	["PreAttività"] = true,
	["Èbbica"] = true,
	["Èbbica2"] = true,
	["Attività"] = true,
	["Attività2"] = true,
	["Attività3"] = true,
	["AttivitàAutri"] = true,
	["Nazziunalità"] = true,
	["NazziunalitàNaturalizzatu"] = true,
	["Cittadinanza"] = true,
	["DoppuNazziunalità"] = true,
	["Catigurìi"] = true,
	["FiniÌncipit"] = true,
	["Puntu"] = true,
	["Mmàggini"] = true,
	["Didascalìa"] = true,
	["Didascalìa2"] = true,
	["GrannizzaMmàggini"] = true,
	["CugnomuPrima"] = 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("Mòdulu:Bio/Cunfigurazzioni").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["AnnuNàscita"] then
		annoNascita = tonumber(args["AnnuNàscita"])
		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 = "Gèniri", valuetest = "^[MF]$", errmsg = "u valuri dû paràmitru Gèniri nun è vàlitu, accittatu sulu 'M' o 'F'" },
	{ param = "Èbbica", valuetest = checkEpoca, errmsg = "u valuri dû paràmitru Èbbica nun è vàlitu" },
	{ param = "Èbbica2", valuetest = checkEpoca, errmsg = "u valuri dû paràmitru Èbbica2 nun è vàlitu" },
	{ param = "Èbbica2", valuetest = hasParam("Èbbica"), errmsg = "Èbbica2 è usatu ma Èbbica è vacanti" },
	{ param = "Èbbica2", valuetest = diffParam("Èbbica"), errmsg = "Èbbica2 àvi u stissu valuri di Èbbica" },
	{ param = "Puntu", valuetest = "^no$", errmsg = "u valuri dû paràmitru Puntu nun è vàlitu, accittatu sulu 'no'" },
	{ param = "GrannizzaMmàggini", valuetest = "^%d+$", errmsg = "u valuri dû paràmitru GrannizzaMmàggini nun è vàlitu, mèttiri a grannizza senza px" },
	{ param = "Catigurìi", valuetest = "^no$", errmsg = "u valuri dû paràmitru Catigurìi nun è vàlitu, accittatu sulu 'no'" },
	{ param = "DoppuNazziunalità", valuetest = checkPeriod, errmsg = "DoppuNazziunalità accumincia cû puntu. Sposta u cuntinutu ô rigu doppu, doppu a chiujuta dû mudeḍḍu Bio"  },
	{ param = "DoppuNazziunalità", valuetest = checkLen1000 },
	{ param = "FiniÌncipit", valuetest = checkLen1000 },
	{ param = "DoppuCugnomuVìrgula", valuetest = unusedParam("DoppuCugnomu"), errmsg = "DoppuCugnomu e DoppuCugnomuVìrgula nun si ponnu usari nzèmmula" },
	{ param = "AnnuNàscita", valuetest = checkQuestionMark, errmsg = "u valuri di AnnuNàscita nun è vàlitu: si scanusciutu s'hâ lassari vacanti, e u mudeḍḍu mustrarà i punti di suspinzioni" },
	{ param = "AnnuNàscita", valuetest = checkEllipsis, errmsg = "u valuri '...' di AnnuNàscita nun è vàlitu: si scanusciutu s'hâ lassari vacanti, e u mudeḍḍu mustrarà i punti di suspinzioni" },
	{ param = "AnnuMorti", valuetest = checkEllipsis, errmsg = "u valuri '...' di AnnuMorti nun è vàlitu: si scanusciutu s'hâ mèttiri '?', e u mudeḍḍu mustrarà i punti di suspinzioni" },
	{ param = "AnnuMorti", valuetest = checkMorteDopoNascita, errmsg = "u valuri dû paràmitru AnnuMorti veni prima di AnnuNàscita" },
	{ param = "LocuNàscitaLijami", valuetest = hasParam("LocuNàscita"), errmsg = "LocuNàscitaLijami è usatu ma LocuNàscita è vacanti" },
	{ param = "LocuNàscitaLijami", valuetest = diffParam("LocuNàscita"), errmsg = "LocuNàscitaLijami s'hâ usari sulu si diversu di LocuNàscita" },
	{ param = "LocuNàscitaAutru", valuetest = hasParam("LocuNàscita"), errmsg = "LocuNàscitaAutru è usatu ma LocuNàscita è vacanti" },
	{ param = "LocuMortiLijami", valuetest = hasParam("LocuMorti"), errmsg = "LocuMortiLijami è usatu ma LocuMorti è vacanti" },
	{ param = "LocuMortiLijami", valuetest = diffParam("LocuMorti"), errmsg = "LocuMortiLijami s'hâ usari sulu si diversu di LocuMorti" },
	{ param = "LocuMortiAutru", valuetest = hasParam("LocuMorti"), errmsg = "LocuMortiAutru è usatu ma LocuMorti è vacanti" },
	{ param = "LocuMorti", valuetest = hasParam("AnnuMorti"), errmsg = "LocuMorti è usatu ma AnnuMorti è vacanti" },
	{ param = "JornuMisiMorti", valuetest = hasParam("AnnuMorti"), errmsg = "JornuMisiMorti è usatu ma AnnuMorti è vacanti" },
	{ param = "Floruit", valuetest = unusedParam("AnnuNàscita"), errmsg = "AnnuNàscita e Floruit non si ponnu usari nzèmmula" },
	{ param = "Attività3", valuetest = hasParam("Attività2"), errmsg = "Attività3 è usatu ma Attività2 è vacanti" }
}

return config