state-jacket
Version:
An intuitive state transition system for JavaScript
44 lines (31 loc) • 1.51 kB
Markdown
Based on [StateJacket](https://github.com/hopsoft/state_jacket) by [hopsoft](https://github.com/hopsoft).
[](http://en.wikipedia.org/wiki/Finite-state_machine) are awesome
but can be pretty daunting as a system grows.
Keeping states, transitions, & events straight can be tricky.
StateJacket simplifies things by isolating the management of states & transitions.
Events are left out, making it much easier to reason about what states exist
and how they transition to other states.
*The examples below are somewhat contrived, but should clearly illustrate the usage.*
```
$ npm install state-jacket
```

```js
var StateJacket = require('state-jacket');
var states = new StateJacket.Catalog();
states.add('open', 'closed', 'error');
states.add('closed', 'open', 'error');
states.add('error');
states.lock();
states.transitioners(); // => ['open', 'closed']
states.terminators(); // => ['error']
states.canTransition('open', 'closed'); // => true
states.canTransition('closed', 'open'); // => true
states.canTransition('error', 'open'); // => false
states.canTransition('error', 'closed'); // => false
```