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

Module : Yesno

Cette page est protégée.
Une page de Wikipedia, l'encyclopedie libre.

 Documentation [ voir ] [ modifier ] [ historique ] [ purger ]
warning  Attention: Ne pas modifier. Cette page est maintenue par un bot . Toutes les modifications doivent etre effectuees sur mediawiki.org .? ( traduisez cet avertissement )
Merci de nous aider a traduire cette page.

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