class Aquam::Machine
Attributes
object[RW]
Public Class Methods
new(object)
click to toggle source
# File lib/aquam/machine.rb, line 9 def initialize(object) @object = object end
Public Instance Methods
current_state()
click to toggle source
# File lib/aquam/machine.rb, line 25 def current_state fail Aquam::InvalidStateError unless valid_state? self.class.states[attribute].new object end
trigger(event, *args)
click to toggle source
# File lib/aquam/machine.rb, line 31 def trigger(event, *args) state = current_state fail Aquam::InvalidEventError unless valid_event? event fail Aquam::InvalidTransitionError unless valid_transition? event state.send event, *args current_state end
valid_event?(event)
click to toggle source
# File lib/aquam/machine.rb, line 17 def valid_event?(event) self.class.valid_event? event end
valid_state?()
click to toggle source
# File lib/aquam/machine.rb, line 13 def valid_state? self.class.valid_state? attribute end
valid_transition?(event)
click to toggle source
# File lib/aquam/machine.rb, line 21 def valid_transition?(event) self.class.events[event].key? attribute end
Private Instance Methods
attribute()
click to toggle source
# File lib/aquam/machine.rb, line 44 def attribute object.send(self.class.attribute.to_sym).to_sym end