Sha256: a20088ecd014a09cbe6b38034bb6f88bef91a837109562768accc33f39a29415
Contents?: true
Size: 1.23 KB
Versions: 1
Compression:
Stored size: 1.23 KB
Contents
unless defined? $__fsm_event__ $__fsm_event__ = __FILE__ module FSM FSM::LIBDIR = File::dirname(File::expand_path(__FILE__)) + File::SEPARATOR unless defined? FSM::LIBDIR FSM::INCDIR = File::dirname(FSM::LIBDIR) + File::SEPARATOR unless defined? FSM::INCDIR require INCDIR + 'fsm' class Event include Util NOTIFICATION = "fsm_event" tattrs %w[ state data type ] def initialize state, *data, &b super @state, @data = state, *data @type = self.class end def notify s, *a, &b mcall(s, NOTIFICATION, self, *a, &b) if s.respond_to? NOTIFICATION end def inspect [@type, @state, @data].inspect end class Any < Event end class Exit < Any end class Transition < Any end class Entry < Any end class Input < Any end TYPES = Any, Exit, Transition, Entry, Input def self.message name.split(%r/::/).last.downcase end TYPES.each do |etype| message = etype.message singleton_class{ define_method(message){ etype }} end end # class Event end # module FSM end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fsm-0.0.0 | lib/fsm-0.0.0/event.rb |