Class: Omnizip::Formats::Rar3::Writer

Inherits:
Omnizip::Formats::Rar::RarFormatBase show all
Defined in:
lib/omnizip/formats/rar3/writer.rb

Overview

RAR v3 archive writer

Writes RAR 3.x format archives, creating headers and compressing file data according to the RAR v3 specification.

Examples:

Writing a RAR3 archive

writer = Rar3::Writer.new
File.open("archive.rar", "wb") do |file|
  entries = [
    {name: "file.txt", data: "content", time: Time.now}
  ]
  writer.write_archive(file, entries)
end

Instance Attribute Summary

Attributes inherited from Omnizip::Formats::Rar::RarFormatBase

#spec, #version

Instance Method Summary collapse

Methods inherited from Omnizip::Formats::Rar::RarFormatBase

#block_type_code, #block_type_name, #compress, #compression_method_code, #compression_method_name, #decompress, #dictionary_size_code, #encryption_algorithm, #read_archive, #supports_feature?, #verify_magic_bytes

Constructor Details

#initializeWriter

Initialize a RAR v3 writer



29
30
31
32
# File 'lib/omnizip/formats/rar3/writer.rb', line 29

def initialize
  super("rar3")
  @compressor = Compressor.new
end

Instance Method Details

#write_archive(io, entries) ⇒ void

This method returns an undefined value.

Write a RAR v3 archive

Parameters:

  • io (IO)

    The output stream

  • entries (Array<Hash>)

    The entries to write



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/omnizip/formats/rar3/writer.rb', line 39

def write_archive(io, entries)
  # Write marker block
  write_marker_block(io)

  # Write archive header
  write_archive_header(io)

  # Write file entries
  entries.each do |entry|
    write_file_entry(io, entry)
  end

  # Write terminator block
  write_terminator_block(io)
end