Class: Resugan::Kernel

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

Class Method Summary collapse

Class Method Details

.clearObject



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

.configObject



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_dispatcherObject



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

Returns:

  • (Boolean)


31
32
33
# File 'lib/resugan/kernel.rb', line 31

def self.line_trace_enabled?
  config.line_trace_enabled
end

.listenersObject



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

Returns:

  • (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

Returns:

  • (Boolean)


27
28
29
# File 'lib/resugan/kernel.rb', line 27

def self.warn_no_context_events?
  config.warn_no_context_events
end