Aller plus loin avec la syntaxe avancée

Centre d'Aide

L’une des fonctionnalités les plus puissantes de DocuGenerate est l’option de syntaxe avancée. Cette fonctionnalité étend les capacités par défaut, offrant une expérience plus riche et plus polyvalente lors de la conception de vos modèles.

Par défaut, lors de la création d’un nouveau modèle, l’option de syntaxe avancée est désactivée. Pour l’activer, accédez au panneau Settings du modèle et cochez la case intitulée Enable enhanced syntax.

Une fois activée, la syntaxe avancée offre plusieurs fonctionnalités avancées.

Propriétés d’objets imbriqués

La syntaxe avancée vous permet d’accéder directement aux propriétés d’objets imbriqués dans le modèle.

Par exemple, si vous avez ces données :

[{
  "item": {
    "name": "Car"
  }
}]

Vous pouvez accéder à la propriété name avec cette syntaxe :

[item.name]

Sans la syntaxe avancée, la structure de données devrait ressembler à ceci :

[{
  "item.name": "Car"
}]

Expressions logiques et mathématiques

Avec la syntaxe avancée activée, vous pouvez utiliser des expressions logiques et mathématiques directement dans votre modèle, telles que +, -, *, /, >, <, ==, !=, <=, >=.

Vous pouvez créer des déclarations conditionnelles complexes avec la syntaxe avancée :

[#items.length > 1]
There are multiple items.
[/]

La syntaxe avancée prend également en charge les opérateurs suivants :

  • Ternaires : a ? b : c
  • Égalité / Inégalité : a == 1, a != 1
  • Relationnels : a > 1, a < 1, a >= 1, a <= 1
  • ET logique : a && b
  • OU logique : a || b
  • Addition : a + b
  • Soustraction : a - b
  • Multiplication : a * b
  • Modulo : a % b
  • Division : a / b
  • Affectations : a = 1
  • Priorité des opérateurs avec parenthèses : (a && b) || c

Limitation des espaces

Avec la syntaxe avancée activée, vous devez être conscient de la manière dont les espaces sont interprétés dans vos données JSON.

Dans les données JSON, une propriété contenant des espaces, comme "First Name": "John", correspondrait normalement à la balise de fusion [First Name]. Cependant, avec la syntaxe avancée activée, DocuGenerate ne reconnaît pas les espaces au sein des balises de fusion. Par conséquent, les propriétés contenant des espaces doivent être écrites avec une notation différente dans vos données JSON.

Par exemple, au lieu de :

[{
  "First Name": "John"
}]

Vous devriez utiliser :

[{
  "First_Name": "John"
}]

Ensuite, dans votre modèle, vous pouvez utiliser la balise de fusion [First_Name] pour référencer cette donnée. Si la propriété est imbriquée dans un autre objet, vous pouvez y accéder comme ceci : [User.First_Name].

N’oubliez pas que cette limitation s’applique uniquement lorsque la syntaxe avancée est activée. Si elle est désactivée, les espaces au sein des balises de fusion seront reconnus normalement. Cela vous donne la flexibilité de choisir la meilleure approche pour vos données et vos modèles.

Exemples

Exemple 1 : Afficher du contenu en fonction d’une valeur booléenne

Modèle :

[#client.has_discount]
You have a discount of [client.discount] on your next purchase.
[/]

Données JSON :

[{
  "client": {
    "has_discount": true,
    "discount": "15%"
  }
}]

Résultat :

You have a discount of 15% on your next purchase.

Exemple 2 : Afficher un contenu différent selon une comparaison de valeurs

Modèle :

[#age >= 18]
You are eligible to vote.
[/]
[#age < 18]
You are not eligible to vote.
[/]

Données JSON :

[{
  "age": 2
}]

Résultat :

You are not eligible to vote.

Exemple 3 : Afficher du contenu en fonction d’une expression logique

Modèle :

[#client.is_vip && client.purchase_amount > 500]
As a VIP member who spent $[client.purchase_amount], you are entitled to a gift!
[/]

Données JSON :

[{
  "client": {
    "is_vip": true,
    "purchase_amount": 1000
  }
}]

Résultat :

As a VIP member who spent $1000, you are entitled to a gift!