« Module:Correction syntaxique » : différence entre les versions

Une page de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Zolo (discuter | contributions)
sépare récup des arguments et logique reste de la fonction pour pouvoir utiliser le module simplement depuis Lua
Zebulon84 (discuter | contributions)
remplacement des retours lignes dans le message d'erreur pour éviter de casser le HTML (cf. page de discussion)
 
(6 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
local p = {}
local p = {}


function p.verif(passed_args, modele_args)
local function sanitize(text)
return mw.text.nowiki(tostring(text):gsub('\n', ' ↲ '))
local rv = ""
end
local nombre = 0

for a,b in pairs(passed_args) do
local function _verif(passed_args, modele_args, cat)
if (modele_args[a] == nil and b ~= "") then
local rv = ""
nombre = nombre + 1
local nombre = 0
rv = rv .. '<div class="erreur_syntaxe_modele" style="display:none">' .. "L'argument " .. mw.text.nowiki(a) .. " (valeur " .. mw.text.nowiki(b) .. ") n'existe pas dans le modèle appelé</div>"
for a,b in pairs(passed_args) do
end
if (modele_args[a] == nil and b ~= "") then
end
if (nombre > 0) then
nombre = nombre + 1
rv = rv ..
local categorie
'<span class="erreur_syntaxe_modele" style="display:none">L’argument ' ..
if (modele_args["_catégorie"] and modele_args["_catégorie"] ~= "") then
sanitize(a) ..
categorie = tostring(mw.title.new(modele_args["_catégorie"], "Catégorie"))
" (valeur " ..
else
sanitize(b) ..
categorie = "Catégorie:Page appelant un modèle avec un paramètre inconnu"
") n’existe pas dans le modèle appelé</span>"
end
end
if (nombre > 10) then
end
rv = rv .. "[[" .. categorie .. "|+]]"
if (nombre > 0) then
else
rv = rv .. "[[" .. categorie .. "]]"
local categorie
if (cat) and (cat ~= "") then
end
categorie = tostring(mw.title.new(cat, "Catégorie"))
end
else
return rv
categorie = "Catégorie:Page appelant un modèle avec un paramètre inconnu"
end
if (nombre > 10) then
rv = rv .. "[[" .. categorie .. "|+]]"
else
rv = rv .. "[[" .. categorie .. "]]"
end
end
return rv
end

function p.verif( passed_args, modele_args_list, cat )
local modele_args = {}
for i, v in ipairs( modele_args_list ) do
if tonumber( v ) then
modele_args[ tonumber( v ) ] = true
else
modele_args[ v ] = true
end
end
return _verif( passed_args, modele_args, cat )
end
end


function p.verifierLesArguments(frame)
function p.verifierLesArguments(frame)
local passed_args = frame:getParent().args
local passed_args = frame:getParent().args
local modele_args = frame.args
local modele_args = frame.args
p.verif(passed_args, modele_args)
local cat = modele_args["_catégorie"]
return _verif(passed_args, modele_args, cat)
end
end



Dernière version du 14 juin 2022 à 20:53

 Documentation[voir] [modifier] [historique] [purger]

Utilisation

Fonctions exportables :

  • verifierLesArguments(frame) – vérifie l'existence des arguments passés à un modèle

Exemple

En plaçant dans la source d'un modèle le code suivant, chaque appel du modèle va vérifier la présence d'arguments autres que nom, prenom et age :

{{#invoke: Correction syntaxique | verifierLesArguments
 | nom =
 | prenom =
 | age = 
}}

Si d'autres arguments sont présents, alors :

  • du code caché sera écrit dans la page (visible en consultant la source HTML de la page, ou en affichant via CSS ou JavaScript les éléments .erreur_syntaxe_modele)
  • et la page sera ajoutée dans la catégorie cachée Page appelant un modèle avec un paramètre inconnu.

Configuration

Il est possible de spécifier la catégorie à remplir en ajoutant un paramètre _catégorie :

{{#invoke: Correction syntaxique | verifierLesArguments
 | nom =
 | prenom =
 | age = 
 | _catégorie = Catégorie:Modèle Foobar avec un paramètre inconnu
}}

(la saisie du namespace Catégorie: peut être omise)

Semble remplir la même fonction que Module:Check for unknown parameters.

local p = {}

local function sanitize(text)
	return mw.text.nowiki(tostring(text):gsub('\n', ' ↲ '))
end

local function _verif(passed_args, modele_args, cat)
	local rv = ""
	local nombre = 0
	for a,b in pairs(passed_args) do
		if (modele_args[a] == nil and b ~= "") then
			nombre = nombre + 1
			rv = rv ..
				'<span class="erreur_syntaxe_modele" style="display:none">L’argument ' ..
				sanitize(a) ..
				" (valeur " ..
				sanitize(b) ..
				") n’existe pas dans le modèle appelé</span>"
		end
	end
	if (nombre > 0) then
		local categorie
		if (cat) and (cat ~= "") then
			categorie = tostring(mw.title.new(cat, "Catégorie"))
		else
			categorie = "Catégorie:Page appelant un modèle avec un paramètre inconnu"
		end
		if (nombre > 10) then
			rv = rv .. "[[" .. categorie .. "|+]]"
		else
			rv = rv .. "[[" .. categorie .. "]]"
		end
	end
	return rv
end

function p.verif( passed_args, modele_args_list, cat )
	local modele_args = {}
	for i, v in ipairs( modele_args_list ) do
		if tonumber( v ) then
			modele_args[ tonumber( v ) ] = true
		else
			modele_args[ v ] = true
		end
	end
	return _verif( passed_args, modele_args, cat )
end

function p.verifierLesArguments(frame)
	local passed_args = frame:getParent().args
	local modele_args = frame.args
	local cat = modele_args["_catégorie"]
	return _verif(passed_args, modele_args, cat)
end

return p