reorganise

This commit is contained in:
Emmanuel Garette 2021-02-06 17:11:17 +01:00
parent 9ac13d4da9
commit ac44b1857b
4 changed files with 99 additions and 71 deletions

5
doc/family/REAME.md Normal file
View File

@ -0,0 +1,5 @@
# Famille
- [Une famille](simple.md)
- [Famille crée dynamiquement](auto.md)

29
doc/family/auto.md Normal file
View File

@ -0,0 +1,29 @@
# Famille crée dynamiquement
Pour créer une famille dynamiquement, il faut créer une family fictive lié à une variable.
Le nom et la description de la famille et des variables qu'elle contient sera en réalité le prefix du nouveau nom/description. Le suffix viendra de la variable liée.
Par exemple :
```
<family name='my_family'>
<variable name='varname' multi="True">
<value>val1</value>
<value>val2</value>
</variable>
</family>
<family name='my_dyn_family_' dynamic="varname description="Describe "">
<variable name='my_dyn_var_'/>
</family>
```
Créera trois familles :
- la famille : "my_family"
- la famille dynamique : "my_dyn_family_val1" avec la description "Describe val1"
- la famille dynamique : "my_dyn_family_val2" avec la description "Describe val2"
Dans la famille dynamique "my_dyn_family_val1" on retrouvera une variable "my_dyn_var_val1".
Bien évidement si le contenu de "varname" venait a évolué, de nouvelles familles dynamiques pouvent apparaitre ou des familles dynamiques peuvent disparaître.

View File

@ -1,6 +1,4 @@
# Famille # Une famille
## Une famille
Une famille est un conteneur de variables. Une famille est un conteneur de variables.
@ -56,32 +54,3 @@ Pour cacher une famille :
``` ```
<family name="my_family" hidden="True"/> <family name="my_family" hidden="True"/>
``` ```
## Famille crée dynamiquement
Pour créer une famille dynamiquement, il faut créer une family fictive lié à une variable.
Le nom et la description de la famille et des variables qu'elle contient sera en réalité le prefix du nouveau nom/description. Le suffix viendra de la variable liée.
Par exemple :
```
<family name='my_family'>
<variable name='varname' multi="True">
<value>val1</value>
<value>val2</value>
</variable>
</family>
<family name='my_dyn_family_' dynamic="varname description="Describe "">
<variable name='my_dyn_var_'/>
</family>
```
Créera trois familles :
- la famille : "my_family"
- la famille dynamique : "my_dyn_family_val1" avec la description "Describe val1"
- la famille dynamique : "my_dyn_family_val2" avec la description "Describe val2"
Dans la famille dynamique "my_dyn_family_val1" on retrouvera une variable "my_dyn_var_val1".
Bien évidement si le contenu de "varname" venait a évolué, de nouvelles familles dynamiques pouvent apparaitre ou des familles dynamiques peuvent disparaître.

View File

@ -2,7 +2,9 @@
Une variable calculée est une variable donc sa valeur est le résultat d'une fonction python. Une variable calculée est une variable donc sa valeur est le résultat d'une fonction python.
## Variable avec une valeur par défaut calculée ## Valeur de la variable
### Variable avec une valeur par défaut calculée
Créons une variable dont la valeur est retournée par la fonction "return_no" : Créons une variable dont la valeur est retournée par la fonction "return_no" :
@ -26,7 +28,7 @@ def return_no():
Dans ce cas, la valeur par défaut est la valeur retournée par la fonction (ici "no"), elle sera calculée tant que l'utilisateur n'a pas de spécifié une valeur à cette variable. Dans ce cas, la valeur par défaut est la valeur retournée par la fonction (ici "no"), elle sera calculée tant que l'utilisateur n'a pas de spécifié une valeur à cette variable.
Si l'utilisateur à définit une valeur par défaut à "my_calculated_variable" : Attention, si une valeur par défaut est définit dans la variable "my_calculated_variable" :
``` ```
<variable name="my_calculated_variable"> <variable name="my_calculated_variable">
@ -34,9 +36,9 @@ Si l'utilisateur à définit une valeur par défaut à "my_calculated_variable"
</variable> </variable>
``` ```
Cette valeur par défaut sera complètement ignorée. Cette valeur par défaut sera complètement ignorée. C'est le calcul qui en définira la valeur.
## Variable avec une valeur calculée ### Variable avec une valeur calculée
En ajoutant le paramètre "hidden" à "True" dans la variable précédente, l'utilisateur n'aura plus la possibilité de modifié la valeur. La valeur de la variable sera donc systématiquement calculée : En ajoutant le paramètre "hidden" à "True" dans la variable précédente, l'utilisateur n'aura plus la possibilité de modifié la valeur. La valeur de la variable sera donc systématiquement calculée :
@ -46,12 +48,14 @@ En ajoutant le paramètre "hidden" à "True" dans la variable précédente, l'ut
Si une condition "hidden_if_in" est spécifié à la variable, la valeur sera modifiable par l'utilisateur si elle n'est pas cachée mais elle sera systèmatiquement calculée (même si elle a déjà était modifiée) si la variable est cachée. Si une condition "hidden_if_in" est spécifié à la variable, la valeur sera modifiable par l'utilisateur si elle n'est pas cachée mais elle sera systèmatiquement calculée (même si elle a déjà était modifiée) si la variable est cachée.
## Variable avec valeur calculée obligatoire ### Variable avec valeur calculée obligatoire
Par défaut les variables calculées ne sont pas des varibles obligatoires. Par défaut les variables calculées ne sont pas des variables obligatoires.
Dans ce cas un calcul peut retourner None, mais surtout un utilisateur peut spécifier une valeur nulle à cette variable. Dans ce cas le calcul ne sera pas réalisé. Dans ce cas un calcul peut retourner "None" ou "", mais surtout un utilisateur peut spécifier une valeur nulle à cette variable. Dans ce cas le calcul ne sera plus réalisé.
## Fonction avec une valeur fixe comme paramètre positionnel ## Paramètre de la fonction
### Paramètre positionnel
Déclarons un calcul avec paramètre : Déclarons un calcul avec paramètre :
@ -72,7 +76,7 @@ def return_value(value):
La variable aura donc "no" comme valeur puisque le paramètre aura la valeur fixe "no". La variable aura donc "no" comme valeur puisque le paramètre aura la valeur fixe "no".
## Paramètre nommée ### Paramètre nommée
Déclarons une contrainte avec un paramètre nommée : Déclarons une contrainte avec un paramètre nommée :
@ -86,7 +90,21 @@ Déclarons une contrainte avec un paramètre nommée :
Dans ce cas la fonction return_value sera exécuté avec le paramètre nommé "valeur" dont sa valeur sera "no". Dans ce cas la fonction return_value sera exécuté avec le paramètre nommé "valeur" dont sa valeur sera "no".
## Paramètre avec un nombre ### Paramètre de type texte
Dans l'exemple précédent :
```
<constraints>
<fill name="return_value" target="my_calculated_variable">
<param>no</param>
</fill>
</constraints>
```
Le paramètre est de type texte (ou "string").
### Paramètre de type nombre
Déclarons un calcul avec paramètre avec un nombre : Déclarons un calcul avec paramètre avec un nombre :
@ -109,7 +127,7 @@ def return_value_with_number(value):
La variable aura donc "no" comme valeur puisque le paramètre aura la valeur fixe "1". La variable aura donc "no" comme valeur puisque le paramètre aura la valeur fixe "1".
## Paramètre dont la valeur est issue d'une autre variable ### Paramètre de type variable
Créons deux variables avec une contrainte de type variable qui contient le nom de la variable dont sa valeur sera utilisé comme paramètre : Créons deux variables avec une contrainte de type variable qui contient le nom de la variable dont sa valeur sera utilisé comme paramètre :
@ -132,27 +150,7 @@ Créons deux variables avec une contrainte de type variable qui contient le nom
Si l'utilisateur laisse la valeur 1 à "my_variable", la valeur par défault de la variable "my_calculated_variable" sera "no". Si l'utilisateur laisse la valeur 1 à "my_variable", la valeur par défault de la variable "my_calculated_variable" sera "no".
Si la valeur de "my_variable" est différent de 1, la valeur par défaut de la variable "my_calculated_variable" sera "yes". Si la valeur de "my_variable" est différent de 1, la valeur par défaut de la variable "my_calculated_variable" sera "yes".
## Paramètre dont la valeur est issue d'une information de la configuration ### Paramètre avec variable potentiellement non existante
Créons une variable et la contrainte :
```
<variables>
<family name="family">
<variable name="my_calculated_variable" type="string" description="My calculated variable"/>
</family>
</variables>
<constraints>
<fill name="return_value" target="my_calculated_variable">
<param type="information">server_name</param>
</fill>
</constraints>
```
Dans ce cas, l'information de la configuration "server_name" sera utilisé comme valeur de la variable "my_calculated_variable".
Si l'information n'existe pas, la paramètre aura la valeur "None".
## Paramètre avec variable potentiellement non existante
Suivant le contexte une variable peut exister ou ne pas exister. Suivant le contexte une variable peut exister ou ne pas exister.
@ -173,13 +171,15 @@ Un paramètre de type "variable" peut être "optional" :
Dans ce cas la fonction "return_value" est exécuté sans paramètre. Dans ce cas la fonction "return_value" est exécuté sans paramètre.
## Paramètre avec variable potentiellement désactivée Si maintenant on créé un nouveau dictionnaire en créant cette variable, la fonction sera exécuté avec le paramètre.
### Paramètre avec variable potentiellement désactivée
FIXME : <!ATTLIST param notraisepropertyerror (True|False) "False"> FIXME : <!ATTLIST param notraisepropertyerror (True|False) "False">
Il n'y a pas spécialement de test ! Il n'y a pas spécialement de test !
## Les variables suiveuses ### Les variables suiveuses
FIXME : FIXME :
@ -188,11 +188,11 @@ FIXME :
- tests/flattener_dicos/10leadership_autoleader/00-base.xml - tests/flattener_dicos/10leadership_autoleader/00-base.xml
- tests/flattener_dicos/10leadership_autoleader_expert/00-base.xml - tests/flattener_dicos/10leadership_autoleader_expert/00-base.xml
## Les variables dynamiques ### Les variables dynamiques
### Paramètre avec variable dynamique #### Paramètre avec variable dynamique
Il est possible de faire un calcul avec comme paramètre une variable dynamique mais pour une suffix particulier : Il est possible de faire un calcul avec comme paramètre [une variable d'une famille dynamique](family/auto.md) mais pour une suffix particulier :
``` ```
<variables> <variables>
@ -218,9 +218,9 @@ Il est possible de faire un calcul avec comme paramètre une variable dynamique
Dans ce cas, valeur du paramètre de la fonction "return_value" sera la valeur de la variable "vardyn" avec le suffix "val1". Dans ce cas, valeur du paramètre de la fonction "return_value" sera la valeur de la variable "vardyn" avec le suffix "val1".
### Calcule d'une variable dynamique #### Calcule d'une variable dynamique
Il est également possible de calculer une variable dynamique à partir d'une variable standard : Il est également possible de calculer [une variable d'une famille dynamique](family/auto.md) à partir d'une variable standard :
``` ```
<variables> <variables>
@ -329,3 +329,28 @@ Dans un second dictionnaire supprimer ce calcul :
</family> </family>
</variables> </variables>
``` ```
FIXME <!ATTLIST param type (string|number|variable|information|suffix) "string">
### Paramètre de type information
Le paramètre peut être la valeur est issue d'une information de la configuration.
Créons une variable et la contrainte :
```
<variables>
<family name="family">
<variable name="my_calculated_variable" type="string" description="My calculated variable"/>
</family>
</variables>
<constraints>
<fill name="return_value" target="my_calculated_variable">
<param type="information">server_name</param>
</fill>
</constraints>
```
Dans ce cas, l'information de la configuration "server_name" sera utilisé comme valeur de la variable "my_calculated_variable".
Si l'information n'existe pas, la paramètre aura la valeur "None".