Commandes

Les commandes sont des morceaux de texte entourés de <# et #> que DocuMold exécute lors de la génération d’un document. Elles sont ce qui donne à DocuMold sa puissance.

Comme pour les commentaires, les commandes peuvent être placées n’importe où dans le modèle : au milieu d’un paragraphe, d’une table, etc. La seule limitation est qu’un commentaire ne peut pas être dans une commande et vice versa

Exemples

Voici quelques exemples que nous allons explorer :

  • <# nom_client #>
  • <# UPPER(nom_client) #>
  • <# nb_adultes + nb_enfants #>
  • <# TEXTBEFORE(serie, "-") #>
  • <# @IF(age < 18) #>
  • <# @ENDIF #>

Comme mentionné, les commandes commencent toutes par <# et se terminent par #> afin que DocuMold sache quoi traiter.

<# nom_client #>

Cette commande contient seulement nom_client.

Les mots qui commencent par une lettre minuscule sont des variables. Le trait de soulignement (_) permet d’écrire plusieurs mots dans le nom d’une variable.

Dans ce cas : lors de la génération d’un document à partir du modèle DocuMold, la valeur de la variable remplacera toute la commande dans le document.

Bonjour <# nom_client #>,

Avec un nom_client de “Anna Logwatch” résulte en :

Bonjour Anna Logwatch,

<# UPPER(nom_client) #>

Nous pouvons toujours voir la variable nom_client dans la commande ci-dessus, mais maintenant elle est donnée à la fonction UPPER. Les fonctions sont en LETTRES MAJUSCULES et sont un seul mot ou plusieurs avec des traits de soulignement (_). Les fonctions reçoivent une ou plusieurs valeurs et renvoient une nouvelle valeur.

Des parenthèses ( et ) sont placées autour des valeurs que la fonction reçoit.

Dans ce cas : lors de la génération d’un document à partir du modèle DocuMold, la valeur de nom_client est donnée à la fonction UPPER, laquelle renvoie le même texte en MAJUSCULES, qui remplacera toute la commande dans le document.

Bonjour <# UPPER(nom_client) #>,

Avec un nom_client de “Anna Logwatch” résulte en :

Bonjour ANNA LOGWATCH,

<# nb_adultes + nb_enfants #>

Ici, nous avons 2 variables, nb_adultes et nb_enfants. Le signe plus + fait une addition des valeurs avant et après lui.

Les opérateurs, comme le signe plus +, se comportent comme des fonctions en ce sens qu’ils reçoivent des valeurs et fournissent une nouvelle, mais ils n’utilisent pas de parenthèses pour recevoir des valeurs. Lorsque plusieurs opérateurs sont utilisés à la suite, ils sont évalués dans le même ordre qu’en mathématiques: la multiplication est calculée avant l’addition. Des parenthèses ( et ) peuvent être utilisées pour indiquer la priorité si nécessaire.

Dans ce cas : lors de la génération d’un document, la somme des deux variables remplacera toute la commande dans le document.

Nombre de billets : <# nb_adultes + nb_enfants #>

Un nb_adultes de 2 et un nb_enfants de 1 résulte en :

Nombre de billets : 3

<# TEXTBEFORE(serie, "-") #>

Ici, nous avons une fonction qui reçoit 2 valeurs. Une virgule , est utilisée pour séparer les valeurs qu’elle reçoit dans les parenthèses ( ).

C’est la fonction TEXTBEFORE, qui extrait la partie d’un texte qui est avant un délimiteur. Dans ce cas, le texte est dans la variable serie et le délimiteur est un -.

Vous pourriez remarquer les guillemets (") autour du tiret (-). Les guillemets entourent un morceau de texte que vous voulez utiliser tel quel. Donc "-" signifie le texte -. Sans les ", le texte pourrait ressembler à des variables, opérateurs et autres symboles que DocuMold traite de manière spéciale. Donc pour éviter cela, tout texte que vous souhaitez utiliser tel quel doit avoir des guillemets autour.

Donc <# TEXTBEFORE(serie, "-") #> utilise le contenu de la variable serie, tandis que <# TEXTBEFORE("serie", "-") #> utilise le texte serie seulement, ce que nous pouvons voir ne contient aucun tiret (-), mais DocuMold fait simplement ce qu’on lui dit.

Dans ce cas : lors de la génération d’un document, le texte avant le premier tiret (-) dans la variable serie remplacera la commande dans le document.

Numéro de modèle : <# TEXTBEFORE(serie, "-") #>

Avec une serie de “msk32-28371346”:

Numéro de modèle : msk32

<# @IF(age < 18) #> et <# @ENDIF #>

La première commande ci-dessus peut ressembler à une fonction, et en fait il y a une fonction IF, mais c’est en réalité l’action @IF. Les actions commencent toutes par une arobase (@). Elles indiquent à DocuMold quoi faire avec les valeurs.

Les actions sont toujours placées au début d’une commande, après le <#.

Aucun des exemples précédents n’a spécifié d’action, donc l’action par défaut a été utilisée : écrire la valeur dans le document à la place de la commande.

L’action @IF reçoit une valeur, la condition. Vous placez ensuite du contenu régulier après la commande, puis une autre commande : <# @ENDIF #>.

Lors de la génération d’un document, si la condition est TRUE, le contenu sera affiché (et les deux commandes simplement effacées). Si la condition est FALSE, alors le contenu et les deux commandes seront effacés.

Dans ce cas : lors de la génération d’un document, si la variable age est inférieure à 18, le contenu après la commande @IF et jusqu’à @ENDIF est affiché. Sinon, il ne l’est pas.

Informations générales

<# @IF(age < 18) #>
Restrictions pour les mineurs :
* ne peuvent pas aller dans la zone du bar.
...
<# @ENDIF #>

Plus d'informations

Avec age de 20 résulte en :

Informations générales

Plus d'informations

Avec age de 15 :

Informations générales

Restrictions pour les mineurs :
* ne peuvent pas aller dans la zone du bar.
...

Plus d'informations

Détails notables

Espaces et changements de ligne dans une commande

Les espaces et les changements de ligne peuvent être n’importe où dans une commande tant que vous ne divisez pas un nom (d’une variable, fonction ou action) ou un opérateur (comme >=).

Donc ceux-ci sont invalides :

  • <# UP P ER(nom_client) #> puisque UPPER ne doit pas avoir d’espaces
  • <# IF(age > = 18, "adulte") #> puisque > et = doivent être adjacents pour former l’opérateur >=

Les changements de ligne peuvent rendre les longues commandes plus faciles à lire et à modifier. Par exemple, cette ligne est souvent considérée plus difficile à lire:

<#IF(age>=18,"adulte")#>

Alors que les espaces additionnels aident à distinguer les différentes parties de la commande.

<# IF(age >= 18, "adulte") #>