Conditions
De nombreux outils dans DocuMold nécessitent une condition :
- Les fonctions
IFetIFS - Les actions
@IFet@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’estTRUEsigaucheest égal àdroitegauche <> droite: c’estTRUEsigaucheest différent dedroite
Cependant, les opérateurs suivants sont uniquement disponibles lorsque gauche et droite sont des nombres :
gauche < droite: c’estTRUEsigaucheest plus petit quedroitegauche > droite: c’estTRUEsigaucheest plus grand quedroitegauche <= droite: c’estTRUEsigaucheest plus petit ou égal àdroitegauche >= droite: c’estTRUEsigaucheest 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_QUESTIONpour 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): renvoieTRUEsitexte_à_trouverest dansdans_texte, sensible à la casseCAN_SEARCH(texte_à_trouver, dans_texte): renvoieTRUEsitexte_à_trouverest dansdans_texte, insensible à la casseCONTAIN(liste, valeur): renvoieTRUEsilistecontient 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...): renvoieTRUEsi chaque condition estTRUEOR(cond1, cond2...): renvoieTRUEsi au moins une condition estTRUE
Vous pouvez aussi inverser une condition avec ceci :
NOT(condition): renvoieTRUEsiconditionestFALSE, renvoieFALSEsiconditionestTRUE
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 êtreTRUEouFALSEEx :@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.