class Kommando::When
Constants
- VALID_EVENTS
Public Class Methods
new(parent=nil)
click to toggle source
# File lib/kommando/when.rb, line 4 def initialize(parent=nil) @parent = parent @whens = {} @fired = [] end
Public Instance Methods
fire(event_name)
click to toggle source
# 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)
click to toggle source
# 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
Private Instance Methods
debug(msg)
click to toggle source
# File lib/kommando/when.rb, line 57 def debug(msg) return unless ENV["DEBUG"] print "W#{msg}" end
validate_event_name(event_name_as_sym)
click to toggle source
# File lib/kommando/when.rb, line 53 def validate_event_name(event_name_as_sym) raise Kommando::Error, "When '#{event_name_as_sym}' is not known." unless VALID_EVENTS.include? event_name_as_sym end