Module: Action::State::ClassMethods

Included in:
Action::State
Defined in:
lib/action/state/class_methods.rb

Instance Method Summary collapse

Instance Method Details

#sequence_status(sequence) ⇒ Object



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