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 4 janvier 2018 à 15:17 et modifiée en dernier par Od1n (discuter | contributions) (élément inline pour éviter les erreurs de markup "block dans inline" (cf. 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 _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