Module: Aquam::MachineClassMethods
- Included in:
- Machine
- Defined in:
- lib/aquam/machine_class_methods.rb
Instance Method Summary collapse
- #attribute(name = nil) ⇒ Object
- #event(name, &block) ⇒ Object
- #events ⇒ Object
- #state(name, klass) ⇒ Object
- #states ⇒ Object
- #transition(from, to, event_name) ⇒ Object
- #valid_event?(event) ⇒ Boolean
- #valid_state?(state) ⇒ Boolean
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 |
#events ⇒ Object
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 |
#states ⇒ Object
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
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
31 32 33 |
# File 'lib/aquam/machine_class_methods.rb', line 31 def valid_state?(state) states.keys.include? state end |