From: Jim Weirich Date: 2004-11-04T09:58:58+09:00 Subject: Re: fsmgen 0.1 On Wednesday 03 November 2004 11:34 am, Eivind Eklund wrote: > Wouldn't this be better implemented as meta-programming in Ruby, Funny you should mention this ... I was playing with ruby state machines about two weeks ago (even using the turnstile example in my unit tests). This is what I came up with .... class TurnStileFSM < StateMachine state_machine do state :locked do start_state event :coin, :unlocked, :unlock event :pass, :violation, :alarm_on end state :unlocked do event :coin, :unlocked, :thank_you event :pass, :locked, :lock end state :violation do event :reset, :violation event :ready, :locked, :alarm_off, :lock event :pass event :coin end end end To use, you just inherit from the FSM and implement the actions (e.g. unlock, lock, alarm_on). (Or I suppose you could implement the actions directly in the FSM class). -- -- Jim Weirich jim@weirichhouse.org http://onestepback.org ----------------------------------------------------------------- "Beware of bugs in the above code; I have only proved it correct, not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)