Class: Kommando::When

Inherits:
Object
  • Object
show all
Defined in:
lib/kommando/when.rb

Constant Summary collapse

VALID_EVENTS =
:start, :retry, :timeout, :error, :exit, :success, :failed

Instance Method Summary collapse

Constructor Details

#initialize(parent = nil) ⇒ When

Returns a new instance of When.



4
5
6
7
8
# File 'lib/kommando/when.rb', line 4

def initialize(parent=nil)
  @parent = parent
  @whens = {}
  @fired = []
end

Instance Method Details

#fire(event_name) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/kommando/when.rb', line 29

def fire(event_name)
  event_name_as_sym = event_name.to_sym
  validate_event_name(event_name_as_sym)

  @fired << event_name_as_sym
  debug "set #{event_name_as_sym} as fired"

  if blocks = @whens[event_name]
    debug "firing cbs for #{event_name_as_sym}"
    blocks.each do |block|
      debug "firing cb for #{event_name_as_sym}"
      if @parent
        block.call(@parent)
      else
        block.call
      end
      debug "fired cb for #{event_name_as_sym}"
    end
  else
    debug "no cbs for #{event_name_as_sym}"
  end
end

#register(event_name, block) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/kommando/when.rb', line 10

def register(event_name, block)
  event_name_as_sym = event_name.to_sym
  validate_event_name(event_name_as_sym)

  @whens[event_name_as_sym] = if @whens[event_name_as_sym]
    @whens[event_name_as_sym] << block
  else
    [block]
  end

  if @fired.include? event_name_as_sym
    debug "cb firing as #{event_name_as_sym} already fired."
    block.call
    debug "cb fired as #{event_name_as_sym} already fired."
  else
    debug "cb for #{event_name_as_sym} registered, not fired."
  end
end