rougail/doc/check/function.md

54 lines
1.6 KiB
Markdown
Raw Normal View History

2021-02-15 15:17:23 +01:00
# Fonction de vérification
2021-02-10 08:19:33 +01:00
2021-02-15 15:17:23 +01:00
## Vérification stricte des valeurs
2021-02-10 08:19:33 +01:00
2021-02-15 15:17:23 +01:00
Une fonction de vérification est une fonction complémentaire au type qui permet de valider plus précisement le contenu d'une variable.
Voici un exemple simple de validation des valeurs :
2021-02-10 08:19:33 +01:00
```
<variables>
2021-02-15 15:17:23 +01:00
<variable name="my_variable"/>
2021-02-10 08:19:33 +01:00
</variables>
<constraints>
2021-02-15 15:17:23 +01:00
<check name="islower">
<target>my_variable</target>
</check>
2021-02-10 08:19:33 +01:00
</constraints>
```
2021-02-15 15:17:23 +01:00
La [cible (de type variable)](../target/variable.md) de la fonction de vérification est ici "my_variable".
2021-02-10 08:19:33 +01:00
2021-02-15 15:17:23 +01:00
Dans cette exemple, la valeur de la variable "my_variable" va être validé par la fonction islower.
2021-02-10 08:19:33 +01:00
2021-02-15 15:17:23 +01:00
Voici le contenu de la fonction :
2021-02-10 08:19:33 +01:00
```
2021-02-15 15:17:23 +01:00
def islower(value):
if value is None:
return
if not value.islower():
raise ValueError(f'"{value}" is not lowercase string')
2021-02-10 08:19:33 +01:00
```
2021-02-15 15:17:23 +01:00
Une fonction de vérification doit prendre en compte 2 aspects important :
2021-02-10 08:19:33 +01:00
2021-02-15 15:17:23 +01:00
- la valeur peut ne pas être renseigné (même si la variable est obligatoire), la valeur None doit être prise en compte
- si la valeur est invalide, il faut faire un raise de type ValueError avec, si possible, un message explicite.
2021-02-10 08:19:33 +01:00
2021-02-15 15:17:23 +01:00
À partir de maintenant seule None et des valeurs en minuscule seront autorisés.
2021-02-10 08:19:33 +01:00
2021-02-15 15:17:23 +01:00
## Vérification des valeurs avec avertissement
2021-02-10 08:19:33 +01:00
2021-02-15 15:17:23 +01:00
Dans la contrainte, il est possible de spécifier le niveau d'erreur et le mettre en avertissement :
2021-02-10 08:19:33 +01:00
```
2021-02-15 15:17:23 +01:00
<check name="islower" level="warning">
<target>my_variable</target>
</check>
2021-02-10 08:19:33 +01:00
```
2021-02-15 15:17:23 +01:00
Dans ce cas une valeur avec une majuscule sera accepté, mais un message d'avertissement apparaitra.
2021-02-10 08:19:33 +01:00
2021-02-15 15:17:23 +01:00
Il est possible de définir des [paramètres](../param/README.md) à cette fonction.