picomachine

PicoMachine: minimal finite state machine

npm install picomachine
6 downloads in the last week
10 downloads in the last month

PicoMachine

a.k.a.: MicroMachine for javascript

Build Status

Description

PicoMachine is a javascript version of MicroMachine and have the same goals. To be a minimal and fully functional minimal state machine.

Usage

var PicoMachine = require('picomachine');

var machine = new PicoMachine('new'); // Initial state.

machine.transitionsFor['confirm'] = { new: 'confirmed' };
machine.transitionsFor['ignore']  = { new: 'ignored' };
machine.transitionsFor['reset']   = { confirmed: 'new', ignored: 'new' };

machine.trigger('confirm');  // true
machine.trigger('ignore');   // false
machine.trigger('reset');    // true
machine.trigger('ignore');   // true

Callbacks

machine.trigger('reset');

// Callback for the 'confirm' event
machine.on('confirmed', function() {
  console.log('The thing is confirmed');
});

// Callback for all the things!
machine.on('any', function() {
  console.log("I'm triggered in allllll the events!!!");
});

machine.trigger('confirm');
// The thing is confirmed
// I'm triggered in allllll the events!!!

machine.on('something', function() {
  // Inside a callback 'this' represents the machine
  // so you can trigger other events within it
  this.trigger('otherThing');
});
npm loves you