Aller au contenu

Module:Correction syntaxique

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 14 juin 2022 à 20:53 et modifiée en dernier par Zebulon84 (discuter | contributions) (remplacement des retours lignes dans le message d'erreur pour éviter de casser le HTML (cf. page de discussion)). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 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