Module: Fanli

Defined in:
lib/fanli.rb,
lib/fanli/base.rb,
lib/fanli/event.rb,
lib/fanli/version.rb

Overview

Fanli

Defined Under Namespace

Classes: Base, Event

Constant Summary collapse

VERSION =
"0.3.0"

Class Method Summary collapse

Class Method Details

.add_listener(registry, ev, listener) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/fanli.rb', line 27

def self.add_listener(registry, ev, listener)
  queue = registry[ev]
  if queue
    queue << listener
  else
    registry[ev] = [listener]
  end
end

.apply_callback(callback, data, objs) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/fanli.rb', line 36

def self.apply_callback(callback, data, objs)
  return if objs.nil?
  objs.map do |obj|
    if obj.respond_to?(callback)
      obj.send(callback, data)
    elsif obj.respond_to?(:call)
      obj.call(data)
    else
      next
    end
  end
end

.on(ev, *listeners) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/fanli.rb', line 9

def self.on(ev, *listeners)
  if listeners.size  == 1
    add_listener(@registry, ev.to_sym, listeners.first)
  else
    listeners.each do |ln|
      add_listener(@registry, ev.to_sym, ln)
    end
  end
end

.resetObject



23
24
25
# File 'lib/fanli.rb', line 23

def self.reset
  @registry = {}
end

.trigger(ev, with:) ⇒ Object



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

def self.trigger(ev, with:)
  apply_callback("on_#{ev}", with, @registry[ev.to_sym])
end