omnizip 0.3.12 → 0.3.14

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.
Files changed (482) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +6 -0
  3. data/lib/omnizip/algorithm.rb +36 -3
  4. data/lib/omnizip/algorithm_registry.rb +0 -2
  5. data/lib/omnizip/algorithms/bzip2/bwt.rb +0 -2
  6. data/lib/omnizip/algorithms/bzip2/decoder.rb +0 -2
  7. data/lib/omnizip/algorithms/bzip2/encoder.rb +0 -2
  8. data/lib/omnizip/algorithms/bzip2/huffman.rb +0 -2
  9. data/lib/omnizip/algorithms/bzip2/mtf.rb +0 -2
  10. data/lib/omnizip/algorithms/bzip2/rle.rb +0 -2
  11. data/lib/omnizip/algorithms/bzip2.rb +1 -5
  12. data/lib/omnizip/algorithms/deflate/constants.rb +0 -2
  13. data/lib/omnizip/algorithms/deflate/decoder.rb +0 -2
  14. data/lib/omnizip/algorithms/deflate/encoder.rb +0 -2
  15. data/lib/omnizip/algorithms/deflate.rb +1 -5
  16. data/lib/omnizip/algorithms/deflate64/constants.rb +0 -2
  17. data/lib/omnizip/algorithms/deflate64/decoder.rb +0 -2
  18. data/lib/omnizip/algorithms/deflate64/encoder.rb +0 -2
  19. data/lib/omnizip/algorithms/deflate64/huffman_coder.rb +0 -2
  20. data/lib/omnizip/algorithms/deflate64/lz77_encoder.rb +0 -2
  21. data/lib/omnizip/algorithms/deflate64.rb +2 -4
  22. data/lib/omnizip/algorithms/lzma/bit_model.rb +0 -2
  23. data/lib/omnizip/algorithms/lzma/constants.rb +0 -2
  24. data/lib/omnizip/algorithms/lzma/decoder.rb +0 -2
  25. data/lib/omnizip/algorithms/lzma/dictionary.rb +0 -2
  26. data/lib/omnizip/algorithms/lzma/distance_coder.rb +0 -2
  27. data/lib/omnizip/algorithms/lzma/encoder.rb +0 -2
  28. data/lib/omnizip/algorithms/lzma/length_coder.rb +0 -2
  29. data/lib/omnizip/algorithms/lzma/literal_decoder.rb +0 -2
  30. data/lib/omnizip/algorithms/lzma/literal_encoder.rb +0 -2
  31. data/lib/omnizip/algorithms/lzma/lzip_decoder.rb +0 -2
  32. data/lib/omnizip/algorithms/lzma/lzma_alone_decoder.rb +0 -2
  33. data/lib/omnizip/algorithms/lzma/lzma_state.rb +0 -2
  34. data/lib/omnizip/algorithms/lzma/match.rb +0 -2
  35. data/lib/omnizip/algorithms/lzma/match_finder.rb +0 -2
  36. data/lib/omnizip/algorithms/lzma/match_finder_config.rb +0 -2
  37. data/lib/omnizip/algorithms/lzma/match_finder_factory.rb +0 -2
  38. data/lib/omnizip/algorithms/lzma/optimal_encoder.rb +0 -2
  39. data/lib/omnizip/algorithms/lzma/probability_models.rb +0 -2
  40. data/lib/omnizip/algorithms/lzma/range_coder.rb +0 -2
  41. data/lib/omnizip/algorithms/lzma/range_decoder.rb +0 -2
  42. data/lib/omnizip/algorithms/lzma/range_encoder.rb +0 -2
  43. data/lib/omnizip/algorithms/lzma/state.rb +0 -2
  44. data/lib/omnizip/algorithms/lzma/xz_buffered_range_encoder.rb +0 -2
  45. data/lib/omnizip/algorithms/lzma/xz_encoder.rb +0 -2
  46. data/lib/omnizip/algorithms/lzma/xz_encoder_fast.rb +0 -2
  47. data/lib/omnizip/algorithms/lzma/xz_match_finder_adapter.rb +0 -2
  48. data/lib/omnizip/algorithms/lzma/xz_price_calculator.rb +0 -2
  49. data/lib/omnizip/algorithms/lzma/xz_probability_models.rb +0 -2
  50. data/lib/omnizip/algorithms/lzma/xz_range_encoder.rb +0 -2
  51. data/lib/omnizip/algorithms/lzma/xz_range_encoder_exact.rb +0 -2
  52. data/lib/omnizip/algorithms/lzma/xz_state.rb +0 -2
  53. data/lib/omnizip/algorithms/lzma/xz_utils_decoder.rb +0 -2
  54. data/lib/omnizip/algorithms/lzma.rb +1 -3
  55. data/lib/omnizip/algorithms/lzma2/chunk_manager.rb +0 -2
  56. data/lib/omnizip/algorithms/lzma2/constants.rb +0 -2
  57. data/lib/omnizip/algorithms/lzma2/encoder.rb +0 -2
  58. data/lib/omnizip/algorithms/lzma2/lzma2_chunk.rb +0 -2
  59. data/lib/omnizip/algorithms/lzma2/properties.rb +0 -2
  60. data/lib/omnizip/algorithms/lzma2/simple_lzma2_encoder.rb +0 -2
  61. data/lib/omnizip/algorithms/lzma2/xz_encoder_adapter.rb +0 -2
  62. data/lib/omnizip/algorithms/lzma2.rb +4 -14
  63. data/lib/omnizip/algorithms/ppmd7/constants.rb +0 -2
  64. data/lib/omnizip/algorithms/ppmd7/context.rb +0 -2
  65. data/lib/omnizip/algorithms/ppmd7/decoder.rb +0 -2
  66. data/lib/omnizip/algorithms/ppmd7/encoder.rb +0 -2
  67. data/lib/omnizip/algorithms/ppmd7/model.rb +0 -2
  68. data/lib/omnizip/algorithms/ppmd7/symbol_state.rb +0 -2
  69. data/lib/omnizip/algorithms/ppmd7.rb +0 -2
  70. data/lib/omnizip/algorithms/ppmd8/constants.rb +0 -2
  71. data/lib/omnizip/algorithms/ppmd8/context.rb +0 -2
  72. data/lib/omnizip/algorithms/ppmd8/decoder.rb +0 -2
  73. data/lib/omnizip/algorithms/ppmd8/encoder.rb +0 -2
  74. data/lib/omnizip/algorithms/ppmd8/model.rb +0 -2
  75. data/lib/omnizip/algorithms/ppmd8/restoration_method.rb +0 -2
  76. data/lib/omnizip/algorithms/ppmd8.rb +0 -2
  77. data/lib/omnizip/algorithms/ppmd_base.rb +0 -2
  78. data/lib/omnizip/algorithms/registration.rb +0 -2
  79. data/lib/omnizip/algorithms/sevenzip_lzma2.rb +0 -2
  80. data/lib/omnizip/algorithms/xz_lzma2.rb +0 -2
  81. data/lib/omnizip/algorithms/zstandard/constants.rb +0 -2
  82. data/lib/omnizip/algorithms/zstandard/decoder.rb +0 -2
  83. data/lib/omnizip/algorithms/zstandard/encoder.rb +0 -2
  84. data/lib/omnizip/algorithms/zstandard/frame/block.rb +0 -2
  85. data/lib/omnizip/algorithms/zstandard/frame/header.rb +0 -2
  86. data/lib/omnizip/algorithms/zstandard/frame.rb +0 -2
  87. data/lib/omnizip/algorithms/zstandard/fse/bitstream.rb +0 -2
  88. data/lib/omnizip/algorithms/zstandard/fse/encoder.rb +0 -2
  89. data/lib/omnizip/algorithms/zstandard/fse/table.rb +0 -2
  90. data/lib/omnizip/algorithms/zstandard/fse.rb +0 -2
  91. data/lib/omnizip/algorithms/zstandard/huffman.rb +0 -2
  92. data/lib/omnizip/algorithms/zstandard/huffman_encoder.rb +0 -2
  93. data/lib/omnizip/algorithms/zstandard/literals.rb +0 -2
  94. data/lib/omnizip/algorithms/zstandard/literals_encoder.rb +0 -2
  95. data/lib/omnizip/algorithms/zstandard/sequences.rb +0 -2
  96. data/lib/omnizip/algorithms/zstandard.rb +1 -5
  97. data/lib/omnizip/algorithms.rb +14 -3
  98. data/lib/omnizip/archive_handler.rb +0 -2
  99. data/lib/omnizip/archive_handlers/tar_handler.rb +0 -2
  100. data/lib/omnizip/archive_handlers/zip_handler.rb +0 -2
  101. data/lib/omnizip/archive_handlers.rb +0 -2
  102. data/lib/omnizip/buffer/memory_archive.rb +0 -2
  103. data/lib/omnizip/buffer/memory_extractor.rb +0 -2
  104. data/lib/omnizip/buffer.rb +0 -2
  105. data/lib/omnizip/checksum_registry.rb +0 -2
  106. data/lib/omnizip/checksums/crc32.rb +0 -2
  107. data/lib/omnizip/checksums/crc64.rb +0 -2
  108. data/lib/omnizip/checksums/crc_base.rb +0 -2
  109. data/lib/omnizip/checksums/registration.rb +0 -2
  110. data/lib/omnizip/checksums/verifier.rb +0 -2
  111. data/lib/omnizip/checksums.rb +0 -2
  112. data/lib/omnizip/chunked/memory_manager.rb +0 -2
  113. data/lib/omnizip/chunked/reader.rb +0 -2
  114. data/lib/omnizip/chunked/writer.rb +0 -2
  115. data/lib/omnizip/chunked.rb +0 -2
  116. data/lib/omnizip/cli/output_formatter.rb +0 -2
  117. data/lib/omnizip/cli/shared.rb +0 -2
  118. data/lib/omnizip/cli.rb +0 -2
  119. data/lib/omnizip/commands/archive_create_command.rb +0 -2
  120. data/lib/omnizip/commands/archive_extract_command.rb +0 -2
  121. data/lib/omnizip/commands/archive_list_command.rb +9 -9
  122. data/lib/omnizip/commands/archive_repair_command.rb +0 -2
  123. data/lib/omnizip/commands/archive_verify_command.rb +0 -2
  124. data/lib/omnizip/commands/compress_command.rb +0 -2
  125. data/lib/omnizip/commands/decompress_command.rb +0 -2
  126. data/lib/omnizip/commands/list_command.rb +0 -2
  127. data/lib/omnizip/commands/metadata_command.rb +0 -2
  128. data/lib/omnizip/commands/parity_create_command.rb +0 -2
  129. data/lib/omnizip/commands/parity_repair_command.rb +0 -2
  130. data/lib/omnizip/commands/parity_verify_command.rb +0 -2
  131. data/lib/omnizip/commands/profile_list_command.rb +0 -2
  132. data/lib/omnizip/commands/profile_show_command.rb +0 -2
  133. data/lib/omnizip/commands.rb +0 -2
  134. data/lib/omnizip/convenience.rb +0 -2
  135. data/lib/omnizip/converter/conversion_registry.rb +0 -2
  136. data/lib/omnizip/converter/conversion_strategy.rb +0 -2
  137. data/lib/omnizip/converter/seven_zip_to_zip_strategy.rb +0 -2
  138. data/lib/omnizip/converter/zip_to_seven_zip_strategy.rb +0 -2
  139. data/lib/omnizip/converter.rb +0 -2
  140. data/lib/omnizip/crypto/aes256/cipher.rb +0 -2
  141. data/lib/omnizip/crypto/aes256/constants.rb +0 -2
  142. data/lib/omnizip/crypto/aes256/key_derivation.rb +0 -2
  143. data/lib/omnizip/crypto/aes256.rb +0 -2
  144. data/lib/omnizip/crypto.rb +0 -2
  145. data/lib/omnizip/entry.rb +44 -0
  146. data/lib/omnizip/error.rb +0 -2
  147. data/lib/omnizip/eta/exponential_smoothing_estimator.rb +0 -2
  148. data/lib/omnizip/eta/moving_average_estimator.rb +0 -2
  149. data/lib/omnizip/eta/rate_calculator.rb +0 -2
  150. data/lib/omnizip/eta/sample_history.rb +0 -2
  151. data/lib/omnizip/eta/time_estimator.rb +0 -2
  152. data/lib/omnizip/eta.rb +0 -2
  153. data/lib/omnizip/extraction/filter_chain.rb +0 -2
  154. data/lib/omnizip/extraction/glob_pattern.rb +0 -2
  155. data/lib/omnizip/extraction/pattern_matcher.rb +0 -2
  156. data/lib/omnizip/extraction/predicate_pattern.rb +0 -2
  157. data/lib/omnizip/extraction/regex_pattern.rb +0 -2
  158. data/lib/omnizip/extraction/selective_extractor.rb +2 -12
  159. data/lib/omnizip/extraction.rb +0 -2
  160. data/lib/omnizip/file_type/mime_classifier.rb +0 -2
  161. data/lib/omnizip/file_type.rb +0 -2
  162. data/lib/omnizip/filter.rb +0 -2
  163. data/lib/omnizip/filter_pipeline.rb +1 -3
  164. data/lib/omnizip/filter_registry.rb +18 -18
  165. data/lib/omnizip/filters/bcj.rb +0 -2
  166. data/lib/omnizip/filters/bcj2/constants.rb +0 -2
  167. data/lib/omnizip/filters/bcj2/decoder.rb +0 -2
  168. data/lib/omnizip/filters/bcj2/encoder.rb +0 -2
  169. data/lib/omnizip/filters/bcj2/stream_data.rb +0 -2
  170. data/lib/omnizip/filters/bcj2.rb +1 -3
  171. data/lib/omnizip/filters/bcj_arm.rb +1 -3
  172. data/lib/omnizip/filters/bcj_arm64.rb +1 -3
  173. data/lib/omnizip/filters/bcj_ia64.rb +1 -3
  174. data/lib/omnizip/filters/bcj_ppc.rb +1 -3
  175. data/lib/omnizip/filters/bcj_sparc.rb +1 -3
  176. data/lib/omnizip/filters/bcj_x86.rb +1 -3
  177. data/lib/omnizip/filters/delta.rb +0 -2
  178. data/lib/omnizip/filters/xz_delta.rb +0 -2
  179. data/lib/omnizip/filters.rb +0 -4
  180. data/lib/omnizip/format_detector.rb +0 -2
  181. data/lib/omnizip/formats/bzip2_file.rb +0 -9
  182. data/lib/omnizip/formats/cpio/bounded_io.rb +0 -2
  183. data/lib/omnizip/formats/cpio/constants.rb +0 -2
  184. data/lib/omnizip/formats/cpio/entry.rb +6 -2
  185. data/lib/omnizip/formats/cpio/reader.rb +0 -2
  186. data/lib/omnizip/formats/cpio/writer.rb +0 -2
  187. data/lib/omnizip/formats/cpio.rb +0 -8
  188. data/lib/omnizip/formats/format_spec_loader.rb +0 -2
  189. data/lib/omnizip/formats/gzip.rb +0 -9
  190. data/lib/omnizip/formats/iso/directory_builder.rb +0 -2
  191. data/lib/omnizip/formats/iso/directory_record.rb +7 -2
  192. data/lib/omnizip/formats/iso/joliet.rb +0 -2
  193. data/lib/omnizip/formats/iso/path_table.rb +0 -2
  194. data/lib/omnizip/formats/iso/reader.rb +0 -2
  195. data/lib/omnizip/formats/iso/rock_ridge.rb +0 -2
  196. data/lib/omnizip/formats/iso/volume_builder.rb +0 -2
  197. data/lib/omnizip/formats/iso/volume_descriptor.rb +0 -2
  198. data/lib/omnizip/formats/iso/writer.rb +0 -2
  199. data/lib/omnizip/formats/iso.rb +0 -7
  200. data/lib/omnizip/formats/lzip.rb +0 -9
  201. data/lib/omnizip/formats/lzma_alone.rb +0 -8
  202. data/lib/omnizip/formats/msi/cab_extractor.rb +0 -2
  203. data/lib/omnizip/formats/msi/constants.rb +0 -2
  204. data/lib/omnizip/formats/msi/directory_resolver.rb +0 -2
  205. data/lib/omnizip/formats/msi/entry.rb +6 -2
  206. data/lib/omnizip/formats/msi/reader.rb +0 -2
  207. data/lib/omnizip/formats/msi/string_pool.rb +0 -2
  208. data/lib/omnizip/formats/msi/table_parser.rb +0 -2
  209. data/lib/omnizip/formats/msi.rb +0 -11
  210. data/lib/omnizip/formats/ole/allocation_table.rb +0 -2
  211. data/lib/omnizip/formats/ole/constants.rb +0 -2
  212. data/lib/omnizip/formats/ole/dirent.rb +6 -2
  213. data/lib/omnizip/formats/ole/header.rb +0 -2
  214. data/lib/omnizip/formats/ole/ranges_io.rb +0 -2
  215. data/lib/omnizip/formats/ole/storage.rb +0 -2
  216. data/lib/omnizip/formats/ole/types/variant.rb +0 -2
  217. data/lib/omnizip/formats/ole.rb +0 -11
  218. data/lib/omnizip/formats/rar/archive_repairer.rb +0 -2
  219. data/lib/omnizip/formats/rar/archive_verifier.rb +0 -2
  220. data/lib/omnizip/formats/rar/block_parser.rb +0 -2
  221. data/lib/omnizip/formats/rar/compression/bit_stream.rb +0 -2
  222. data/lib/omnizip/formats/rar/compression/dispatcher.rb +0 -2
  223. data/lib/omnizip/formats/rar/compression/lz77_huffman/decoder.rb +0 -2
  224. data/lib/omnizip/formats/rar/compression/lz77_huffman/encoder.rb +0 -2
  225. data/lib/omnizip/formats/rar/compression/lz77_huffman/huffman_builder.rb +0 -2
  226. data/lib/omnizip/formats/rar/compression/lz77_huffman/huffman_coder.rb +0 -2
  227. data/lib/omnizip/formats/rar/compression/lz77_huffman/match_finder.rb +0 -2
  228. data/lib/omnizip/formats/rar/compression/lz77_huffman/sliding_window.rb +0 -2
  229. data/lib/omnizip/formats/rar/compression/lz77_huffman.rb +0 -2
  230. data/lib/omnizip/formats/rar/compression/ppmd/context.rb +0 -2
  231. data/lib/omnizip/formats/rar/compression/ppmd/decoder.rb +0 -2
  232. data/lib/omnizip/formats/rar/compression/ppmd/encoder.rb +0 -2
  233. data/lib/omnizip/formats/rar/compression/ppmd.rb +0 -2
  234. data/lib/omnizip/formats/rar/compression.rb +0 -2
  235. data/lib/omnizip/formats/rar/compression_method_registry.rb +0 -2
  236. data/lib/omnizip/formats/rar/constants.rb +0 -2
  237. data/lib/omnizip/formats/rar/decompressor.rb +0 -2
  238. data/lib/omnizip/formats/rar/external_writer.rb +0 -2
  239. data/lib/omnizip/formats/rar/header.rb +0 -2
  240. data/lib/omnizip/formats/rar/license_validator.rb +0 -2
  241. data/lib/omnizip/formats/rar/models/rar_archive.rb +0 -2
  242. data/lib/omnizip/formats/rar/models/rar_entry.rb +0 -2
  243. data/lib/omnizip/formats/rar/models/rar_volume.rb +0 -2
  244. data/lib/omnizip/formats/rar/models.rb +0 -2
  245. data/lib/omnizip/formats/rar/parity_handler.rb +0 -2
  246. data/lib/omnizip/formats/rar/rar5/compression/lzma.rb +0 -2
  247. data/lib/omnizip/formats/rar/rar5/compression/lzss.rb +0 -2
  248. data/lib/omnizip/formats/rar/rar5/compression/store.rb +0 -2
  249. data/lib/omnizip/formats/rar/rar5/crc32.rb +0 -2
  250. data/lib/omnizip/formats/rar/rar5/encryption/aes256_cbc.rb +0 -2
  251. data/lib/omnizip/formats/rar/rar5/encryption/encryption_header.rb +0 -2
  252. data/lib/omnizip/formats/rar/rar5/encryption/encryption_manager.rb +0 -2
  253. data/lib/omnizip/formats/rar/rar5/encryption/key_derivation.rb +0 -2
  254. data/lib/omnizip/formats/rar/rar5/header.rb +0 -2
  255. data/lib/omnizip/formats/rar/rar5/models/encryption_options.rb +0 -2
  256. data/lib/omnizip/formats/rar/rar5/models/recovery_options.rb +0 -2
  257. data/lib/omnizip/formats/rar/rar5/models/solid_options.rb +0 -2
  258. data/lib/omnizip/formats/rar/rar5/models/volume_options.rb +0 -2
  259. data/lib/omnizip/formats/rar/rar5/multi_volume/volume_manager.rb +0 -2
  260. data/lib/omnizip/formats/rar/rar5/multi_volume/volume_splitter.rb +0 -2
  261. data/lib/omnizip/formats/rar/rar5/multi_volume/volume_writer.rb +0 -2
  262. data/lib/omnizip/formats/rar/rar5/solid/solid_encoder.rb +0 -2
  263. data/lib/omnizip/formats/rar/rar5/solid/solid_manager.rb +0 -2
  264. data/lib/omnizip/formats/rar/rar5/solid/solid_stream.rb +0 -2
  265. data/lib/omnizip/formats/rar/rar5/vint.rb +0 -2
  266. data/lib/omnizip/formats/rar/rar5/writer.rb +0 -2
  267. data/lib/omnizip/formats/rar/rar_format_base.rb +0 -2
  268. data/lib/omnizip/formats/rar/reader.rb +0 -2
  269. data/lib/omnizip/formats/rar/recovery_record.rb +0 -2
  270. data/lib/omnizip/formats/rar/volume_manager.rb +0 -2
  271. data/lib/omnizip/formats/rar/writer.rb +0 -2
  272. data/lib/omnizip/formats/rar.rb +0 -8
  273. data/lib/omnizip/formats/rar3/compressor.rb +0 -2
  274. data/lib/omnizip/formats/rar3/decompressor.rb +0 -2
  275. data/lib/omnizip/formats/rar3/reader.rb +7 -2
  276. data/lib/omnizip/formats/rar3/writer.rb +0 -2
  277. data/lib/omnizip/formats/rar5/compressor.rb +0 -2
  278. data/lib/omnizip/formats/rar5/decompressor.rb +0 -2
  279. data/lib/omnizip/formats/rar5/reader.rb +7 -2
  280. data/lib/omnizip/formats/rar5/writer.rb +0 -2
  281. data/lib/omnizip/formats/rpm/constants.rb +0 -2
  282. data/lib/omnizip/formats/rpm/entry.rb +6 -2
  283. data/lib/omnizip/formats/rpm/header.rb +0 -2
  284. data/lib/omnizip/formats/rpm/lead.rb +0 -2
  285. data/lib/omnizip/formats/rpm/tag.rb +0 -2
  286. data/lib/omnizip/formats/rpm/writer.rb +0 -2
  287. data/lib/omnizip/formats/rpm.rb +0 -2
  288. data/lib/omnizip/formats/seven_zip/bcj2_stream_decompressor.rb +0 -2
  289. data/lib/omnizip/formats/seven_zip/coder_chain.rb +0 -2
  290. data/lib/omnizip/formats/seven_zip/constants.rb +0 -2
  291. data/lib/omnizip/formats/seven_zip/encoded_header.rb +0 -2
  292. data/lib/omnizip/formats/seven_zip/encrypted_header.rb +0 -2
  293. data/lib/omnizip/formats/seven_zip/file_collector.rb +0 -2
  294. data/lib/omnizip/formats/seven_zip/header.rb +0 -2
  295. data/lib/omnizip/formats/seven_zip/header_encryptor.rb +0 -2
  296. data/lib/omnizip/formats/seven_zip/header_writer.rb +0 -2
  297. data/lib/omnizip/formats/seven_zip/models/coder_info.rb +0 -2
  298. data/lib/omnizip/formats/seven_zip/models/file_entry.rb +7 -2
  299. data/lib/omnizip/formats/seven_zip/models/folder.rb +0 -2
  300. data/lib/omnizip/formats/seven_zip/models/stream_info.rb +0 -2
  301. data/lib/omnizip/formats/seven_zip/models.rb +0 -2
  302. data/lib/omnizip/formats/seven_zip/parser.rb +0 -2
  303. data/lib/omnizip/formats/seven_zip/reader.rb +0 -2
  304. data/lib/omnizip/formats/seven_zip/split_archive_reader.rb +0 -2
  305. data/lib/omnizip/formats/seven_zip/split_archive_writer.rb +0 -2
  306. data/lib/omnizip/formats/seven_zip/stream_compressor.rb +0 -2
  307. data/lib/omnizip/formats/seven_zip/stream_decompressor.rb +0 -2
  308. data/lib/omnizip/formats/seven_zip/writer.rb +0 -2
  309. data/lib/omnizip/formats/seven_zip.rb +0 -8
  310. data/lib/omnizip/formats/tar/constants.rb +0 -2
  311. data/lib/omnizip/formats/tar/entry.rb +6 -2
  312. data/lib/omnizip/formats/tar/header.rb +0 -2
  313. data/lib/omnizip/formats/tar/reader.rb +0 -2
  314. data/lib/omnizip/formats/tar/writer.rb +0 -2
  315. data/lib/omnizip/formats/tar.rb +0 -8
  316. data/lib/omnizip/formats/xar/constants.rb +0 -2
  317. data/lib/omnizip/formats/xar/entry.rb +6 -2
  318. data/lib/omnizip/formats/xar/header.rb +0 -2
  319. data/lib/omnizip/formats/xar/reader.rb +0 -2
  320. data/lib/omnizip/formats/xar/toc.rb +0 -2
  321. data/lib/omnizip/formats/xar/writer.rb +0 -2
  322. data/lib/omnizip/formats/xar.rb +0 -8
  323. data/lib/omnizip/formats/xz/reader.rb +0 -2
  324. data/lib/omnizip/formats/xz/writer.rb +0 -2
  325. data/lib/omnizip/formats/xz.rb +0 -2
  326. data/lib/omnizip/formats/xz_const.rb +0 -2
  327. data/lib/omnizip/formats/xz_impl/block_decoder.rb +0 -2
  328. data/lib/omnizip/formats/xz_impl/block_encoder.rb +0 -2
  329. data/lib/omnizip/formats/xz_impl/block_header.rb +0 -2
  330. data/lib/omnizip/formats/xz_impl/block_header_parser.rb +0 -2
  331. data/lib/omnizip/formats/xz_impl/index_decoder.rb +0 -2
  332. data/lib/omnizip/formats/xz_impl/index_encoder.rb +0 -2
  333. data/lib/omnizip/formats/xz_impl/stream_decoder.rb +0 -2
  334. data/lib/omnizip/formats/xz_impl/stream_encoder.rb +0 -2
  335. data/lib/omnizip/formats/xz_impl/stream_footer.rb +0 -2
  336. data/lib/omnizip/formats/xz_impl/stream_footer_parser.rb +0 -2
  337. data/lib/omnizip/formats/xz_impl/stream_header.rb +0 -2
  338. data/lib/omnizip/formats/xz_impl/stream_header_parser.rb +0 -2
  339. data/lib/omnizip/formats/xz_impl/vli.rb +0 -2
  340. data/lib/omnizip/formats/xz_impl.rb +0 -2
  341. data/lib/omnizip/formats/zip/central_directory_header.rb +0 -2
  342. data/lib/omnizip/formats/zip/constants.rb +0 -2
  343. data/lib/omnizip/formats/zip/end_of_central_directory.rb +0 -2
  344. data/lib/omnizip/formats/zip/local_file_header.rb +0 -2
  345. data/lib/omnizip/formats/zip/reader.rb +0 -2
  346. data/lib/omnizip/formats/zip/unix_extra_field.rb +0 -2
  347. data/lib/omnizip/formats/zip/writer.rb +0 -2
  348. data/lib/omnizip/formats/zip/zip64_end_of_central_directory.rb +0 -2
  349. data/lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb +0 -2
  350. data/lib/omnizip/formats/zip/zip64_extra_field.rb +0 -2
  351. data/lib/omnizip/formats/zip.rb +0 -8
  352. data/lib/omnizip/formats.rb +0 -2
  353. data/lib/omnizip/implementations/base/lzma2_decoder_base.rb +0 -2
  354. data/lib/omnizip/implementations/base/lzma2_encoder_base.rb +0 -2
  355. data/lib/omnizip/implementations/base/lzma_decoder_base.rb +0 -2
  356. data/lib/omnizip/implementations/base/lzma_encoder_base.rb +0 -2
  357. data/lib/omnizip/implementations/base/state_machine_base.rb +0 -2
  358. data/lib/omnizip/implementations/base.rb +0 -2
  359. data/lib/omnizip/implementations/seven_zip/lzma/decoder.rb +0 -2
  360. data/lib/omnizip/implementations/seven_zip/lzma/encoder.rb +0 -2
  361. data/lib/omnizip/implementations/seven_zip/lzma/match_finder.rb +0 -2
  362. data/lib/omnizip/implementations/seven_zip/lzma/range_decoder.rb +0 -2
  363. data/lib/omnizip/implementations/seven_zip/lzma/range_encoder.rb +0 -2
  364. data/lib/omnizip/implementations/seven_zip/lzma/state_machine.rb +0 -2
  365. data/lib/omnizip/implementations/seven_zip/lzma.rb +0 -2
  366. data/lib/omnizip/implementations/seven_zip/lzma2/encoder.rb +0 -2
  367. data/lib/omnizip/implementations/seven_zip/lzma2.rb +0 -2
  368. data/lib/omnizip/implementations/seven_zip.rb +0 -2
  369. data/lib/omnizip/implementations/xz_utils/lzma2/decoder.rb +0 -2
  370. data/lib/omnizip/implementations/xz_utils/lzma2/encoder.rb +0 -2
  371. data/lib/omnizip/implementations/xz_utils/lzma2.rb +0 -2
  372. data/lib/omnizip/implementations/xz_utils.rb +0 -2
  373. data/lib/omnizip/implementations.rb +18 -6
  374. data/lib/omnizip/io/buffered_input.rb +0 -2
  375. data/lib/omnizip/io/buffered_output.rb +0 -2
  376. data/lib/omnizip/io/source.rb +0 -2
  377. data/lib/omnizip/io/stream_manager.rb +0 -2
  378. data/lib/omnizip/io.rb +0 -2
  379. data/lib/omnizip/link_handler/hard_link.rb +0 -2
  380. data/lib/omnizip/link_handler/symbolic_link.rb +0 -2
  381. data/lib/omnizip/link_handler.rb +0 -2
  382. data/lib/omnizip/metadata/archive_metadata.rb +0 -2
  383. data/lib/omnizip/metadata/entry_metadata.rb +7 -2
  384. data/lib/omnizip/metadata/metadata_editor.rb +0 -2
  385. data/lib/omnizip/metadata/metadata_registry.rb +0 -2
  386. data/lib/omnizip/metadata/metadata_validator.rb +0 -2
  387. data/lib/omnizip/metadata.rb +0 -2
  388. data/lib/omnizip/models/algorithm_metadata.rb +0 -2
  389. data/lib/omnizip/models/compression_options.rb +0 -2
  390. data/lib/omnizip/models/conversion_options.rb +0 -2
  391. data/lib/omnizip/models/conversion_result.rb +0 -2
  392. data/lib/omnizip/models/eta_result.rb +0 -2
  393. data/lib/omnizip/models/extraction_rule.rb +0 -2
  394. data/lib/omnizip/models/filter_chain.rb +0 -2
  395. data/lib/omnizip/models/filter_config.rb +0 -2
  396. data/lib/omnizip/models/match_result.rb +0 -2
  397. data/lib/omnizip/models/optimization_suggestion.rb +0 -2
  398. data/lib/omnizip/models/parallel_options.rb +0 -2
  399. data/lib/omnizip/models/performance_result.rb +0 -2
  400. data/lib/omnizip/models/profile_report.rb +0 -2
  401. data/lib/omnizip/models/progress_options.rb +0 -2
  402. data/lib/omnizip/models/split_options.rb +0 -2
  403. data/lib/omnizip/optimization_registry.rb +0 -2
  404. data/lib/omnizip/parallel/engine.rb +48 -0
  405. data/lib/omnizip/parallel/job_queue.rb +0 -2
  406. data/lib/omnizip/parallel/job_scheduler.rb +0 -2
  407. data/lib/omnizip/parallel/parallel_compressor.rb +5 -18
  408. data/lib/omnizip/parallel/parallel_extractor.rb +5 -18
  409. data/lib/omnizip/parallel/worker_pool.rb +0 -2
  410. data/lib/omnizip/parallel.rb +1 -2
  411. data/lib/omnizip/parity/chunked_block_processor.rb +0 -2
  412. data/lib/omnizip/parity/galois16.rb +0 -2
  413. data/lib/omnizip/parity/models/creator_packet.rb +0 -2
  414. data/lib/omnizip/parity/models/file_description_packet.rb +0 -2
  415. data/lib/omnizip/parity/models/ifsc_packet.rb +0 -2
  416. data/lib/omnizip/parity/models/main_packet.rb +0 -2
  417. data/lib/omnizip/parity/models/packet.rb +0 -2
  418. data/lib/omnizip/parity/models/packet_registry.rb +0 -2
  419. data/lib/omnizip/parity/models/recovery_slice_packet.rb +0 -2
  420. data/lib/omnizip/parity/models.rb +0 -2
  421. data/lib/omnizip/parity/par2_creator.rb +0 -2
  422. data/lib/omnizip/parity/par2_repairer.rb +0 -2
  423. data/lib/omnizip/parity/par2_verifier.rb +0 -2
  424. data/lib/omnizip/parity/par2cmdline_algorithm.rb +0 -2
  425. data/lib/omnizip/parity/par2cmdline_coefficients.rb +0 -2
  426. data/lib/omnizip/parity/reed_solomon_decoder.rb +0 -2
  427. data/lib/omnizip/parity/reed_solomon_encoder.rb +0 -2
  428. data/lib/omnizip/parity/reed_solomon_matrix.rb +0 -2
  429. data/lib/omnizip/parity.rb +0 -2
  430. data/lib/omnizip/password/encryption_registry.rb +0 -2
  431. data/lib/omnizip/password/encryption_strategy.rb +0 -2
  432. data/lib/omnizip/password/password_validator.rb +0 -2
  433. data/lib/omnizip/password/winzip_aes_strategy.rb +0 -2
  434. data/lib/omnizip/password/zip_crypto_strategy.rb +0 -2
  435. data/lib/omnizip/password.rb +0 -2
  436. data/lib/omnizip/pipe/stream_compressor.rb +0 -2
  437. data/lib/omnizip/pipe/stream_decompressor.rb +0 -2
  438. data/lib/omnizip/pipe.rb +0 -2
  439. data/lib/omnizip/platform/ntfs_streams.rb +0 -2
  440. data/lib/omnizip/platform.rb +0 -2
  441. data/lib/omnizip/profile/archive_profile.rb +0 -2
  442. data/lib/omnizip/profile/balanced_profile.rb +0 -2
  443. data/lib/omnizip/profile/binary_profile.rb +0 -2
  444. data/lib/omnizip/profile/compression_profile.rb +0 -2
  445. data/lib/omnizip/profile/custom_profile.rb +0 -2
  446. data/lib/omnizip/profile/fast_profile.rb +0 -2
  447. data/lib/omnizip/profile/maximum_profile.rb +0 -2
  448. data/lib/omnizip/profile/profile_detector.rb +0 -2
  449. data/lib/omnizip/profile/profile_registry.rb +0 -2
  450. data/lib/omnizip/profile/text_profile.rb +0 -2
  451. data/lib/omnizip/profile.rb +0 -2
  452. data/lib/omnizip/profiler/memory_profiler.rb +0 -2
  453. data/lib/omnizip/profiler/method_profiler.rb +0 -2
  454. data/lib/omnizip/profiler/report_generator.rb +0 -2
  455. data/lib/omnizip/profiler.rb +0 -2
  456. data/lib/omnizip/progress/callback_reporter.rb +0 -2
  457. data/lib/omnizip/progress/console_reporter.rb +0 -2
  458. data/lib/omnizip/progress/log_reporter.rb +0 -2
  459. data/lib/omnizip/progress/operation_progress.rb +0 -2
  460. data/lib/omnizip/progress/progress_bar.rb +0 -2
  461. data/lib/omnizip/progress/progress_reporter.rb +0 -2
  462. data/lib/omnizip/progress/progress_tracker.rb +0 -2
  463. data/lib/omnizip/progress/silent_reporter.rb +0 -2
  464. data/lib/omnizip/progress.rb +0 -2
  465. data/lib/omnizip/registry.rb +0 -3
  466. data/lib/omnizip/rubyzip_compat.rb +0 -4
  467. data/lib/omnizip/temp/safe_extract.rb +0 -2
  468. data/lib/omnizip/temp/temp_file.rb +0 -2
  469. data/lib/omnizip/temp/temp_file_pool.rb +0 -2
  470. data/lib/omnizip/temp.rb +0 -2
  471. data/lib/omnizip/version.rb +1 -1
  472. data/lib/omnizip/zip/entry.rb +7 -2
  473. data/lib/omnizip/zip/file.rb +0 -2
  474. data/lib/omnizip/zip/input_stream.rb +0 -2
  475. data/lib/omnizip/zip/output_stream.rb +0 -2
  476. data/lib/omnizip/zip.rb +0 -2
  477. data/lib/omnizip.rb +2 -2
  478. metadata +4 -6
  479. data/lib/omnizip/filters/filter_base.rb +0 -8
  480. data/lib/omnizip/filters/registration.rb +0 -24
  481. data/lib/omnizip/filters/registry.rb +0 -113
  482. data/lib/omnizip/format_registry.rb +0 -102
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  # Copyright (C) 2025 Ribose Inc.
6
4
  #
7
5
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  # Copyright (C) 2025 Ribose Inc.
6
4
  #
7
5
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  # Copyright (C) 2025 Ribose Inc.
6
4
  #
7
5
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Implementations
7
5
  # Base classes for implementation inheritance
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  # Copyright (C) 2025 Ribose Inc.
6
4
  #
7
5
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  # Copyright (C) 2025 Ribose Inc.
6
4
  #
7
5
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  # Copyright (C) 2025 Ribose Inc.
6
4
  #
7
5
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  # Copyright (C) 2025 Ribose Inc.
6
4
  #
7
5
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  # Copyright (C) 2025 Ribose Inc.
6
4
  #
7
5
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  # Copyright (C) 2025 Ribose Inc.
6
4
  #
7
5
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Implementations
7
5
  module SevenZip
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  # Copyright (C) 2025 Ribose Inc.
6
4
  #
7
5
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Implementations
7
5
  module SevenZip
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Implementations
7
5
  # 7-Zip SDK reference implementations
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  # Copyright (C) 2025 Ribose Inc.
6
4
  #
7
5
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  # Copyright (C) 2025 Ribose Inc.
6
4
  #
7
5
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Implementations
7
5
  module XZUtils
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Implementations
7
5
  # XZ Utils reference implementations
@@ -1,13 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
4
+ # Bit-level SDK ports: state machines, range coders, match finders,
5
+ # raw LZMA/LZMA2 encoders and decoders.
6
+ #
7
+ # This namespace owns the *primitives*; +Omnizip::Algorithms+ owns
8
+ # the *streaming contract*. The boundary is: +Algorithms+ calls
9
+ # +Implementations+, never the reverse. Files under this tree
10
+ # should never reach across into format-specific concerns (no
11
+ # .7z header parsing, no ZIP central directory, no tar entry
12
+ # metadata).
13
+ #
14
+ # The two top-level sub-namespaces mirror the upstream SDK split:
15
+ # - +SevenZip+ : ports of 7-Zip's LZMA/LZMA2 encoder + decoder
16
+ # - +XZUtils+ : ports of XZ Utils' LZMA/LZMA2 encoder + decoder
17
+ #
18
+ # Despite the LZMA name, the two SDKs diverge in subtle ways (no
19
+ # EOS marker, different chunk padding, different property-byte
20
+ # handling); keeping them in separate trees makes those
21
+ # divergences visible rather than hidden in flag parameters.
6
22
  module Implementations
7
- # Implementation namespace for various algorithm ports
8
- # This module contains reference implementations ported from external projects
9
-
10
- # Base classes for implementation inheritance
11
23
  autoload :Base, "omnizip/implementations/base"
12
24
  end
13
25
  end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  #
6
4
  # Copyright (C) 2024 Ribose Inc.
7
5
  #
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  #
6
4
  # Copyright (C) 2024 Ribose Inc.
7
5
  #
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module IO
7
5
  # Polymorphic adapter for "things we can read bytes from".
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  #
6
4
  # Copyright (C) 2024 Ribose Inc.
7
5
  #
data/lib/omnizip/io.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  # I/O utilities module
7
5
  #
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module LinkHandler
7
5
  # Model for hard links
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module LinkHandler
7
5
  # Model for symbolic links
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  # Handles symbolic and hard link operations with platform detection
7
5
  module LinkHandler
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Metadata
7
5
  # Model for archive-level metadata
@@ -1,14 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Metadata
7
5
  # Model for file entry metadata
8
6
  # Wraps CentralDirectoryHeader with a cleaner metadata API
9
7
  class EntryMetadata
8
+ include Omnizip::Entry
9
+
10
10
  attr_reader :entry
11
11
 
12
+ def entry_name = entry.name
13
+ def entry_directory? = entry.directory?
14
+ def entry_size = entry.size
15
+ def entry_mtime = entry.time
16
+
12
17
  # Initialize metadata for an entry
13
18
  # @param entry [Omnizip::Zip::Entry] The entry to manage metadata for
14
19
  def initialize(entry)
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Metadata
7
5
  # Coordinates metadata editing operations
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Metadata
7
5
  # Registry of supported metadata per archive format
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Metadata
7
5
  # Validates metadata changes before applying
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  # Metadata editing module
7
5
  # Provides in-place metadata modification without recompression
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  require "lutaml/model"
6
4
 
7
5
  module Omnizip
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  require "lutaml/model"
6
4
  require "json"
7
5
 
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Models
7
5
  # Options for converting between archive formats.
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Models
7
5
  # Model for format conversion results
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  #
6
4
  # Copyright (C) 2025 Ribose Inc.
7
5
  #
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Models
7
5
  # Represents a rule for extracting files from an archive
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  #
6
4
  # Copyright (C) 2025 Ribose Inc.
7
5
  #
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  #
6
4
  # Copyright (C) 2025 Ribose Inc.
7
5
  #
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Models
7
5
  # Represents the result of pattern matching against archive entries
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Models
7
5
  # Represents a performance optimization suggestion based on profiling data
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Models
7
5
  # Model for parallel processing configuration
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Models
7
5
  # Represents the performance characteristics of a profiled operation
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Models
7
5
  # Represents an aggregated profiling report with hot path analysis
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  #
6
4
  # Copyright (C) 2025 Ribose Inc.
7
5
  #
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Models
7
5
  # Configuration for split archive (multi-volume) creation
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  class OptimizationRegistry < Omnizip::Registry
7
5
  class << self
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "fractor"
4
+
5
+ module Omnizip
6
+ module Parallel
7
+ # Engine owns the Fractor worker-pool dance: build the pool, submit
8
+ # a batch of work, run it to completion, return successful and
9
+ # failed results. Callers (ParallelCompressor, ParallelExtractor,
10
+ # future operations) supply the worker class and the work items;
11
+ # Engine handles the threading.
12
+ #
13
+ # This is the deep module behind the parallel API: the threading
14
+ # shape is identical across every consumer, so it lives here once.
15
+ # Domain-specific concerns (which file to read, which archive to
16
+ # open, what stats to track) stay with the caller.
17
+ class Engine
18
+ # @param worker_class [Class] a +Fractor::Worker+ subclass whose
19
+ # +#process(work)+ turns one work item into a result.
20
+ # @param threads [Integer] worker count.
21
+ def initialize(worker_class:, threads:)
22
+ @worker_class = worker_class
23
+ @threads = threads
24
+ end
25
+
26
+ # Run +work_items+ through the pool and yield each successful
27
+ # +Fractor::WorkResult+ to the caller-supplied block.
28
+ #
29
+ # @param work_items [Array<Fractor::Work>] batch to submit.
30
+ # @yieldparam result [Fractor::WorkResult] a successful result.
31
+ # @return [Array<Fractor::WorkResult>] the failed results, for
32
+ # the caller to decide how to surface.
33
+ def run(work_items)
34
+ pool = Fractor::WorkerPool.new(
35
+ worker_class: @worker_class,
36
+ num_workers: @threads,
37
+ continuous: false,
38
+ )
39
+ pool.start
40
+ pool.submit_batch(work_items)
41
+ pool.run
42
+
43
+ pool.successful_results.each { |r| yield r if block_given? }
44
+ pool.failed_results
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Parallel
7
5
  # Thread-safe job queue for parallel compression/extraction
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Parallel
7
5
  # Job scheduler for load balancing and work distribution
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  require "fractor"
6
4
  require "fileutils"
7
5
 
@@ -214,20 +212,11 @@ level: 6)
214
212
  )
215
213
  end
216
214
 
217
- # Create worker pool
218
- pool = WorkerPool.new(
219
- worker_class: CompressionWorker,
220
- num_workers: @options.threads,
221
- continuous: false,
222
- )
223
-
224
- pool.start
225
- pool.submit_batch(work_items)
226
- pool.run
227
-
228
- # Collect results
229
- results = pool.successful_results
230
- errors = pool.failed_results
215
+ # Run the worker pool through the shared engine.
216
+ engine = Engine.new(worker_class: CompressionWorker,
217
+ threads: @options.threads)
218
+ results = []
219
+ errors = engine.run(work_items) { |r| results << r }
231
220
 
232
221
  # Handle errors
233
222
  unless errors.empty?
@@ -240,8 +229,6 @@ level: 6)
240
229
  # Write archive sequentially (thread-safe)
241
230
  write_archive(output, results, compression: compression)
242
231
 
243
- pool.shutdown
244
-
245
232
  @stats[:end_time] = Time.now
246
233
  @stats[:files_processed] = results.size
247
234
 
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  require "fractor"
6
4
  require "fileutils"
7
5
 
@@ -203,20 +201,11 @@ module Omnizip
203
201
  )
204
202
  end
205
203
 
206
- # Create worker pool
207
- pool = WorkerPool.new(
208
- worker_class: ExtractionWorker,
209
- num_workers: @options.threads,
210
- continuous: false,
211
- )
212
-
213
- pool.start
214
- pool.submit_batch(work_items)
215
- pool.run
216
-
217
- # Collect results
218
- results = pool.successful_results
219
- errors = pool.failed_results
204
+ # Run the worker pool through the shared engine.
205
+ engine = Engine.new(worker_class: ExtractionWorker,
206
+ threads: @options.threads)
207
+ results = []
208
+ errors = engine.run(work_items) { |r| results << r }
220
209
 
221
210
  # Handle errors
222
211
  unless errors.empty?
@@ -229,8 +218,6 @@ module Omnizip
229
218
  # Write files to disk (thread-safe)
230
219
  extracted_paths = write_extracted_files(results, overwrite: overwrite)
231
220
 
232
- pool.shutdown
233
-
234
221
  @stats[:end_time] = Time.now
235
222
  @stats[:files_extracted] = results.size
236
223
 
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  require "fractor"
6
4
 
7
5
  module Omnizip
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  # Parallel processing module for multi-threaded compression/extraction
7
5
  #
@@ -28,6 +26,7 @@ module Omnizip
28
26
  autoload :JobQueue, "omnizip/parallel/job_queue"
29
27
  autoload :JobScheduler, "omnizip/parallel/job_scheduler"
30
28
  autoload :WorkerPool, "omnizip/parallel/worker_pool"
29
+ autoload :Engine, "omnizip/parallel/engine"
31
30
  autoload :ParallelCompressor, "omnizip/parallel/parallel_compressor"
32
31
  autoload :ParallelExtractor, "omnizip/parallel/parallel_extractor"
33
32