omnizip 0.3.13 → 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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/lib/omnizip/algorithm.rb +36 -1
  3. data/lib/omnizip/algorithms/bzip2.rb +1 -3
  4. data/lib/omnizip/algorithms/deflate.rb +1 -3
  5. data/lib/omnizip/algorithms/deflate64.rb +2 -2
  6. data/lib/omnizip/algorithms/lzma.rb +1 -1
  7. data/lib/omnizip/algorithms/lzma2.rb +4 -12
  8. data/lib/omnizip/algorithms/zstandard.rb +1 -3
  9. data/lib/omnizip/algorithms.rb +14 -1
  10. data/lib/omnizip/commands/archive_list_command.rb +9 -7
  11. data/lib/omnizip/entry.rb +44 -0
  12. data/lib/omnizip/extraction/selective_extractor.rb +2 -10
  13. data/lib/omnizip/filter_pipeline.rb +1 -1
  14. data/lib/omnizip/filter_registry.rb +18 -16
  15. data/lib/omnizip/filters/bcj2.rb +1 -1
  16. data/lib/omnizip/filters/bcj_arm.rb +1 -1
  17. data/lib/omnizip/filters/bcj_arm64.rb +1 -1
  18. data/lib/omnizip/filters/bcj_ia64.rb +1 -1
  19. data/lib/omnizip/filters/bcj_ppc.rb +1 -1
  20. data/lib/omnizip/filters/bcj_sparc.rb +1 -1
  21. data/lib/omnizip/filters/bcj_x86.rb +1 -1
  22. data/lib/omnizip/filters.rb +0 -2
  23. data/lib/omnizip/formats/bzip2_file.rb +0 -7
  24. data/lib/omnizip/formats/cpio/entry.rb +6 -0
  25. data/lib/omnizip/formats/cpio.rb +0 -6
  26. data/lib/omnizip/formats/gzip.rb +0 -7
  27. data/lib/omnizip/formats/iso/directory_record.rb +7 -0
  28. data/lib/omnizip/formats/iso.rb +0 -5
  29. data/lib/omnizip/formats/lzip.rb +0 -7
  30. data/lib/omnizip/formats/lzma_alone.rb +0 -6
  31. data/lib/omnizip/formats/msi/entry.rb +6 -0
  32. data/lib/omnizip/formats/msi.rb +0 -9
  33. data/lib/omnizip/formats/ole/dirent.rb +6 -0
  34. data/lib/omnizip/formats/ole.rb +0 -9
  35. data/lib/omnizip/formats/rar.rb +0 -6
  36. data/lib/omnizip/formats/rar3/reader.rb +7 -0
  37. data/lib/omnizip/formats/rar5/reader.rb +7 -0
  38. data/lib/omnizip/formats/rpm/entry.rb +6 -0
  39. data/lib/omnizip/formats/seven_zip/models/file_entry.rb +7 -0
  40. data/lib/omnizip/formats/seven_zip.rb +0 -6
  41. data/lib/omnizip/formats/tar/entry.rb +6 -0
  42. data/lib/omnizip/formats/tar.rb +0 -6
  43. data/lib/omnizip/formats/xar/entry.rb +6 -0
  44. data/lib/omnizip/formats/xar.rb +0 -6
  45. data/lib/omnizip/formats/zip.rb +0 -6
  46. data/lib/omnizip/implementations.rb +18 -4
  47. data/lib/omnizip/metadata/entry_metadata.rb +7 -0
  48. data/lib/omnizip/parallel/engine.rb +48 -0
  49. data/lib/omnizip/parallel/parallel_compressor.rb +5 -16
  50. data/lib/omnizip/parallel/parallel_extractor.rb +5 -16
  51. data/lib/omnizip/parallel.rb +1 -0
  52. data/lib/omnizip/registry.rb +0 -1
  53. data/lib/omnizip/rubyzip_compat.rb +0 -1
  54. data/lib/omnizip/version.rb +1 -1
  55. data/lib/omnizip/zip/entry.rb +7 -0
  56. data/lib/omnizip.rb +1 -1
  57. metadata +4 -6
  58. data/lib/omnizip/filters/filter_base.rb +0 -6
  59. data/lib/omnizip/filters/registration.rb +0 -22
  60. data/lib/omnizip/filters/registry.rb +0 -111
  61. data/lib/omnizip/format_registry.rb +0 -100
@@ -1,100 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Omnizip
4
- class FormatRegistry < Omnizip::Registry
5
- BUILTIN_FORMATS = {
6
- ".7z" => "Omnizip::Formats::SevenZip::Reader",
7
- ".zip" => "Omnizip::Formats::Zip",
8
- ".rar" => "Omnizip::Formats::Rar::Reader",
9
- ".tar" => "Omnizip::Formats::Tar",
10
- ".gz" => "Omnizip::Formats::Gzip",
11
- ".gzip" => "Omnizip::Formats::Gzip",
12
- ".bz2" => "Omnizip::Formats::Bzip2File",
13
- ".bzip2" => "Omnizip::Formats::Bzip2File",
14
- ".xz" => "Omnizip::Formats::Xz",
15
- ".msi" => "Omnizip::Formats::Msi",
16
- ".msp" => "Omnizip::Formats::Msi",
17
- ".cpio" => "Omnizip::Formats::Cpio::Reader",
18
- ".iso" => "Omnizip::Formats::Iso::Reader",
19
- ".xar" => "Omnizip::Formats::Xar::Reader",
20
- ".lz" => "Omnizip::Formats::Lzip",
21
- ".lzip" => "Omnizip::Formats::Lzip",
22
- ".lzma" => "Omnizip::Formats::LzmaAlone",
23
- ".ole" => "Omnizip::Formats::Ole::Storage",
24
- ".doc" => "Omnizip::Formats::Ole::Storage",
25
- ".xls" => "Omnizip::Formats::Ole::Storage",
26
- ".ppt" => "Omnizip::Formats::Ole::Storage",
27
- }.freeze
28
-
29
- class << self
30
- def label
31
- "Format"
32
- end
33
-
34
- def normalize_key(extension)
35
- ext = extension.to_s
36
- ext = ".#{ext}" unless ext.start_with?(".")
37
- ext.downcase
38
- end
39
-
40
- def get(extension)
41
- normalized = normalize_key(extension)
42
- handler = storage[normalized]
43
- return resolve_handler(handler, extension) if handler
44
-
45
- trigger = lazy_triggers[normalized]
46
- if trigger
47
- synchronize { lazy_triggers.delete(normalized) }
48
- trigger.call
49
- handler = storage[normalized]
50
- return resolve_handler(handler, extension) if handler
51
- end
52
-
53
- nil
54
- end
55
-
56
- def supported?(extension)
57
- registered?(extension) || lazy_triggers.key?(normalize_key(extension))
58
- end
59
- alias supported_formats available
60
-
61
- def resolve_constant(name)
62
- return nil unless name.is_a?(String)
63
-
64
- parts = name.split("::")
65
- parts.shift if parts.empty? || parts.first.empty?
66
-
67
- constant = Object
68
- parts.each do |n|
69
- return nil unless constant.const_defined?(n, false)
70
-
71
- constant = constant.const_get(n)
72
- end
73
- constant
74
- rescue StandardError
75
- nil
76
- end
77
-
78
- private
79
-
80
- def resolve_handler(handler, _original_extension)
81
- return nil if handler.nil?
82
- return handler if handler.is_a?(Class) || handler.is_a?(Module)
83
-
84
- resolve_constant(handler)
85
- end
86
- end
87
- end
88
- end
89
-
90
- # Lazy triggers — explicitly re-register on each miss so the entry
91
- # survives reset!. Object.const_get alone doesn't re-run the file body
92
- # once the constant is loaded.
93
- Omnizip::FormatRegistry::BUILTIN_FORMATS.each do |ext, const_path|
94
- Omnizip::FormatRegistry.register_lazy(ext) do
95
- handler = Object.const_get(const_path)
96
- # Register under the original extension; some formats (e.g. Rar)
97
- # store a string class path that needs resolve_constant on get.
98
- Omnizip::FormatRegistry.register(ext, handler)
99
- end
100
- end