diff options
author | Sébastien Dailly <sebastien@dailly.me> | 2025-01-08 13:14:13 +0100 |
---|---|---|
committer | Sébastien Dailly <sebastien@dailly.me> | 2025-01-08 13:14:57 +0100 |
commit | 9473b2c009961d2e66a31673c38831b59528b706 (patch) | |
tree | 39ea8e63db5f81d9658b39b94d7e6c38bf3c3e02 | |
parent | 6883d69e0f8eb0e67928ad2cfc92bf0792f948c9 (diff) |
The version in the document is not mandatory anymore
-rw-r--r-- | lib/configuration/importConf.ml | 8 | ||||
-rw-r--r-- | readme.rst | 222 |
2 files changed, 121 insertions, 109 deletions
diff --git a/lib/configuration/importConf.ml b/lib/configuration/importConf.ml index eb7c8d2..3406a11 100644 --- a/lib/configuration/importConf.ml +++ b/lib/configuration/importConf.ml @@ -31,11 +31,15 @@ module TomlReader = Read_conf.Make (Helpers.Toml.Decode) let t_of_toml : Otoml.t -> (Syntax.t, string) result = fun toml -> + let latest_version = 1 in + let version = - Otoml.find toml (Otoml.get_integer ~strict:false) [ "version" ] + Otoml.find_or ~default:latest_version toml + (Otoml.get_integer ~strict:false) + [ "version" ] in match version with - | 1 -> TomlReader.read toml + | n when n = latest_version -> TomlReader.read toml | _ -> Printf.eprintf "Unsuported version : %d\n" version; exit 1 @@ -105,14 +105,16 @@ Invocation Écrit la configuration chargée sur la sortie courante et selon la dernière syntaxe de l’application. -.. --no-bom -.. -.. Ne pas insérer un BOM_ dans le fichier CSV. Cet indicateur permet -.. d’informer Excel que le fichier CSV est en UTF-8, ce qui devrait être le -.. cas. Dans le cas où cette chaine de caractère pose problème, il est -.. possible de désactiver ce mécanisme. -.. -.. .. _BOM: https://fr.wikipedia.org/wiki/Indicateur_d%27ordre_des_octets +--no-bom + + .. class:: collapse + + Ne pas insérer un BOM_ dans le fichier CSV. Cet indicateur permet + d’informer Excel que le fichier CSV est en UTF-8, ce qui devrait être le + cas. Dans le cas où cette chaine de caractère pose problème, il est + possible de désactiver ce mécanisme. + + .. _BOM: https://fr.wikipedia.org/wiki/Indicateur_d%27ordre_des_octets Sortie ====== @@ -144,8 +146,9 @@ Les informations générales -------------------------- version - Il s’agit de la version de la syntaxe du fichier de configuration. Valeur - attendue : `1` + + Il s’agit de la version de la syntaxe du fichier de configuration. Valeur par + défaut : `1` source La clef `source` indique quel est le fichier source : pour chaque ligne @@ -334,6 +337,7 @@ Les conditions doivent être toutes validées pour que la ligne soit retenue. Exemple complet =============== + Cet exemple (issu d’un cas réel), crée un fichier des personnes morales à partir de plusieurs tables. @@ -352,83 +356,83 @@ partir de plusieurs tables. fiche, ou la source qui contient la dernière valeur, mais peut être nulle si celle-ci n’a pas été modifiée… -.. code:: toml +.. class:: collapse + + .. code:: toml - version = 1 - - [source] - file = "20220222_SOCIETES.xlsx" - name = "société" - - # Des commentaires peuvent etre ajoutés tout au long du fichier. - # Ici la table actif permet de faire une correspondance entre les valeurs - # du client et nos valeurs : - # 1 -> Actif - # 0 -> Inactif - [externals.actifs] - intern_key = ":E" - file = "actifs.xlsx" - extern_key = ":A" - allow_missing = false - - [externals.legalform] - intern_key = ":J" - file = "mapping.xlsx" - tab = 2 - extern_key = ":A" - allow_missing = false - - [externals.currency] - intern_key = ":BF" - file = "mapping.xlsx" - tab = 6 - extern_key = ":A" - allow_missing = false - - # le fichier annuaire contient des informations supplémentaires - [externals.annuaire] - intern_key = ":A" - file = "20220222_ANNUAIRE.xlsx" - extern_key = ":BJ" - allow_missing = false - - # La table des immatriculations. - # Seules les lignes avec la colonne D = 4 nous intéressent - [externals.immat] - intern_key = ":A ^ '_4'" - file = "20220222_SO_IMMATRICULATION.xlsx" - extern_key = ":B ^ '_' ^ :D" - allow_missing = true - - [sheet] - columns = [ - "'companyDirectory_' ^ :A", - ":G", - "'internalExternalList_Internal'", - ":actifs.B", - ":H", - ":I", - "", - ":legalform.S", - ":annuaire.I", - ":T", - ":BP", - ":currency.D", - "", - ":annuaire.CC", - ":CQ", - ":CO", - ":immat.C", - # Utilise la fonction join pour assembler les éléments - # De cette manière, si l’un des éléments est vide, il n’y aura pas de - # double espace (' ') dans le résultat - "join(' ', :annuaire.CP, :annuaire.CQ, :annuaire.CR, :annuaire.L, :annuaire.M)", - "nvl(:CM, :annuaire.N)", - "nvl(:CS, :annuaire.AB)", ":CR" - ] - filters = [] - sort = [] - uniq = [] + [source] + file = "20220222_SOCIETES.xlsx" + name = "société" + + # Des commentaires peuvent etre ajoutés tout au long du fichier. + # Ici la table actif permet de faire une correspondance entre les valeurs + # du client et nos valeurs : + # 1 -> Actif + # 0 -> Inactif + [externals.actifs] + intern_key = ":E" + file = "actifs.xlsx" + extern_key = ":A" + allow_missing = false + + [externals.legalform] + intern_key = ":J" + file = "mapping.xlsx" + tab = 2 + extern_key = ":A" + allow_missing = false + + [externals.currency] + intern_key = ":BF" + file = "mapping.xlsx" + tab = 6 + extern_key = ":A" + allow_missing = false + + # le fichier annuaire contient des informations supplémentaires + [externals.annuaire] + intern_key = ":A" + file = "20220222_ANNUAIRE.xlsx" + extern_key = ":BJ" + allow_missing = false + + # La table des immatriculations. + # Seules les lignes avec la colonne D = 4 nous intéressent + [externals.immat] + intern_key = ":A ^ '_4'" + file = "20220222_SO_IMMATRICULATION.xlsx" + extern_key = ":B ^ '_' ^ :D" + allow_missing = true + + [sheet] + columns = [ + "'companyDirectory_' ^ :A", + ":G", + "'internalExternalList_Internal'", + ":actifs.B", + ":H", + ":I", + "", + ":legalform.S", + ":annuaire.I", + ":T", + ":BP", + ":currency.D", + "", + ":annuaire.CC", + ":CQ", + ":CO", + ":immat.C", + # Utilise la fonction join pour assembler les éléments + # De cette manière, si l’un des éléments est vide, il n’y aura pas de + # double espace (' ') dans le résultat + "join(' ', :annuaire.CP, :annuaire.CQ, :annuaire.CR, :annuaire.L, :annuaire.M)", + "nvl(:CM, :annuaire.N)", + "nvl(:CS, :annuaire.AB)", ":CR" + ] + filters = [] + sort = [] + uniq = [] Comparaison des valeurs ======================= @@ -444,24 +448,6 @@ Les opérateurs de comparaison `=` et `<>` peuvent accepter un groupe de valeur plutot qu’une valeur unique. Dans ce cas, la condition est vraie si l’une des valeurs est présente. -`cmp` - - .. code:: toml - - """cmp( - :A - , :B - , 'A is smaller than B' - , 'A is equal to B' - , 'A is greater than B' - )""" - - Compare les deux premiers arguments, puis évalue suivant le résultat : - - - inférieur à - - égal à - - supérieur à - Le cas des cellules vides ------------------------- @@ -481,6 +467,9 @@ Fonctions disponibles Liste non exhaustive. +Fonctions de branchement +------------------------ + `if` Choisi la valeur de la cellule en fonction d’une condition : @@ -492,6 +481,25 @@ Liste non exhaustive. , 'Faux' )""" +`cmp` + + .. code:: toml + + """cmp( + :A + , :B + , 'A is smaller than B' + , 'A is equal to B' + , 'A is greater than B' + )""" + + Compare les deux premiers arguments, puis évalue suivant le résultat : + + - inférieur à + - égal à + - supérieur à + + `nvl` Sélectionne la première valeur non nulle de la liste @@ -623,7 +631,7 @@ Elles prennent se basent sur deux paramètres supplémentaires : Il est possible de construire plusieurs compteurs sur des groupes et des tris différents au sein d’un même fichier. - Si le critère de tri n’est pas donné, l’application va compter le nombre + Si le paramètre de tri n’est pas donné, l’application va compter le nombre d’éléments pour chaque groupe: toutes les cellules auront le même résultat. `previous` @@ -632,7 +640,7 @@ Elles prennent se basent sur deux paramètres supplémentaires : En fonction du critère de regroupement, la valeur renverra vide (si l’on est sur groupe différent), et la valeur précédente sera recherchée en - fonction du critère de tri donné. + fonction du paramètre de tri donné. `previous(expression, [regroupement, …], [tri, …])` @@ -647,7 +655,7 @@ Elles prennent se basent sur deux paramètres supplémentaires : La fonction `sum` permet de calculer la somme d’une colonne donnée sur un critère de regroupement. - Si le critère de tri n’est pas donné, l’application va calculer la somme + Si le paramètre de tri n’est pas donné, l’application va calculer la somme totale en fonction du critère de regroupement : toutes les cellules auront le même résultat. |