Taipan.js

An open source finite state machine written in Javascript.

About

A finite state machine is a very good way to keep things in order. Using a sequential logic circuits helps your code to be clean and easy to read.

It is an abstract machine that can be in one of a finite number of states. The machine is in only one state at a time; the state it is in at any given time is called the current state. It can change from one state to another when initiated by a triggering event or condition; this is called a transition. A particular FSM is defined by a list of its states, its initial state, and the triggering condition for each transition.

Check the Code section for more information on how to use Taipan.js.
There is also a documentation if you need to go deeper.

You can help develop Taipan.js on Github.

Example

Code

Javascript (main.js)

Instantiate a state machine with an array of events as parameter.

var fsm = TAIPAN.create([
  { name: 'greenOn',  from: 'red',  to: 'green' },
  { name: 'orangeOn', from: 'green', to: 'orange' },
  { name: 'redOn',    from: 'orange',  to: 'red' }
]);

activate traffic lights. The finite state machine executes authorized operations only.

//initialization
switchOn(lights[fsm.getStatus()]);

//turn requested light on if finite state machine authorizes it
function changeLight(light){
  var eventName = light + 'On';
  if(fsm[eventName]()) {
    transition(); //switch lights off
    switchOn(lights[light]); //switch requested light on
  }
  console.log(fsm.getStatus());
}

Contact me

Feel free to ask me about my work, give me suggestions, or just to say hi.