class DaFunk::EventListener

Attributes

listeners[RW]
block_check[RW]
block_finish[RW]
block_start[RW]
handlers[RW]
type[R]

Public Class Methods

add_handler(handler) click to toggle source
# File lib/da_funk/event_listener.rb, line 25
def self.add_handler(handler)
  if listener = self.listeners[handler.type]
    listener.handlers = listener.handlers.dup
    listener.handlers[handler.option] = handler
  end
end
check(_type = nil) click to toggle source
# File lib/da_funk/event_listener.rb, line 9
def self.check(_type = nil)
  if _type
    self.listeners.each { |type, listener| listener.check if type == _type }
  else
    self.listeners.each { |type, listener| listener.check }
  end
end
delete(event_listener) click to toggle source
# File lib/da_funk/event_listener.rb, line 21
def self.delete(event_listener)
  self.listeners.delete(event_listener.type)
end
new(type) { |self| ... } click to toggle source
# File lib/da_funk/event_listener.rb, line 35
def initialize(type)
  @type     = type
  @handlers = Hash.new
  yield self if block_given?
  self.register
  self.start
end
register(event_listener) click to toggle source
# File lib/da_funk/event_listener.rb, line 17
def self.register(event_listener)
  self.listeners[event_listener.type] = event_listener
end

Public Instance Methods

check(&block) click to toggle source
# File lib/da_funk/event_listener.rb, line 64
def check(&block)
  if block_given?
    @block_check = block
  else
    if @block_check && ! self.handlers.empty? && self.started?
      @block_check.call
    end
  end
end
delete() click to toggle source
# File lib/da_funk/event_listener.rb, line 47
def delete
  self.finish if self.started?
  EventListener.delete(self)
end
finish(&block) click to toggle source
# File lib/da_funk/event_listener.rb, line 74
def finish(&block)
  if block_given?
    @block_finish = block
  else
    @started = false
    @block_finish.call if @block_finish
  end
end
register() click to toggle source
# File lib/da_funk/event_listener.rb, line 43
def register
  EventListener.register(self)
end
start(&block) click to toggle source
# File lib/da_funk/event_listener.rb, line 52
def start(&block)
  if block_given?
    @block_start = block
  else
    if @block_start
      @started = @block_start.call
    else
      @started = true
    end
  end
end
started?() click to toggle source
# File lib/da_funk/event_listener.rb, line 83
def started?
  @started
end