Module: Omnizip::Formats::Rar

Defined in:
lib/omnizip/formats/rar.rb,
lib/omnizip/formats/rar/header.rb,
lib/omnizip/formats/rar/models.rb,
lib/omnizip/formats/rar/reader.rb,
lib/omnizip/formats/rar/writer.rb,
lib/omnizip/formats/rar/constants.rb,
lib/omnizip/formats/rar/rar5/vint.rb,
lib/omnizip/formats/rar/rar5/crc32.rb,
lib/omnizip/formats/rar/compression.rb,
lib/omnizip/formats/rar/rar5/header.rb,
lib/omnizip/formats/rar/rar5/writer.rb,
lib/omnizip/formats/rar/block_parser.rb,
lib/omnizip/formats/rar/decompressor.rb,
lib/omnizip/formats/rar/parity_handler.rb,
lib/omnizip/formats/rar/volume_manager.rb,
lib/omnizip/formats/rar/external_writer.rb,
lib/omnizip/formats/rar/rar_format_base.rb,
lib/omnizip/formats/rar/recovery_record.rb,
lib/omnizip/formats/rar/archive_repairer.rb,
lib/omnizip/formats/rar/archive_verifier.rb,
lib/omnizip/formats/rar/compression/ppmd.rb,
lib/omnizip/formats/rar/models/rar_entry.rb,
lib/omnizip/formats/rar/license_validator.rb,
lib/omnizip/formats/rar/models/rar_volume.rb,
lib/omnizip/formats/rar/models/rar_archive.rb,
lib/omnizip/formats/rar/rar5/compression/lzma.rb,
lib/omnizip/formats/rar/rar5/compression/lzss.rb,
lib/omnizip/formats/rar/compression/bit_stream.rb,
lib/omnizip/formats/rar/compression/dispatcher.rb,
lib/omnizip/formats/rar/rar5/compression/store.rb,
lib/omnizip/formats/rar/rar5/solid/solid_stream.rb,
lib/omnizip/formats/rar/compression/lz77_huffman.rb,
lib/omnizip/formats/rar/compression/ppmd/context.rb,
lib/omnizip/formats/rar/compression/ppmd/decoder.rb,
lib/omnizip/formats/rar/compression/ppmd/encoder.rb,
lib/omnizip/formats/rar/rar5/solid/solid_encoder.rb,
lib/omnizip/formats/rar/rar5/solid/solid_manager.rb,
lib/omnizip/formats/rar/rar5/models/solid_options.rb,
lib/omnizip/formats/rar/rar5/encryption/aes256_cbc.rb,
lib/omnizip/formats/rar/rar5/models/volume_options.rb,
lib/omnizip/formats/rar/compression_method_registry.rb,
lib/omnizip/formats/rar/rar5/models/recovery_options.rb,
lib/omnizip/formats/rar/rar5/encryption/key_derivation.rb,
lib/omnizip/formats/rar/rar5/models/encryption_options.rb,
lib/omnizip/formats/rar/rar5/multi_volume/volume_writer.rb,
lib/omnizip/formats/rar/compression/lz77_huffman/decoder.rb,
lib/omnizip/formats/rar/compression/lz77_huffman/encoder.rb,
lib/omnizip/formats/rar/rar5/multi_volume/volume_manager.rb,
lib/omnizip/formats/rar/rar5/encryption/encryption_header.rb,
lib/omnizip/formats/rar/rar5/multi_volume/volume_splitter.rb,
lib/omnizip/formats/rar/rar5/encryption/encryption_manager.rb,
lib/omnizip/formats/rar/compression/lz77_huffman/match_finder.rb,
lib/omnizip/formats/rar/compression/lz77_huffman/huffman_coder.rb,
lib/omnizip/formats/rar/compression/lz77_huffman/sliding_window.rb,
lib/omnizip/formats/rar/compression/lz77_huffman/huffman_builder.rb

Overview

RAR archive format support

  • Formats::Rar::Reader — the primary parser, verified against real WinRAR archives: listing, directories, mtimes, and extraction (native STORE decode with stored-CRC verification; foreign compressed streams fall back to the unrar command after the CRC check rejects them)
  • Formats::Rar::Writer (RAR4) and Formats::Rar::Rar5::Writer — STORE output is unrar-verified; compressed methods produce Omnizip-internal streams (see the README interop table)
  • Formats::Rar3 / Formats::Rar5 — legacy interfaces, thin adapters over the primary reader and the RAR5 writer
  • Multi-volume archives, encryption (RAR5), recovery records

Defined Under Namespace

Modules: Compression, Constants, Models, Rar5 Classes: ArchiveRepairer, ArchiveVerifier, BlockParser, CompressionMethodRegistry, Decompressor, ExternalWriter, Header, LicenseValidator, ParityHandler, RarFormatBase, Reader, RecoveryRecord, VolumeManager, Writer

Class Method Summary collapse

Class Method Details

.available?Boolean

Check if RAR extraction is available

Returns:

  • (Boolean)

    true if unrar available



153
154
155
# File 'lib/omnizip/formats/rar.rb', line 153

def available?
  Decompressor.available?
end

.create(path, options = {}) {|writer| ... } ⇒ String+

Create a RAR archive, yielding the writer for entries. RAR5 is the default; pass version: 4 for the RAR4 writer. RAR5-only options (solid, multi-volume, password, recovery) are ignored for RAR4 — its writer warns about the unimplemented ones and raises for passwords.

Parameters:

  • path (String)

    Output archive path

  • options (Hash) (defaults to: {})

    Writer options

Yields:

  • (writer)

Returns:

  • (String, Array<String>)

    Path(s) of the created archive (a volume set returns every volume)



139
140
141
142
143
144
145
146
147
148
# File 'lib/omnizip/formats/rar.rb', line 139

def create(path, options = {})
  version = options.fetch(:version, 5)
  writer = if version == 4
             Writer.new(path, options)
           else
             Rar5::Writer.new(path, rar5_options(options))
           end
  yield writer if block_given?
  writer.write
end

.decompressor_infoHash

Get decompressor information

Returns:

  • (Hash)

    Decompressor type and version



160
161
162
# File 'lib/omnizip/formats/rar.rb', line 160

def decompressor_info
  Decompressor.info
end

.repair(archive_path, output_path) ⇒ ArchiveRepairer::RepairResult

Repair corrupted archive

Parameters:

  • archive_path (String)

    Path to corrupted RAR archive

  • output_path (String)

    Path for repaired archive

Returns:



177
178
179
# File 'lib/omnizip/formats/rar.rb', line 177

def repair(archive_path, output_path)
  ArchiveRepairer.new.repair(archive_path, output_path)
end

.verify(archive_path) ⇒ ArchiveVerifier::VerificationResult

Verify archive integrity

Parameters:

  • archive_path (String)

    Path to RAR archive

Returns:



168
169
170
# File 'lib/omnizip/formats/rar.rb', line 168

def verify(archive_path)
  ArchiveVerifier.new(archive_path).verify
end