Sha256: dfa22ef237c3f907c00733ea254c7a9d6ca8a52a66e6ea4b49dd1a9cdc7bf7fe

Contents?: true

Size: 439 Bytes

Versions: 4

Compression:

Stored size: 439 Bytes

Contents

module Vedeu
  module EventRepository
    extend self

    def handlers
      @handlers ||= Hash.new { |h, k| h[k] = [] }.merge(defaults)
    end

    def register(event, &block)
      handlers[event] << block
    end

    def trigger(event, *args)
      handlers[event].each do |handler|
        handler.call(*args)
      end
    end

    private

    def defaults
      {
        :_exit_ => [ proc { :exit } ],
      }
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
vedeu-0.0.34 lib/vedeu/repository/event_repository.rb
vedeu-0.0.33 lib/vedeu/repository/event_repository.rb
vedeu-0.0.32 lib/vedeu/repository/event_repository.rb
vedeu-0.0.31 lib/vedeu/repository/event_repository.rb