rubyzip 2.3.1 → 3.0.0.alpha
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/Changelog.md +368 -0
- data/README.md +122 -39
- data/Rakefile +11 -7
- data/lib/zip/central_directory.rb +164 -118
- data/lib/zip/compressor.rb +3 -1
- data/lib/zip/constants.rb +25 -21
- data/lib/zip/crypto/decrypted_io.rb +3 -1
- data/lib/zip/crypto/encryption.rb +4 -2
- data/lib/zip/crypto/null_encryption.rb +5 -3
- data/lib/zip/crypto/traditional_encryption.rb +5 -3
- data/lib/zip/decompressor.rb +4 -3
- data/lib/zip/deflater.rb +10 -8
- data/lib/zip/dirtyable.rb +32 -0
- data/lib/zip/dos_time.rb +41 -5
- data/lib/zip/entry.rb +273 -170
- data/lib/zip/entry_set.rb +9 -7
- data/lib/zip/errors.rb +115 -16
- data/lib/zip/extra_field/generic.rb +3 -10
- data/lib/zip/extra_field/ntfs.rb +4 -2
- data/lib/zip/extra_field/old_unix.rb +3 -1
- data/lib/zip/extra_field/universal_time.rb +3 -1
- data/lib/zip/extra_field/unix.rb +5 -3
- data/lib/zip/extra_field/unknown.rb +33 -0
- data/lib/zip/extra_field/zip64.rb +12 -5
- data/lib/zip/extra_field.rb +15 -21
- data/lib/zip/file.rb +152 -221
- data/lib/zip/file_split.rb +97 -0
- data/lib/zip/filesystem/dir.rb +86 -0
- data/lib/zip/filesystem/directory_iterator.rb +48 -0
- data/lib/zip/filesystem/file.rb +262 -0
- data/lib/zip/filesystem/file_stat.rb +110 -0
- data/lib/zip/filesystem/zip_file_name_mapper.rb +81 -0
- data/lib/zip/filesystem.rb +26 -595
- data/lib/zip/inflater.rb +6 -4
- data/lib/zip/input_stream.rb +43 -25
- data/lib/zip/ioextras/abstract_input_stream.rb +13 -8
- data/lib/zip/ioextras/abstract_output_stream.rb +5 -3
- data/lib/zip/ioextras.rb +6 -6
- data/lib/zip/null_compressor.rb +3 -1
- data/lib/zip/null_decompressor.rb +3 -1
- data/lib/zip/null_input_stream.rb +3 -1
- data/lib/zip/output_stream.rb +45 -39
- data/lib/zip/pass_thru_compressor.rb +3 -1
- data/lib/zip/pass_thru_decompressor.rb +4 -2
- data/lib/zip/streamable_directory.rb +3 -1
- data/lib/zip/streamable_stream.rb +3 -0
- data/lib/zip/version.rb +3 -1
- data/lib/zip.rb +15 -22
- data/rubyzip.gemspec +38 -0
- data/samples/example.rb +8 -3
- data/samples/example_filesystem.rb +2 -1
- data/samples/example_recursive.rb +3 -1
- data/samples/gtk_ruby_zip.rb +4 -2
- data/samples/qtzip.rb +6 -5
- data/samples/write_simple.rb +1 -0
- data/samples/zipfind.rb +1 -0
- metadata +83 -35
- data/TODO +0 -15
- data/lib/zip/extra_field/zip64_placeholder.rb +0 -15
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'zip'
|
2
4
|
|
3
5
|
# This is a simple example which uses rubyzip to
|
@@ -21,7 +23,7 @@ class ZipFileGenerator
|
|
21
23
|
def write
|
22
24
|
entries = Dir.entries(@input_dir) - %w[. ..]
|
23
25
|
|
24
|
-
::Zip::File.open(@output_file,
|
26
|
+
::Zip::File.open(@output_file, create: true) do |zipfile|
|
25
27
|
write_entries entries, '', zipfile
|
26
28
|
end
|
27
29
|
end
|
data/samples/gtk_ruby_zip.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
$LOAD_PATH << '../lib'
|
4
5
|
|
@@ -42,7 +43,8 @@ class MainApp < Gtk::Window
|
|
42
43
|
end
|
43
44
|
|
44
45
|
class ButtonPanel < Gtk::HButtonBox
|
45
|
-
attr_reader :
|
46
|
+
attr_reader :extract_button, :open_button
|
47
|
+
|
46
48
|
def initialize
|
47
49
|
super
|
48
50
|
set_layout(Gtk::BUTTONBOX_START)
|
@@ -72,7 +74,7 @@ class MainApp < Gtk::Window
|
|
72
74
|
@zipfile.each do |entry|
|
73
75
|
@clist.append([entry.name,
|
74
76
|
entry.size.to_s,
|
75
|
-
|
77
|
+
"#{100.0 * entry.compressedSize / entry.size}%"])
|
76
78
|
end
|
77
79
|
end
|
78
80
|
end
|
data/samples/qtzip.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
$VERBOSE = true
|
4
5
|
|
@@ -6,7 +7,7 @@ $LOAD_PATH << '../lib'
|
|
6
7
|
|
7
8
|
require 'Qt'
|
8
9
|
system('rbuic -o zipdialogui.rb zipdialogui.ui')
|
9
|
-
require 'zipdialogui
|
10
|
+
require 'zipdialogui'
|
10
11
|
require 'zip'
|
11
12
|
|
12
13
|
a = Qt::Application.new(ARGV)
|
@@ -65,14 +66,14 @@ class ZipDialog < ZipDialogUI
|
|
65
66
|
end
|
66
67
|
puts "selected_items.size = #{selected_items.size}"
|
67
68
|
puts "unselected_items.size = #{unselected_items.size}"
|
68
|
-
items =
|
69
|
+
items = selected_items.empty? ? unselected_items : selected_items
|
69
70
|
puts "items.size = #{items.size}"
|
70
71
|
|
71
72
|
d = Qt::FileDialog.get_existing_directory(nil, self)
|
72
|
-
if
|
73
|
-
puts 'No directory chosen'
|
74
|
-
else
|
73
|
+
if d
|
75
74
|
zipfile { |zf| items.each { |e| zf.extract(e, File.join(d, e)) } }
|
75
|
+
else
|
76
|
+
puts 'No directory chosen'
|
76
77
|
end
|
77
78
|
end
|
78
79
|
|
data/samples/write_simple.rb
CHANGED
data/samples/zipfind.rb
CHANGED
metadata
CHANGED
@@ -1,101 +1,141 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyzip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0.alpha
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- Robert Haines
|
8
|
+
- John Lees-Miller
|
7
9
|
- Alexander Simonov
|
8
|
-
autorequire:
|
10
|
+
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain: []
|
11
|
-
date:
|
13
|
+
date: 2023-04-16 00:00:00.000000000 Z
|
12
14
|
dependencies:
|
13
15
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
16
|
+
name: minitest
|
15
17
|
requirement: !ruby/object:Gem::Requirement
|
16
18
|
requirements:
|
17
19
|
- - "~>"
|
18
20
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
21
|
+
version: '5.4'
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
23
25
|
requirements:
|
24
26
|
- - "~>"
|
25
27
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
28
|
+
version: '5.4'
|
27
29
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
30
|
+
name: rake
|
29
31
|
requirement: !ruby/object:Gem::Requirement
|
30
32
|
requirements:
|
31
33
|
- - "~>"
|
32
34
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
35
|
+
version: 12.3.3
|
34
36
|
type: :development
|
35
37
|
prerelease: false
|
36
38
|
version_requirements: !ruby/object:Gem::Requirement
|
37
39
|
requirements:
|
38
40
|
- - "~>"
|
39
41
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
42
|
+
version: 12.3.3
|
41
43
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
44
|
+
name: rdoc
|
43
45
|
requirement: !ruby/object:Gem::Requirement
|
44
46
|
requirements:
|
45
47
|
- - "~>"
|
46
48
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
49
|
+
version: 6.4.0
|
48
50
|
type: :development
|
49
51
|
prerelease: false
|
50
52
|
version_requirements: !ruby/object:Gem::Requirement
|
51
53
|
requirements:
|
52
54
|
- - "~>"
|
53
55
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
56
|
+
version: 6.4.0
|
55
57
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
58
|
+
name: rubocop
|
57
59
|
requirement: !ruby/object:Gem::Requirement
|
58
60
|
requirements:
|
59
61
|
- - "~>"
|
60
62
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
|
63
|
+
version: 1.12.0
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
63
69
|
- !ruby/object:Gem::Version
|
64
|
-
version: 12.
|
70
|
+
version: 1.12.0
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: rubocop-performance
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.10.0
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 1.10.0
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: rubocop-rake
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - "~>"
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: 0.5.0
|
65
92
|
type: :development
|
66
93
|
prerelease: false
|
67
94
|
version_requirements: !ruby/object:Gem::Requirement
|
68
95
|
requirements:
|
69
96
|
- - "~>"
|
70
97
|
- !ruby/object:Gem::Version
|
71
|
-
version:
|
72
|
-
|
98
|
+
version: 0.5.0
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: simplecov
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - "~>"
|
73
104
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
105
|
+
version: 0.18.0
|
106
|
+
type: :development
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 0.18.0
|
75
113
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
114
|
+
name: simplecov-lcov
|
77
115
|
requirement: !ruby/object:Gem::Requirement
|
78
116
|
requirements:
|
79
117
|
- - "~>"
|
80
118
|
- !ruby/object:Gem::Version
|
81
|
-
version: '0.
|
119
|
+
version: '0.8'
|
82
120
|
type: :development
|
83
121
|
prerelease: false
|
84
122
|
version_requirements: !ruby/object:Gem::Requirement
|
85
123
|
requirements:
|
86
124
|
- - "~>"
|
87
125
|
- !ruby/object:Gem::Version
|
88
|
-
version: '0.
|
89
|
-
description:
|
126
|
+
version: '0.8'
|
127
|
+
description:
|
90
128
|
email:
|
129
|
+
- hainesr@gmail.com
|
130
|
+
- jdleesmiller@gmail.com
|
91
131
|
- alex@simonov.me
|
92
132
|
executables: []
|
93
133
|
extensions: []
|
94
134
|
extra_rdoc_files: []
|
95
135
|
files:
|
136
|
+
- Changelog.md
|
96
137
|
- README.md
|
97
138
|
- Rakefile
|
98
|
-
- TODO
|
99
139
|
- lib/zip.rb
|
100
140
|
- lib/zip/central_directory.rb
|
101
141
|
- lib/zip/compressor.rb
|
@@ -106,6 +146,7 @@ files:
|
|
106
146
|
- lib/zip/crypto/traditional_encryption.rb
|
107
147
|
- lib/zip/decompressor.rb
|
108
148
|
- lib/zip/deflater.rb
|
149
|
+
- lib/zip/dirtyable.rb
|
109
150
|
- lib/zip/dos_time.rb
|
110
151
|
- lib/zip/entry.rb
|
111
152
|
- lib/zip/entry_set.rb
|
@@ -116,10 +157,16 @@ files:
|
|
116
157
|
- lib/zip/extra_field/old_unix.rb
|
117
158
|
- lib/zip/extra_field/universal_time.rb
|
118
159
|
- lib/zip/extra_field/unix.rb
|
160
|
+
- lib/zip/extra_field/unknown.rb
|
119
161
|
- lib/zip/extra_field/zip64.rb
|
120
|
-
- lib/zip/extra_field/zip64_placeholder.rb
|
121
162
|
- lib/zip/file.rb
|
163
|
+
- lib/zip/file_split.rb
|
122
164
|
- lib/zip/filesystem.rb
|
165
|
+
- lib/zip/filesystem/dir.rb
|
166
|
+
- lib/zip/filesystem/directory_iterator.rb
|
167
|
+
- lib/zip/filesystem/file.rb
|
168
|
+
- lib/zip/filesystem/file_stat.rb
|
169
|
+
- lib/zip/filesystem/zip_file_name_mapper.rb
|
123
170
|
- lib/zip/inflater.rb
|
124
171
|
- lib/zip/input_stream.rb
|
125
172
|
- lib/zip/ioextras.rb
|
@@ -134,6 +181,7 @@ files:
|
|
134
181
|
- lib/zip/streamable_directory.rb
|
135
182
|
- lib/zip/streamable_stream.rb
|
136
183
|
- lib/zip/version.rb
|
184
|
+
- rubyzip.gemspec
|
137
185
|
- samples/example.rb
|
138
186
|
- samples/example_filesystem.rb
|
139
187
|
- samples/example_recursive.rb
|
@@ -143,14 +191,14 @@ files:
|
|
143
191
|
- samples/zipfind.rb
|
144
192
|
homepage: http://github.com/rubyzip/rubyzip
|
145
193
|
licenses:
|
146
|
-
- BSD
|
194
|
+
- BSD-2-Clause
|
147
195
|
metadata:
|
148
196
|
bug_tracker_uri: https://github.com/rubyzip/rubyzip/issues
|
149
|
-
changelog_uri: https://github.com/rubyzip/rubyzip/blob/
|
150
|
-
documentation_uri: https://www.rubydoc.info/gems/rubyzip/
|
151
|
-
source_code_uri: https://github.com/rubyzip/rubyzip/tree/
|
197
|
+
changelog_uri: https://github.com/rubyzip/rubyzip/blob/v3.0.0.alpha/Changelog.md
|
198
|
+
documentation_uri: https://www.rubydoc.info/gems/rubyzip/3.0.0.alpha
|
199
|
+
source_code_uri: https://github.com/rubyzip/rubyzip/tree/v3.0.0.alpha
|
152
200
|
wiki_uri: https://github.com/rubyzip/rubyzip/wiki
|
153
|
-
post_install_message:
|
201
|
+
post_install_message:
|
154
202
|
rdoc_options: []
|
155
203
|
require_paths:
|
156
204
|
- lib
|
@@ -158,15 +206,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
206
|
requirements:
|
159
207
|
- - ">="
|
160
208
|
- !ruby/object:Gem::Version
|
161
|
-
version: '2.
|
209
|
+
version: '2.5'
|
162
210
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
211
|
requirements:
|
164
|
-
- - "
|
212
|
+
- - ">"
|
165
213
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
214
|
+
version: 1.3.1
|
167
215
|
requirements: []
|
168
|
-
rubygems_version: 3.
|
169
|
-
signing_key:
|
216
|
+
rubygems_version: 3.3.23
|
217
|
+
signing_key:
|
170
218
|
specification_version: 4
|
171
219
|
summary: rubyzip is a ruby module for reading and writing zip files
|
172
220
|
test_files: []
|
data/TODO
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
|
2
|
-
* ZipInputStream: Support zip-files with trailing data descriptors
|
3
|
-
* Adjust rdoc stylesheet to advertise inherited methods if possible
|
4
|
-
* Suggestion: Add ZipFile/ZipInputStream example that demonstrates extracting all entries.
|
5
|
-
* Suggestion: ZipFile#extract destination should default to "."
|
6
|
-
* Suggestion: ZipEntry should have extract(), get_input_stream() methods etc
|
7
|
-
* (is buffering used anywhere with write?)
|
8
|
-
* Inflater.sysread should pass the buffer to produce_input.
|
9
|
-
* Implement ZipFsDir.glob
|
10
|
-
* ZipFile.checkIntegrity method
|
11
|
-
* non-MSDOS permission attributes
|
12
|
-
** See mail from Ned Konz to ruby-talk subj. "Re: SV: [ANN] Archive 0.2"
|
13
|
-
* Packager version, required unpacker version in zip headers
|
14
|
-
** See mail from Ned Konz to ruby-talk subj. "Re: SV: [ANN] Archive 0.2"
|
15
|
-
* implement storing attributes and ownership information
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module Zip
|
2
|
-
# placeholder to reserve space for a Zip64 extra information record, for the
|
3
|
-
# local file header only, that we won't know if we'll need until after
|
4
|
-
# we write the file data
|
5
|
-
class ExtraField::Zip64Placeholder < ExtraField::Generic
|
6
|
-
HEADER_ID = ['9999'].pack('H*') # this ID is used by other libraries such as .NET's Ionic.zip
|
7
|
-
register_map
|
8
|
-
|
9
|
-
def initialize(_binstr = nil); end
|
10
|
-
|
11
|
-
def pack_for_local
|
12
|
-
"\x00" * 16
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|