nanostate
Small Finite State Machine implementation
Usage
var nanostate = require('nanostate')
var state = nanostate('green', {
green: { timer: 'yellow' },
yellow: { timer: 'red' },
red: { timer: 'green' }
})
var newState
newState = state.transition('timer')
console.log(newState)
newState = state.transition('timer')
console.log(newState)
newState = state.transition('timer')
console.log(newState)
Hierarchical
var nanostate = require('nanostate')
var state = nanostate('green', {
green: { timer: 'yellow' },
yellow: { timer: 'red' },
red: { timer: 'green' }
})
state.mount('red', nanostate('walk', {
walk: { 'timer:ped': 'wait' },
wait: { 'timer:ped': 'stop' },
stop: {}
}))
var newState
newState = state.transition('timer')
newState = state.transition('timer')
console.log(newState)
newState = state.transition('ped:timer')
console.log(newState)
License
Apache-2.0