State machines make it simple to manage the behavior of a class.
Too often, the state of an object is kept by creating multiple
boolean attributes and deciding how to behave based on the values.

state_machine simplifies this design by introducing the various
parts of a real state machine, including states, events,
transitions, and callbacks. However, the api is designed to be
so simple you do not even need to know what a state machine is.

WWW: http://www.pluginaweek.org
