Module: Cabriolet
- Defined in:
- lib/cabriolet.rb,
lib/cabriolet.rb,
lib/cabriolet/cli.rb,
lib/cabriolet/errors.rb,
lib/cabriolet/plugin.rb,
lib/cabriolet/version.rb,
lib/cabriolet/checksum.rb,
lib/cabriolet/modifier.rb,
lib/cabriolet/platform.rb,
lib/cabriolet/repairer.rb,
lib/cabriolet/constants.rb,
lib/cabriolet/streaming.rb,
lib/cabriolet/validator.rb,
lib/cabriolet/cab/parser.rb,
lib/cabriolet/chm/parser.rb,
lib/cabriolet/file_entry.rb,
lib/cabriolet/hlp/parser.rb,
lib/cabriolet/lit/parser.rb,
lib/cabriolet/format_base.rb,
lib/cabriolet/kwaj/parser.rb,
lib/cabriolet/models/file.rb,
lib/cabriolet/szdd/parser.rb,
lib/cabriolet/file_manager.rb,
lib/cabriolet/huffman/tree.rb,
lib/cabriolet/cab/extractor.rb,
lib/cabriolet/models/folder.rb,
lib/cabriolet/cab/compressor.rb,
lib/cabriolet/chm/compressor.rb,
lib/cabriolet/hlp/compressor.rb,
lib/cabriolet/lit/compressor.rb,
lib/cabriolet/models/cabinet.rb,
lib/cabriolet/oab/compressor.rb,
lib/cabriolet/plugin_manager.rb,
lib/cabriolet/quantum_shared.rb,
lib/cabriolet/base_compressor.rb,
lib/cabriolet/compressors/lzx.rb,
lib/cabriolet/format_detector.rb,
lib/cabriolet/huffman/decoder.rb,
lib/cabriolet/huffman/encoder.rb,
lib/cabriolet/kwaj/compressor.rb,
lib/cabriolet/models/chm_file.rb,
lib/cabriolet/models/hlp_file.rb,
lib/cabriolet/szdd/compressor.rb,
lib/cabriolet/binary/bitstream.rb,
lib/cabriolet/cab/decompressor.rb,
lib/cabriolet/chm/decompressor.rb,
lib/cabriolet/compressors/base.rb,
lib/cabriolet/compressors/lzss.rb,
lib/cabriolet/hlp/decompressor.rb,
lib/cabriolet/lit/decompressor.rb,
lib/cabriolet/oab/decompressor.rb,
lib/cabriolet/plugin_validator.rb,
lib/cabriolet/system/io_system.rb,
lib/cabriolet/algorithm_factory.rb,
lib/cabriolet/binary/structures.rb,
lib/cabriolet/compressors/mszip.rb,
lib/cabriolet/decompressors/lzx.rb,
lib/cabriolet/kwaj/decompressor.rb,
lib/cabriolet/lit/header_writer.rb,
lib/cabriolet/lit/piece_builder.rb,
lib/cabriolet/models/chm_header.rb,
lib/cabriolet/models/hlp_header.rb,
lib/cabriolet/models/lit_header.rb,
lib/cabriolet/models/oab_header.rb,
lib/cabriolet/offset_calculator.rb,
lib/cabriolet/szdd/decompressor.rb,
lib/cabriolet/decompressors/base.rb,
lib/cabriolet/decompressors/lzss.rb,
lib/cabriolet/decompressors/none.rb,
lib/cabriolet/hlp/winhelp/parser.rb,
lib/cabriolet/lit/guid_generator.rb,
lib/cabriolet/models/chm_section.rb,
lib/cabriolet/models/folder_data.rb,
lib/cabriolet/models/kwaj_header.rb,
lib/cabriolet/models/szdd_header.rb,
lib/cabriolet/system/file_handle.rb,
lib/cabriolet/cab/command_handler.rb,
lib/cabriolet/chm/command_handler.rb,
lib/cabriolet/compressors/quantum.rb,
lib/cabriolet/decompressors/mszip.rb,
lib/cabriolet/hlp/command_handler.rb,
lib/cabriolet/lit/command_handler.rb,
lib/cabriolet/lit/content_encoder.rb,
lib/cabriolet/oab/command_handler.rb,
lib/cabriolet/cli/command_registry.rb,
lib/cabriolet/extraction/extractor.rb,
lib/cabriolet/hlp/quickhelp/parser.rb,
lib/cabriolet/kwaj/command_handler.rb,
lib/cabriolet/system/memory_handle.rb,
lib/cabriolet/szdd/command_handler.rb,
lib/cabriolet/binary/chm_structures.rb,
lib/cabriolet/binary/hlp_structures.rb,
lib/cabriolet/binary/lit_structures.rb,
lib/cabriolet/binary/oab_structures.rb,
lib/cabriolet/hlp/winhelp/zeck_lz77.rb,
lib/cabriolet/lit/directory_builder.rb,
lib/cabriolet/lit/structure_builder.rb,
lib/cabriolet/models/winhelp_header.rb,
lib/cabriolet/binary/kwaj_structures.rb,
lib/cabriolet/binary/szdd_structures.rb,
lib/cabriolet/cli/command_dispatcher.rb,
lib/cabriolet/hlp/winhelp/compressor.rb,
lib/cabriolet/binary/bitstream_writer.rb,
lib/cabriolet/cli/base_command_handler.rb,
lib/cabriolet/hlp/quickhelp/compressor.rb,
lib/cabriolet/hlp/winhelp/decompressor.rb,
lib/cabriolet/cab/file_compression_work.rb,
lib/cabriolet/extraction/base_extractor.rb,
lib/cabriolet/hlp/quickhelp/file_writer.rb,
lib/cabriolet/hlp/winhelp/btree_builder.rb,
lib/cabriolet/lit/content_type_detector.rb,
lib/cabriolet/hlp/quickhelp/decompressor.rb,
lib/cabriolet/hlp/quickhelp/huffman_tree.rb,
lib/cabriolet/cab/file_compression_worker.rb,
lib/cabriolet/collections/file_collection.rb,
lib/cabriolet/hlp/quickhelp/topic_builder.rb,
lib/cabriolet/hlp/quickhelp/huffman_stream.rb,
lib/cabriolet/hlp/quickhelp/topic_compressor.rb,
lib/cabriolet/extraction/file_extraction_work.rb,
lib/cabriolet/hlp/quickhelp/offset_calculator.rb,
lib/cabriolet/hlp/quickhelp/structure_builder.rb,
lib/cabriolet/hlp/quickhelp/compression_stream.rb,
lib/cabriolet/extraction/file_extraction_worker.rb,
lib/cabriolet/decompressors/quantum.rb
Overview
Convenience methods at top level
Defined Under Namespace
Modules: Binary, CAB, CHM, Checksum, Collections, Commands, Compressors, Constants, Decompressors, Extraction, HLP, Huffman, KWAJ, LIT, Models, OAB, Platform, QuantumShared, SZDD, Streaming, System Classes: AlgorithmFactory, ArgumentError, BaseCompressor, CABOffsetCalculator, CLI, ChecksumError, CompressionError, DecompressionError, Error, FileEntry, FileManager, FormatBase, FormatDetector, FormatError, IOError, ModificationReport, Modifier, OffsetCalculator, ParseError, Plugin, PluginError, PluginManager, PluginValidator, ReadError, RepairReport, Repairer, SalvageReport, SeekError, SignatureError, UnsupportedFormatError, ValidationReport, Validator
Constant Summary collapse
- VERSION =
"0.2.1"
Class Attribute Summary collapse
-
.default_buffer_size ⇒ Object
Default buffer size for I/O operations (4KB).
-
.verbose ⇒ Object
Enable or disable verbose output.
Class Method Summary collapse
-
.algorithm_factory ⇒ AlgorithmFactory
Get the global algorithm factory instance.
-
.algorithm_factory=(factory) ⇒ AlgorithmFactory
Set the global algorithm factory instance.
-
.detect_format(path) ⇒ Symbol?
Detect format of an archive file.
-
.extract(archive_path, output_dir, **options) ⇒ Hash
Extract files from an archive with automatic format detection.
-
.info(path) ⇒ Hash
Get information about an archive without full extraction.
-
.open(path, **options) ⇒ Object
Open and parse an archive with automatic format detection.
-
.plugin_manager ⇒ PluginManager
Get the global plugin manager instance.
Class Attribute Details
.default_buffer_size ⇒ Object
Default buffer size for I/O operations (4KB)
39 40 41 |
# File 'lib/cabriolet.rb', line 39 def default_buffer_size @default_buffer_size end |
.verbose ⇒ Object
Enable or disable verbose output
36 37 38 |
# File 'lib/cabriolet.rb', line 36 def verbose @verbose end |
Class Method Details
.algorithm_factory ⇒ AlgorithmFactory
Get the global algorithm factory instance
44 45 46 |
# File 'lib/cabriolet.rb', line 44 def algorithm_factory @algorithm_factory ||= AlgorithmFactory.new end |
.algorithm_factory=(factory) ⇒ AlgorithmFactory
Set the global algorithm factory instance
52 53 54 |
# File 'lib/cabriolet.rb', line 52 def algorithm_factory=(factory) @algorithm_factory = factory end |
.detect_format(path) ⇒ Symbol?
Detect format of an archive file
194 195 196 |
# File 'lib/cabriolet.rb', line 194 def detect_format(path) FormatDetector.detect(path) end |
.extract(archive_path, output_dir, **options) ⇒ Hash
Extract files from an archive with automatic format detection
214 215 216 217 218 |
# File 'lib/cabriolet.rb', line 214 def extract(archive_path, output_dir, **) archive = open(archive_path) extractor = Extraction::Extractor.new(archive, output_dir, **) extractor.extract_all end |
.info(path) ⇒ Hash
Get information about an archive without full extraction
228 229 230 231 232 233 234 235 236 237 238 239 240 241 |
# File 'lib/cabriolet.rb', line 228 def info(path) archive = open(path) format = detect_format(path) { format: format, path: path, file_count: archive.files.count, total_size: archive.files.sum { |f| f.size || 0 }, compressed_size: File.size(path), compression_ratio: calculate_compression_ratio(archive, path), files: archive.files.map { |f| file_info(f) }, } end |
.open(path, **options) ⇒ Object
Open and parse an archive with automatic format detection
174 175 176 177 178 179 180 181 182 183 184 |
# File 'lib/cabriolet.rb', line 174 def open(path, **) parser_class = FormatDetector.parser_for(path) unless parser_class format = detect_format(path) raise UnsupportedFormatError, "Unable to detect format or no parser available for: #{path} (detected: #{format || 'unknown'})" end parser_class.new(**).parse(path) end |
.plugin_manager ⇒ PluginManager
Get the global plugin manager instance
59 60 61 |
# File 'lib/cabriolet.rb', line 59 def plugin_manager PluginManager.instance end |