4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/action/state/class_methods.rb', line 4
def sequence_status sequence
chunks = sequence.chunk{|status|status}
statuses = chunks.map(&:first)
chunks = chunks.map(&:last)
current = nil
case chunks.count
when 0
return :empty
when 1
status = statuses.first
return status if [:done, :planned].include?(status)
current = 0
when 2
current = if statuses.first == :done
1
elsif statuses.last == :planned
0
end
when 3
current = 1 if statuses.first == :done && statuses.last == :planned
end
if current
status = statuses[current]
if [:failed, :running].include?(status) && chunks[current].length == 1
return status
end
end
:invalid
end
|