Conditions
De nombreux outils dans DocuMold nécessitent une condition :
- Les fonctions
IF
etIFS
- Les actions
@IF
et@ELSEIF
Si vous n’êtes pas encore familier avec ces fonctions et actions, il peut être utile de lire d’abord Contenu conditionnel qui présente la plupart.
Ce document explore ce qui peut être utilisé comme conditions et comment en créer de plus complexes.
Ce qui constitue une condition
Dans DocuMold, une condition est vraiment juste quelque chose qui évalue à TRUE
ou FALSE
. Ces
deux valeurs sont les seules qui peuvent être données à IF
et à tous les autres outils qui attendent une condition.
Dans les tutoriels, les conditions utilisent presque toujours l’opérateur =
. Par exemple :
<# @IF(pays_client = "Canada") #>
Un Canadien
<# @ENDIF #>
Mais il y a bien plus d’outils que vous pouvez utiliser pour les conditions, nous allons les lister sous peu.
Puisque les conditions ne peuvent retourner que TRUE
ou FALSE
, les explications ci-dessous sont raccourcies en
ne mentionnant qu’un des 2 cas. Il y a une règle non écrite “sinon, renvoie l’autre valeur”.
Plus d’opérateurs de condition
Les opérateurs sont similaires aux fonctions. Ils reçoivent des valeurs et fournissent une nouvelle valeur. La différence est que les valeurs reçues sont celles à sa gauche et à sa droite.
Voici une liste des opérateurs que vous pouvez utiliser comme condition.
Tout d’abord, ces opérateurs peuvent être utilisés avec n’importe quel type de valeurs :
gauche = droite
: c’estTRUE
sigauche
est égal àdroite
gauche <> droite
: c’estTRUE
sigauche
est différent dedroite
Cependant, les opérateurs suivants sont uniquement disponibles lorsque gauche
et droite
sont des nombres :
gauche < droite
: c’estTRUE
sigauche
est plus petit quedroite
gauche > droite
: c’estTRUE
sigauche
est plus grand quedroite
gauche <= droite
: c’estTRUE
sigauche
est plus petit ou égal àdroite
gauche >= droite
: c’estTRUE
sigauche
est plus grand ou égal àdroite
Pour que gauche
et droite
soient des nombres (au lieu de texte contenant des chiffres), vous devez soit :
- utiliser l’action
@NUMBER_QUESTION
pour définir la variable comme un nombre - écrire une valeur numérique directement dans le code sans guillemets, ex :
âge >= 18
- utiliser une fonction qui convertit en nombre :
NUMBER(texte_contenant_des_nombres)
- utiliser une fonction qui renvoie un nombre :
FIND("tout", "bonjour tout le monde")
donne la position du premier texte à l’intérieur du second, qui est le nombre9
Voici des exemples avec certains de ces différents opérateurs :
<# IF(âge >= 18, "Un adulte", "Un non-adulte") #>
<# @IF(pays_client <> "Canada") #>
Un non-Canadien
<# @ENDIF #>
Fonctions comme conditions
Certaines fonctions renvoient soit TRUE
, soit FALSE
; elles peuvent aussi être utilisées comme condition. Quelques exemples :
CAN_FIND(texte_à_trouver, dans_texte)
: renvoieTRUE
sitexte_à_trouver
est dansdans_texte
, sensible à la casseCAN_SEARCH(texte_à_trouver, dans_texte)
: renvoieTRUE
sitexte_à_trouver
est dansdans_texte
, insensible à la casseCONTAIN(liste, valeur)
: renvoieTRUE
siliste
contient lavaleur
Voici un exemple :
<# @IF(CONTAIN(avantages_sélectionnés, "mariage")) #>
Un mariage est prévu le....
<# @ENDIF #>
Combiner les conditions
Vous voudrez peut-être combiner plusieurs conditions. Ces 2 fonctions reçoivent autant de conditions que vous
le souhaitez et renvoient TRUE
ou FALSE
:
AND(cond1, cond2...)
: renvoieTRUE
si chaque condition estTRUE
OR(cond1, cond2...)
: renvoieTRUE
si au moins une condition estTRUE
Vous pouvez aussi inverser une condition avec ceci :
NOT(condition)
: renvoieTRUE
sicondition
estFALSE
, renvoieFALSE
sicondition
estTRUE
Exemple complet :
<# @IF(AND(boissons_demandées, âge < 18)) #>
Désolé, mais vous n'êtes pas autorisé à boire des boissons alcoolisées.
<# @ENDIF #>
<# IF(OR(âge >= 18, est_avec_adulte), "Est autorisé sur les pistes difficiles") #>
Variables comme condition
Si la valeur d’une variable est TRUE
ou FALSE
, elle peut être utilisée directement comme condition.
Certaines façons dont cela peut arriver :
- action
@YES_NO_QUESTION
: la variable est définie soit àTRUE
, soit àFALSE
- action
@PICK_ONE_QUESTION
: peut définir la variable à une valeur de votre choix, qui peut êtreTRUE
ouFALSE
Ex :@PICK_ONE_QUESTION(est_adulte, choix: [["Adulte", TRUE], ["Enfant", FALSE]])
Chaîner les opérateurs
DocuMold vous permet de “chaîner” les opérateurs de condition. C’est un petit raccourci lorsque vous voulez comparer plusieurs valeurs.
sample = dm_sample(%{
<# IF(18 <= âge < 65, "Adulte régulier") #>
}).test_with({âge: 70}, %{
}).test_with({âge: 19}, %{
Adulte régulier
})
Cette condition serait TRUE
si âge
est 18 ou plus, mais aussi plus petit que 65.
Chaque opérateur est appliqué sur les valeurs à sa gauche et à sa droite : 18 <= âge
et âge < 65
. Le résultat final
est TRUE
si chaque opérateur a donné TRUE
.
L’équivalent sans chaînage serait :
sample = dm_sample(%{
<# IF(AND(18 <= âge, âge < 65), "Adulte régulier") #>
}).test_with({âge: 70}, %{
}).test_with({âge: 19}, %{
Adulte régulier
})
Autres choses à lire
L’utilisation principale des conditions est pour le contenu conditionnel. Voici un tutoriel à ce sujet : Contenu conditionnel.