Sha256: 8d0836755d301c556bbbadd9ca861d263e50d5c6583aefb2c9e9cdcf3f8d4a9d

Contents?: true

Size: 801 Bytes

Versions: 1

Compression:

Stored size: 801 Bytes

Contents

module Resugan
  class Kernel
    def self.register(event, block)
      register_with_namespace("", event, block)
    end

    def self.register_with_namespace(namespace, event, block)
      @listener = {} unless @listener

      event = "#{namespace}_#{event}".to_sym

      unless @listener[event]
        @listener[event] = [block]
      else
        @listener[event] << block
      end

      self
    end

    def self.invoke(namespace, event, payload = [])
      event = "#{namespace}_#{event}".to_sym
      p payload
      if @listener[event]
        @listener[event].each do |listener|
          listener.call(payload.map { |p| p[:params] })
        end
      end
    end

    def self.listeners
      @listener
    end

    def self.clear
      @listener.clear if @listener
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
resugan-0.1.0 lib/resugan/kernel.rb