Afin de résoudre rapidement un problème lié au build de ce paquet. Il
faudrait faire un travail plus approfondi pour :
- séparer les styles de mon-entreprise des styles de publicodes-react
- choisir une convention unique pour la gestion du CSS de
publicodes-react, en y intégrant la possibilité de personnaliser les
styles pour un intégrateur (actuellement on fait un mixte de classes
CSS "classiques", de styled-component, et de prop `style={{}}`).
Lorsque l'on cherche un nom de règle, on laisse la possibilité à
une règle de se référencer elle même, mais alors cette résolution
est la dernière à être envisagée.
Dans l'exemple :
```yaml
b: 5
a . b: b
```
`a . b` référence bien `b` qui vaut `5`
Et dans celui ci :
```
a: 0
a . b:
remplace:a
par: b * 5
valeur: 2
```
`a . b` remplace `a` en la multipliant par sa propre valeur (ici 2)
fix#1081, fix#1083
La vérification de l'applicabilité du parent faisait un aller/retour
inutile entre la règle enfant et la règle parent, à l'origine d'une
régression de performance.
* ⚙️ Sort les fonctions JSX de l'AST
Remplace la fonction makeJsx par un composant React <Explanation />
Déplace presque tout le code React dans le répertoire components/ en
prévision de sa séparation dans un paquet dédié.
* ⚙️ Renomme le nœud "replacement" en "replacementRule"
* ⚙️ Ajout d'un attribut visualisationKind pour les mécanismes transformées
* ⚙️ Retours PR 1275
- Introduction de nouveaux mécanismes
- Réecriture de l'evaluation et du parsing des règles.
- Les règles peuvent apparaître dans les formules de calcul
- Introduction d'un AST en bonne et due forme
- Réecriture de buildRuleDependancies.
- Ajout d'une passe pour la désambiguation des références
- Réecriture de rendNonApplicable et de remplace
- Réimplémentation de parentDependancy
Voir #1191
La fonction `uniroot` prend 2 paramètres d'amorçage "min" et "max" qui
nous définissions jusqu'alors comme des minimums et maximum absolus
-10^8 et +10^8. Vu que nous sommes obligés de calculer au moins une
première valeur à l'extérieur de `uniroot` notamment pour calculer les
variables manquantes, ce commit permet de ré-utiliser ce calcul dans
l'amorçage d' `uniroot`.
Les gains de performances sont détaillés dans la PR associée.
Par ailleurs supprime l'option "valeurs négatives possibles" rendue
obsolète.
Il y a des légers décalages d'1€ sur une dizaine de snapshots qui liés à
des arrondis à l'euro. On calcule en effet les inversions à 10 centimes
près et on peut donc tomber sur une valeur de xx,54€ là où la vraie
valeur est xx,48€ ce qui donne 1€ de différence avec l'arrondi alors que
la différence initialement calculée est inférieure à 10 centimes.
Par curiosité j'ai rejoué les tests de non-régressions en changeant les
paramètres d'`uniroot` pour avoir une précision au centime près (en
augmentant le nombre max d'itération à 50) et il se trouve que sur la
dizaine de tests différents entre ce commit et la version d'avant une
moitié des arrondis à l'euro étaient faux avant et corrects maintenant
et inversement pour l'autre moitié.