Class: Resugan::Kernel

Inherits:
Object show all
Defined in:
lib/resugan/kernel.rb

Class Method Summary collapse

Class Method Details

.clearObject



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_dispatcherObject



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

Returns:

  • (Boolean)


17
18
19
# File 'lib/resugan/kernel.rb', line 17

def self.line_trace_enabled?
  @enable || false
end

.listenersObject



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

Returns:

  • (Boolean)


8
9
10
# File 'lib/resugan/kernel.rb', line 8

def self.warn_no_context_events?
  @warn_no_context_events || false
end