Module: TypstRails::Backends::Registry
- Defined in:
- lib/typst_rails/backends/registry.rb
Overview
Registry of available Typst compilation backends, and resolver that picks the right one to use for a given configuration.
Backends are tried in registration order; the first one whose
Base#available? returns true wins. This lets TypstRails prefer the
typst gem (fast, in-process) when it's installed, and fall back to
shelling out to the typst CLI otherwise.
Class Method Summary collapse
- .backends ⇒ Hash{Symbol => Base}
-
.priority ⇒ Array<Symbol>
Backend names in resolution priority order.
-
.register(name, backend, priority: true) ⇒ void
Registers a backend under the given name.
-
.reset! ⇒ void
Clears all registered backends.
-
.resolve(preference = :auto) ⇒ Base
Resolves which backend to use.
Class Method Details
.backends ⇒ Hash{Symbol => Base}
21 22 23 |
# File 'lib/typst_rails/backends/registry.rb', line 21 def backends @backends ||= {} end |
.priority ⇒ Array<Symbol>
Returns backend names in resolution priority order.
26 27 28 |
# File 'lib/typst_rails/backends/registry.rb', line 26 def priority @priority ||= [] end |
.register(name, backend, priority: true) ⇒ void
This method returns an undefined value.
Registers a backend under the given name.
36 37 38 39 |
# File 'lib/typst_rails/backends/registry.rb', line 36 def register(name, backend, priority: true) backends[name.to_sym] = backend self.priority << name.to_sym if priority && !self.priority.include?(name.to_sym) end |
.reset! ⇒ void
This method returns an undefined value.
Clears all registered backends. Primarily useful for tests.
56 57 58 59 |
# File 'lib/typst_rails/backends/registry.rb', line 56 def reset! @backends = {} @priority = [] end |
.resolve(preference = :auto) ⇒ Base
Resolves which backend to use.
47 48 49 50 51 52 |
# File 'lib/typst_rails/backends/registry.rb', line 47 def resolve(preference = :auto) return preference if preference.is_a?(Base) return fetch_named_backend(preference) if preference && preference != :auto auto_detect end |