class Helium::Console::Registry

Public Instance Methods

add(klass, &handler) click to toggle source
# File lib/helium/console/registry.rb, line 80
def add(klass, &handler)
  define(klass) do
    define_method(:call, &handler)
  end
end
define(klass, &block) click to toggle source
# File lib/helium/console/registry.rb, line 86
def define(klass, &block)
  handlers[klass] = Class.new(Element, &block)
end
handler_for(object, **options) click to toggle source
# File lib/helium/console/registry.rb, line 90
def handler_for(object, **options)
  element_class = object.class.ancestors.find do |ancestor|
    break handlers[ancestor] if handlers.key?(ancestor)
    break handlers[ancestor.name] if handlers.key?(ancestor.name)
  end
  return unless element_class

  element_class.new(object, **options)
end

Private Instance Methods

handlers() click to toggle source
# File lib/helium/console/registry.rb, line 102
def handlers
  @handlers ||= {}
end