Module: Fanli
- Defined in:
- lib/fanli.rb,
lib/fanli/base.rb,
lib/fanli/event.rb,
lib/fanli/version.rb
Overview
Fanli
Defined Under Namespace
Constant Summary collapse
- VERSION =
"0.3.1"
Class Method Summary collapse
- .add_listener(registry, ev, listener) ⇒ Object
- .apply_callback(callback, data, objs) ⇒ Object
- .on(ev, *listeners) ⇒ Object
- .reset ⇒ Object
- .trigger(ev, with:) ⇒ Object
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 |
.reset ⇒ Object
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 |