Class: Resugan::Kernel
Class Method Summary collapse
- .clear ⇒ Object
- .config ⇒ Object
- .default_dispatcher ⇒ Object
- .dispatcher_for(namespace = '') ⇒ Object
- .invoke(namespace, event, payload = []) ⇒ Object
- .line_trace_enabled? ⇒ Boolean
- .listeners ⇒ Object
- .register(event, &block) ⇒ Object
- .register_dispatcher(dispatcher, namespace = '') ⇒ Object
- .register_with_namespace(namespaces, event_type, listener_id = nil, block) ⇒ Object
- .reuse_top_level_context? ⇒ Boolean
- .set_default_dispatcher(dispatcher) ⇒ Object
- .warn_no_context_events? ⇒ Boolean
Class Method Details
.clear ⇒ Object
92 93 94 95 |
# File 'lib/resugan/kernel.rb', line 92 def self.clear @listener_ids.clear if @listener_ids @_listener.clear if @_listener end |
.config ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/resugan/kernel.rb', line 14 def self.config @config ||= Resugan::Config.new if block_given? yield @config end @config end |
.default_dispatcher ⇒ Object
39 40 41 |
# File 'lib/resugan/kernel.rb', line 39 def self.default_dispatcher config.default_dispatcher end |
.dispatcher_for(namespace = '') ⇒ Object
43 44 45 46 |
# File 'lib/resugan/kernel.rb', line 43 def self.dispatcher_for(namespace = '') @dispatchers = {} unless @dispatchers @dispatchers[namespace.to_s] || default_dispatcher.new end |
.invoke(namespace, event, payload = []) ⇒ Object
79 80 81 82 83 84 85 86 |
# File 'lib/resugan/kernel.rb', line 79 def self.invoke(namespace, event, payload = []) event = "#{namespace}_#{event}".to_sym if @_listener && @_listener[event] @_listener[event].each do |_listener| _listener.call(payload.map { |p| p[:params] || p['params'] }) end end end |
.line_trace_enabled? ⇒ Boolean
31 32 33 |
# File 'lib/resugan/kernel.rb', line 31 def self.line_trace_enabled? config.line_trace_enabled end |
.listeners ⇒ Object
88 89 90 |
# File 'lib/resugan/kernel.rb', line 88 def self.listeners @_listener end |
.register(event, &block) ⇒ Object
53 54 55 |
# File 'lib/resugan/kernel.rb', line 53 def self.register(event, &block) register_with_namespace("", event, block) end |
.register_dispatcher(dispatcher, namespace = '') ⇒ Object
48 49 50 51 |
# File 'lib/resugan/kernel.rb', line 48 def self.register_dispatcher(dispatcher, namespace = '') @dispatchers = {} unless @dispatchers @dispatchers[namespace.to_s] = (dispatcher.is_a?(Class) ? dispatcher.new : dispatcher) end |
.register_with_namespace(namespaces, event_type, listener_id = nil, block) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/resugan/kernel.rb', line 57 def self.register_with_namespace(namespaces, event_type, listener_id = nil, block) @listener_ids = {} unless @listener_ids @_listener = {} unless @_listener namespaces = namespaces.is_a?(Array) ? namespaces : [namespaces] namespaces.each do |n| next if listener_id && @listener_ids["#{n}_#{listener_id}"] event = "#{n}_#{event_type}".to_sym unless @_listener[event] @_listener[event] = [block] else @_listener[event] << block end @listener_ids["#{n}_#{listener_id}"] = block if listener_id end self end |
.reuse_top_level_context? ⇒ Boolean
23 24 25 |
# File 'lib/resugan/kernel.rb', line 23 def self.reuse_top_level_context? config.reuse_top_level_context end |
.set_default_dispatcher(dispatcher) ⇒ Object
35 36 37 |
# File 'lib/resugan/kernel.rb', line 35 def self.set_default_dispatcher(dispatcher) config.default_dispatcher = dispatcher end |
.warn_no_context_events? ⇒ Boolean
27 28 29 |
# File 'lib/resugan/kernel.rb', line 27 def self.warn_no_context_events? config.warn_no_context_events end |