FMM
FMM is short for "functional micromachines;" it is based on the micromachine gem, a nicely compact little finite state machine implementation.
Micromachine is an imperative design, based on the methods and
mutable state of an instance of class MicroMachine. FMM takes
a functional approach, where (a) the state machine operations
are pure functions that take the current state as an argument
and return an updated state, and (b) instead of building
the machine imperatively by calls to machine.on(...), we
assume the machine is given as a data structure of a certain
format. (A validation method is included.)
Updates soon. In the meantime, have a look at the test suite.