module WisperNext::Publisher::Methods
Public Instance Methods
on(name, &block)
click to toggle source
subscribes the given block to an event
@param [String, Symbol] event name
@return [Object] self
@api public
# File lib/wisper_next/publisher.rb, line 90 def on(name, &block) raise ArgumentError, 'must pass a block' unless block_given? subscribe(CallableAdapter.new(name, block)) self end
subscribe(listener)
click to toggle source
subscribes given listener
@param [Object] listener
@return [Object] self
@api public
# File lib/wisper_next/publisher.rb, line 75 def subscribe(listener) raise ListenerAlreadyRegisteredError.new(listener) if subscribed?(listener) raise NoEventHandlerError.new(listener) unless listener.respond_to?(:on_event) subscribers.push(listener) self end
subscribed?(listener)
click to toggle source
returns true when given listener is already subscribed
@param [Object] listener
@return [Boolean]
@api public
# File lib/wisper_next/publisher.rb, line 63 def subscribed?(listener) subscribers.include?(listener) end
Private Instance Methods
broadcast(name, payload = nil)
click to toggle source
Broadcast event to all subscribed listeners
@param [String,Symbol] event name
@param [Object] optional payload
@return [Object] self
@api public
# File lib/wisper_next/publisher.rb, line 108 def broadcast(name, payload = nil) subscribers.each do |s| s.public_send(:on_event, name, payload) end self end
subscribers()
click to toggle source
Returns subscribed listeners
@return [Array<Object>] collection of subscribers
@api private
# File lib/wisper_next/publisher.rb, line 122 def subscribers @subscribers ||= [] end