한국   대만   중국   일본 
Module:Correction syntaxique ? Wikipedia Aller au contenu

Module : Correction syntaxique

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipedia, l'encyclopedie libre.

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

Utilisation

Fonctions exportables :

  • verifierLesArguments(frame) ? verifie l'existence des arguments passes a un modele

Exemple

En placant dans la source d'un modele le code suivant, chaque appel du modele va verifier la presence d'arguments autres que nom , prenom et age  :

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

Si d'autres arguments sont presents, alors :

  • du code cache sera ecrit dans la page (visible en consultant la source HTML de la page, ou en affichant via CSS ou JavaScript les elements .erreur_syntaxe_modele )
  • et la page sera ajoutee dans la categorie cachee Page appelant un modele avec un parametre inconnu .

Configuration

Il est possible de specifier la categorie a remplir en ajoutant un parametre _categorie  :

{{#invoke: Correction syntaxique | verifierLesArguments
 | nom =
 | prenom =
 | age = 
 | _categorie = Categorie:Modele Foobar avec un parametre inconnu
}}

(la saisie du namespace Categorie: peut etre omise)

Semble remplir la meme 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 modele appele</span>"

		end

	end

	if
 (
nombre
 >
 0
)
 then

		local
 categorie

		if
 (
cat
)
 and
 (
cat
 ~=
 ""
)
 then

			categorie
 =
 tostring
(
mw
.
title
.
new
(
cat
,
 "Categorie"
))

		else

			categorie
 =
 "Categorie:Page appelant un modele avec un parametre 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
[
"_categorie"
]

	return
 _verif
(
passed_args
,
 modele_args
,
 cat
)

end


return
 p