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.2.0"
Class Method Summary collapse
- .add_listener(registry, ev, listener) ⇒ Object
- .apply_callback(callback, args, objs) ⇒ Object
- .reset ⇒ Object
- .trigger(ev, with:) ⇒ Object
- .when(ev, exec:) ⇒ 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, args, objs) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/fanli.rb', line 35 def self.apply_callback(callback, args, objs) return if objs.nil? objs.map do |obj| obj.send(callback, args) if obj.respond_to?(callback) obj.call(args) if obj.respond_to?(:call) 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 |
.when(ev, exec:) ⇒ Object
8 9 10 11 12 13 14 15 16 |
# File 'lib/fanli.rb', line 8 def self.when(ev, exec:) if exec.respond_to?(:each) exec.each do |listener| add_listener(@registry, ev.to_sym, listener) end else add_listener(@registry, ev.to_sym, exec) end end |