sorry not to include orig message - the text was totally fubar and hosed my
mailer...

anyone.

this is incomplete, but i made a little finite state machine lib and dsl.  it
even includes tools to vizualize if you have dot installed.  it's here

   http://rubyforge.org/projects/codeforpeople/
   http://codeforpeople.org/lib/ruby/

an example


     harp:~ > cat a.rb

     require 'fsm'

     FSM.system do

       fsm{
         states %w( empty full )
         transition 'filling', 'empty' => 'full'
         transition 'emptying', 'full' => 'empty'
       }

       observer{
         on_entry 'empty' do
           puts 'became empty.'

           transition 'empty', 'filling' do
             puts 'filling...'
             sleep 1
           end
         end

         on_entry 'full' do
           puts 'became full.'

           transition 'full', 'emptying' do
             puts 'emptying...'
             sleep 1
           end
         end
       }

       start
     end

     STDIN.gets


     harp:~ > ruby a.rb
     became empty.
     filling...
     became full.
     emptying...
     became empty.
     filling...
     became full.
     emptying...
     became empty.
     filling...


sorry, no docs yet ;-)


-a
-- 
what science finds to be nonexistent, we must accept as nonexistent; but what
science merely does not find is a completely different matter... it is quite
clear that there are many, many mysterious things.
- h.h. the 14th dalai lama