Class: Resugan::Kernel
Class Method Summary collapse
- .clear ⇒ Object
- .default_dispatcher ⇒ Object
- .dispatcher_for(namespace = '') ⇒ Object
-
.enable_line_trace(enable) ⇒ Object
flag to log the line source where a fire was executed.
- .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
- .set_default_dispatcher(dispatcher) ⇒ Object
-
.warn_no_context_events(enable) ⇒ Object
show warning when a _fire was called and there was no context to consume it.
- .warn_no_context_events? ⇒ Boolean
Class Method Details
.clear ⇒ Object
78 79 80 81 |
# File 'lib/resugan/kernel.rb', line 78 def self.clear @listener_ids.clear if @listener_ids @_listener.clear if @_listener end |
.default_dispatcher ⇒ Object
25 26 27 |
# File 'lib/resugan/kernel.rb', line 25 def self.default_dispatcher @default_dispatcher || Resugan::Engine::InlineDispatcher.new end |
.dispatcher_for(namespace = '') ⇒ Object
29 30 31 32 |
# File 'lib/resugan/kernel.rb', line 29 def self.dispatcher_for(namespace = '') @dispatchers = {} unless @dispatchers @dispatchers[namespace] || default_dispatcher end |
.enable_line_trace(enable) ⇒ Object
flag to log the line source where a fire was executed
13 14 15 |
# File 'lib/resugan/kernel.rb', line 13 def self.enable_line_trace(enable) @enable = enable end |
.invoke(namespace, event, payload = []) ⇒ Object
65 66 67 68 69 70 71 72 |
# File 'lib/resugan/kernel.rb', line 65 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
17 18 19 |
# File 'lib/resugan/kernel.rb', line 17 def self.line_trace_enabled? @enable || false end |
.listeners ⇒ Object
74 75 76 |
# File 'lib/resugan/kernel.rb', line 74 def self.listeners @_listener end |
.register(event, &block) ⇒ Object
39 40 41 |
# File 'lib/resugan/kernel.rb', line 39 def self.register(event, &block) register_with_namespace("", event, block) end |
.register_dispatcher(dispatcher, namespace = '') ⇒ Object
34 35 36 37 |
# File 'lib/resugan/kernel.rb', line 34 def self.register_dispatcher(dispatcher, namespace = '') @dispatchers = {} unless @dispatchers @dispatchers[namespace] = dispatcher.is_a?(Class) ? dispatcher.new : dispatcher end |
.register_with_namespace(namespaces, event_type, listener_id = nil, block) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/resugan/kernel.rb', line 43 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 |
.set_default_dispatcher(dispatcher) ⇒ Object
21 22 23 |
# File 'lib/resugan/kernel.rb', line 21 def self.set_default_dispatcher(dispatcher) @default_dispatcher ||= dispatcher.new end |
.warn_no_context_events(enable) ⇒ Object
show warning when a _fire was called and there was no context to consume it
4 5 6 |
# File 'lib/resugan/kernel.rb', line 4 def self.warn_no_context_events(enable) @warn_no_context_events = enable end |
.warn_no_context_events? ⇒ Boolean
8 9 10 |
# File 'lib/resugan/kernel.rb', line 8 def self.warn_no_context_events? @warn_no_context_events || false end |