rougail/doc/condition/README.md

5.5 KiB

Table of Contents

Les propriétés calculées

Synopsis

Les propriétés calculées permettent d'ajouter ou de supprimer des propriétés à une variable ou une famille suivant le contexte.

Voici la liste des propriétés modifiables :

Attribut applicable sur Nom de la propriétée Commentaire
Variable
Famille
hidden Cache une variable ou famille, dans ce cas elle n'est pas accessible en lecture écriture, mais reste accessible dans un calcul ou en lecture seule
Variable
Famille
disabled Désactive une variable ou famille, dans ce cas elle n'est jamais accessible
Variable mandatory La variable attend une valeur autre que None ou [] pour les variables multiple

Une propriété peut être calculée. Dans ce cas on a deux possibilités :

  • calcul via Jinja
  • calcul via une variable

Paramètres

Suivant les types de calcul les paramètres vont être différents :

Type de calcul Paramètre Commentaires Exemple
type
string
mandatory
Type du calcul, les valeurs possible sont : jinja, variable, information, suffix ou index jinja
Jinja jinja
string
mandatory
Template Jinja. Pour une variable multiple, chaque ligne représente une valeur. {% if rougail.variable %}{{ rougail.variable }}{% endif %}
Jinja params
list
Paramètres complémentaire passé au template Jinja
Variable variable
string
mandatory
Nom de la variable associée. ⚠️ La variable doit être de type boolean. rougail.variable
Variable propertyerror
boolean
Si l'accès à la variable n'est pas possible à cause d'une propriété (par exemple disabled) par défaut une erreur est retournée. Si l'attribut est à False, la valeur calculée est False.
Valeur par défaut : True
False

Dans le cas d'un calcul de type Jinja, il est possible d'avoir des paramètres.

Il existe deux types de paramètre :

  • les paramètres standards (string, boolean, integer, null), dans ce il suffit de faire : "key: value"

  • les paramètres avancés :

    • paramètre via une variable
    • paramètre via une information
    • paramètre via un suffix : dans le cas d'une variable dans une famille dynamique
    • paramètre via un index : dans le cas d'une variable suiveuse
Type du paramètre Paramètre Commentaires Exemple
name
string
mandatory
Le nom du paramètre my_param
type
string
mandatory
Type du paramètre, les valeurs possible sont : variable, information, suffix ou index suffix
Variable variable
string
mandatory
Nom de la variable rougail.variable
Variable (mandatory)
Information
propertyerror
boolean
Si l'accès à la variable n'est pas possible à cause d'une propriété (par exemple disabled) par défaut une erreur est retournée. Si l'attribut est à False, le paramètre n'est pas passé au template Jinja.
Valeur par défaut : True
False
Variable optional
boolean
La variable peut ne pas exister suivant les importations de fichier YAML. Si le paramètre optional est à True, le paramètre sera tout simplement supprimer si la variable n'existe pas.
Valeur par défaut : False
True
Information information
string
mandatory
Nom de l'information dont on veut récupérer la valeur. doc

Exemples

Une propriété calculée de type Jinja

Il est possible d'écrire la condition en Jinja :

---
version: '1.0'
condition:
  default: 'do not hide!'
my_variable:
  hidden:
    type: jinja
    jinja: |
      {% if rougail.condition and rougail.condition == "hide!" %}
      this rougail.condition value is 'hide!'
      {% endif %}      

Dans ce cas la variable est cachée si la valeur de la variable "rougail.condition" est hide! et elle n'a pas caché pour tout autre valeur. Attention toujours prendre en considération que "rougail.condition" peut être égale à None.

Le message retourner par la fonction est visible dans le message d'erreur en cas de problème d'accès :

>>> from rougail import Rougail, RougailConfig
>>> RougailConfig['dictionaries_dir'] = ['dict']
>>> rougail = Rougail()
>>> config = rougail.get_config()
>>> config.property.read_write()
[..]
tiramisu.error.PropertiesOptionError: cannot access to option "my_variable" because has property "hidden" (this rougail.condition value is 'hide!')

Il est possible d'utiliser des paramètres lors du calcul des propriétés comme pour le calcul de l'attribut default.

Une propriété calculée de type variable

Une variable peut donc être calculé via la résultat d'une autre variable. Attention, cette autre variable doit obligatoirement être de type boolean :

---
version: '1.0'
condition:
  type: boolean
my_variable:
  hidden:
    type: variable
    variable: rougail.condition

Si la valeur de la variable "rougail.condition" est True alors la variable "rougail.my_variable" est cachée.

Rédéfinition

Il se peut que dans un dictionnaire on décide de définir une condition.

Pour supprimer le calcul à partir d'une variable il suffit de faire dans un nouveau dictionnaire :

---
version: '1.0'
my_variable:
  redefine: true
  hidden: