Class: Metanorma::Tools::FigureExtractor

Inherits:
Object
  • Object
show all
Defined in:
lib/metanorma/tools/figure_extractor.rb

Constant Summary collapse

METANORMA_NS =
{ 'xmlns' => 'https://www.metanorma.org/ns/standoc' }.freeze
MIMETYPE_FORMATS =
{
  'image/png' => :datauri_png,
  'image/jpeg' => :datauri_jpeg,
  'image/jpg' => :datauri_jpeg,
  'image/gif' => :datauri_gif,
  'image/svg+xml' => :datauri_svg,
  'image/webp' => :datauri_webp,
  '' => :datauri_png # Default for empty mimetype
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ FigureExtractor

Returns a new instance of FigureExtractor.



26
27
28
29
30
31
32
33
# File 'lib/metanorma/tools/figure_extractor.rb', line 26

def initialize(options = {})
  # Convert string keys to symbols for consistency
  normalized_options = options.transform_keys(&:to_sym)
  @options = {
    zip: false,
    verbose: false
  }.merge(normalized_options)
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



24
25
26
# File 'lib/metanorma/tools/figure_extractor.rb', line 24

def options
  @options
end

Instance Method Details

#extract(input_xml, output_dir = nil, prefix = nil) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/metanorma/tools/figure_extractor.rb', line 35

def extract(input_xml, output_dir = nil, prefix = nil)
  validate_input(input_xml)

  doc = parse_xml(input_xml)
   = (doc)
  prefix = determine_prefix(prefix, )
  output_dir = determine_output_dir(output_dir, prefix)

  figures = find_figures(doc)
  return if figures.empty?

  figure_objects, format_counts, total_size = process_figures(figures)

  saved_files = if options[:zip]
                  extract_to_zip(figure_objects, output_dir, prefix, )
                else
                  extract_to_directory(figure_objects, output_dir, prefix, )
                end

  print_summary(, prefix, figure_objects.length, format_counts, total_size, output_dir)
end