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
316 317 318 319 320 321 322 323 324 |
# File 'lib/asciidoctor/converter.rb', line 316 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
301 302 303 304 305 306 307 |
# File 'lib/asciidoctor/converter.rb', line 301 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
309 310 311 312 313 314 |
# File 'lib/asciidoctor/converter.rb', line 309 def unregister_all @@mutex.synchronize do @@registry = @@registry.select {|backend| PROVIDED[backend] } @@catch_all = nil end end |