class Resugan::Kernel

Public Class Methods

clear() click to toggle source
# File lib/resugan/kernel.rb, line 92
def self.clear
  @listener_ids.clear if @listener_ids
  @_listener.clear if @_listener
end
config() { |config| ... } click to toggle source
# File lib/resugan/kernel.rb, line 14
def self.config
  @config ||= Resugan::Config.new
  if block_given?
    yield @config
  end

  @config
end
default_dispatcher() click to toggle source
# File lib/resugan/kernel.rb, line 39
def self.default_dispatcher
  config.default_dispatcher
end
dispatcher_for(namespace = '') click to toggle source
# 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 = []) click to toggle source
# 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?() click to toggle source
# File lib/resugan/kernel.rb, line 31
def self.line_trace_enabled?
  config.line_trace_enabled
end
listeners() click to toggle source
# File lib/resugan/kernel.rb, line 88
def self.listeners
  @_listener
end
register(event, &block) click to toggle source
# File lib/resugan/kernel.rb, line 53
def self.register(event, &block)
  register_with_namespace("", event, block)
end
register_dispatcher(dispatcher, namespace = '') click to toggle source
# 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) click to toggle source
# 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?() click to toggle source
# File lib/resugan/kernel.rb, line 23
def self.reuse_top_level_context?
  config.reuse_top_level_context
end
set_default_dispatcher(dispatcher) click to toggle source
# File lib/resugan/kernel.rb, line 35
def self.set_default_dispatcher(dispatcher)
  config.default_dispatcher = dispatcher
end
warn_no_context_events?() click to toggle source
# File lib/resugan/kernel.rb, line 27
def self.warn_no_context_events?
  config.warn_no_context_events
end