Class: Markdownator::Converters::Zip

Inherits:
Base
  • Object
show all
Defined in:
lib/markdownator/converters/zip.rb

Overview

Converts a ZIP archive by recursing each contained file back through the engine and concatenating the results under per-file headings.

Instance Method Summary collapse

Instance Method Details

#accepts?(io, stream_info) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
14
# File 'lib/markdownator/converters/zip.rb', line 10

def accepts?(io, stream_info)
  return true if matches?(stream_info, extensions: %w[zip], mimetypes: %w[application/zip])

  magic_zip?(io)
end

#convert(io, _stream_info, **options) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/markdownator/converters/zip.rb', line 16

def convert(io, _stream_info, **options)
  Markdownator.require_optional("zip", feature: "ZIP conversion")
  engine = options[:engine] || Engine.new

  sections = []
  ::Zip::File.open_buffer(io) do |zip|
    zip.entries.sort_by(&:name).each do |entry|
      next if entry.directory?

      section = convert_entry(engine, entry, options)
      sections << section unless section.nil?
    end
  end
  Result.new(markdown: sections.join("\n\n"))
end