rougail/doc/dev/README.md

132 lines
3.4 KiB
Markdown
Raw Normal View History

2022-11-10 22:58:24 +01:00
# La bibliothèque Rougail
2021-02-14 10:12:42 +01:00
2023-10-12 08:17:30 +02:00
Rougail est une bibliothèque de gestion de configuration qui permet de charger simplement des variables.
2021-02-14 10:12:42 +01:00
2023-10-12 08:17:30 +02:00
Dans les exemples suivants, nous utiliserons une configuration particulière de Rougail.
2022-11-10 22:58:24 +01:00
Vous retrouverez toutes les options pour [personnaliser les répertoires utilisés](config.md).
2021-02-14 10:12:42 +01:00
2023-10-12 08:17:30 +02:00
Pour charger la configuration il faut importer la variable RougailConfig et changer les valeurs :
2021-02-14 10:12:42 +01:00
2022-11-10 22:58:24 +01:00
```python
from rougail import RougailConfig
2021-02-14 10:12:42 +01:00
2022-11-10 22:58:24 +01:00
RougailConfig['dictionaries_dir'] = ['dict']
2021-02-14 10:12:42 +01:00
```
2022-11-10 22:58:24 +01:00
## Convertisons un dictionnaire
2023-10-12 08:17:30 +02:00
Un dictionnaire est un ensemble d'instruction qui vont permettre de créer des familles et des variables.
2021-02-14 10:12:42 +01:00
2022-11-10 22:58:24 +01:00
Commençons par créer un [dictionnaire](../dictionary/rougail.md) simple.
2021-02-14 10:12:42 +01:00
2022-11-10 22:58:24 +01:00
Voici un premier dictionnaire dict/00-base.yml :
2021-02-14 10:12:42 +01:00
2022-11-11 15:59:26 +01:00
```yml
2023-10-12 08:17:30 +02:00
---
version: '1.0'
my_variable:
default: my_value
2021-02-14 10:12:42 +01:00
```
2023-10-12 08:17:30 +02:00
Puis, créons les objets [Tiramisu](https://forge.cloud.silique.fr/gnunux/tiramisu) via la script script.py suivant :
2021-02-14 10:12:42 +01:00
2021-02-14 18:03:15 +01:00
```python
2022-11-10 22:58:24 +01:00
from rougail import Rougail, RougailConfig
2021-02-14 10:12:42 +01:00
2023-10-12 08:17:30 +02:00
RougailConfig['dictionaries_dir'] = ['dict']
rougail = Rougail()
config = rougail.get_config()
print(config.value.get())
2021-02-14 10:12:42 +01:00
```
2022-11-10 22:58:24 +01:00
Exécution le script :
2021-02-14 10:12:42 +01:00
2022-11-11 15:59:26 +01:00
```sh
2022-11-10 22:58:24 +01:00
$ python3 script.py
{'rougail.my_variable': 'my_value'}
2021-02-14 10:12:42 +01:00
```
2022-11-10 22:58:24 +01:00
## Convertisons un dictionnaire extra
L'espace de nommage par défaut des variables et familles est "rougail". Il est possible de définir d'autres espaces de nom.
Ces espaces de nom additionnels s'appelle des "[extras](../dictionary/extra.md)".
Les espaces de nom additionnels se définissent lors de la configuration.
Par exemple, voici comment ajouter une espace de nom "example" :
2021-02-14 10:12:42 +01:00
2022-11-10 22:58:24 +01:00
```python
RougailConfig['extra_dictionaries']['example'] = ['extras/']
2021-02-14 10:12:42 +01:00
```
2022-11-10 22:58:24 +01:00
Ensuite créons un dictionnaire extra extras/00-base.yml :
2022-11-11 15:59:26 +01:00
```yml
2023-10-12 08:17:30 +02:00
---
version: '1.0'
my_variable_extra:
default: my_value_extra
2021-02-14 10:12:42 +01:00
```
2023-10-12 08:17:30 +02:00
Puis, créons les objets [Tiramisu](https://forge.cloud.silique.fr/gnunux/tiramisu) via la script script.py suivant :
2021-02-14 10:12:42 +01:00
2021-02-14 18:03:15 +01:00
```python
2022-11-10 22:58:24 +01:00
from rougail import Rougail, RougailConfig
2021-02-14 10:12:42 +01:00
2023-10-12 08:17:30 +02:00
RougailConfig['dictionaries_dir'] = ['dict']
RougailConfig['extra_dictionaries']['example'] = ['extras/']
rougail = Rougail()
config = rougail.get_config()
print(config.value.dict())
2021-02-14 10:12:42 +01:00
```
2022-11-10 22:58:24 +01:00
Exécution le script :
2021-02-14 18:03:15 +01:00
2022-11-10 22:58:24 +01:00
```python
$ python3 script.py
{'rougail.my_variable': 'my_value', 'example.my_variable_extra': 'my_value_extra'}
2021-02-14 18:03:15 +01:00
```
2021-02-14 10:12:42 +01:00
## Créons une fonction personnalisé
2023-10-12 08:17:30 +02:00
Nous créons le dictionnaire complémentaire dict/01-function.yml pour que la variable "my_variable_jinja" soit [calculée](fill/README.md) :
2021-02-14 10:12:42 +01:00
2022-11-10 22:58:24 +01:00
```yml
2023-10-12 08:17:30 +02:00
---
version: '1.0'
my_variable_jinja:
type: "string"
default:
type: jinja
jinja: "{{ return_no() }}"
2021-02-14 10:12:42 +01:00
```
2022-11-10 22:58:24 +01:00
Puis créons la fonction "return_no" dans functions.py :
2021-02-14 10:12:42 +01:00
2021-02-14 18:03:15 +01:00
```python
2021-02-14 10:12:42 +01:00
def return_no():
return 'no'
```
2023-10-12 08:17:30 +02:00
Puis, créons les objets [Tiramisu](https://forge.cloud.silique.fr/gnunux/tiramisu) via la script script.py suivant :
2021-02-14 10:12:42 +01:00
2023-10-12 08:17:30 +02:00
```python
from rougail import Rougail, RougailConfig
2021-02-14 10:12:42 +01:00
2023-10-12 08:17:30 +02:00
RougailConfig['dictionaries_dir'] = ['dict']
RougailConfig['extra_dictionaries']['example'] = ['extras/']
RougailConfig['functions_file'] = 'functions.py'
rougail = Rougail()
config = rougail.get_config()
print(config.value.dict())
2021-02-14 10:12:42 +01:00
```
2023-10-12 08:17:30 +02:00
Exécution le script :
2023-01-07 17:11:25 +01:00
```python
2023-10-12 08:17:30 +02:00
$ python3 script.py
{'rougail.my_variable': 'my_value', 'rougail.my_variable_jinja': 'no', 'example.my_variable_extra': 'my_value_extra'}
2023-01-07 17:11:25 +01:00
```
2023-10-12 08:17:30 +02:00
La valeur de la variable `my_variable_extra` est bien calculé à partir de la fonction `return_no`.