bonjour à tous !
$
j'aurais besoin de quelques conseils et corrections de code pour finaliser ma mini lib JS Vaucanson, un système d'automate à états finis bien sympathique pour intégrer dans mes applis Svelte.
Par "bien sympathique" j'entends :
1. définitions cohérente
2. peu de méthodes
3. interface fluide
Je ne dialogue qu'avec des objets sacs de propriétés avec l'interface;
Plutôt que de déclarer l'automate avec un immense littéral objet de définitions on passe par une série d'appels à "def" fluide avec "on" :
Les avantages de ce mode de définition séparé sont:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 const fsm = make_fsm({ debug: true, accptor: () => {... ) }) fsm.def({ state_name: 'A', init: true }) .on({ read: 'b', jump: 'B', action: () => {...} }) fsm.def({ state_name: 'B' }) .on({ read: 'a', jump: 'A', action: () => {...} }) .on({ read: 'c', jump: 'C', action: () => {...} }) fsm.def({ state_name: 'C', term: true })
* pas d'objet monolithique gigantesque avec de nombreux niveaux
* possibilité de définir ses états possibles suivant des conditions
* possibilité de configurer ses états depuis une boucle (fatch depuis base de données...)
* lisibilité
* possibilité de disperser la définition complète dans tous les composants dans lesquels une référence à une transduction existe, afin d'éviter d'avoir à les importer dans un seul fichier cebtralisé.
En interne, il y a des tableaux doublés par des Maps pour s'y retrouver plus vite.
QUESTIONS:
* trouver les conditions nécessaires pour activer le callback de rejet si lecture non acceptable
* la file d'attente des appels asynchrones est elle optimale ?
* comment définir ses propres fonctions Promises ou async (paramètre "action"de la méthode "on") ?
Si quelqu'un peut m’aider un peu il est bienvenu. Le "bundule" de test est en pièce jointe. IL n'y a qu'à le coller dans un fichier et le lancer avec Nodde ou depuis le navigateur.
index.js
Merci, A+ François.
Partager