Ce module propose une fonction coherente pour transformer des valeurs ou chaines en un booleen.
Utilisation
Le wikicode ne permet pas de saisir directement des valeurs booleennes, seulement des chaines type ≪ oui ≫ ou ≪ non ≫. Ce module les evalue et determine une valeur booleenne
true
ou
false
que Lua pourra utiliser. Il retourne
nil
en l’absence de parametre, pour permettre la distinction entre
nil
et
false
. Lorsque ce parametre a une valeur imprevue, le module retourne la valeur par defaut ou
nil
.
Syntaxe
yesno
(
valeur
,
defaut
,
defautVide
)
valeur
? est la valeur a tester.
defaut
? valeur par defaut pour les valeurs qui ne sont assimilees ni a des booleens ni a
nil
.
defautVide
? si ce parametre n'est pas
nil
ce sera la valeur par defaut pour les chaines vides ou uniquement composees d'espaces, sauts de ligne…
Exemples
Il faut commencer par charger le module. Il ne peut etre appele que depuis un autre module Lua, il ne peut pas etre appele directement par un modele.
local
yesno
=
require
(
'Module:Yesno'
)
Certaines valeurs retournent toujours
true
, d'autres valeurs retournent toujours
false
. La valeur
nil
retourne toujours
nil
.
-- Ces valeurs retournent toujours true :
yesno
(
'oui'
)
yesno
(
'yes'
)
yesno
(
'y'
)
yesno
(
'true'
)
yesno
(
'on'
)
yesno
(
'1'
)
yesno
(
1
)
yesno
(
true
)
-- Ces valeurs retournent toujours false :
yesno
(
'non'
)
yesno
(
'no'
)
yesno
(
'n'
)
yesno
(
'false'
)
yesno
(
'off'
)
yesno
(
'0'
)
yesno
(
0
)
yesno
(
false
)
-- Une valeur nil retourne nil :
yesno
(
nil
)
Les chaines sont converties en minuscules avant d'etre evaluees :
-- Ces valeurs retournent toujours true :
yesno
(
'Oui'
)
yesno
(
'OUI'
)
yesno
(
'oUi'
)
yesno
(
'tRuE'
)
-- Ces valeurs retournent toujours false :
yesno
(
'Non'
)
yesno
(
'NON'
)
yesno
(
'nOn'
)
yesno
(
'fALsE'
)
Une valeur par defaut peut etre specifiee pour les valeurs autres que celles listees ci-dessus. Si aucune valeur par defaut n'est fournie le module retourne
nil
pour ces valeurs.
-- Ces valeurs retournent nil :
yesno
(
'foo'
)
yesno
({})
yesno
(
5
)
yesno
(
function
()
return
'Ceci est une fonction.'
end
)
-- Ces valeurs retournent true :
yesno
(
'foo'
,
true
)
yesno
({},
true
)
yesno
(
5
,
true
)
yesno
(
function
()
return
'This is a function.'
end
,
true
)
-- Ces valeurs retournent "bar" :
yesno
(
'foo'
,
'bar'
)
yesno
({},
'bar'
)
yesno
(
5
,
'bar'
)
yesno
(
function
()
return
'This is a function.'
end
,
'bar'
)
Une chaine vide est evaluee a la valeur du troisieme parametre s'il est defini, sinon a la valeur par defaut.
yesno
(
''
)
-- Retourne nil.
yesno
(
''
,
true
)
-- Retourne true.
yesno
(
''
,
true
,
nil
)
-- Retourne true.
yesno
(
''
,
true
,
false
)
-- Retourne false.
yesno
(
''
,
'foo'
,
'bar'
)
-- Retourne 'bar'.
Attention, cette derniere fonctionnalite est differente du module present sur
en:
qui n'a qu'une valeur par defaut.
Voir aussi
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return
function
(
val
,
default
,
emptyDefault
)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
if
type
(
val
)
==
'string'
then
val
=
val
:
lower
()
end
if
val
==
nil
then
return
nil
elseif
val
==
true
or
val
==
'yes'
or
val
==
'y'
or
val
==
'oui'
or
val
==
'o'
or
val
==
'true'
or
val
==
'on'
or
tonumber
(
val
)
==
1
then
return
true
elseif
val
==
false
or
val
==
'no'
or
val
==
'n'
or
val
==
'non'
or
val
==
'false'
or
val
==
'off'
or
tonumber
(
val
)
==
0
then
return
false
elseif
emptyDefault
~=
nil
and
type
(
val
)
==
'string'
and
val
:
match
(
'^%s*$'
)
then
return
emptyDefault
else
return
default
end
end