omnizip 0.4.7-aarch64-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +32 -0
- data/.rubocop_todo.yml +293 -0
- data/CHANGELOG.md +1647 -0
- data/CONTEXT.md +68 -0
- data/COPYING +502 -0
- data/Gemfile +19 -0
- data/LICENSE +12 -0
- data/README.adoc +1327 -0
- data/Rakefile +15 -0
- data/TODO.refactor/00-overview.md +67 -0
- data/TODO.refactor/01-registry-base-class.md +81 -0
- data/TODO.refactor/02-error-hierarchy.md +57 -0
- data/TODO.refactor/03-autoload-entry-point.md +69 -0
- data/TODO.refactor/04-filter-base-consolidation.md +49 -0
- data/TODO.refactor/05-send-private-methods.md +64 -0
- data/TODO.refactor/06-instance-variable-access.md +69 -0
- data/TODO.refactor/07-respond-to-replacement.md +237 -0
- data/TODO.refactor/08-spec-doubles.md +27 -0
- data/TODO.refactor/09-cli-shared-module.md +35 -0
- data/TODO.refactor/10-format-detector-ocp.md +34 -0
- data/TODO.refactor/11-convenience-decoupling.md +38 -0
- data/TODO.refactor/12-thread-safety.md +8 -0
- data/TODO.refactor/13-lutaml-model-migration.md +158 -0
- data/TODO.refactor/14-add-missing-specs.md +25 -0
- data/benchmark/README.md +260 -0
- data/benchmark/benchmark_suite.rb +125 -0
- data/benchmark/compression_bench.rb +181 -0
- data/benchmark/filter_bench.rb +180 -0
- data/benchmark/models/benchmark_result.rb +59 -0
- data/benchmark/models/comparison_result.rb +69 -0
- data/benchmark/profile_suite.rb +167 -0
- data/benchmark/reporter.rb +150 -0
- data/benchmark/run_benchmarks.rb +66 -0
- data/benchmark/test_data.rb +137 -0
- data/config/formats/rar3_spec.yml +92 -0
- data/config/formats/rar5_spec.yml +102 -0
- data/docs/.github/workflows/docs.yml +142 -0
- data/docs/.gitignore +21 -0
- data/docs/.lychee.toml +67 -0
- data/docs/Gemfile +13 -0
- data/docs/RAR_WRITE_SUPPORT.md +26 -0
- data/docs/README.md +101 -0
- data/docs/_config.yml +112 -0
- data/docs/assets/logo.svg +1 -0
- data/docs/assets/omnizip-logo.pdf +1540 -11
- data/docs/comparison/feature-matrix.adoc +694 -0
- data/docs/comparison/index.adoc +113 -0
- data/docs/comparison/vs-7zip.adoc +309 -0
- data/docs/comparison/vs-peazip.adoc +77 -0
- data/docs/comparison/vs-rubyzip.adoc +342 -0
- data/docs/comparison/vs-winrar.adoc +100 -0
- data/docs/compatibility.adoc +579 -0
- data/docs/concepts/index.adoc +129 -0
- data/docs/developer/architecture.adoc +256 -0
- data/docs/developer/contributing.adoc +158 -0
- data/docs/developer/index.adoc +25 -0
- data/docs/developer/testing.adoc +212 -0
- data/docs/getting-started/basic-usage.adoc +263 -0
- data/docs/getting-started/index.adoc +42 -0
- data/docs/getting-started/installation.adoc +138 -0
- data/docs/getting-started/quick-start.adoc +183 -0
- data/docs/getting-started/your-first-archive.adoc +219 -0
- data/docs/guides/advanced-features/encryption.adoc +277 -0
- data/docs/guides/advanced-features/index.adoc +59 -0
- data/docs/guides/advanced-features/parallel-processing.adoc +144 -0
- data/docs/guides/advanced-features/progress-tracking.adoc +124 -0
- data/docs/guides/advanced-features/streaming.adoc +142 -0
- data/docs/guides/archive-formats/gzip-format.adoc +105 -0
- data/docs/guides/archive-formats/index.adoc +160 -0
- data/docs/guides/archive-formats/ole-format.adoc +151 -0
- data/docs/guides/archive-formats/rar-format.adoc +104 -0
- data/docs/guides/archive-formats/rar5.adoc +521 -0
- data/docs/guides/archive-formats/rpm-format.adoc +108 -0
- data/docs/guides/archive-formats/seven-zip-format.adoc +35 -0
- data/docs/guides/archive-formats/tar-format.adoc +106 -0
- data/docs/guides/archive-formats/xz-format.adoc +118 -0
- data/docs/guides/archive-formats/zip-format.adoc +35 -0
- data/docs/guides/compression-algorithms/bzip2.adoc +114 -0
- data/docs/guides/compression-algorithms/deflate.adoc +313 -0
- data/docs/guides/compression-algorithms/index.adoc +190 -0
- data/docs/guides/compression-algorithms/lzma.adoc +394 -0
- data/docs/guides/compression-algorithms/lzma2.adoc +244 -0
- data/docs/guides/compression-algorithms/ppmd.adoc +313 -0
- data/docs/guides/compression-algorithms/zstandard.adoc +296 -0
- data/docs/guides/creating-archives.adoc +348 -0
- data/docs/guides/extracting-archives.adoc +53 -0
- data/docs/guides/format-conversion.adoc +64 -0
- data/docs/guides/index.adoc +49 -0
- data/docs/guides/migration-rubyzip.adoc +217 -0
- data/docs/guides/parity-archives.adoc +605 -0
- data/docs/guides/performance-tuning.adoc +88 -0
- data/docs/index.adoc +228 -0
- data/docs/lychee.toml +67 -0
- data/docs/reference/api/overview.adoc +187 -0
- data/docs/reference/cli/compress-command.adoc +114 -0
- data/docs/reference/cli/overview.adoc +140 -0
- data/docs/reference/index.adoc +26 -0
- data/docs/resources/faq.adoc +185 -0
- data/docs/resources/quick-reference.adoc +222 -0
- data/docs/rust-backend.md +0 -0
- data/docs/troubleshooting/index.adoc +207 -0
- data/docs/xar_format.md +216 -0
- data/examples/api_comparison.rb +205 -0
- data/examples/deflate64_example.rb +96 -0
- data/examples/par2_demo.rb +121 -0
- data/examples/quick_start_native.rb +150 -0
- data/examples/quick_start_rubyzip.rb +115 -0
- data/examples/rubyzip_compatibility_demo.rb +194 -0
- data/exe/omnizip +27 -0
- data/lib/omnizip/algorithm.rb +176 -0
- data/lib/omnizip/algorithm_registry.rb +65 -0
- data/lib/omnizip/algorithms/.keep +0 -0
- data/lib/omnizip/algorithms/bzip2/bwt.rb +236 -0
- data/lib/omnizip/algorithms/bzip2/bz2.rb +687 -0
- data/lib/omnizip/algorithms/bzip2/rle.rb +146 -0
- data/lib/omnizip/algorithms/bzip2.rb +108 -0
- data/lib/omnizip/algorithms/deflate/constants.rb +28 -0
- data/lib/omnizip/algorithms/deflate/decoder.rb +37 -0
- data/lib/omnizip/algorithms/deflate/encoder.rb +45 -0
- data/lib/omnizip/algorithms/deflate.rb +135 -0
- data/lib/omnizip/algorithms/deflate64/constants.rb +45 -0
- data/lib/omnizip/algorithms/deflate64/decoder.rb +151 -0
- data/lib/omnizip/algorithms/deflate64/encoder.rb +95 -0
- data/lib/omnizip/algorithms/deflate64/huffman_coder.rb +352 -0
- data/lib/omnizip/algorithms/deflate64/lz77_encoder.rb +140 -0
- data/lib/omnizip/algorithms/deflate64.rb +118 -0
- data/lib/omnizip/algorithms/lzma/bit_model.rb +120 -0
- data/lib/omnizip/algorithms/lzma/constants.rb +112 -0
- data/lib/omnizip/algorithms/lzma/decoder.rb +146 -0
- data/lib/omnizip/algorithms/lzma/dictionary.rb +70 -0
- data/lib/omnizip/algorithms/lzma/distance_coder.rb +326 -0
- data/lib/omnizip/algorithms/lzma/encoder.rb +139 -0
- data/lib/omnizip/algorithms/lzma/length_coder.rb +172 -0
- data/lib/omnizip/algorithms/lzma/literal_decoder.rb +204 -0
- data/lib/omnizip/algorithms/lzma/literal_encoder.rb +208 -0
- data/lib/omnizip/algorithms/lzma/lzip_decoder.rb +368 -0
- data/lib/omnizip/algorithms/lzma/lzma1_encoder.rb +105 -0
- data/lib/omnizip/algorithms/lzma/lzma_alone_decoder.rb +194 -0
- data/lib/omnizip/algorithms/lzma/lzma_state.rb +128 -0
- data/lib/omnizip/algorithms/lzma/match.rb +32 -0
- data/lib/omnizip/algorithms/lzma/match_finder.rb +233 -0
- data/lib/omnizip/algorithms/lzma/match_finder_config.rb +142 -0
- data/lib/omnizip/algorithms/lzma/match_finder_factory.rb +84 -0
- data/lib/omnizip/algorithms/lzma/optimal_encoder.rb +159 -0
- data/lib/omnizip/algorithms/lzma/probability_models.rb +72 -0
- data/lib/omnizip/algorithms/lzma/range_coder.rb +82 -0
- data/lib/omnizip/algorithms/lzma/range_decoder.rb +274 -0
- data/lib/omnizip/algorithms/lzma/range_encoder.rb +202 -0
- data/lib/omnizip/algorithms/lzma/state.rb +127 -0
- data/lib/omnizip/algorithms/lzma/xz_buffered_range_encoder.rb +323 -0
- data/lib/omnizip/algorithms/lzma/xz_encoder.rb +420 -0
- data/lib/omnizip/algorithms/lzma/xz_encoder_fast.rb +640 -0
- data/lib/omnizip/algorithms/lzma/xz_match_finder_adapter.rb +224 -0
- data/lib/omnizip/algorithms/lzma/xz_price_calculator.rb +167 -0
- data/lib/omnizip/algorithms/lzma/xz_probability_models.rb +258 -0
- data/lib/omnizip/algorithms/lzma/xz_range_encoder.rb +223 -0
- data/lib/omnizip/algorithms/lzma/xz_range_encoder_exact.rb +314 -0
- data/lib/omnizip/algorithms/lzma/xz_state.rb +108 -0
- data/lib/omnizip/algorithms/lzma/xz_utils_decoder.rb +1311 -0
- data/lib/omnizip/algorithms/lzma.rb +266 -0
- data/lib/omnizip/algorithms/lzma2/chunk_manager.rb +180 -0
- data/lib/omnizip/algorithms/lzma2/constants.rb +38 -0
- data/lib/omnizip/algorithms/lzma2/encoder.rb +145 -0
- data/lib/omnizip/algorithms/lzma2/lzma2_chunk.rb +165 -0
- data/lib/omnizip/algorithms/lzma2/properties.rb +179 -0
- data/lib/omnizip/algorithms/lzma2/simple_lzma2_encoder.rb +122 -0
- data/lib/omnizip/algorithms/lzma2/xz_encoder_adapter.rb +85 -0
- data/lib/omnizip/algorithms/lzma2.rb +133 -0
- data/lib/omnizip/algorithms/ppmd7/constants.rb +74 -0
- data/lib/omnizip/algorithms/ppmd7/context.rb +151 -0
- data/lib/omnizip/algorithms/ppmd7/decoder.rb +127 -0
- data/lib/omnizip/algorithms/ppmd7/encoder.rb +153 -0
- data/lib/omnizip/algorithms/ppmd7/model.rb +245 -0
- data/lib/omnizip/algorithms/ppmd7/symbol_state.rb +57 -0
- data/lib/omnizip/algorithms/ppmd7.rb +146 -0
- data/lib/omnizip/algorithms/ppmd8/constants.rb +61 -0
- data/lib/omnizip/algorithms/ppmd8/context.rb +32 -0
- data/lib/omnizip/algorithms/ppmd8/decoder.rb +104 -0
- data/lib/omnizip/algorithms/ppmd8/encoder.rb +135 -0
- data/lib/omnizip/algorithms/ppmd8/model.rb +246 -0
- data/lib/omnizip/algorithms/ppmd8/restoration_method.rb +78 -0
- data/lib/omnizip/algorithms/ppmd8.rb +122 -0
- data/lib/omnizip/algorithms/ppmd_base.rb +142 -0
- data/lib/omnizip/algorithms/registration.rb +28 -0
- data/lib/omnizip/algorithms/zstandard/constants.rb +158 -0
- data/lib/omnizip/algorithms/zstandard/decoder.rb +249 -0
- data/lib/omnizip/algorithms/zstandard/dictionary.rb +73 -0
- data/lib/omnizip/algorithms/zstandard/encoder.rb +294 -0
- data/lib/omnizip/algorithms/zstandard/frame/block.rb +143 -0
- data/lib/omnizip/algorithms/zstandard/frame/header.rb +233 -0
- data/lib/omnizip/algorithms/zstandard/frame.rb +33 -0
- data/lib/omnizip/algorithms/zstandard/fse/bitstream.rb +183 -0
- data/lib/omnizip/algorithms/zstandard/fse/encoder.rb +534 -0
- data/lib/omnizip/algorithms/zstandard/fse/interleaved.rb +92 -0
- data/lib/omnizip/algorithms/zstandard/fse/table.rb +188 -0
- data/lib/omnizip/algorithms/zstandard/fse/table_description.rb +203 -0
- data/lib/omnizip/algorithms/zstandard/fse.rb +53 -0
- data/lib/omnizip/algorithms/zstandard/huffman.rb +276 -0
- data/lib/omnizip/algorithms/zstandard/huffman_encoder.rb +327 -0
- data/lib/omnizip/algorithms/zstandard/ldm.rb +121 -0
- data/lib/omnizip/algorithms/zstandard/literals.rb +241 -0
- data/lib/omnizip/algorithms/zstandard/literals_encoder.rb +96 -0
- data/lib/omnizip/algorithms/zstandard/match_finder.rb +483 -0
- data/lib/omnizip/algorithms/zstandard/sequences.rb +350 -0
- data/lib/omnizip/algorithms/zstandard/sequences_encoder.rb +333 -0
- data/lib/omnizip/algorithms/zstandard/xxhash.rb +159 -0
- data/lib/omnizip/algorithms/zstandard.rb +210 -0
- data/lib/omnizip/algorithms.rb +35 -0
- data/lib/omnizip/archive/builder.rb +48 -0
- data/lib/omnizip/archive/reader_session.rb +67 -0
- data/lib/omnizip/archive.rb +86 -0
- data/lib/omnizip/archive_handler.rb +82 -0
- data/lib/omnizip/archive_handlers/cpio_handler.rb +47 -0
- data/lib/omnizip/archive_handlers/iso_handler.rb +54 -0
- data/lib/omnizip/archive_handlers/ole_handler.rb +37 -0
- data/lib/omnizip/archive_handlers/rar_handler.rb +96 -0
- data/lib/omnizip/archive_handlers/rpm_handler.rb +45 -0
- data/lib/omnizip/archive_handlers/seven_zip_handler.rb +89 -0
- data/lib/omnizip/archive_handlers/tar_handler.rb +75 -0
- data/lib/omnizip/archive_handlers/xar_handler.rb +49 -0
- data/lib/omnizip/archive_handlers/zip_handler.rb +115 -0
- data/lib/omnizip/archive_handlers.rb +18 -0
- data/lib/omnizip/backends.rb +160 -0
- data/lib/omnizip/buffer/memory_archive.rb +246 -0
- data/lib/omnizip/buffer/memory_extractor.rb +234 -0
- data/lib/omnizip/buffer/seven_zip_bridge.rb +171 -0
- data/lib/omnizip/buffer.rb +187 -0
- data/lib/omnizip/checksum_registry.rb +41 -0
- data/lib/omnizip/checksums/crc32.rb +101 -0
- data/lib/omnizip/checksums/crc64.rb +102 -0
- data/lib/omnizip/checksums/crc_base.rb +158 -0
- data/lib/omnizip/checksums/registration.rb +16 -0
- data/lib/omnizip/checksums/verifier.rb +130 -0
- data/lib/omnizip/checksums.rb +11 -0
- data/lib/omnizip/chunked/memory_manager.rb +194 -0
- data/lib/omnizip/chunked/reader.rb +78 -0
- data/lib/omnizip/chunked/writer.rb +123 -0
- data/lib/omnizip/chunked.rb +123 -0
- data/lib/omnizip/cli/output_formatter.rb +112 -0
- data/lib/omnizip/cli.rb +604 -0
- data/lib/omnizip/commands/.keep +0 -0
- data/lib/omnizip/commands/archive_create_command.rb +245 -0
- data/lib/omnizip/commands/archive_extract_command.rb +231 -0
- data/lib/omnizip/commands/archive_list_command.rb +204 -0
- data/lib/omnizip/commands/archive_repair_command.rb +129 -0
- data/lib/omnizip/commands/archive_verify_command.rb +115 -0
- data/lib/omnizip/commands/compress_command.rb +115 -0
- data/lib/omnizip/commands/decompress_command.rb +149 -0
- data/lib/omnizip/commands/list_command.rb +51 -0
- data/lib/omnizip/commands/metadata_command.rb +215 -0
- data/lib/omnizip/commands/parity_create_command.rb +114 -0
- data/lib/omnizip/commands/parity_repair_command.rb +120 -0
- data/lib/omnizip/commands/parity_verify_command.rb +122 -0
- data/lib/omnizip/commands/profile_list_command.rb +54 -0
- data/lib/omnizip/commands/profile_show_command.rb +44 -0
- data/lib/omnizip/commands.rb +21 -0
- data/lib/omnizip/convenience.rb +389 -0
- data/lib/omnizip/converter/conversion_registry.rb +50 -0
- data/lib/omnizip/converter/conversion_strategy.rb +108 -0
- data/lib/omnizip/converter/extract_repack_strategy.rb +51 -0
- data/lib/omnizip/converter/seven_zip_to_zip_strategy.rb +43 -0
- data/lib/omnizip/converter/zip_to_seven_zip_strategy.rb +54 -0
- data/lib/omnizip/converter.rb +124 -0
- data/lib/omnizip/crypto/aes256/cipher.rb +104 -0
- data/lib/omnizip/crypto/aes256/constants.rb +28 -0
- data/lib/omnizip/crypto/aes256/key_derivation.rb +100 -0
- data/lib/omnizip/crypto/aes256.rb +102 -0
- data/lib/omnizip/crypto.rb +11 -0
- data/lib/omnizip/entry.rb +44 -0
- data/lib/omnizip/error.rb +110 -0
- data/lib/omnizip/eta/exponential_smoothing_estimator.rb +95 -0
- data/lib/omnizip/eta/moving_average_estimator.rb +96 -0
- data/lib/omnizip/eta/rate_calculator.rb +104 -0
- data/lib/omnizip/eta/sample_history.rb +143 -0
- data/lib/omnizip/eta/time_estimator.rb +106 -0
- data/lib/omnizip/eta.rb +68 -0
- data/lib/omnizip/extraction/filter_chain.rb +179 -0
- data/lib/omnizip/extraction/glob_pattern.rb +140 -0
- data/lib/omnizip/extraction/pattern_matcher.rb +66 -0
- data/lib/omnizip/extraction/predicate_pattern.rb +52 -0
- data/lib/omnizip/extraction/regex_pattern.rb +50 -0
- data/lib/omnizip/extraction/selective_extractor.rb +247 -0
- data/lib/omnizip/extraction.rb +115 -0
- data/lib/omnizip/file_type/mime_classifier.rb +144 -0
- data/lib/omnizip/file_type.rb +117 -0
- data/lib/omnizip/filter.rb +141 -0
- data/lib/omnizip/filter_pipeline.rb +108 -0
- data/lib/omnizip/filter_registry.rb +113 -0
- data/lib/omnizip/filters/bcj.rb +277 -0
- data/lib/omnizip/filters/bcj2/constants.rb +53 -0
- data/lib/omnizip/filters/bcj2/decoder.rb +263 -0
- data/lib/omnizip/filters/bcj2/encoder.rb +58 -0
- data/lib/omnizip/filters/bcj2/stream_data.rb +91 -0
- data/lib/omnizip/filters/bcj2.rb +93 -0
- data/lib/omnizip/filters/bcj_arm.rb +174 -0
- data/lib/omnizip/filters/bcj_arm64.rb +242 -0
- data/lib/omnizip/filters/bcj_ia64.rb +194 -0
- data/lib/omnizip/filters/bcj_ppc.rb +188 -0
- data/lib/omnizip/filters/bcj_sparc.rb +174 -0
- data/lib/omnizip/filters/bcj_x86.rb +191 -0
- data/lib/omnizip/filters/delta.rb +195 -0
- data/lib/omnizip/filters/xz_delta.rb +258 -0
- data/lib/omnizip/filters.rb +20 -0
- data/lib/omnizip/format_detector.rb +166 -0
- data/lib/omnizip/formats/.keep +0 -0
- data/lib/omnizip/formats/bzip2_file.rb +159 -0
- data/lib/omnizip/formats/cpio/bounded_io.rb +66 -0
- data/lib/omnizip/formats/cpio/constants.rb +55 -0
- data/lib/omnizip/formats/cpio/entry.rb +389 -0
- data/lib/omnizip/formats/cpio/reader.rb +194 -0
- data/lib/omnizip/formats/cpio/writer.rb +232 -0
- data/lib/omnizip/formats/cpio.rb +132 -0
- data/lib/omnizip/formats/format_spec_loader.rb +228 -0
- data/lib/omnizip/formats/gzip.rb +236 -0
- data/lib/omnizip/formats/iso/directory_builder.rb +321 -0
- data/lib/omnizip/formats/iso/directory_record.rb +162 -0
- data/lib/omnizip/formats/iso/joliet.rb +204 -0
- data/lib/omnizip/formats/iso/path_table.rb +125 -0
- data/lib/omnizip/formats/iso/reader.rb +194 -0
- data/lib/omnizip/formats/iso/rock_ridge.rb +349 -0
- data/lib/omnizip/formats/iso/volume_builder.rb +319 -0
- data/lib/omnizip/formats/iso/volume_descriptor.rb +168 -0
- data/lib/omnizip/formats/iso/writer.rb +543 -0
- data/lib/omnizip/formats/iso.rb +133 -0
- data/lib/omnizip/formats/lzip.rb +161 -0
- data/lib/omnizip/formats/lzma_alone.rb +149 -0
- data/lib/omnizip/formats/msi/cab_extractor.rb +181 -0
- data/lib/omnizip/formats/msi/constants.rb +157 -0
- data/lib/omnizip/formats/msi/directory_resolver.rb +188 -0
- data/lib/omnizip/formats/msi/entry.rb +134 -0
- data/lib/omnizip/formats/msi/reader.rb +301 -0
- data/lib/omnizip/formats/msi/string_pool.rb +246 -0
- data/lib/omnizip/formats/msi/table_parser.rb +244 -0
- data/lib/omnizip/formats/msi.rb +73 -0
- data/lib/omnizip/formats/ole/allocation_table.rb +263 -0
- data/lib/omnizip/formats/ole/constants.rb +61 -0
- data/lib/omnizip/formats/ole/dirent.rb +439 -0
- data/lib/omnizip/formats/ole/header.rb +199 -0
- data/lib/omnizip/formats/ole/ranges_io.rb +347 -0
- data/lib/omnizip/formats/ole/storage.rb +482 -0
- data/lib/omnizip/formats/ole/types/variant.rb +338 -0
- data/lib/omnizip/formats/ole.rb +143 -0
- data/lib/omnizip/formats/rar/archive_repairer.rb +240 -0
- data/lib/omnizip/formats/rar/archive_verifier.rb +192 -0
- data/lib/omnizip/formats/rar/block_parser.rb +282 -0
- data/lib/omnizip/formats/rar/compression/bit_stream.rb +180 -0
- data/lib/omnizip/formats/rar/compression/dispatcher.rb +210 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman/decoder.rb +212 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman/encoder.rb +154 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman/huffman_builder.rb +217 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman/huffman_coder.rb +189 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman/match_finder.rb +135 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman/sliding_window.rb +165 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman.rb +25 -0
- data/lib/omnizip/formats/rar/compression/ppmd/context.rb +103 -0
- data/lib/omnizip/formats/rar/compression/ppmd/decoder.rb +238 -0
- data/lib/omnizip/formats/rar/compression/ppmd/encoder.rb +250 -0
- data/lib/omnizip/formats/rar/compression/ppmd.rb +16 -0
- data/lib/omnizip/formats/rar/compression.rb +17 -0
- data/lib/omnizip/formats/rar/compression_method_registry.rb +106 -0
- data/lib/omnizip/formats/rar/constants.rb +88 -0
- data/lib/omnizip/formats/rar/decompressor.rb +316 -0
- data/lib/omnizip/formats/rar/external_writer.rb +311 -0
- data/lib/omnizip/formats/rar/header.rb +209 -0
- data/lib/omnizip/formats/rar/license_validator.rb +111 -0
- data/lib/omnizip/formats/rar/models/rar_archive.rb +77 -0
- data/lib/omnizip/formats/rar/models/rar_entry.rb +65 -0
- data/lib/omnizip/formats/rar/models/rar_volume.rb +56 -0
- data/lib/omnizip/formats/rar/models.rb +14 -0
- data/lib/omnizip/formats/rar/parity_handler.rb +299 -0
- data/lib/omnizip/formats/rar/rar5/compression/lzma.rb +200 -0
- data/lib/omnizip/formats/rar/rar5/compression/lzss.rb +584 -0
- data/lib/omnizip/formats/rar/rar5/compression/store.rb +60 -0
- data/lib/omnizip/formats/rar/rar5/crc32.rb +39 -0
- data/lib/omnizip/formats/rar/rar5/encryption/aes256_cbc.rb +96 -0
- data/lib/omnizip/formats/rar/rar5/encryption/encryption_header.rb +114 -0
- data/lib/omnizip/formats/rar/rar5/encryption/encryption_manager.rb +162 -0
- data/lib/omnizip/formats/rar/rar5/encryption/key_derivation.rb +97 -0
- data/lib/omnizip/formats/rar/rar5/header.rb +208 -0
- data/lib/omnizip/formats/rar/rar5/models/encryption_options.rb +74 -0
- data/lib/omnizip/formats/rar/rar5/models/recovery_options.rb +63 -0
- data/lib/omnizip/formats/rar/rar5/models/solid_options.rb +63 -0
- data/lib/omnizip/formats/rar/rar5/models/volume_options.rb +74 -0
- data/lib/omnizip/formats/rar/rar5/multi_volume/ARCHITECTURE.md +290 -0
- data/lib/omnizip/formats/rar/rar5/multi_volume/volume_manager.rb +260 -0
- data/lib/omnizip/formats/rar/rar5/multi_volume/volume_splitter.rb +155 -0
- data/lib/omnizip/formats/rar/rar5/multi_volume/volume_writer.rb +176 -0
- data/lib/omnizip/formats/rar/rar5/solid/solid_encoder.rb +108 -0
- data/lib/omnizip/formats/rar/rar5/solid/solid_manager.rb +139 -0
- data/lib/omnizip/formats/rar/rar5/solid/solid_stream.rb +121 -0
- data/lib/omnizip/formats/rar/rar5/vint.rb +53 -0
- data/lib/omnizip/formats/rar/rar5/writer.rb +540 -0
- data/lib/omnizip/formats/rar/rar_format_base.rb +239 -0
- data/lib/omnizip/formats/rar/reader.rb +377 -0
- data/lib/omnizip/formats/rar/recovery_record.rb +245 -0
- data/lib/omnizip/formats/rar/volume_manager.rb +166 -0
- data/lib/omnizip/formats/rar/writer.rb +437 -0
- data/lib/omnizip/formats/rar.rb +193 -0
- data/lib/omnizip/formats/rar3/compressor.rb +71 -0
- data/lib/omnizip/formats/rar3/decompressor.rb +64 -0
- data/lib/omnizip/formats/rar3/reader.rb +107 -0
- data/lib/omnizip/formats/rar3/writer.rb +220 -0
- data/lib/omnizip/formats/rar3.rb +15 -0
- data/lib/omnizip/formats/rar5/compressor.rb +71 -0
- data/lib/omnizip/formats/rar5/decompressor.rb +64 -0
- data/lib/omnizip/formats/rar5/reader.rb +130 -0
- data/lib/omnizip/formats/rar5/writer.rb +65 -0
- data/lib/omnizip/formats/rar5.rb +15 -0
- data/lib/omnizip/formats/rpm/constants.rb +58 -0
- data/lib/omnizip/formats/rpm/entry.rb +106 -0
- data/lib/omnizip/formats/rpm/header.rb +106 -0
- data/lib/omnizip/formats/rpm/lead.rb +132 -0
- data/lib/omnizip/formats/rpm/tag.rb +228 -0
- data/lib/omnizip/formats/rpm/writer.rb +652 -0
- data/lib/omnizip/formats/rpm.rb +458 -0
- data/lib/omnizip/formats/seven_zip/bcj2_stream_decompressor.rb +274 -0
- data/lib/omnizip/formats/seven_zip/coder_chain.rb +169 -0
- data/lib/omnizip/formats/seven_zip/constants.rb +126 -0
- data/lib/omnizip/formats/seven_zip/encoded_header.rb +110 -0
- data/lib/omnizip/formats/seven_zip/encrypted_header.rb +139 -0
- data/lib/omnizip/formats/seven_zip/file_collector.rb +143 -0
- data/lib/omnizip/formats/seven_zip/header.rb +102 -0
- data/lib/omnizip/formats/seven_zip/header_encryptor.rb +132 -0
- data/lib/omnizip/formats/seven_zip/header_writer.rb +425 -0
- data/lib/omnizip/formats/seven_zip/models/coder_info.rb +30 -0
- data/lib/omnizip/formats/seven_zip/models/file_entry.rb +65 -0
- data/lib/omnizip/formats/seven_zip/models/folder.rb +67 -0
- data/lib/omnizip/formats/seven_zip/models/stream_info.rb +42 -0
- data/lib/omnizip/formats/seven_zip/models.rb +20 -0
- data/lib/omnizip/formats/seven_zip/parser.rb +671 -0
- data/lib/omnizip/formats/seven_zip/reader.rb +626 -0
- data/lib/omnizip/formats/seven_zip/split_archive_reader.rb +611 -0
- data/lib/omnizip/formats/seven_zip/split_archive_writer.rb +308 -0
- data/lib/omnizip/formats/seven_zip/stream_compressor.rb +151 -0
- data/lib/omnizip/formats/seven_zip/stream_decompressor.rb +166 -0
- data/lib/omnizip/formats/seven_zip/writer.rb +801 -0
- data/lib/omnizip/formats/seven_zip.rb +179 -0
- data/lib/omnizip/formats/tar/constants.rb +73 -0
- data/lib/omnizip/formats/tar/entry.rb +98 -0
- data/lib/omnizip/formats/tar/header.rb +206 -0
- data/lib/omnizip/formats/tar/reader.rb +119 -0
- data/lib/omnizip/formats/tar/writer.rb +212 -0
- data/lib/omnizip/formats/tar.rb +74 -0
- data/lib/omnizip/formats/xar/constants.rb +119 -0
- data/lib/omnizip/formats/xar/entry.rb +268 -0
- data/lib/omnizip/formats/xar/header.rb +223 -0
- data/lib/omnizip/formats/xar/reader.rb +400 -0
- data/lib/omnizip/formats/xar/toc.rb +570 -0
- data/lib/omnizip/formats/xar/writer.rb +461 -0
- data/lib/omnizip/formats/xar.rb +145 -0
- data/lib/omnizip/formats/xz/reader.rb +121 -0
- data/lib/omnizip/formats/xz/writer.rb +416 -0
- data/lib/omnizip/formats/xz.rb +210 -0
- data/lib/omnizip/formats/xz_const.rb +49 -0
- data/lib/omnizip/formats/xz_impl/block_decoder.rb +761 -0
- data/lib/omnizip/formats/xz_impl/block_encoder.rb +304 -0
- data/lib/omnizip/formats/xz_impl/block_header.rb +210 -0
- data/lib/omnizip/formats/xz_impl/block_header_parser.rb +182 -0
- data/lib/omnizip/formats/xz_impl/index_decoder.rb +174 -0
- data/lib/omnizip/formats/xz_impl/index_encoder.rb +120 -0
- data/lib/omnizip/formats/xz_impl/stream_decoder.rb +470 -0
- data/lib/omnizip/formats/xz_impl/stream_encoder.rb +95 -0
- data/lib/omnizip/formats/xz_impl/stream_footer.rb +79 -0
- data/lib/omnizip/formats/xz_impl/stream_footer_parser.rb +115 -0
- data/lib/omnizip/formats/xz_impl/stream_header.rb +53 -0
- data/lib/omnizip/formats/xz_impl/stream_header_parser.rb +106 -0
- data/lib/omnizip/formats/xz_impl/vli.rb +128 -0
- data/lib/omnizip/formats/xz_impl.rb +52 -0
- data/lib/omnizip/formats/zip/central_directory_header.rb +223 -0
- data/lib/omnizip/formats/zip/constants.rb +69 -0
- data/lib/omnizip/formats/zip/end_of_central_directory.rb +132 -0
- data/lib/omnizip/formats/zip/local_file_header.rb +136 -0
- data/lib/omnizip/formats/zip/reader.rb +376 -0
- data/lib/omnizip/formats/zip/unix_extra_field.rb +153 -0
- data/lib/omnizip/formats/zip/writer.rb +489 -0
- data/lib/omnizip/formats/zip/zip64_end_of_central_directory.rb +102 -0
- data/lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb +64 -0
- data/lib/omnizip/formats/zip/zip64_extra_field.rb +112 -0
- data/lib/omnizip/formats/zip.rb +50 -0
- data/lib/omnizip/formats.rb +29 -0
- data/lib/omnizip/implementations/base/lzma2_decoder_base.rb +75 -0
- data/lib/omnizip/implementations/base/lzma2_encoder_base.rb +128 -0
- data/lib/omnizip/implementations/base/lzma_decoder_base.rb +83 -0
- data/lib/omnizip/implementations/base/lzma_encoder_base.rb +108 -0
- data/lib/omnizip/implementations/base/state_machine_base.rb +182 -0
- data/lib/omnizip/implementations/base.rb +19 -0
- data/lib/omnizip/implementations/rust/archive.rb +93 -0
- data/lib/omnizip/implementations/rust/library.rb +221 -0
- data/lib/omnizip/implementations/rust.rb +26 -0
- data/lib/omnizip/implementations/seven_zip/lzma/decoder.rb +428 -0
- data/lib/omnizip/implementations/seven_zip/lzma/encoder.rb +456 -0
- data/lib/omnizip/implementations/seven_zip/lzma/match_finder.rb +285 -0
- data/lib/omnizip/implementations/seven_zip/lzma/range_decoder.rb +197 -0
- data/lib/omnizip/implementations/seven_zip/lzma/range_encoder.rb +194 -0
- data/lib/omnizip/implementations/seven_zip/lzma/state_machine.rb +139 -0
- data/lib/omnizip/implementations/seven_zip/lzma.rb +21 -0
- data/lib/omnizip/implementations/seven_zip/lzma2/encoder.rb +56 -0
- data/lib/omnizip/implementations/seven_zip/lzma2.rb +12 -0
- data/lib/omnizip/implementations/seven_zip.rb +11 -0
- data/lib/omnizip/implementations/xz_utils/lzma2/decoder.rb +547 -0
- data/lib/omnizip/implementations/xz_utils/lzma2/encoder.rb +748 -0
- data/lib/omnizip/implementations/xz_utils/lzma2.rb +13 -0
- data/lib/omnizip/implementations/xz_utils.rb +10 -0
- data/lib/omnizip/implementations.rb +25 -0
- data/lib/omnizip/io/buffered_input.rb +147 -0
- data/lib/omnizip/io/buffered_output.rb +106 -0
- data/lib/omnizip/io/source.rb +143 -0
- data/lib/omnizip/io/stream_manager.rb +117 -0
- data/lib/omnizip/io.rb +15 -0
- data/lib/omnizip/link_handler/hard_link.rb +79 -0
- data/lib/omnizip/link_handler/symbolic_link.rb +74 -0
- data/lib/omnizip/link_handler.rb +129 -0
- data/lib/omnizip/metadata/archive_metadata.rb +114 -0
- data/lib/omnizip/metadata/entry_metadata.rb +153 -0
- data/lib/omnizip/metadata/metadata_editor.rb +169 -0
- data/lib/omnizip/metadata/metadata_registry.rb +71 -0
- data/lib/omnizip/metadata/metadata_validator.rb +101 -0
- data/lib/omnizip/metadata.rb +58 -0
- data/lib/omnizip/models/.keep +0 -0
- data/lib/omnizip/models/algorithm_metadata.rb +41 -0
- data/lib/omnizip/models/attribute_apply.rb +40 -0
- data/lib/omnizip/models/compression_options.rb +53 -0
- data/lib/omnizip/models/conversion_options.rb +79 -0
- data/lib/omnizip/models/conversion_result.rb +141 -0
- data/lib/omnizip/models/eta_result.rb +45 -0
- data/lib/omnizip/models/extraction_rule.rb +115 -0
- data/lib/omnizip/models/filter_chain.rb +142 -0
- data/lib/omnizip/models/filter_config.rb +148 -0
- data/lib/omnizip/models/match_result.rb +141 -0
- data/lib/omnizip/models/optimization_suggestion.rb +95 -0
- data/lib/omnizip/models/parallel_options.rb +116 -0
- data/lib/omnizip/models/performance_result.rb +85 -0
- data/lib/omnizip/models/profile_report.rb +116 -0
- data/lib/omnizip/models/progress_options.rb +39 -0
- data/lib/omnizip/models/split_options.rb +116 -0
- data/lib/omnizip/optimization_registry.rb +45 -0
- data/lib/omnizip/parallel/engine.rb +52 -0
- data/lib/omnizip/parallel/job_queue.rb +209 -0
- data/lib/omnizip/parallel/job_scheduler.rb +225 -0
- data/lib/omnizip/parallel/parallel_compressor.rb +326 -0
- data/lib/omnizip/parallel/parallel_extractor.rb +238 -0
- data/lib/omnizip/parallel/thread_pool.rb +60 -0
- data/lib/omnizip/parallel/worker_pool.rb +227 -0
- data/lib/omnizip/parallel.rb +156 -0
- data/lib/omnizip/parity/chunked_block_processor.rb +194 -0
- data/lib/omnizip/parity/galois16.rb +145 -0
- data/lib/omnizip/parity/models/creator_packet.rb +71 -0
- data/lib/omnizip/parity/models/file_description_packet.rb +131 -0
- data/lib/omnizip/parity/models/ifsc_packet.rb +111 -0
- data/lib/omnizip/parity/models/main_packet.rb +126 -0
- data/lib/omnizip/parity/models/packet.rb +156 -0
- data/lib/omnizip/parity/models/packet_registry.rb +102 -0
- data/lib/omnizip/parity/models/recovery_slice_packet.rb +76 -0
- data/lib/omnizip/parity/models.rb +27 -0
- data/lib/omnizip/parity/par2_creator.rb +496 -0
- data/lib/omnizip/parity/par2_repairer.rb +409 -0
- data/lib/omnizip/parity/par2_verifier.rb +373 -0
- data/lib/omnizip/parity/par2cmdline_algorithm.rb +108 -0
- data/lib/omnizip/parity/par2cmdline_coefficients.rb +78 -0
- data/lib/omnizip/parity/reed_solomon_decoder.rb +263 -0
- data/lib/omnizip/parity/reed_solomon_encoder.rb +108 -0
- data/lib/omnizip/parity/reed_solomon_matrix.rb +339 -0
- data/lib/omnizip/parity.rb +207 -0
- data/lib/omnizip/password/encryption_registry.rb +26 -0
- data/lib/omnizip/password/encryption_strategy.rb +96 -0
- data/lib/omnizip/password/password_validator.rb +129 -0
- data/lib/omnizip/password/winzip_aes_strategy.rb +190 -0
- data/lib/omnizip/password/zip_crypto_strategy.rb +135 -0
- data/lib/omnizip/password.rb +88 -0
- data/lib/omnizip/pipe/stream_compressor.rb +124 -0
- data/lib/omnizip/pipe/stream_decompressor.rb +173 -0
- data/lib/omnizip/pipe.rb +120 -0
- data/lib/omnizip/platform/ntfs_streams.rb +200 -0
- data/lib/omnizip/platform.rb +189 -0
- data/lib/omnizip/profile/archive_profile.rb +36 -0
- data/lib/omnizip/profile/balanced_profile.rb +31 -0
- data/lib/omnizip/profile/binary_profile.rb +33 -0
- data/lib/omnizip/profile/compression_profile.rb +157 -0
- data/lib/omnizip/profile/custom_profile.rb +155 -0
- data/lib/omnizip/profile/fast_profile.rb +31 -0
- data/lib/omnizip/profile/maximum_profile.rb +31 -0
- data/lib/omnizip/profile/profile_detector.rb +108 -0
- data/lib/omnizip/profile/profile_registry.rb +160 -0
- data/lib/omnizip/profile/text_profile.rb +33 -0
- data/lib/omnizip/profile.rb +261 -0
- data/lib/omnizip/profiler/memory_profiler.rb +66 -0
- data/lib/omnizip/profiler/method_profiler.rb +49 -0
- data/lib/omnizip/profiler/report_generator.rb +158 -0
- data/lib/omnizip/profiler.rb +192 -0
- data/lib/omnizip/progress/callback_reporter.rb +34 -0
- data/lib/omnizip/progress/console_reporter.rb +59 -0
- data/lib/omnizip/progress/log_reporter.rb +89 -0
- data/lib/omnizip/progress/operation_progress.rb +118 -0
- data/lib/omnizip/progress/progress_bar.rb +156 -0
- data/lib/omnizip/progress/progress_reporter.rb +40 -0
- data/lib/omnizip/progress/progress_tracker.rb +215 -0
- data/lib/omnizip/progress/silent_reporter.rb +22 -0
- data/lib/omnizip/progress.rb +131 -0
- data/lib/omnizip/registry.rb +111 -0
- data/lib/omnizip/rubyzip_compat.rb +61 -0
- data/lib/omnizip/temp/safe_extract.rb +124 -0
- data/lib/omnizip/temp/temp_file.rb +123 -0
- data/lib/omnizip/temp/temp_file_pool.rb +109 -0
- data/lib/omnizip/temp.rb +184 -0
- data/lib/omnizip/version.rb +5 -0
- data/lib/omnizip/zip/entry.rb +160 -0
- data/lib/omnizip/zip/file.rb +485 -0
- data/lib/omnizip/zip/input_stream.rb +270 -0
- data/lib/omnizip/zip/output_stream.rb +320 -0
- data/lib/omnizip/zip.rb +23 -0
- data/lib/omnizip.rb +157 -0
- data/lib/tasks/msi_test_files.rake +66 -0
- data/lib/tasks/platform_gems.rake +147 -0
- data/lib/tasks/rust_backend.rake +48 -0
- data/readme-docs/advanced-features.adoc +514 -0
- data/readme-docs/api-usage.adoc +445 -0
- data/readme-docs/architecture.adoc +450 -0
- data/readme-docs/archive-formats.adoc +479 -0
- data/readme-docs/cli-usage.adoc +222 -0
- data/readme-docs/compression-algorithms.adoc +446 -0
- data/readme-docs/compression-profiles.adoc +247 -0
- data/readme-docs/encryption-checksums.adoc +328 -0
- data/readme-docs/format-converter.adoc +316 -0
- data/readme-docs/installation.adoc +228 -0
- data/readme-docs/par2-archives.adoc +608 -0
- data/readme-docs/performance-profiler.adoc +389 -0
- data/readme-docs/preprocessing-filters.adoc +280 -0
- data/vendor/libomnizip_ffi.so +0 -0
- data/xz-file-format-1.2.1.txt +1174 -0
- metadata +768 -0
data/docs/index.adoc
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Home
|
|
3
|
+
nav_order: 0
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
== Omnizip: Pure Ruby compression library
|
|
7
|
+
|
|
8
|
+
=== Purpose
|
|
9
|
+
|
|
10
|
+
Omnizip is a comprehensive pure Ruby implementation of compression algorithms and archive formats. Built on an extensible, registry-based architecture with clean object-oriented design, Omnizip provides full-featured compression capabilities without external dependencies.
|
|
11
|
+
|
|
12
|
+
This implementation supports multiple compression algorithms (LZMA, LZMA2, BZip2, PPMd7/8, Deflate, Deflate64, Zstandard), preprocessing filters (BCJ variants, Delta), encryption (AES-256), and complete support for multiple archive formats (.7z, ZIP, RAR, TAR, ISO, CPIO, GZIP, XZ, BZIP2).
|
|
13
|
+
|
|
14
|
+
It provides both a command-line interface and a programmatic Ruby API, making it ideal for applications requiring portable, dependency-free compression without relying on system-level libraries or external binaries.
|
|
15
|
+
|
|
16
|
+
**Pure Ruby Implementation:** Works on all Ruby platforms (MRI, JRuby, TruffleRuby) with zero external dependencies. Performance is 10-60x slower than native implementations, which is an acceptable trade-off for maximum portability.
|
|
17
|
+
|
|
18
|
+
=== Quick Start
|
|
19
|
+
|
|
20
|
+
Get started with Omnizip in minutes:
|
|
21
|
+
|
|
22
|
+
* link:getting-started/installation.html[Install the gem and dependencies]
|
|
23
|
+
* link:getting-started/quick-start.html[Compress your first file in 5 minutes]
|
|
24
|
+
* link:getting-started/your-first-archive.html[Create your first archive]
|
|
25
|
+
|
|
26
|
+
=== Documentation Map
|
|
27
|
+
|
|
28
|
+
==== New to Omnizip?
|
|
29
|
+
|
|
30
|
+
Follow this learning path:
|
|
31
|
+
|
|
32
|
+
. Install Omnizip
|
|
33
|
+
** link:getting-started/installation.html[Installation Guide]
|
|
34
|
+
|
|
35
|
+
. Quick Start (5 minutes)
|
|
36
|
+
** link:getting-started/quick-start.html[Quick Start Guide]
|
|
37
|
+
|
|
38
|
+
. Create Your First Archive
|
|
39
|
+
** link:getting-started/your-first-archive.html[Create Your First Archive]
|
|
40
|
+
|
|
41
|
+
. Learn Basic Operations
|
|
42
|
+
** link:guides/creating-archives.html[Create archives]
|
|
43
|
+
** link:guides/extracting-archives.html[Extract from archives]
|
|
44
|
+
|
|
45
|
+
==== Looking for Something Specific?
|
|
46
|
+
|
|
47
|
+
**Working with Files**
|
|
48
|
+
|
|
49
|
+
* link:guides/creating-archives.html[Create new archives]
|
|
50
|
+
* link:guides/extracting-archives.html[Extract from archives]
|
|
51
|
+
* link:guides/format-conversion.html[Convert between formats]
|
|
52
|
+
|
|
53
|
+
**Compression Algorithms**
|
|
54
|
+
|
|
55
|
+
* link:guides/compression-algorithms/lzma.html[LZMA/LZMA2 compression]
|
|
56
|
+
* link:guides/compression-algorithms/bzip2.html[BZip2 compression]
|
|
57
|
+
* link:guides/compression-algorithms/ppmd.html[PPMd7/PPMd8 compression]
|
|
58
|
+
* link:guides/compression-algorithms/deflate.html[Deflate/Deflate64 compression]
|
|
59
|
+
* link:guides/compression-algorithms/zstandard.html[Zstandard compression]
|
|
60
|
+
|
|
61
|
+
**Archive Formats**
|
|
62
|
+
|
|
63
|
+
* link:guides/archive-formats/seven-zip-format.html[7z archives]
|
|
64
|
+
* link:guides/archive-formats/zip-format.html[ZIP archives]
|
|
65
|
+
* link:guides/archive-formats/rar-format.html[RAR4/RAR5 archives]
|
|
66
|
+
* link:guides/archive-formats/tar-format.html[TAR archives]
|
|
67
|
+
* link:guides/archive-formats/gzip-format.html[GZIP files]
|
|
68
|
+
* link:guides/archive-formats/xz-format.html[XZ files]
|
|
69
|
+
* link:guides/archive-formats/rpm-format.html[RPM packages]
|
|
70
|
+
* link:guides/archive-formats/ole-format.html[OLE compound documents]
|
|
71
|
+
|
|
72
|
+
**Advanced Features**
|
|
73
|
+
|
|
74
|
+
* link:guides/advanced-features/streaming.html[Streaming operations]
|
|
75
|
+
* link:guides/advanced-features/parallel-processing.html[Parallel processing]
|
|
76
|
+
* link:guides/advanced-features/encryption.html[Encryption]
|
|
77
|
+
* link:guides/parity-archives.html[PAR2 error correction]
|
|
78
|
+
|
|
79
|
+
**Reference Materials**
|
|
80
|
+
|
|
81
|
+
* link:resources/quick-reference.html[Cheat sheet for common operations]
|
|
82
|
+
* link:reference/cli/overview.html[Command-line interface documentation]
|
|
83
|
+
* link:reference/api/overview.html[Ruby API documentation]
|
|
84
|
+
* link:concepts/index.html[Core concepts explained]
|
|
85
|
+
* link:developer/architecture.html[Design and implementation details]
|
|
86
|
+
|
|
87
|
+
=== Supported Compression Algorithms
|
|
88
|
+
|
|
89
|
+
Omnizip supports 6 major compression algorithms:
|
|
90
|
+
|
|
91
|
+
[cols="1,3,2"]
|
|
92
|
+
|===
|
|
93
|
+
|Algorithm |Description |Best For
|
|
94
|
+
|
|
95
|
+
|LZMA/LZMA2
|
|
96
|
+
|Dictionary-based compression with high ratio
|
|
97
|
+
|Archives, backups, general compression
|
|
98
|
+
|
|
99
|
+
|BZip2
|
|
100
|
+
|Burrows-Wheeler Transform compression
|
|
101
|
+
|Text files, source code
|
|
102
|
+
|
|
103
|
+
|PPMd7/PPMd8
|
|
104
|
+
|Prediction by Partial Matching
|
|
105
|
+
|Text, documents, natural language
|
|
106
|
+
|
|
107
|
+
|Deflate/Deflate64
|
|
108
|
+
|ZIP-compatible compression
|
|
109
|
+
|Cross-platform compatibility
|
|
110
|
+
|
|
111
|
+
|Zstandard
|
|
112
|
+
|Modern fast compression
|
|
113
|
+
|Speed-sensitive applications
|
|
114
|
+
|===
|
|
115
|
+
|
|
116
|
+
=== Supported Archive Formats
|
|
117
|
+
|
|
118
|
+
Omnizip supports 12 archive formats:
|
|
119
|
+
|
|
120
|
+
[cols="1,3,2"]
|
|
121
|
+
|===
|
|
122
|
+
|Format |Description |Common Use
|
|
123
|
+
|
|
124
|
+
|.7z
|
|
125
|
+
|7-Zip archives with solid compression
|
|
126
|
+
|Software distribution, backups
|
|
127
|
+
|
|
128
|
+
|ZIP
|
|
129
|
+
|ZIP archives with ZIP64 support
|
|
130
|
+
|Cross-platform archives
|
|
131
|
+
|
|
132
|
+
|RAR4/RAR5
|
|
133
|
+
|RAR archives with multi-volume support
|
|
134
|
+
|Binary distribution, file sharing
|
|
135
|
+
|
|
136
|
+
|TAR
|
|
137
|
+
|TAR archives with POSIX extensions
|
|
138
|
+
|Unix backups, software packaging
|
|
139
|
+
|
|
140
|
+
|ISO 9660
|
|
141
|
+
|ISO optical disc images
|
|
142
|
+
|CD/DVD images
|
|
143
|
+
|
|
144
|
+
|CPIO
|
|
145
|
+
|CPIO archives
|
|
146
|
+
|Unix system backups
|
|
147
|
+
|
|
148
|
+
|GZIP
|
|
149
|
+
|GZIP compressed files
|
|
150
|
+
|Single file compression
|
|
151
|
+
|
|
152
|
+
|XZ
|
|
153
|
+
|XZ compressed files with LZMA2
|
|
154
|
+
|System package compression
|
|
155
|
+
|
|
156
|
+
|BZIP2
|
|
157
|
+
|BZIP2 compressed files
|
|
158
|
+
|Text file compression
|
|
159
|
+
|
|
160
|
+
|RPM
|
|
161
|
+
|RPM package archives with CPIO payload
|
|
162
|
+
|Linux package management
|
|
163
|
+
|
|
164
|
+
|OLE
|
|
165
|
+
|OLE compound documents (MSI, DOC, XLS, PPT)
|
|
166
|
+
|Windows compound files, installers
|
|
167
|
+
|===
|
|
168
|
+
|
|
169
|
+
=== Key Features
|
|
170
|
+
|
|
171
|
+
* **Pure Ruby** - No native dependencies, works on any Ruby platform
|
|
172
|
+
* **Registry-Based** - Extensible plugin architecture for algorithms and formats
|
|
173
|
+
* **Multiple Formats** - Support for 12+ archive formats
|
|
174
|
+
* **Compression Profiles** - Smart algorithm selection based on file type
|
|
175
|
+
* **Solid Archives** - Shared dictionary for better compression ratios
|
|
176
|
+
* **Multi-Volume** - Split archives across multiple files
|
|
177
|
+
* **Encryption** - AES-256 password protection
|
|
178
|
+
* **PAR2 Support** - Error correction and recovery records
|
|
179
|
+
* **CLI Tools** - Complete command-line interface
|
|
180
|
+
* **Ruby API** - Full programmatic access
|
|
181
|
+
* **Enumerable** - All collections support Ruby's Enumerable interface
|
|
182
|
+
|
|
183
|
+
=== Example Usage
|
|
184
|
+
|
|
185
|
+
.Compressing a file
|
|
186
|
+
[source,ruby]
|
|
187
|
+
----
|
|
188
|
+
require 'omnizip'
|
|
189
|
+
|
|
190
|
+
# Simple one-liner
|
|
191
|
+
Omnizip.compress_file('input.txt', 'output.zip')
|
|
192
|
+
|
|
193
|
+
# With options
|
|
194
|
+
Omnizip.compress_file('input.txt', 'output.lzma',
|
|
195
|
+
algorithm: :lzma,
|
|
196
|
+
level: 9
|
|
197
|
+
)
|
|
198
|
+
----
|
|
199
|
+
|
|
200
|
+
.Command-line interface
|
|
201
|
+
[source,bash]
|
|
202
|
+
----
|
|
203
|
+
# Compress a file
|
|
204
|
+
omnizip compress input.txt output.lzma --level 9
|
|
205
|
+
|
|
206
|
+
# Create a .7z archive
|
|
207
|
+
omnizip archive create backup.7z documents/ photos/
|
|
208
|
+
|
|
209
|
+
# Extract an archive
|
|
210
|
+
omnizip archive extract backup.7z output/
|
|
211
|
+
|
|
212
|
+
# List archive contents
|
|
213
|
+
omnizip archive list backup.7z
|
|
214
|
+
----
|
|
215
|
+
|
|
216
|
+
=== Getting help
|
|
217
|
+
|
|
218
|
+
* **Documentation**: Browse the guides and reference sections
|
|
219
|
+
* **Issues**: Report bugs at https://github.com/metanorma/omnizip/issues
|
|
220
|
+
* **Source**: View the code at https://github.com/metanorma/omnizip
|
|
221
|
+
|
|
222
|
+
=== Related sections
|
|
223
|
+
|
|
224
|
+
* link:getting-started/index.html[Installation and quick start]
|
|
225
|
+
* link:guides/index.html[Comprehensive usage guides]
|
|
226
|
+
* link:reference/index.html[API and CLI documentation]
|
|
227
|
+
* link:concepts/index.html[Core concepts and architecture]
|
|
228
|
+
* link:troubleshooting/index.html[Common problems and solutions]
|
data/docs/lychee.toml
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Lychee Link Checker Configuration
|
|
2
|
+
# For Omnizip Documentation
|
|
3
|
+
# https://github.com/lycheeverse/lychee
|
|
4
|
+
|
|
5
|
+
# Cache results to avoid re-checking same URLs
|
|
6
|
+
cache = true
|
|
7
|
+
max_cache_age = "1d"
|
|
8
|
+
|
|
9
|
+
# Check both source files and built site
|
|
10
|
+
include_verbatim = true
|
|
11
|
+
|
|
12
|
+
# Recursively check all files
|
|
13
|
+
recursive = true
|
|
14
|
+
|
|
15
|
+
# File types to check
|
|
16
|
+
include = [
|
|
17
|
+
"_site/**/*.html"
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
# Excluded paths
|
|
21
|
+
exclude = [
|
|
22
|
+
".git",
|
|
23
|
+
".github",
|
|
24
|
+
"node_modules",
|
|
25
|
+
"vendor",
|
|
26
|
+
".bundle",
|
|
27
|
+
".sass-cache",
|
|
28
|
+
".jekyll-cache"
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
# Link checking behavior
|
|
32
|
+
max_redirects = 10
|
|
33
|
+
max_retries = 3
|
|
34
|
+
timeout = 20
|
|
35
|
+
|
|
36
|
+
# Accept status codes
|
|
37
|
+
accept = [
|
|
38
|
+
"100..=103", # Informational
|
|
39
|
+
"200..=299", # Success
|
|
40
|
+
"429" # Too Many Requests (retry handled by max_retries)
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
# User agent to identify ourselves
|
|
44
|
+
user_agent = "lychee/omnizip-docs-link-checker"
|
|
45
|
+
|
|
46
|
+
# Check HTTP, HTTPS, and file:// schemes
|
|
47
|
+
scheme = ["https", "http", "file"]
|
|
48
|
+
|
|
49
|
+
# Include file:// URLs for local link checking
|
|
50
|
+
include_file = true
|
|
51
|
+
|
|
52
|
+
# Handle different link types
|
|
53
|
+
include_mail = false # Don't check mailto: links
|
|
54
|
+
|
|
55
|
+
# Follow links but don't check their content recursively
|
|
56
|
+
max_concurrency = 8
|
|
57
|
+
|
|
58
|
+
# Verbose output for debugging
|
|
59
|
+
verbose = "info"
|
|
60
|
+
|
|
61
|
+
# Require HTTPS where possible
|
|
62
|
+
require_https = false # Don't enforce
|
|
63
|
+
|
|
64
|
+
# Check fragment identifiers (anchors)
|
|
65
|
+
# include_fragments = true
|
|
66
|
+
|
|
67
|
+
index_files = ["index.html"]
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: API Overview
|
|
3
|
+
nav_order: 60
|
|
4
|
+
parent: Reference
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
== Ruby API Overview
|
|
8
|
+
|
|
9
|
+
=== General
|
|
10
|
+
|
|
11
|
+
Omnizip provides a comprehensive Ruby API for all compression and archive operations.
|
|
12
|
+
|
|
13
|
+
=== Requiring the Library
|
|
14
|
+
|
|
15
|
+
[source,ruby]
|
|
16
|
+
----
|
|
17
|
+
require 'omnizip'
|
|
18
|
+
----
|
|
19
|
+
|
|
20
|
+
=== Convenience Methods
|
|
21
|
+
|
|
22
|
+
==== File Operations
|
|
23
|
+
|
|
24
|
+
[source,ruby]
|
|
25
|
+
----
|
|
26
|
+
# Compress a file
|
|
27
|
+
Omnizip.compress_file('input.txt', 'output.lzma')
|
|
28
|
+
|
|
29
|
+
# Decompress a file
|
|
30
|
+
Omnizip.decompress_file('output.lzma', 'restored.txt')
|
|
31
|
+
|
|
32
|
+
# Extract archive
|
|
33
|
+
Omnizip.extract_archive('archive.7z', 'output/')
|
|
34
|
+
|
|
35
|
+
# List archive contents
|
|
36
|
+
Omnizip.list_archive('archive.7z')
|
|
37
|
+
----
|
|
38
|
+
|
|
39
|
+
==== Stream Operations
|
|
40
|
+
|
|
41
|
+
[source,ruby]
|
|
42
|
+
----
|
|
43
|
+
# Compress streams
|
|
44
|
+
File.open('input.txt', 'rb') do |input|
|
|
45
|
+
File.open('output.lzma', 'wb') do |output|
|
|
46
|
+
Omnizip.compress_stream(input, output)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Decompress streams
|
|
51
|
+
File.open('output.lzma', 'rb') do |input|
|
|
52
|
+
File.open('restored.txt', 'wb') do |output|
|
|
53
|
+
Omnizip.decompress_stream(input, output)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
----
|
|
57
|
+
|
|
58
|
+
=== Registry-Based API
|
|
59
|
+
|
|
60
|
+
==== Algorithm Registry
|
|
61
|
+
|
|
62
|
+
[source,ruby]
|
|
63
|
+
----
|
|
64
|
+
# List available algorithms
|
|
65
|
+
Omnizip::AlgorithmRegistry.registered.each do |name|
|
|
66
|
+
puts "Algorithm: #{name}"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Get algorithm instance
|
|
70
|
+
lzma = Omnizip::AlgorithmRegistry.get(:lzma).new(level: 9)
|
|
71
|
+
|
|
72
|
+
# Use algorithm
|
|
73
|
+
File.open('input.txt', 'rb') do |input|
|
|
74
|
+
File.open('output.lzma', 'wb') do |output|
|
|
75
|
+
lzma.compress(input, output)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
----
|
|
79
|
+
|
|
80
|
+
==== Format Registry
|
|
81
|
+
|
|
82
|
+
[source,ruby]
|
|
83
|
+
----
|
|
84
|
+
# List available formats
|
|
85
|
+
Omnizip::FormatRegistry.registered.each do |name|
|
|
86
|
+
puts "Format: #{name}"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Create format-specific writer
|
|
90
|
+
writer = Omnizip::FormatRegistry.get(:seven_zip).new_writer('archive.7z')
|
|
91
|
+
writer.add_file('document.txt')
|
|
92
|
+
writer.close
|
|
93
|
+
----
|
|
94
|
+
|
|
95
|
+
=== Archive Operations
|
|
96
|
+
|
|
97
|
+
==== Creating Archives
|
|
98
|
+
|
|
99
|
+
[source,ruby]
|
|
100
|
+
----
|
|
101
|
+
# 7z archive
|
|
102
|
+
Omnizip::Formats::SevenZip.create('archive.7z') do |writer|
|
|
103
|
+
writer.add_file('document.txt')
|
|
104
|
+
writer.add_directory('photos/')
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# ZIP archive
|
|
108
|
+
writer = Omnizip::Formats::Zip::Writer.new('archive.zip')
|
|
109
|
+
writer.add_file('document.txt')
|
|
110
|
+
writer.add_directory('photos/')
|
|
111
|
+
writer.write
|
|
112
|
+
----
|
|
113
|
+
|
|
114
|
+
==== Extracting Archives
|
|
115
|
+
|
|
116
|
+
[source,ruby]
|
|
117
|
+
----
|
|
118
|
+
# 7z archive
|
|
119
|
+
Omnizip::Formats::SevenZip.open('archive.7z') do |reader|
|
|
120
|
+
reader.extract_all('output/')
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# ZIP archive (call .read to parse before extracting)
|
|
124
|
+
reader = Omnizip::Formats::Zip::Reader.new('archive.zip').read
|
|
125
|
+
reader.extract_all('output/')
|
|
126
|
+
----
|
|
127
|
+
|
|
128
|
+
==== Listing Contents
|
|
129
|
+
|
|
130
|
+
[source,ruby]
|
|
131
|
+
----
|
|
132
|
+
Omnizip::Formats::SevenZip.open('archive.7z') do |reader|
|
|
133
|
+
reader.list_files.each do |entry|
|
|
134
|
+
puts "#{entry.name}: #{entry.size} bytes"
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
----
|
|
138
|
+
|
|
139
|
+
=== Error Handling
|
|
140
|
+
|
|
141
|
+
[source,ruby]
|
|
142
|
+
----
|
|
143
|
+
begin
|
|
144
|
+
Omnizip.compress_file('input.txt', 'output.lzma')
|
|
145
|
+
rescue Omnizip::CompressionError => e
|
|
146
|
+
puts "Compression failed: #{e.message}"
|
|
147
|
+
rescue Omnizip::AlgorithmNotFoundError => e
|
|
148
|
+
puts "Algorithm not found: #{e.message}"
|
|
149
|
+
rescue IOError => e
|
|
150
|
+
puts "I/O error: #{e.message}"
|
|
151
|
+
end
|
|
152
|
+
----
|
|
153
|
+
|
|
154
|
+
=== Progress Tracking
|
|
155
|
+
|
|
156
|
+
[source,ruby]
|
|
157
|
+
----
|
|
158
|
+
# Create tracker with callback
|
|
159
|
+
progress = Omnizip::ProgressTracker.new
|
|
160
|
+
|
|
161
|
+
Omnizip.compress_file('large.txt', 'large.lzma',
|
|
162
|
+
progress_callback: ->(percent) {
|
|
163
|
+
puts "Progress: #{percent}%" if percent % 10 == 0
|
|
164
|
+
}
|
|
165
|
+
)
|
|
166
|
+
----
|
|
167
|
+
|
|
168
|
+
=== Configuration
|
|
169
|
+
|
|
170
|
+
[source,ruby]
|
|
171
|
+
----
|
|
172
|
+
# Set default compression level
|
|
173
|
+
Omnizip.config.default_level = 7
|
|
174
|
+
|
|
175
|
+
# Set default algorithm
|
|
176
|
+
Omnizip.config.default_algorithm = :lzma2
|
|
177
|
+
|
|
178
|
+
# Enable verbose output
|
|
179
|
+
Omnizip.config.verbose = true
|
|
180
|
+
----
|
|
181
|
+
|
|
182
|
+
=== See Also
|
|
183
|
+
|
|
184
|
+
* link:compression-api[Compression API] - Compression details
|
|
185
|
+
* link:decompression-api[Decompression API] - Decompression details
|
|
186
|
+
* link:archive-api[Archive API] - Archive operations
|
|
187
|
+
* link:algorithm-registry[Algorithm Registry] - Algorithm management
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: compress - Compress Files
|
|
3
|
+
nav_order: 52
|
|
4
|
+
parent: Reference
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
== compress Command
|
|
8
|
+
|
|
9
|
+
=== General
|
|
10
|
+
|
|
11
|
+
Compress individual files using various compression algorithms.
|
|
12
|
+
|
|
13
|
+
=== Syntax
|
|
14
|
+
|
|
15
|
+
[source,bash]
|
|
16
|
+
----
|
|
17
|
+
omnizip compress [OPTIONS] INPUT OUTPUT
|
|
18
|
+
----
|
|
19
|
+
|
|
20
|
+
=== Arguments
|
|
21
|
+
|
|
22
|
+
`INPUT`:: Input file path (use `-` for stdin)
|
|
23
|
+
`OUTPUT`:: Output file path (use `-` for stdout)
|
|
24
|
+
|
|
25
|
+
=== Options
|
|
26
|
+
|
|
27
|
+
`--algorithm ALGORITHM`:: Compression algorithm (default: lzma)
|
|
28
|
+
`--format FORMAT`:: Archive format (zip, 7z) for pipe mode
|
|
29
|
+
`--level LEVEL`:: Compression level (1-9, default: 5)
|
|
30
|
+
`--entry-name NAME`:: Entry name for pipe mode
|
|
31
|
+
`--verbose`, `-v`:: Enable verbose output
|
|
32
|
+
|
|
33
|
+
=== Examples
|
|
34
|
+
|
|
35
|
+
==== Basic Compression
|
|
36
|
+
|
|
37
|
+
[source,bash]
|
|
38
|
+
----
|
|
39
|
+
omnizip compress input.txt output.lzma
|
|
40
|
+
----
|
|
41
|
+
|
|
42
|
+
==== With Algorithm
|
|
43
|
+
|
|
44
|
+
[source,bash]
|
|
45
|
+
----
|
|
46
|
+
# LZMA
|
|
47
|
+
omnizip compress input.txt output.lzma --algorithm lzma
|
|
48
|
+
|
|
49
|
+
# BZip2
|
|
50
|
+
omnizip compress input.txt output.bz2 --algorithm bzip2
|
|
51
|
+
|
|
52
|
+
# Zstandard
|
|
53
|
+
omnizip compress input.txt output.zst --algorithm zstandard
|
|
54
|
+
----
|
|
55
|
+
|
|
56
|
+
==== With Level
|
|
57
|
+
|
|
58
|
+
[source,bash]
|
|
59
|
+
----
|
|
60
|
+
# Fast
|
|
61
|
+
omnizip compress input.txt output.lzma --level 1
|
|
62
|
+
|
|
63
|
+
# Maximum
|
|
64
|
+
omnizip compress input.txt output.lzma --level 9
|
|
65
|
+
----
|
|
66
|
+
|
|
67
|
+
==== Pipe Mode
|
|
68
|
+
|
|
69
|
+
[source,bash]
|
|
70
|
+
----
|
|
71
|
+
# From stdin
|
|
72
|
+
cat input.txt | omnizip compress - output.lzma
|
|
73
|
+
|
|
74
|
+
# To stdout
|
|
75
|
+
omnizip compress input.txt - > output.lzma
|
|
76
|
+
|
|
77
|
+
# Full pipe
|
|
78
|
+
cat input.txt | omnizip compress - - | other-command
|
|
79
|
+
----
|
|
80
|
+
|
|
81
|
+
==== With Format
|
|
82
|
+
|
|
83
|
+
[source,bash]
|
|
84
|
+
----
|
|
85
|
+
# Create ZIP
|
|
86
|
+
cat input.txt | omnizip compress - output.zip --format zip
|
|
87
|
+
|
|
88
|
+
# Create 7z
|
|
89
|
+
cat input.txt | omnizip compress - output.7z --format 7z
|
|
90
|
+
----
|
|
91
|
+
|
|
92
|
+
=== Algorithms
|
|
93
|
+
|
|
94
|
+
Available algorithms:
|
|
95
|
+
|
|
96
|
+
* `lzma` - LZMA compression
|
|
97
|
+
* `lzma2` - LZMA2 compression (default)
|
|
98
|
+
* `bzip2` - BZip2 compression
|
|
99
|
+
* `ppmd7` - PPMd7 compression
|
|
100
|
+
* `deflate` - Deflate compression
|
|
101
|
+
* `zstandard` - Zstandard compression
|
|
102
|
+
|
|
103
|
+
=== Performance Tips
|
|
104
|
+
|
|
105
|
+
1. **Use level 1-3** for temporary files
|
|
106
|
+
2. **Use level 5-7** for general compression
|
|
107
|
+
3. **Use level 8-9** for long-term storage
|
|
108
|
+
4. **Use Zstandard** for speed-sensitive applications
|
|
109
|
+
5. **Use LZMA2** for maximum compression
|
|
110
|
+
|
|
111
|
+
=== See Also
|
|
112
|
+
|
|
113
|
+
* link:overview.html[CLI Overview] - Command-line interface
|
|
114
|
+
* link:../api/overview.html[Ruby API Overview] - Programmatic interface
|