def define_event_helpers
define_instance_method(attribute(:events)) do |machine, object|
machine.events.valid_for(object).map {|event| event.name}
end
define_instance_method(attribute(:transitions)) do |machine, object, *args|
machine.events.transitions_for(object, *args)
end
if action
event_attribute = attribute(:event)
event_transition_attribute = attribute(:event_transition)
@instance_helper_module.class_eval do
attr_writer event_attribute
protected
attr_accessor event_transition_attribute
end
define_instance_method(attribute(:event)) do |machine, object|
event = machine.read(object, :event, true)
event && !(event.respond_to?(:empty?) && event.empty?) ? event.to_sym : nil
end
end
end