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
  module Omnizip
6
4
  module Commands
7
5
  # Archive repair command
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Commands
7
5
  # Archive verification command
@@ -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
  #
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 Commands
7
5
  # Metadata command implementation
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Commands
7
5
  # Command to create PAR2 parity files
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Commands
7
5
  # Command to repair files using PAR2
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Commands
7
5
  # Command to verify files using PAR2
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Commands
7
5
  # Command to list available compression profiles
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Commands
7
5
  # Command to show details of a specific compression profile
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  # CLI command implementations
7
5
  module Commands
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  # Convenience methods for common archive operations.
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 Converter
7
5
  # Registry for conversion strategies
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Converter
7
5
  # Base class for archive format conversion strategies
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Converter
7
5
  # Convert 7-Zip archives to ZIP format
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Converter
7
5
  # Convert ZIP archives to 7-Zip format
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  # Archive format conversion module
7
5
  # Provides conversion between different archive formats
@@ -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
  require "openssl"
@@ -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
  module Omnizip
@@ -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
  require "digest/sha2"
@@ -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
  # Cryptographic utilities module
7
5
  #
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omnizip
4
+ # Mix-in that establishes the common contract every archive entry
5
+ # satisfies, regardless of format.
6
+ #
7
+ # Each format-specific entry class (Zip::Entry, Tar::Entry,
8
+ # SevenZip::Models::FileEntry, Iso::DirectoryRecord, Ole::Dirent,
9
+ # Xar::Entry, Rpm::Entry, Msi::Entry, Cpio::Entry, Rar3::Entry,
10
+ # Rar5::Entry, Xz::Entry, Metadata::EntryMetadata) includes this
11
+ # module so callers can rely on a single narrow interface instead
12
+ # of duck-typing through `respond_to?(:name) / :path / :filename`
13
+ # cascades.
14
+ #
15
+ # Including classes MUST override the four methods below. The
16
+ # defaults raise `NotImplementedError` to surface missing
17
+ # implementations at call time rather than at include time.
18
+ module Entry
19
+ # @return [String, nil] in-archive path, or nil if the entry has
20
+ # no name (e.g. empty anti-entry)
21
+ def entry_name
22
+ raise NotImplementedError,
23
+ "#{self.class} must implement #entry_name"
24
+ end
25
+
26
+ # @return [Boolean] true if the entry is a directory
27
+ def entry_directory?
28
+ raise NotImplementedError,
29
+ "#{self.class} must implement #entry_directory?"
30
+ end
31
+
32
+ # @return [Integer, nil] uncompressed size in bytes
33
+ def entry_size
34
+ raise NotImplementedError,
35
+ "#{self.class} must implement #entry_size"
36
+ end
37
+
38
+ # @return [Time, nil] modification time
39
+ def entry_mtime
40
+ raise NotImplementedError,
41
+ "#{self.class} must implement #entry_mtime"
42
+ end
43
+ end
44
+ end
data/lib/omnizip/error.rb CHANGED
@@ -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
  module Omnizip
@@ -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
  #
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
  #
6
4
  # Copyright (C) 2025 Ribose Inc.
7
5
  #
data/lib/omnizip/eta.rb CHANGED
@@ -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 Extraction
7
5
  # Combines multiple pattern matchers with AND/OR logic
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Extraction
7
5
  # Implements glob pattern matching for file paths
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Extraction
7
5
  # Coordinates pattern matching across different pattern types
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Extraction
7
5
  # Implements custom predicate pattern matching for 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 Extraction
7
5
  # Implements regex pattern matching for file paths
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  module Extraction
7
5
  # Coordinates selective extraction from archives
@@ -186,18 +184,10 @@ module Omnizip
186
184
 
187
185
  # Get filename from entry
188
186
  #
189
- # @param entry [Object] Entry
187
+ # @param entry [#entry_name] Entry (Omnizip::Entry or compatible)
190
188
  # @return [String] Filename
191
189
  def entry_filename(entry)
192
- if entry.respond_to?(:name)
193
- entry.name
194
- elsif entry.respond_to?(:path)
195
- entry.path
196
- elsif entry.respond_to?(:filename)
197
- entry.filename
198
- else
199
- entry.to_s
200
- end
190
+ entry.entry_name || entry.to_s
201
191
  end
202
192
 
203
193
  # Update progress tracker
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  # Provides selective extraction capabilities for archives
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 FileType
7
5
  # Centralized MIME type classification for file type detection
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  require "marcel"
6
4
 
7
5
  module Omnizip
@@ -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) 2024 Ribose Inc.
7
5
  #
@@ -38,7 +36,7 @@ module Omnizip
38
36
  # Filters are applied in the order they are added during encoding,
39
37
  # and in reverse order during decoding.
40
38
  #
41
- # @param filter [Filters::FilterBase] Filter instance to add
39
+ # @param filter [Omnizip::Filter] Filter instance to add
42
40
  # @return [self] For method chaining
43
41
  def add_filter(filter)
44
42
  @filters << filter
@@ -1,21 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- require "omnizip"
5
3
  module Omnizip
6
4
  class FilterRegistry < Omnizip::Registry
7
5
  DEFAULT_FORMATS = %i[xz seven_zip].freeze
8
6
 
7
+ # Single source of truth for builtin filters. Each entry binds the
8
+ # filter name to its class and the formats that support it.
9
9
  BUILTIN_FILTERS = {
10
- "bcj-x86": "Omnizip::Filters::BcjX86",
11
- "bcj-arm": "Omnizip::Filters::BcjArm",
12
- "bcj-arm64": "Omnizip::Filters::BcjArm64",
13
- "bcj-ia64": "Omnizip::Filters::BcjIa64",
14
- "bcj-ppc": "Omnizip::Filters::BcjPpc",
15
- "bcj-sparc": "Omnizip::Filters::BcjSparc",
16
- bcj: "Omnizip::Filters::BCJ",
17
- bcj2: "Omnizip::Filters::Bcj2",
18
- delta: "Omnizip::Filters::Delta",
10
+ "bcj-x86": { const: "Omnizip::Filters::BcjX86", formats: %i[xz seven_zip] },
11
+ "bcj-arm": { const: "Omnizip::Filters::BcjArm", formats: %i[xz seven_zip] },
12
+ "bcj-arm64": { const: "Omnizip::Filters::BcjArm64", formats: [:seven_zip] },
13
+ "bcj-ia64": { const: "Omnizip::Filters::BcjIa64", formats: %i[xz seven_zip] },
14
+ "bcj-ppc": { const: "Omnizip::Filters::BcjPpc", formats: %i[xz seven_zip] },
15
+ "bcj-sparc": { const: "Omnizip::Filters::BcjSparc", formats: %i[xz seven_zip] },
16
+ bcj: { const: "Omnizip::Filters::BCJ", formats: [:seven_zip] },
17
+ bcj2: { const: "Omnizip::Filters::Bcj2", formats: [:seven_zip] },
18
+ delta: { const: "Omnizip::Filters::Delta", formats: %i[xz seven_zip] },
19
19
  }.freeze
20
20
 
21
21
  class << self
@@ -88,7 +88,6 @@ module Omnizip
88
88
 
89
89
  trigger = lazy_triggers[normalized]
90
90
  if trigger
91
- synchronize { lazy_triggers.delete(normalized) }
92
91
  trigger.call
93
92
  entry = storage[normalized]
94
93
  return entry if entry
@@ -100,12 +99,13 @@ module Omnizip
100
99
  end
101
100
  end
102
101
 
103
- # Lazy triggers — calling the Filters::Registry.register_all re-runs
104
- # the registration of every builtin filter. Idempotent: register just
105
- # overwrites the storage entry. Survives reset! because the trigger
106
- # proc is held by FilterRegistry, not the storage.
107
- Omnizip::FilterRegistry::BUILTIN_FILTERS.each_key do |name|
102
+ # Lazy triggers — each trigger resolves the filter's class (firing
103
+ # autoload) and registers it with its declared formats. Idempotent:
104
+ # register overwrites the storage entry. Survives reset! because the
105
+ # trigger proc is held by FilterRegistry, not the storage.
106
+ Omnizip::FilterRegistry::BUILTIN_FILTERS.each do |name, spec|
108
107
  Omnizip::FilterRegistry.register_lazy(name) do
109
- Omnizip::Filters::Registry.register_all
108
+ klass = Object.const_get(spec[:const])
109
+ Omnizip::FilterRegistry.register(name, klass, formats: spec[:formats])
110
110
  end
111
111
  end
@@ -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) 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
  #
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
  #
6
4
  # Copyright (C) 2024 Ribose Inc.
7
5
  #
@@ -36,7 +34,7 @@ module Omnizip
36
34
  # NOTE: Currently only decoding (decompression) is implemented.
37
35
  # Encoding is extremely complex and will be added in a future version.
38
36
  # For compression use cases, the simpler BCJ-x86 filter is recommended.
39
- class Bcj2 < FilterBase
37
+ class Bcj2 < Omnizip::Filter
40
38
  # Encode is not currently supported for BCJ2.
41
39
  #
42
40
  # @param _data [String] Binary data to encode
@@ -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
  #
@@ -30,7 +28,7 @@ module Omnizip
30
28
  # The filter improves compression by making branch targets
31
29
  # position-independent. The offset in ARM BL instructions is stored
32
30
  # as word offset (divided by 4), and is relative to PC+8.
33
- class BcjArm < FilterBase
31
+ class BcjArm < Omnizip::Filter
34
32
  # ARM BL (Branch and Link) opcode
35
33
  OPCODE_BL = 0xEB
36
34
 
@@ -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
  #
@@ -29,7 +27,7 @@ module Omnizip
29
27
  #
30
28
  # The filter improves compression by making branch targets and
31
29
  # page-aligned addresses position-independent.
32
- class BcjArm64 < FilterBase
30
+ class BcjArm64 < Omnizip::Filter
33
31
  # B/BL instruction base opcode
34
32
  OPCODE_B_BL = 0x94000000
35
33
 
@@ -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
  #
@@ -29,7 +27,7 @@ module Omnizip
29
27
  #
30
28
  # The filter improves compression by making branch targets
31
29
  # position-independent.
32
- class BcjIa64 < FilterBase
30
+ class BcjIa64 < Omnizip::Filter
33
31
  # Size of IA-64 instruction bundle (16 bytes, little-endian)
34
32
  BUNDLE_SIZE = 16
35
33
 
@@ -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
  #
@@ -29,7 +27,7 @@ module Omnizip
29
27
  #
30
28
  # The filter improves compression by making branch targets
31
29
  # position-independent.
32
- class BcjPpc < FilterBase
30
+ class BcjPpc < Omnizip::Filter
33
31
  # PPC B/BL instruction base (0x48000000)
34
32
  OPCODE_BASE = 0x48000000
35
33
 
@@ -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
  #
@@ -29,7 +27,7 @@ module Omnizip
29
27
  #
30
28
  # The filter improves compression by making branch targets
31
29
  # position-independent.
32
- class BcjSparc < FilterBase
30
+ class BcjSparc < Omnizip::Filter
33
31
  # Size of SPARC instruction (4 bytes, big-endian)
34
32
  INSTRUCTION_SIZE = 4
35
33