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