rougail/doc/fill/param.md

5.5 KiB

Paramètre de la fonction

Paramètre positionnel

Déclarons un calcul avec paramètre :

<constraints>
    <fill name="return_value" target="my_calculated_variable">
        <param>no</param>
    </fill>
</constraints>

Créons la fonction correspondante :

def return_value(value):
    return value

La variable aura donc "no" comme valeur puisque le paramètre aura la valeur fixe "no".

Paramètre nommée

Déclarons une contrainte avec un paramètre nommée :

<constraints>
    <fill name="return_value" target="my_calculated_variable">
        <param name="valeur">no</param>
    </fill>
</constraints>

Dans ce cas la fonction return_value sera exécuté avec le paramètre nommé "valeur" dont sa valeur sera "no".

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 :

<constraints>
    <fill name="return_value_with_number" target="my_calculated_variable">
        <param type="number">1</param>
    </fill>
</constraints>

Créons la fonction correspondante :

def return_value_with_number(value):
    if value == 1:
        return 'no'
    return 'yes'

La variable aura donc "no" comme valeur puisque le paramètre aura la valeur fixe "1".

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 :

<variables>
    <family name="family">
        <variable name="my_calculated_variable"/>
        <variable name="my_variable" type="number" description="My variable">
            <value>1</value>
        </variable>
    </family>
</variables>
<constraints>
    <fill name="return_value_with_number" target="my_calculated_variable">
        <param type="variable">my_variable</param>
    </fill>
</constraints>

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".

Les variables meneuses ou suiveuses peuvent être utilisé sans soucis commme paramètre.

Paramètre avec variable potentiellement non existante

Suivant le contexte une variable peut exister ou ne pas exister.

Un paramètre de type "variable" peut être "optional" :

<variables>
    <family name="family">
        <variable name="my_calculated_variable"/>
    </family>
</variables>
<constraints>
    <fill name="return_value" target="my_calculated_variable">
        <param type="variable" optional="True">unknow_variable</param>
    </fill>
</constraints>

Dans ce cas la fonction "return_value" est exécuté sans paramètre.

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

Si une variable est désactivé, l'utilisation de cette variable peut poser problème.

Il est possible de ne pas générer d'erreur si une variable est désactivé en utilisant le paramètre "propertyerror" :

<variables>
    <family name="general">
        <variable name="condition">
            <value>no</value>
        </variable>
        <variable name="variable1" disabled="True"/>
        <variable name="variable2"/>
    </family>
</variables>

<constraints>
    <fill name="calc_val" target="variable2">
        <param type="variable" propertyerror="False">variable1</param>
    </fill>
</constraints>

Dans ce cas, le paramètre n'est jamais donnée à la fonction de destination.

Paramètre avec variable dynamique

Il est possible de faire un calcul avec comme paramètre une variable d'une famille dynamique mais pour une suffix particulier :

<variables>
    <family name='family'>
        <variable name='suffixes' type='string' description="Suffixes of dynamic family" multi="True">
            <value>val1</value>
            <value>val2</value>
        </variable>
        <variable name="my_calculated_variable" type="string" description="My calculated variable"/>
    </family>
    <family name='dyn' dynamic="suffixes">
        <variable name='vardyn' type='string' description="Dynamic variable">
            <value>val</value>
        </variable>
    </family>
</variables>
<constraints>
    <fill name="return_value" target="my_calculated_variable">
        <param type="variable">vardynval1</param>
    </fill>
</constraints>

Dans ce cas, valeur du paramètre de la fonction "return_value" sera la valeur de la variable "vardyn" avec le suffix "val1".

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".