rubyzip 2.4.1 → 3.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +419 -0
  3. data/LICENSE.md +24 -0
  4. data/README.md +137 -37
  5. data/Rakefile +11 -7
  6. data/lib/zip/central_directory.rb +169 -123
  7. data/lib/zip/compressor.rb +3 -1
  8. data/lib/zip/constants.rb +29 -21
  9. data/lib/zip/crypto/decrypted_io.rb +4 -2
  10. data/lib/zip/crypto/encryption.rb +4 -2
  11. data/lib/zip/crypto/null_encryption.rb +6 -4
  12. data/lib/zip/crypto/traditional_encryption.rb +8 -6
  13. data/lib/zip/decompressor.rb +4 -3
  14. data/lib/zip/deflater.rb +10 -8
  15. data/lib/zip/dirtyable.rb +32 -0
  16. data/lib/zip/dos_time.rb +43 -4
  17. data/lib/zip/entry.rb +333 -242
  18. data/lib/zip/entry_set.rb +11 -9
  19. data/lib/zip/errors.rb +136 -16
  20. data/lib/zip/extra_field/generic.rb +6 -13
  21. data/lib/zip/extra_field/ntfs.rb +6 -4
  22. data/lib/zip/extra_field/old_unix.rb +3 -1
  23. data/lib/zip/extra_field/universal_time.rb +3 -1
  24. data/lib/zip/extra_field/unix.rb +5 -3
  25. data/lib/zip/extra_field/unknown.rb +33 -0
  26. data/lib/zip/extra_field/zip64.rb +12 -5
  27. data/lib/zip/extra_field.rb +16 -22
  28. data/lib/zip/file.rb +166 -264
  29. data/lib/zip/file_split.rb +91 -0
  30. data/lib/zip/filesystem/dir.rb +86 -0
  31. data/lib/zip/filesystem/directory_iterator.rb +48 -0
  32. data/lib/zip/filesystem/file.rb +262 -0
  33. data/lib/zip/filesystem/file_stat.rb +110 -0
  34. data/lib/zip/filesystem/zip_file_name_mapper.rb +81 -0
  35. data/lib/zip/filesystem.rb +27 -596
  36. data/lib/zip/inflater.rb +7 -5
  37. data/lib/zip/input_stream.rb +50 -50
  38. data/lib/zip/ioextras/abstract_input_stream.rb +16 -11
  39. data/lib/zip/ioextras/abstract_output_stream.rb +5 -3
  40. data/lib/zip/ioextras.rb +7 -7
  41. data/lib/zip/null_compressor.rb +3 -1
  42. data/lib/zip/null_decompressor.rb +3 -1
  43. data/lib/zip/null_input_stream.rb +3 -1
  44. data/lib/zip/output_stream.rb +55 -56
  45. data/lib/zip/pass_thru_compressor.rb +3 -1
  46. data/lib/zip/pass_thru_decompressor.rb +4 -2
  47. data/lib/zip/streamable_directory.rb +3 -1
  48. data/lib/zip/streamable_stream.rb +3 -0
  49. data/lib/zip/version.rb +3 -1
  50. data/lib/zip.rb +18 -22
  51. data/rubyzip.gemspec +39 -0
  52. data/samples/example.rb +8 -3
  53. data/samples/example_filesystem.rb +3 -2
  54. data/samples/example_recursive.rb +3 -1
  55. data/samples/gtk_ruby_zip.rb +4 -2
  56. data/samples/qtzip.rb +6 -5
  57. data/samples/write_simple.rb +2 -1
  58. data/samples/zipfind.rb +1 -0
  59. metadata +87 -51
  60. data/TODO +0 -15
  61. data/lib/zip/extra_field/zip64_placeholder.rb +0 -15
data/lib/zip.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'English'
2
4
  require 'delegate'
3
5
  require 'singleton'
@@ -33,26 +35,12 @@ require 'zip/streamable_stream'
33
35
  require 'zip/streamable_directory'
34
36
  require 'zip/errors'
35
37
 
38
+ # Rubyzip is a ruby module for reading and writing zip files.
39
+ #
40
+ # The main entry points are File, InputStream and OutputStream. For a
41
+ # file/directory interface in the style of the standard ruby ::File and
42
+ # ::Dir APIs then `require 'zip/filesystem'` and see FileSystem.
36
43
  module Zip
37
- V3_API_WARNING_MSG = <<~END_MSG
38
- You have called '%s' (from %s).
39
- This method is changing or deprecated in version 3.0.0. Please see
40
- https://github.com/rubyzip/rubyzip/wiki/Updating-to-version-3.x
41
- for more information.
42
- END_MSG
43
-
44
- def self.warn_about_v3_api(method)
45
- return unless ENV['RUBYZIP_V3_API_WARN']
46
-
47
- loc = caller_locations(2, 1)[0]
48
- from = "#{loc.path.split('/').last}:#{loc.lineno}"
49
- warn format(V3_API_WARNING_MSG, method, from)
50
- end
51
-
52
- if ENV['RUBYZIP_V3_API_WARN'] && RUBY_VERSION < '3.0'
53
- warn 'RubyZip 3.0 will require Ruby 3.0 or later.'
54
- end
55
-
56
44
  extend self
57
45
  attr_accessor :unicode_names,
58
46
  :on_exists_proc,
@@ -65,19 +53,27 @@ module Zip
65
53
  :force_entry_names_encoding,
66
54
  :validate_entry_sizes
67
55
 
68
- def reset!
56
+ DEFAULT_RESTORE_OPTIONS = {
57
+ restore_ownership: false,
58
+ restore_permissions: true,
59
+ restore_times: true
60
+ }.freeze # :nodoc:
61
+
62
+ def reset! # :nodoc:
69
63
  @_ran_once = false
70
64
  @unicode_names = false
71
65
  @on_exists_proc = false
72
66
  @continue_on_exists_proc = false
73
67
  @sort_entries = false
74
- @default_compression = ::Zlib::DEFAULT_COMPRESSION
75
- @write_zip64_support = false
68
+ @default_compression = Zlib::DEFAULT_COMPRESSION
69
+ @write_zip64_support = true
76
70
  @warn_invalid_date = true
77
71
  @case_insensitive_match = false
72
+ @force_entry_names_encoding = nil
78
73
  @validate_entry_sizes = true
79
74
  end
80
75
 
76
+ # Set options for RubyZip in one block.
81
77
  def setup
82
78
  yield self unless @_ran_once
83
79
  @_ran_once = true
data/rubyzip.gemspec ADDED
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/zip/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'rubyzip'
7
+ s.version = Zip::VERSION
8
+ s.authors = ['Robert Haines', 'John Lees-Miller', 'Alexander Simonov']
9
+ s.email = [
10
+ 'hainesr@gmail.com', 'jdleesmiller@gmail.com', 'alex@simonov.me'
11
+ ]
12
+ s.homepage = 'http://github.com/rubyzip/rubyzip'
13
+ s.platform = Gem::Platform::RUBY
14
+ s.summary = 'rubyzip is a ruby module for reading and writing zip files'
15
+ s.files = Dir.glob('{samples,lib}/**/*.rb') +
16
+ %w[LICENSE.md README.md Changelog.md Rakefile rubyzip.gemspec]
17
+ s.require_paths = ['lib']
18
+ s.license = 'BSD-2-Clause'
19
+
20
+ s.metadata = {
21
+ 'bug_tracker_uri' => 'https://github.com/rubyzip/rubyzip/issues',
22
+ 'changelog_uri' => "https://github.com/rubyzip/rubyzip/blob/v#{s.version}/Changelog.md",
23
+ 'documentation_uri' => "https://www.rubydoc.info/gems/rubyzip/#{s.version}",
24
+ 'source_code_uri' => "https://github.com/rubyzip/rubyzip/tree/v#{s.version}",
25
+ 'wiki_uri' => 'https://github.com/rubyzip/rubyzip/wiki',
26
+ 'rubygems_mfa_required' => 'true'
27
+ }
28
+
29
+ s.required_ruby_version = '>= 3.0'
30
+
31
+ s.add_development_dependency 'minitest', '~> 5.25'
32
+ s.add_development_dependency 'rake', '~> 13.2'
33
+ s.add_development_dependency 'rdoc', '~> 6.11'
34
+ s.add_development_dependency 'rubocop', '~> 1.61.0'
35
+ s.add_development_dependency 'rubocop-performance', '~> 1.20.0'
36
+ s.add_development_dependency 'rubocop-rake', '~> 0.6.0'
37
+ s.add_development_dependency 'simplecov', '~> 0.22.0'
38
+ s.add_development_dependency 'simplecov-lcov', '~> 0.8'
39
+ end
data/samples/example.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
  system('zip example.zip example.rb gtk_ruby_zip.rb')
@@ -20,7 +21,8 @@ end
20
21
 
21
22
  zf = Zip::File.new('example.zip')
22
23
  zf.each_with_index do |entry, index|
23
- puts "entry #{index} is #{entry.name}, size = #{entry.size}, compressed size = #{entry.compressed_size}"
24
+ puts "entry #{index} is #{entry.name}, size = #{entry.size}, " \
25
+ "compressed size = #{entry.compressed_size}"
24
26
  # use zf.get_input_stream(entry) to get a ZipInputStream for the entry
25
27
  # entry can be the ZipEntry object or any object which has a to_s method that
26
28
  # returns the name of the entry.
@@ -70,8 +72,11 @@ part_zips_count = Zip::File.split('large_zip_file.zip', 2_097_152, false)
70
72
  puts "Zip file splitted in #{part_zips_count} parts"
71
73
 
72
74
  # Track splitting an archive
73
- Zip::File.split('large_zip_file.zip', 1_048_576, true, 'part_zip_file') do |part_count, part_index, chunk_bytes, segment_bytes|
74
- puts "#{part_index} of #{part_count} part splitting: #{(chunk_bytes.to_f / segment_bytes * 100).to_i}%"
75
+ Zip::File.split(
76
+ 'large_zip_file.zip', 1_048_576, true, 'part_zip_file'
77
+ ) do |part_count, part_index, chunk_bytes, segment_bytes|
78
+ puts "#{part_index} of #{part_count} part splitting: " \
79
+ "#{(chunk_bytes.to_f / segment_bytes * 100).to_i}%"
75
80
  end
76
81
 
77
82
  # For other examples, look at zip.rb and ziptest.rb
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  $LOAD_PATH << '../lib'
4
5
 
@@ -6,9 +7,9 @@ require 'zip/filesystem'
6
7
 
7
8
  EXAMPLE_ZIP = 'filesystem.zip'
8
9
 
9
- File.delete(EXAMPLE_ZIP) if File.exist?(EXAMPLE_ZIP)
10
+ FileUtils.rm_f(EXAMPLE_ZIP)
10
11
 
11
- Zip::File.open(EXAMPLE_ZIP, Zip::File::CREATE) do |zf|
12
+ Zip::File.open(EXAMPLE_ZIP, create: true) do |zf|
12
13
  zf.file.open('file1.txt', 'w') { |os| os.write 'first file1.txt' }
13
14
  zf.dir.mkdir('dir1')
14
15
  zf.dir.chdir('dir1')
@@ -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, ::Zip::File::CREATE) do |zipfile|
26
+ ::Zip::File.open(@output_file, create: true) do |zipfile|
25
27
  write_entries entries, '', zipfile
26
28
  end
27
29
  end
@@ -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 :open_button, :extract_button
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
- (100.0 * entry.compressedSize / entry.size).to_s + '%'])
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.rb'
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 = !selected_items.empty? ? selected_items : unselected_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 !d
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
 
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  $LOAD_PATH << '../lib'
4
5
 
5
6
  require 'zip'
6
7
 
7
- ::Zip::OutputStream.open('simple.zip') do |zos|
8
+ Zip::OutputStream.open('simple.zip') do |zos|
8
9
  zos.put_next_entry 'entry.txt'
9
10
  zos.puts 'Hello world'
10
11
  end
data/samples/zipfind.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
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyzip
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 3.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Haines
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2025-01-05 00:00:00.000000000 Z
13
+ date: 2025-01-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: minitest
@@ -18,62 +18,112 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '5.4'
21
+ version: '5.25'
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '5.4'
28
+ version: '5.25'
29
29
  - !ruby/object:Gem::Dependency
30
- name: pry
30
+ name: rake
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: '0.10'
35
+ version: '13.2'
36
36
  type: :development
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '0.10'
42
+ version: '13.2'
43
43
  - !ruby/object:Gem::Dependency
44
- name: rake
44
+ name: rdoc
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '12.3'
50
- - - ">="
49
+ version: '6.11'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '6.11'
57
+ - !ruby/object:Gem::Dependency
58
+ name: rubocop
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
51
62
  - !ruby/object:Gem::Version
52
- version: 12.3.3
63
+ version: 1.61.0
53
64
  type: :development
54
65
  prerelease: false
55
66
  version_requirements: !ruby/object:Gem::Requirement
56
67
  requirements:
57
68
  - - "~>"
58
69
  - !ruby/object:Gem::Version
59
- version: '12.3'
60
- - - ">="
70
+ version: 1.61.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.20.0
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
61
83
  - !ruby/object:Gem::Version
62
- version: 12.3.3
84
+ version: 1.20.0
63
85
  - !ruby/object:Gem::Dependency
64
- name: rubocop
86
+ name: rubocop-rake
65
87
  requirement: !ruby/object:Gem::Requirement
66
88
  requirements:
67
89
  - - "~>"
68
90
  - !ruby/object:Gem::Version
69
- version: '0.79'
91
+ version: 0.6.0
70
92
  type: :development
71
93
  prerelease: false
72
94
  version_requirements: !ruby/object:Gem::Requirement
73
95
  requirements:
74
96
  - - "~>"
75
97
  - !ruby/object:Gem::Version
76
- version: '0.79'
98
+ version: 0.6.0
99
+ - !ruby/object:Gem::Dependency
100
+ name: simplecov
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: 0.22.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.22.0
113
+ - !ruby/object:Gem::Dependency
114
+ name: simplecov-lcov
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '0.8'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: '0.8'
77
127
  description:
78
128
  email:
79
129
  - hainesr@gmail.com
@@ -83,9 +133,10 @@ executables: []
83
133
  extensions: []
84
134
  extra_rdoc_files: []
85
135
  files:
136
+ - Changelog.md
137
+ - LICENSE.md
86
138
  - README.md
87
139
  - Rakefile
88
- - TODO
89
140
  - lib/zip.rb
90
141
  - lib/zip/central_directory.rb
91
142
  - lib/zip/compressor.rb
@@ -96,6 +147,7 @@ files:
96
147
  - lib/zip/crypto/traditional_encryption.rb
97
148
  - lib/zip/decompressor.rb
98
149
  - lib/zip/deflater.rb
150
+ - lib/zip/dirtyable.rb
99
151
  - lib/zip/dos_time.rb
100
152
  - lib/zip/entry.rb
101
153
  - lib/zip/entry_set.rb
@@ -106,10 +158,16 @@ files:
106
158
  - lib/zip/extra_field/old_unix.rb
107
159
  - lib/zip/extra_field/universal_time.rb
108
160
  - lib/zip/extra_field/unix.rb
161
+ - lib/zip/extra_field/unknown.rb
109
162
  - lib/zip/extra_field/zip64.rb
110
- - lib/zip/extra_field/zip64_placeholder.rb
111
163
  - lib/zip/file.rb
164
+ - lib/zip/file_split.rb
112
165
  - lib/zip/filesystem.rb
166
+ - lib/zip/filesystem/dir.rb
167
+ - lib/zip/filesystem/directory_iterator.rb
168
+ - lib/zip/filesystem/file.rb
169
+ - lib/zip/filesystem/file_stat.rb
170
+ - lib/zip/filesystem/zip_file_name_mapper.rb
113
171
  - lib/zip/inflater.rb
114
172
  - lib/zip/input_stream.rb
115
173
  - lib/zip/ioextras.rb
@@ -124,6 +182,7 @@ files:
124
182
  - lib/zip/streamable_directory.rb
125
183
  - lib/zip/streamable_stream.rb
126
184
  - lib/zip/version.rb
185
+ - rubyzip.gemspec
127
186
  - samples/example.rb
128
187
  - samples/example_filesystem.rb
129
188
  - samples/example_recursive.rb
@@ -133,38 +192,15 @@ files:
133
192
  - samples/zipfind.rb
134
193
  homepage: http://github.com/rubyzip/rubyzip
135
194
  licenses:
136
- - BSD 2-Clause
195
+ - BSD-2-Clause
137
196
  metadata:
138
197
  bug_tracker_uri: https://github.com/rubyzip/rubyzip/issues
139
- changelog_uri: https://github.com/rubyzip/rubyzip/blob/v2.4.1/Changelog.md
140
- documentation_uri: https://www.rubydoc.info/gems/rubyzip/2.4.1
141
- source_code_uri: https://github.com/rubyzip/rubyzip/tree/v2.4.1
198
+ changelog_uri: https://github.com/rubyzip/rubyzip/blob/v3.0.0.rc1/Changelog.md
199
+ documentation_uri: https://www.rubydoc.info/gems/rubyzip/3.0.0.rc1
200
+ source_code_uri: https://github.com/rubyzip/rubyzip/tree/v3.0.0.rc1
142
201
  wiki_uri: https://github.com/rubyzip/rubyzip/wiki
143
202
  rubygems_mfa_required: 'true'
144
- post_install_message: |
145
- RubyZip 3.0 is coming!
146
- **********************
147
-
148
- The public API of some Rubyzip classes has been modernized to use named
149
- parameters for optional arguments. Please check your usage of the
150
- following classes:
151
- * `Zip::File`
152
- * `Zip::Entry`
153
- * `Zip::InputStream`
154
- * `Zip::OutputStream`
155
- * `Zip::DOSTime`
156
-
157
- Run your test suite with the `RUBYZIP_V3_API_WARN` environment
158
- variable set to see warnings about usage of the old API. This will
159
- help you to identify any changes that you need to make to your code.
160
- See https://github.com/rubyzip/rubyzip/wiki/Updating-to-version-3.x for
161
- more information.
162
-
163
- Please ensure that your Gemfiles and .gemspecs are suitably restrictive
164
- to avoid an unexpected breakage when 3.0 is released (e.g. ~> 2.3.0).
165
- See https://github.com/rubyzip/rubyzip for details. The Changelog also
166
- lists other enhancements and bugfixes that have been implemented since
167
- version 2.3.0.
203
+ post_install_message:
168
204
  rdoc_options: []
169
205
  require_paths:
170
206
  - lib
@@ -172,14 +208,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
208
  requirements:
173
209
  - - ">="
174
210
  - !ruby/object:Gem::Version
175
- version: '2.4'
211
+ version: '3.0'
176
212
  required_rubygems_version: !ruby/object:Gem::Requirement
177
213
  requirements:
178
- - - ">="
214
+ - - ">"
179
215
  - !ruby/object:Gem::Version
180
- version: '0'
216
+ version: 1.3.1
181
217
  requirements: []
182
- rubygems_version: 3.1.6
218
+ rubygems_version: 3.4.1
183
219
  signing_key:
184
220
  specification_version: 4
185
221
  summary: rubyzip is a ruby module for reading and writing zip 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