aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Dailly <sebastien@dailly.me>2025-01-08 13:14:13 +0100
committerSébastien Dailly <sebastien@dailly.me>2025-01-08 13:14:57 +0100
commit9473b2c009961d2e66a31673c38831b59528b706 (patch)
tree39ea8e63db5f81d9658b39b94d7e6c38bf3c3e02
parent6883d69e0f8eb0e67928ad2cfc92bf0792f948c9 (diff)
The version in the document is not mandatory anymore
-rw-r--r--lib/configuration/importConf.ml8
-rw-r--r--readme.rst222
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
diff --git a/readme.rst b/readme.rst
index 83b29d5..1318846 100644
--- a/readme.rst
+++ b/readme.rst
@@ -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.