module Staticme::Events::Dispatcher

Public Class Methods

included(base) click to toggle source
# File lib/staticme/events/dispatcher.rb, line 7
def self.included(base)
  base.class_eval do

    attr_accessor :events

    def on(event_name, &event_handler)
      ((self.events ||= {})[event_name.to_sym] ||= []).push(event_handler)
      self
    end

    def emit(event_name, *args)
      ((self.events ||= {})[event_name.to_sym]).tap do |event_pool|
        return if event_pool.nil?
        event_pool.map do |handler|
          handler.call(*args)
        end
      end
      self
    end

  end
end

Public Instance Methods

emit(event_name, *args) click to toggle source
# File lib/staticme/events/dispatcher.rb, line 17
def emit(event_name, *args)
  ((self.events ||= {})[event_name.to_sym]).tap do |event_pool|
    return if event_pool.nil?
    event_pool.map do |handler|
      handler.call(*args)
    end
  end
  self
end
on(event_name, &event_handler) click to toggle source
# File lib/staticme/events/dispatcher.rb, line 12
def on(event_name, &event_handler)
  ((self.events ||= {})[event_name.to_sym] ||= []).push(event_handler)
  self
end