better choice documentation
This commit is contained in:
parent
b35d930d7e
commit
8d32ec9f01
8 changed files with 143 additions and 5 deletions
|
@ -1,6 +1,6 @@
|
|||
# Les variables à choix
|
||||
|
||||
## Les variables à choix simple
|
||||
## Une variable à choix
|
||||
|
||||
Il est possible d'imposer une liste de valeur pour une variable particulière :
|
||||
|
||||
|
@ -12,11 +12,10 @@ Il est possible d'imposer une liste de valeur pour une variable particulière :
|
|||
</variable>
|
||||
```
|
||||
|
||||
Dans ce cas, seules les valeurs proposées sont possibles pour cette variable. Mais il est possible de mettre la valeur "None".
|
||||
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".
|
||||
|
||||
## Les variables à choix avec valeur
|
||||
|
||||
Si on précise une valeur, la variable passe obligatoire et la valeur "None" n'est plus autorisé :
|
||||
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é :
|
||||
|
||||
```
|
||||
<variable name="my_variable" type="choice">
|
||||
|
@ -26,3 +25,67 @@ Si on précise une valeur, la variable passe obligatoire et la valeur "None" n'e
|
|||
<value>val1</value>
|
||||
</variable>
|
||||
```
|
||||
|
||||
## Un variable à choix typée
|
||||
|
||||
Par défaut les choix sont de type "string". Il est possible de préciser des nombres, des booléens ou la valeur None :
|
||||
|
||||
```
|
||||
<variable name="my_variable" type="choice">
|
||||
<choice>val1</choice>
|
||||
<choice type="string">val2</choice>
|
||||
<choice type="number">3</choice>
|
||||
<choice type="boolean">True</choice>
|
||||
<choice type="nil"/>
|
||||
</variable>
|
||||
```
|
||||
|
||||
Comme vu précédement ajouter la valeur None n'est pas utile parce qu'elle est automatiquement ajouté si la variable n'est pas obligatoire.
|
||||
|
||||
## Ajouter une option à une variable à choix existante
|
||||
|
||||
Pour ajouter un choix à une variable à choix existante, rien de plus simple, juste redéfinir la variable en ajoutant le choix voulu :
|
||||
|
||||
```
|
||||
<variable name="my_variable" redefine="True">
|
||||
<choice>val4</choice>
|
||||
</variable>
|
||||
```
|
||||
|
||||
## 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" :
|
||||
|
||||
```
|
||||
<variable name="my_variable" redefine="True" remove_choice="True">
|
||||
<choice>val1</choice>
|
||||
<choice>val2</choice>
|
||||
</variable>
|
||||
```
|
||||
|
||||
Dans ce cas toutes les anciens choix ne seront plus possible. Seuls les nouveaux le seront.
|
||||
|
||||
## Un variable à choix provenant d'une variable
|
||||
|
||||
Une variable à valeur multiple peut servir de source des choix :
|
||||
|
||||
```
|
||||
<variable name="my_variable" type="choice">
|
||||
<choice type="variable">other_variable</choice>
|
||||
</variable>
|
||||
```
|
||||
|
||||
Dans ce cas, toutes les valeurs de la variable seront des choix utilisables par l'utilisateur.
|
||||
Seul un choice de type "variable" est possible par variable.
|
||||
|
||||
## Un variable à choix provenant d'une fonction
|
||||
|
||||
```
|
||||
<variable name="my_variable" type="choice">
|
||||
<choice type="function" name="trange">
|
||||
<param type="number">0</param>
|
||||
<param type="number">10</param>
|
||||
</choice>
|
||||
<value type="number">9</value>
|
||||
</variable>
|
||||
```
|
||||
|
|
18
tests/dictionaries/10valid_enum_append/00-base.xml
Normal file
18
tests/dictionaries/10valid_enum_append/00-base.xml
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<rougail version="0.10">
|
||||
<variables>
|
||||
<family name="general" mode="expert">
|
||||
<variable name="mode_conteneur_actif" type="string" description="No change">
|
||||
<value>non</value>
|
||||
</variable>
|
||||
</family>
|
||||
<family name="enumfam" mode="expert">
|
||||
<variable name="enumvar" type="choice" description="multi" help="bla bla bla">
|
||||
<value type="string">b</value>
|
||||
<choice type="string">a</choice>
|
||||
<choice type="string">b</choice>
|
||||
</variable>
|
||||
</family>
|
||||
</variables>
|
||||
<constraints/>
|
||||
</rougail>
|
13
tests/dictionaries/10valid_enum_append/01-base.xml
Normal file
13
tests/dictionaries/10valid_enum_append/01-base.xml
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<rougail version="0.10">
|
||||
<variables>
|
||||
<family name="enumfam">
|
||||
<variable name="enumvar" redefine="True">
|
||||
<value type="string">c</value>
|
||||
<choice type="string">c</choice>
|
||||
</variable>
|
||||
</family>
|
||||
</variables>
|
||||
<constraints/>
|
||||
</rougail>
|
||||
|
0
tests/dictionaries/10valid_enum_append/__init__.py
Normal file
0
tests/dictionaries/10valid_enum_append/__init__.py
Normal file
10
tests/dictionaries/10valid_enum_append/makedict/after.json
Normal file
10
tests/dictionaries/10valid_enum_append/makedict/after.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"rougail.general.mode_conteneur_actif": {
|
||||
"owner": "default",
|
||||
"value": "non"
|
||||
},
|
||||
"rougail.enumfam.enumvar": {
|
||||
"owner": "default",
|
||||
"value": "c"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"rougail.general.mode_conteneur_actif": "non",
|
||||
"rougail.enumfam.enumvar": "c"
|
||||
}
|
10
tests/dictionaries/10valid_enum_append/makedict/before.json
Normal file
10
tests/dictionaries/10valid_enum_append/makedict/before.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"rougail.general.mode_conteneur_actif": {
|
||||
"owner": "default",
|
||||
"value": "non"
|
||||
},
|
||||
"rougail.enumfam.enumvar": {
|
||||
"owner": "default",
|
||||
"value": "c"
|
||||
}
|
||||
}
|
20
tests/dictionaries/10valid_enum_append/tiramisu/base.py
Normal file
20
tests/dictionaries/10valid_enum_append/tiramisu/base.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
from importlib.machinery import SourceFileLoader
|
||||
from importlib.util import spec_from_loader, module_from_spec
|
||||
loader = SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py')
|
||||
spec = spec_from_loader(loader.name, loader)
|
||||
func = module_from_spec(spec)
|
||||
loader.exec_module(func)
|
||||
for key, value in dict(locals()).items():
|
||||
if key != ['SourceFileLoader', 'func']:
|
||||
setattr(func, key, value)
|
||||
try:
|
||||
from tiramisu3 import *
|
||||
except:
|
||||
from tiramisu import *
|
||||
option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"expert", "mandatory"}))
|
||||
option_2 = OptionDescription(name="general", doc="general", children=[option_3], properties=frozenset({"expert"}))
|
||||
option_5 = ChoiceOption(name="enumvar", doc="multi", values=('a', 'b', 'c'), default="c", properties=frozenset({"expert", "mandatory"}))
|
||||
option_5.impl_set_information('help', "bla bla bla")
|
||||
option_4 = OptionDescription(name="enumfam", doc="enumfam", children=[option_5], properties=frozenset({"expert"}))
|
||||
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_4])
|
||||
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])
|
Loading…
Reference in a new issue