Module: Aquam::MachineClassMethods

Included in:
Machine
Defined in:
lib/aquam/machine_class_methods.rb

Instance Method Summary collapse

Instance Method Details

#attribute(name = nil) ⇒ Object



5
6
7
# File 'lib/aquam/machine_class_methods.rb', line 5

def attribute(name = nil)
  name ? @attribute = name : @attribute ||= :state
end

#event(name, &block) ⇒ Object



21
22
23
# File 'lib/aquam/machine_class_methods.rb', line 21

def event(name, &block)
  Aquam::EventTransitions.new self, name, &block
end

#eventsObject



13
14
15
# File 'lib/aquam/machine_class_methods.rb', line 13

def events
  @event ||= Hash.new { |hash, key| hash[key] = {} }
end

#state(name, klass) ⇒ Object



17
18
19
# File 'lib/aquam/machine_class_methods.rb', line 17

def state(name, klass)
  states[name] = klass
end

#statesObject



9
10
11
# File 'lib/aquam/machine_class_methods.rb', line 9

def states
  @states ||= {}
end

#transition(from, to, event_name) ⇒ Object



25
26
27
28
29
# File 'lib/aquam/machine_class_methods.rb', line 25

def transition(from, to, event_name)
  fail Aquam::InvalidStateError if !valid_state?(from) || !valid_state?(to)

  events[event_name][from] = to
end

#valid_event?(event) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/aquam/machine_class_methods.rb', line 35

def valid_event?(event)
  events.keys.include? event
end

#valid_state?(state) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/aquam/machine_class_methods.rb', line 31

def valid_state?(state)
  states.keys.include? state
end