--- gitea: none include_toc: true --- # 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](../variable/README.md) ou une [famille](../family/README.md) 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 : ```yml --- 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 : ```python >>> 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`](../fill/README.md). ### 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` : ```yml --- 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 : ```yml --- version: '1.0' my_variable: redefine: true hidden: ```