Sha256: 90c32eb5d0df92c64eef2fccfb79d6dbaeb07e828c71e8f787afb5a81f1b7c4d
Contents?: true
Size: 1010 Bytes
Versions: 2
Compression:
Stored size: 1010 Bytes
Contents
class Radiodan module EventBinding def register_event(event, &blk) logger.info "Registered event #{event}" event = event.to_sym event_bindings[event] << blk true end 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 # also, run the events bound to :all, no matter the event bindings += event_bindings[:all] bindings.each do |blk| EM::Synchrony.next_tick { blk.call(data) } end end def events event_bindings.keys.sort end def respond_to?(method) if event_bindings.include?(method) true else super end end private def event_bindings @event_bindings ||= Hash.new{ |h, k| h[k] = [] } end def method_missing(method, *args, &block) if event_bindings.include?(method) trigger_event(method, *args) else super end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
radiodan-1.0.1 | lib/radiodan/event_binding.rb |
radiodan-1.0.0 | lib/radiodan/event_binding.rb |