Module: AdminSuite::RendererRegistry

Defined in:
lib/admin_suite/renderer_registry.rb

Overview

Maps panel render: keys to Renderer classes.

Two independent stores, so a host following the deprecation advice printed for a legacy renderer (or simply overriding a built-in) actually takes effect:

  • register / lookup — explicit registrations: a host initializer (or a spec) calling RendererRegistry.register(:key, SomeClass).
  • register_default / lookup_default — the gem's own boot-time registrations (the four built-ins, their two aliases, and the four deprecated Gleania renderers — see lib/admin_suite.rb).

AdminSuite::BaseHelper#render_custom_section checks lookup, then a host Admin::Renderers::<Key>Renderer class, then lookup_default — explicit beats host-class beats gem-default. See that method for the full precedence chain (legacy config.custom_renderers procs come first, ahead of all of this).

Class Method Summary collapse

Class Method Details

.lookup(key) ⇒ Class?

Returns the explicit registration for key, if any.

Returns:

  • (Class, nil)

    the explicit registration for key, if any



41
42
43
# File 'lib/admin_suite/renderer_registry.rb', line 41

def lookup(key)
  @registry[key.to_sym]
end

.lookup_default(key) ⇒ Class?

Returns the gem-default registration for key, if any.

Returns:

  • (Class, nil)

    the gem-default registration for key, if any



46
47
48
# File 'lib/admin_suite/renderer_registry.rb', line 46

def lookup_default(key)
  @defaults[key.to_sym]
end

.register(key, klass) ⇒ Object

Explicit registration (host apps, initializers, specs). Takes precedence over everything but a legacy config.custom_renderers proc.



29
30
31
# File 'lib/admin_suite/renderer_registry.rb', line 29

def register(key, klass)
  @registry[key.to_sym] = klass
end

.register_default(key, klass) ⇒ Object

Gem boot-time registration. Only consulted after a host's own explicit registration and its Admin::Renderers::<Key>Renderer class have both been checked and found nothing.



36
37
38
# File 'lib/admin_suite/renderer_registry.rb', line 36

def register_default(key, klass)
  @defaults[key.to_sym] = klass
end

.registeredArray<Symbol>

Every key known to either store (explicit ∪ default).

Returns:

  • (Array<Symbol>)


53
54
55
# File 'lib/admin_suite/renderer_registry.rb', line 53

def registered
  (@defaults.keys | @registry.keys)
end

.unregister(key) ⇒ Object

Test-support only. Removes a single explicit registration.

There is intentionally no bulk reset!, and this never touches the default store: AdminSuite's own built-in renderers register themselves as defaults at require time, once, for the life of the process. Specs that register scratch/probe renderers via register should call unregister for exactly the key(s) they added, in a teardown.



65
66
67
# File 'lib/admin_suite/renderer_registry.rb', line 65

def unregister(key)
  @registry.delete(key.to_sym)
end