Module: QueuedStateMachine
- Defined in:
- lib/queued_state_machine.rb,
lib/queued_state_machine/invalid_transition.rb
Defined Under Namespace
Modules: ClassMethods
Classes: InvalidTransition
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.included(base) ⇒ Object
5
6
7
|
# File 'lib/queued_state_machine.rb', line 5
def self.included(base)
base.extend(ClassMethods)
end
|
Instance Method Details
#at ⇒ Object
126
127
128
|
# File 'lib/queued_state_machine.rb', line 126
def at
@state
end
|
#at?(arg) ⇒ Boolean
130
131
132
133
134
|
# File 'lib/queued_state_machine.rb', line 130
def at?(arg)
list = self.class.clean_state_list(arg)
raise if list == nil
list.include?(@state)
end
|
#initialize ⇒ Object
100
101
102
103
104
|
# File 'lib/queued_state_machine.rb', line 100
def initialize
super
@state = self.class.initial_state
@pending_transitions = []
end
|
#quietly_to(state) ⇒ Object
122
123
124
|
# File 'lib/queued_state_machine.rb', line 122
def quietly_to(state)
to(state, quiet: true)
end
|
#to(state, quiet: false) ⇒ Object
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
# File 'lib/queued_state_machine.rb', line 106
def to(state, quiet: false)
from = @state
to = self.class.clean_state(state)
@pending_transitions << {from: from, to: to, quiet: quiet}
return if @pending_transitions.length > 1
loop do
next_transition = @pending_transitions.first
break unless next_transition
@state = next_transition[:to]
unless next_transition[:quiet]
process_transition(next_transition[:from], next_transition[:to])
end
@pending_transitions.shift
end
end
|