Sha256: e064336a7d1bea16e179082728a10a8e086de332aa73da88d99dbba08a2198c7

Contents?: true

Size: 1.27 KB

Versions: 43

Compression:

Stored size: 1.27 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 = {}
      @aliases = { csd: :cc, m3d: :m3aawg, mpfd: :mpfa, csand: :csa }
    end

    def alias(x)
      @aliases[x]
    end

    def register(processor)
      raise Error unless processor < ::Metanorma::Processor

      p = processor.new
      # p.short[-1] is the canonical name
      short = Array(p.short)
      @processors[short[-1]] = p
      short.each do |s|
        @aliases[s] = short[-1]
      end
      Array(p.short)
      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 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

43 entries across 43 versions & 1 rubygems

Version Path
metanorma-1.7.7 lib/metanorma/registry.rb
metanorma-1.7.6 lib/metanorma/registry.rb
metanorma-1.7.5 lib/metanorma/registry.rb
metanorma-1.7.4 lib/metanorma/registry.rb
metanorma-1.7.3 lib/metanorma/registry.rb
metanorma-1.7.2 lib/metanorma/registry.rb
metanorma-1.7.1 lib/metanorma/registry.rb
metanorma-1.7.0 lib/metanorma/registry.rb
metanorma-1.6.9 lib/metanorma/registry.rb
metanorma-1.6.8 lib/metanorma/registry.rb
metanorma-1.6.7 lib/metanorma/registry.rb
metanorma-1.6.6 lib/metanorma/registry.rb
metanorma-1.6.5 lib/metanorma/registry.rb
metanorma-1.6.4 lib/metanorma/registry.rb
metanorma-1.6.3 lib/metanorma/registry.rb
metanorma-1.6.2 lib/metanorma/registry.rb
metanorma-1.6.1 lib/metanorma/registry.rb
metanorma-1.6.0 lib/metanorma/registry.rb
metanorma-1.5.12 lib/metanorma/registry.rb
metanorma-1.5.11 lib/metanorma/registry.rb