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.
- checksums.yaml +4 -4
- data/lib/omnizip/algorithm.rb +36 -1
- data/lib/omnizip/algorithms/bzip2.rb +1 -3
- data/lib/omnizip/algorithms/deflate.rb +1 -3
- data/lib/omnizip/algorithms/deflate64.rb +2 -2
- data/lib/omnizip/algorithms/lzma.rb +1 -1
- data/lib/omnizip/algorithms/lzma2.rb +4 -12
- data/lib/omnizip/algorithms/zstandard.rb +1 -3
- data/lib/omnizip/algorithms.rb +14 -1
- data/lib/omnizip/commands/archive_list_command.rb +9 -7
- data/lib/omnizip/entry.rb +44 -0
- data/lib/omnizip/extraction/selective_extractor.rb +2 -10
- data/lib/omnizip/filter_pipeline.rb +1 -1
- data/lib/omnizip/filter_registry.rb +18 -16
- data/lib/omnizip/filters/bcj2.rb +1 -1
- data/lib/omnizip/filters/bcj_arm.rb +1 -1
- data/lib/omnizip/filters/bcj_arm64.rb +1 -1
- data/lib/omnizip/filters/bcj_ia64.rb +1 -1
- data/lib/omnizip/filters/bcj_ppc.rb +1 -1
- data/lib/omnizip/filters/bcj_sparc.rb +1 -1
- data/lib/omnizip/filters/bcj_x86.rb +1 -1
- data/lib/omnizip/filters.rb +0 -2
- data/lib/omnizip/formats/bzip2_file.rb +0 -7
- data/lib/omnizip/formats/cpio/entry.rb +6 -0
- data/lib/omnizip/formats/cpio.rb +0 -6
- data/lib/omnizip/formats/gzip.rb +0 -7
- data/lib/omnizip/formats/iso/directory_record.rb +7 -0
- data/lib/omnizip/formats/iso.rb +0 -5
- data/lib/omnizip/formats/lzip.rb +0 -7
- data/lib/omnizip/formats/lzma_alone.rb +0 -6
- data/lib/omnizip/formats/msi/entry.rb +6 -0
- data/lib/omnizip/formats/msi.rb +0 -9
- data/lib/omnizip/formats/ole/dirent.rb +6 -0
- data/lib/omnizip/formats/ole.rb +0 -9
- data/lib/omnizip/formats/rar.rb +0 -6
- data/lib/omnizip/formats/rar3/reader.rb +7 -0
- data/lib/omnizip/formats/rar5/reader.rb +7 -0
- data/lib/omnizip/formats/rpm/entry.rb +6 -0
- data/lib/omnizip/formats/seven_zip/models/file_entry.rb +7 -0
- data/lib/omnizip/formats/seven_zip.rb +0 -6
- data/lib/omnizip/formats/tar/entry.rb +6 -0
- data/lib/omnizip/formats/tar.rb +0 -6
- data/lib/omnizip/formats/xar/entry.rb +6 -0
- data/lib/omnizip/formats/xar.rb +0 -6
- data/lib/omnizip/formats/zip.rb +0 -6
- data/lib/omnizip/implementations.rb +18 -4
- data/lib/omnizip/metadata/entry_metadata.rb +7 -0
- data/lib/omnizip/parallel/engine.rb +48 -0
- data/lib/omnizip/parallel/parallel_compressor.rb +5 -16
- data/lib/omnizip/parallel/parallel_extractor.rb +5 -16
- data/lib/omnizip/parallel.rb +1 -0
- data/lib/omnizip/registry.rb +0 -1
- data/lib/omnizip/rubyzip_compat.rb +0 -1
- data/lib/omnizip/version.rb +1 -1
- data/lib/omnizip/zip/entry.rb +7 -0
- data/lib/omnizip.rb +1 -1
- metadata +4 -6
- data/lib/omnizip/filters/filter_base.rb +0 -6
- data/lib/omnizip/filters/registration.rb +0 -22
- data/lib/omnizip/filters/registry.rb +0 -111
- 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
|