rougail/doc/variable/type.md

133 lines
2.4 KiB
Markdown
Raw Normal View History

2023-10-12 08:17:30 +02:00
# Les variables à choix
## Une variable à choix
Il est possible d'imposer une liste de valeur pour une variable particulière :
```yml
---
version: '1.0'
my_variable:
type: choice
choices:
- val1
- val2
- val3
```
Dans ce cas, seules les valeurs proposées sont possibles pour cette variable.
Cette variable n'est pas obligatoire dont il est possible de mettre la valeur "None".
Si la variable est obligatoire ou si une valeur est précisée (la variable passe obligatoire) alors la valeur "None" n'est plus autorisé :
```yml
---
version: '1.0'
my_variable:
type: choice
choices:
- val1
- val2
- val3
default: val1
```
## Un variable à choix typée
Les choix sont typés :
```yml
---
version: '1.0'
my_variable:
type: choice
choices:
- val1
- 3
- true
default: val1
```
dans ce cas, le chiffre 3 est autorisé mais pas la chaine de caractère "3".
## Redéfinir une option à choix
Si on veut supprimer un choix ou redéfinir complètement la liste, il faut redéfinir cette variable et ajouter l'attribut "remove_choice" à "True" :
```yml
---
version: '1.0'
my_variable:
redefine: true
choices:
- val1
- val2
```
Dans ce cas toutes les anciens choix ne seront plus possible. Seuls les nouveaux le seront.
## Un variable à choix provenant de variable
Les choix d'une variable peuvent provenir d'une autre variable multiple :
```yml
---
version: '1.0'
source_variable:
multi: true
default:
- val1
- val2
my_variable:
type: choice
choices:
type: variable
variable: rougail.source_variable
```
Ou de plusieurs autres variables :
```yml
---
version: '1.0'
source_variable_1:
default: val1
source_variable_2:
default: val2
my_variable:
type: choice
choices:
- type: variable
variable: rougail.source_variable_1
- type: variable
variable: rougail.source_variable_2
```
Dans ce cas, toutes les valeurs de la variable ou des variables seront des choix utilisables par l'utilisateur.
## Un variable à choix provenant d'une fonction jinja
Faisons d'abord une fonction `trange` dans le fichier functions.py :
```python
def trange(min, max):
return range(min, ma
```
On va récupérer ici les valeurs de 0 à 9 :
```yml
---
version: '1.0'
my_variable:
type: choice
default: 9
choices:
type: jinja
jinja: |+
{% for item in trange(0, 10) %}
{{ item }}
{%- endfor %}
return_type: number
```