- 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
Nous utilisions jusqu'à présent le code suivant pour évaluer la situation:
> mapObjIndexed(value => evaluateExpression(value), situation)
c'est à dire une évaluation ligne par ligne. Or si certaines valeurs de
la situation contiennent des références, il faut les évaluer dans le bon
ordre.
Avec cette modification, seul le parsage est fait lorsqu'on appelle
`setSituation` et l'évaluation est faite ultérieurement lorsque c'est
nécessaire avec la même logique que pour les règles.
L'implémentation a pour effet de bord de ne plus supprimer l'utilisation
de true / false dans la situation qui doivent être remplacés par "oui"
et "non".
Le mécanisme "allègement" proposaient ces deux paramètres ajoutant
beaucoup de complexité pour une seule utilisation dans la base de règle
qui peut être remplacée par une formule littérale.
Closes#1119
Donne l'occasion d'experimenter avec la génération automatique de formulaire
en publicodes. Pas mal de question à creuser, mais quelques pistes interessantes