Module: Asciidoctor::Converter::DefaultFactory
- Includes:
- Factory
- Included in:
- Asciidoctor::Converter, DefaultFactoryProxy
- Defined in:
- lib/asciidoctor/converter.rb
Overview
Mixed into the Asciidoctor::Converter module to provide the global registry of converters that are registered statically.
This registry includes built-in converters for HTML 5, DocBook 5 and man(ual) page, as well as any custom converters that have been discovered or explicitly registered. Converter registration is synchronized (where applicable) and is thus guaranteed to be thread safe.
Constant Summary collapse
- PROVIDED =
{ 'docbook5' => %(#{__dir__}/converter/docbook5), 'html5' => %(#{__dir__}/converter/html5), 'manpage' => %(#{__dir__}/converter/manpage), }
Instance Method Summary collapse
Methods included from Factory
#converters, create, #create, default, new
Instance Method Details
#for(backend) ⇒ Object
314 315 316 317 318 319 320 321 322 |
# File 'lib/asciidoctor/converter.rb', line 314 def for backend @@registry.fetch backend do PROVIDED[backend] ? (@@mutex.synchronize do # require is thread-safe, so no reason to refetch require PROVIDED[backend] @@registry[backend] end) : catch_all end end |
#register(converter, *backends) ⇒ Object
299 300 301 302 303 304 305 |
# File 'lib/asciidoctor/converter.rb', line 299 def register converter, *backends if @@mutex.owned? backends.each {|backend| backend == '*' ? (@@catch_all = converter) : (@@registry = @@registry.merge backend => converter) } else @@mutex.synchronize { register converter, *backends } end end |
#unregister_all ⇒ Object
307 308 309 310 311 312 |
# File 'lib/asciidoctor/converter.rb', line 307 def unregister_all @@mutex.synchronize do @@registry = @@registry.select {|backend| PROVIDED[backend] } @@catch_all = nil end end |