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)