Module: Metanorma::Core::Isodoc

Defined in:
lib/metanorma/core/isodoc.rb

Defined Under Namespace

Classes: EmptyNode

Class Method Summary collapse

Class Method Details

.init(converter, lang:, script:, locale: nil, i18nyaml: nil, xml: nil, localdir: nil) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/metanorma/core/isodoc.rb', line 19

def self.init(converter, lang:, script:, locale: nil,
              i18nyaml: nil, xml: nil, localdir: nil)
  converter.init_i18n(i18nyaml: i18nyaml, language: lang,
                      script: script, locale: locale)
  i18n = converter.i18n_init(lang, script, locale, i18nyaml)
  converter.(lang, script, locale, i18n)
  converter.meta.localdir = localdir if localdir
  converter.xref_init(lang, script, nil, i18n, {})
  converter.xrefs.klass.meta = converter.meta
  converter.xrefs.klass.localdir = localdir if localdir
  converter.info(xml, nil) if xml
  converter
end

.resolve_converter(flavor, presxml: true) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/metanorma/core/isodoc.rb', line 33

def self.resolve_converter(flavor, presxml: true)
  resolved = Metanorma::Core::FlavorLoader.load_flavor(flavor)
  conv_class = ::Asciidoctor::Converter.for(resolved.to_s) ||
    ::Asciidoctor::Converter.for(resolved)
  conv_class or
    raise "No Asciidoctor converter registered for #{resolved}"
  conv_instance = conv_class.new(resolved.to_s, {})
  method_name = presxml ? :presentation_xml_converter : :html_converter
  conv_instance.respond_to?(method_name) or
    raise "Flavor #{resolved} does not support " \
          "#{presxml ? 'presentation XML' : 'HTML'} conversion"
  conv_instance.send(method_name, EmptyNode.new)
end