Sha256: 12eac2dab22a59a0922e8b93785c60e527b66aedd73681fbdadae7eca9347466

Contents?: true

Size: 1.06 KB

Versions: 5

Compression:

Stored size: 1.06 KB

Contents

# Registry of all Metanorma types and entry points
#

require 'singleton'

class Error < StandardError
end

module Metanorma
  class Registry
    include Singleton

    attr_reader :processors

    def initialize
      @processors = {}
    end

    def register processor
      raise Error unless processor < ::Metanorma::Processor
      p = processor.new
      Array(p.short).each do |s|
        @processors[s] = p
      end
      Util.log("[metanorma] processor \"#{Array(p.short)[0]}\" registered", :info)
    end

    def find_processor(short)
      @processors[short.to_sym]
    end

    def supported_backends
      @processors.keys
    end

    def processors
      @processors
    end

    def output_formats
      @processors.inject({}) do |acc, (k,v)|
        acc[k] = v.output_formats
        acc
      end
    end

    def root_tags
      @processors.inject({}) do |acc, (k,v)|
        if v.asciidoctor_backend
          x = Asciidoctor.load nil, {backend: v.asciidoctor_backend}
          acc[k] = x.converter.xml_root_tag
        end
        acc
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
metanorma-1.1.1 lib/metanorma/registry.rb
metanorma-1.1.0 lib/metanorma/registry.rb
metanorma-1.0.6 lib/metanorma/registry.rb
metanorma-1.0.5 lib/metanorma/registry.rb
metanorma-1.0.4 lib/metanorma/registry.rb