Module: Radiodan::EventBinding
- Included in:
- Player
- Defined in:
- lib/radiodan/event_binding.rb
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
44
45
46
47
48
49
50
|
# File 'lib/radiodan/event_binding.rb', line 44
def method_missing(method, *args, &block)
if event_bindings.include?(method)
trigger_event(method, *args)
else
super
end
end
|
Instance Method Details
#events ⇒ Object
27
28
29
|
# File 'lib/radiodan/event_binding.rb', line 27
def events
event_bindings.keys.sort
end
|
#register_event(event, &blk) ⇒ Object
3
4
5
6
7
8
9
|
# File 'lib/radiodan/event_binding.rb', line 3
def register_event(event, &blk)
logger.info "Registered event #{event}"
event = event.to_sym
event_bindings[event] << blk
true
end
|
#respond_to?(method) ⇒ Boolean
31
32
33
34
35
36
37
|
# File 'lib/radiodan/event_binding.rb', line 31
def respond_to?(method)
if event_bindings.include?(method)
true
else
super
end
end
|
#trigger_event(event, data = nil) ⇒ Object
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/radiodan/event_binding.rb', line 11
def trigger_event(event, data=nil)
event = event.to_sym
bindings = event_bindings[event]
unless bindings
logger.error "Event #{event} triggered but not found"
end
bindings += event_bindings[:all]
bindings.each do |blk|
EM::Synchrony.next_tick { blk.call(data) }
end
end
|