Sha256: b776722ac9fe03c4e53596eb07ed6be6f3594183e55dc758ceef607e2ca56a30

Contents?: true

Size: 1.05 KB

Versions: 7

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

module Emittance
  ##
  # Can watch for events that propagate through the system.
  #
  module Watcher
    # Watch for an event, identified by its class' identifier. If a callback method is provided, then it will call that
    # method on the caller of +watch+ when the event happens. Otherwise, it will run the callback block.
    #
    # @param identifier [Symbol] the event's identifier
    # @param callback_method [Symbol] one option for adding a callback--the method on the object to call when the
    #   event fires
    # @param callback [Block] the other option for adding a callback--the block you wish to be executed when the event
    #   fires
    # @return [Proc] the block that will run when the event fires
    def watch(identifier, callback_method = nil, &callback)
      if callback_method
        _dispatcher.register_method_call identifier, self, callback_method
      else
        _dispatcher.register identifier, &callback
      end
    end

    private

    def _dispatcher
      Emittance.dispatcher
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
emittance-0.1.3 lib/emittance/watcher.rb
emittance-0.1.2 lib/emittance/watcher.rb
emittance-0.1.1 lib/emittance/watcher.rb
emittance-0.1.0 lib/emittance/watcher.rb
emittance-0.0.6 lib/emittance/watcher.rb
emittance-0.0.5 lib/emittance/watcher.rb
emittance-0.0.4 lib/emittance/watcher.rb