SFTG Recherche, soutient un projet d'analyse de l'usage, de l'intérêt et de la contribution à ce site. Merci d'avoir répondu à l'enquête.
Module:Correction syntaxique
Révision datée du 24 février 2019 à 15:16 par Yves.bertin (discussion | contributions) (1 révision importée)
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 _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 " .. mw.text.nowiki(a) .. " (valeur " .. mw.text.nowiki(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