Class: Arrolio::Flavor::Registry
- Inherits:
-
Object
- Object
- Arrolio::Flavor::Registry
- Defined in:
- lib/arrolio/flavor/registry.rb
Overview
Flavor registry. Flavors register their pipeline class at load time; applications look up flavors by name. This enables multiple flavors to coexist without the core engine knowing about any of them.
A flavor's pipeline class must respond to:
.render(xml, io:, **opts) — render XML to PDF bytes
Example:
Arrolio::Flavor::Registry.register(:my_flavor, Arrolio::Oiml::Pipeline)
Arrolio::Flavor::Registry.for(:my_flavor).render(xml, io: io)
Class Attribute Summary collapse
-
.flavors ⇒ Object
readonly
Returns the value of attribute flavors.
Class Method Summary collapse
-
.for(name) ⇒ Object
Look up a registered flavor.
-
.names ⇒ Object
All registered flavor names.
-
.register(name, pipeline_class) ⇒ Object
Register a flavor by name.
-
.registered?(name) ⇒ Boolean
Is a flavor registered?.
-
.reset! ⇒ Object
Clear all registrations — used in specs.
Class Attribute Details
.flavors ⇒ Object (readonly)
Returns the value of attribute flavors.
20 21 22 |
# File 'lib/arrolio/flavor/registry.rb', line 20 def flavors @flavors end |
Class Method Details
.for(name) ⇒ Object
Look up a registered flavor. Returns the pipeline class or raises if not found.
30 31 32 33 34 35 |
# File 'lib/arrolio/flavor/registry.rb', line 30 def for(name) key = name.to_sym @flavors[key] || raise(ArgumentError, "Unknown flavor #{name.inspect}; registered: #{@flavors.keys.inspect}") end |
.names ⇒ Object
All registered flavor names.
38 39 40 |
# File 'lib/arrolio/flavor/registry.rb', line 38 def names @flavors.keys end |
.register(name, pipeline_class) ⇒ Object
Register a flavor by name. pipeline_class must respond
to .render(xml, io:, **opts).
24 25 26 |
# File 'lib/arrolio/flavor/registry.rb', line 24 def register(name, pipeline_class) @flavors[name.to_sym] = pipeline_class end |
.registered?(name) ⇒ Boolean
Is a flavor registered?
43 44 45 |
# File 'lib/arrolio/flavor/registry.rb', line 43 def registered?(name) @flavors.key?(name.to_sym) end |
.reset! ⇒ Object
Clear all registrations — used in specs.
48 49 50 |
# File 'lib/arrolio/flavor/registry.rb', line 48 def reset! @flavors.clear end |