lib/metanorma/compile.rb in metanorma-1.4.6 vs lib/metanorma/compile.rb in metanorma-1.4.7

- old
+ new

@@ -3,10 +3,11 @@ require "htmlentities" require "yaml" require "fontist" require "fontist/manifest/install" require_relative "compile_validate" +require_relative "compile_options" require_relative "fontist_utils" require_relative "util" require_relative "sectionsplit" require_relative "extract" require_relative "worker_pool" @@ -30,65 +31,14 @@ @processor = @registry.find_processor(options[:type].to_sym) extensions = get_extensions(options) or return nil (file, isodoc = process_input(filename, options)) or return nil relaton_export(isodoc, options) extract(isodoc, options[:extract], options[:extract_type]) - FontistUtils.install_fonts(@processor, options) unless @fontist_installed - @fontist_installed = true + font_install(options) process_exts(filename, extensions, file, isodoc, options) end - def require_libraries(options) - options&.dig(:require)&.each { |r| require r } - end - - def xml_options_extract(file) - xml = Nokogiri::XML(file) { |config| config.huge } - if xml.root - @registry.root_tags.each do |k, v| - return { type: k } if v == xml.root.name - end - end - {} - end - - def options_extract(filename, options) - content = read_file(filename) - o = Metanorma::Input::Asciidoc.new.extract_metanorma_options(content) - .merge(xml_options_extract(content)) - options[:type] ||= o[:type]&.to_sym - t = @registry.alias(options[:type]) and options[:type] = t - dir = filename.sub(%r(/[^/]+$), "/") - options[:relaton] ||= "#{dir}/#{o[:relaton]}" if o[:relaton] - options[:sourcecode] ||= "#{dir}/#{o[:sourcecode]}" if o[:sourcecode] - options[:extension_keys] ||= o[:extensions]&.split(/, */)&.map(&:to_sym) - options[:extension_keys] = nil if options[:extension_keys] == [:all] - options[:format] ||= :asciidoc - options[:filename] = filename - options - end - - def get_extensions(options) - options[:extension_keys] ||= - @processor.output_formats.reduce([]) { |memo, (k, _)| memo << k } - extensions = options[:extension_keys].reduce([]) do |memo, e| - if @processor.output_formats[e] then memo << e - else - message = "[metanorma] Error: #{e} format is not supported for this standard." - @errors << message - Util.log(message, :error) - memo - end - end - if !extensions.include?(:presentation) && extensions.any? do |e| - @processor.use_presentation_xml(e) - end - extensions << :presentation - end - extensions - end - def process_input(filename, options) case extname = File.extname(filename) when ".adoc" then process_input_adoc(filename, options) when ".xml" then process_input_xml(filename, options) else @@ -172,11 +122,11 @@ def process_ext_simple(ext, isodoc, fnames, options, isodoc_options) if ext == :rxl relaton_export(isodoc, options.merge(relaton: fnames[:out])) elsif options[:passthrough_presentation_xml] && ext == :presentation - f = File.exists?(fnames[:f]) ? fnames[:f] : fnames[:orig_filename] + f = File.exist?(fnames[:f]) ? fnames[:f] : fnames[:orig_filename] FileUtils.cp f, fnames[:presentationxml] elsif ext == :html && options[:sectionsplit] sectionsplit_convert(fnames[:xml], isodoc, fnames[:out], isodoc_options) else return false @@ -218,22 +168,9 @@ @errors << err.message else puts err.message puts err.backtrace.join("\n") end - end - - def get_isodoc_options(file, options, ext) - ret = @processor.extract_options(file) - ret[:datauriimage] = true if options[:datauriimage] - ret[:sourcefilename] = options[:filename] - %i(bare sectionsplit no_install_fonts baseassetpath aligncrosselements - tocfigures toctables tocrecommendations) - .each { |x| ret[x] ||= options[x] } - ext == :pdf && FontistUtils.has_fonts_manifest?(@processor, options) and - ret[:mn2pdf] = - { font_manifest: FontistUtils.location_manifest(@processor) } - ret end # @param options [Hash] # @return [String] def change_output_dir(options)