Tutoriel
Installation
Publicodes permet de générer des simulateurs dans plusieurs langages de programmation. Vous pouvez installer le compilateur depuis votre distribution pour avoir un accès complêt à toutes les options.
Il est également possible d’installer le compilateur spécifiquement pour un langage cible, et ainsi avoir une version pré-configuré de celui-ci. Dans ce tutoriel, nous allons utiliser le paquet npm pour générer des modèles Javascript.
$ npm add @publicodes/cli Premiers pas
Les modèles Publicodes sont structurés en dossier. Tous les fichiers avec
l’extension .publicodes d’un dossier forment un seul modèle. Nous allons donc
préparer notre premier modèle :
Loading editor...
prix:
prix . carottes: 2€/kg
prix . champignons: 5€/kg
prix . avocat: 2€/avocat
dépenses primeur:
public: oui
formule:
somme:
- prix . carottes * 1.5 kg
- prix . champignons * 500 g
- prix . avocat * 3 avocatNous pouvons maintenant compiler ce modèle, pour construire notre module Javascript :
$ npm exec publicodes2 compile basket/ Le compilateur génére notre module model.publicodes.js que nous allons
pouvoir importer dans notre projet Javascript :
import { default as rules } from 'model.publicodes.js'; Évaluer une règle
L’objet rules expose les rêgles qui sont publiques. Ces rêgles ont
différents attributs, dont la méthode evaluate :
console.log(rules['dépenses primeur'].evaluate()); La méthode evaluate prend deux arguments optionnels, dont le premier permet
de passer un contexte d’évaluation :
// Ici on passe un contexte pour évaluer la règle.
const result = rules['dépenses primeur'].evaluate({
'prix . avocat': '3€/avocat'
}); Variables manquantes
Publicodes calcule automatiquement les dépendances de chaque règle. Si la
valeur d’une dépendance est manquante, et ne permet pas de faire le calcul,
elle apparaîtra dans l’attribut missing :
const context = {
x: 'y + 5',
y: null
};
console.log(rules['x'].evaluate(context).missing); Cette information est utile pour intégrer Publicodes à votre application.
Structurer un projet
Ce dossier depuis lequel nous travaillons est le paquet racine. Publicodes permet d’importer des règles depuis un autre modèle au sein du même paquet, ou depuis un autre paquet se trouvant ailleurs dans le filesystem. Nous allons commencer par voir comment utiliser l’import pour structurer nos modèles.
Le mécanisme importer nous permet d’importer toutes les règles d’un
autre modèle, comme si elles faisaient partie de l’espace de nom. Cela
permet de réutiliser un jeu de règles dans plusieurs de nos modèles,
mais également de partager une partie de nos rêgles internes qui sont
génériques à d’autres projets :
Loading editor...
prix:
importer: prix
dépenses primeur:
public: oui
formule:
somme:
- prix . carottes * 1.5 kg
- prix . champignons * 500 g
- prix . avocat * 3 avocat- Erreur syntaxique ➡️ Dans la règle "dépenses primeur" ✖️ La référence "prix . carottes" est introuvable. Vérifiez que l'orthographe et l'espace de nom sont corrects
Loading editor...
carottes: public: oui valeur: 2€/kg champignons: public: oui valeur: 5€/kg avocat: public: oui valeur: 2€/avocat
Maintenant que nous avons déplacé les prix dans un modèle séparé, il est possible de les réutiliser depuis un tout autre projet. Considérons que celui-ci soit publié en tant que paquet NPM sous le nom de “publicodes-basket”, alors un autre projet peut réutiliser ce modèle “prix” :
$ npm install publicodes-basket
$ npm exec publicodes2 compile cantine/ Loading editor...
prix:
importer:
modèle: prix
paquet: publicodes-basket
prix course semaine:
public: oui
formule:
somme:
- prix . carottes * 20 kg
- prix . champignons * 10 kg
- prix . avocat * 200 avocat- Erreur syntaxique ➡️ Dans la règle "prix course semaine" ✖️ La référence "prix . carottes" est introuvable. Vérifiez que l'orthographe et l'espace de nom sont corrects