From db00e384e6911787ca639261b8550261e0e3d07a Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Sun, 9 Jan 2022 13:24:53 +0100 Subject: [PATCH] personalise functions that can returns list --- doc/dev/config.md | 13 ++++++++++--- src/rougail/annotator/fill.py | 4 +++- src/rougail/config.py | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/doc/dev/config.md b/doc/dev/config.md index 127b2547..401d5985 100644 --- a/doc/dev/config.md +++ b/doc/dev/config.md @@ -14,6 +14,12 @@ Pour modifier il suffit de faire : RougailConfig[key] = value ``` +## Ajout d'une fonction de conversion + +Les fonctions de conversion fait parti du moteur de rougail. Il converti les informations des dictionnaires pour créer des variables Tiramisu. + +La clef "extra_annotators" permet d'ajouter des fonctions complémentaires. + ## Configuration de chargement des dictionnaires ### Les répertoires des dictionnaires @@ -50,6 +56,9 @@ Pour pouvez changer le répertoire de destination de la DTD et le nom du fichier Le fichier qui contient les fonctions personnalisés est géré dans la clef "functions_file" et a comme valeur par défaut "/srv/rougail/functions.py". Cette clef peut contenir une liste s'il y a plusieurs fichiers. +Les fonctions doivent retourner une valeur, même si la variable que l'on calcul est une variable multiple. +Si la fonction peut retourner une valeur multiple (une liste), il faut mettre le nom de la fonction dans la clef "multi_functions". + ### La variable auto_freeze La propriété auto_freeze n'est appliqué que une variable spécifique passe à True. Par défaut le nom de la variable est "instancied_module", mais il est possible de changer le nom de cette variable via la clef "auto_freeze_variable". @@ -113,8 +122,6 @@ Le groupe propriétaire des fichiers générés est géré dans la clef "default La méthode d'inclusion des fichiers générés est géré dans la clef "default_files_included" et a comme valeur par défaut : "no". Les valeurs possible sont "no", "name" et "content". 'default_files_included': 'no', -## La configuration par défaut des overrides - -### Le moteur de templates par défaut +## La configuration du moteur de templates Le moteur de template est géré dans la clef "default_overrides_engine" et a comme valeur par défaut : "creole". Les valeurs possible sont "none", "creole" ou "jinja2". diff --git a/src/rougail/annotator/fill.py b/src/rougail/annotator/fill.py index 5d9b328b..35b64d12 100644 --- a/src/rougail/annotator/fill.py +++ b/src/rougail/annotator/fill.py @@ -50,6 +50,8 @@ class Annotator(TargetAnnotator, ParamAnnotator): self.objectspace = objectspace self.functions = copy(functions) self.functions.extend(self.objectspace.rougailconfig['internal_functions']) + self.calc_multi = list(CALC_MULTI) + self.calc_multi.extend(self.objectspace.rougailconfig['multi_functions']) self.target_is_uniq = True self.only_variable = True self.allow_function = False @@ -79,7 +81,7 @@ class Annotator(TargetAnnotator, ParamAnnotator): value = self.objectspace.value(fill.xmlfiles) value.type = 'calculation' value.name = fill.name - if fill.name not in CALC_MULTI: + if fill.name not in self.calc_multi: is_calc_multi = self.calc_is_multi(target.name) else: is_calc_multi = False diff --git a/src/rougail/config.py b/src/rougail/config.py index 23721373..db66fcb2 100644 --- a/src/rougail/config.py +++ b/src/rougail/config.py @@ -43,6 +43,7 @@ RougailConfig = {'dictionaries_dir': [join(ROUGAILROOT, 'dictionaries')], 'variable_namespace': 'rougail', 'auto_freeze_variable': 'server_deployed', 'internal_functions': [], + 'multi_functions': [], 'extra_annotators': [], 'modes_level': ['basic', 'normal', 'expert'], 'default_family_mode': 'basic',