Module: FlatKit::EventEmitter

Included in:
Merge, Stats
Defined in:
lib/flat_kit/event_emitter.rb

Overview

A simplified Observable class for use internally

Instance Method Summary collapse

Instance Method Details

#_listenersObject



29
30
31
# File 'lib/flat_kit/event_emitter.rb', line 29

def _listeners
  @_listeners ||= Array.new
end

#add_listener(listener) ⇒ Object

Raises:

  • (::NoMethodError)


5
6
7
8
9
# File 'lib/flat_kit/event_emitter.rb', line 5

def add_listener(listener)
  raise ::NoMethodError, "#{listener} does not resond to #on_event" unless listener.respond_to?(:on_event)
  self._listeners ||= []
  self._listeners << listener unless _listeners.include?(listener)
end

#count_listenersObject



11
12
13
# File 'lib/flat_kit/event_emitter.rb', line 11

def count_listeners
  _listeners.size
end

#notify_listeners(name:, data:, meta: nil) ⇒ Object



23
24
25
26
27
# File 'lib/flat_kit/event_emitter.rb', line 23

def notify_listeners(name:, data:, meta: nil)
  _listeners.each do |l|
    l.on_event(name: name, data: data, meta: meta)
  end
end

#remove_listener(listener) ⇒ Object



15
16
17
# File 'lib/flat_kit/event_emitter.rb', line 15

def remove_listener(listener)
  _listeners.delete(listener)
end

#remove_listenersObject



19
20
21
# File 'lib/flat_kit/event_emitter.rb', line 19

def remove_listeners
  _listeners.clear
end