Module: Fanli
- Defined in:
- lib/fanli.rb,
lib/fanli/base.rb,
lib/fanli/version.rb
Overview
Fanli
Defined Under Namespace
Classes: Base
Constant Summary collapse
- VERSION =
"0.4.0"
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
26 27 28 29 30 31 32 33 |
# File 'lib/fanli.rb', line 26 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
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/fanli.rb', line 35 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
8 9 10 11 12 13 14 15 16 |
# File 'lib/fanli.rb', line 8 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
22 23 24 |
# File 'lib/fanli.rb', line 22 def self.reset @registry = {} end |
.trigger(ev, with:) ⇒ Object
18 19 20 |
# File 'lib/fanli.rb', line 18 def self.trigger(ev, with:) apply_callback("on_#{ev}", with, @registry[ev.to_sym]) end |