An intuitive state transition system for JavaScript
CoffeeScript
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc
lib
spec
.gitignore
LICENSE.txt
README.md
index.html
package.json

README.md

StateJacket JS

Based on StateJacket by hopsoft.

An Intuitive State Transition System for JavaScript

State machines 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.

The Basics

Install

$ npm install state-jacket

Define states & transitions for a simple turnstyle.

Turnstyle

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