Skip to content

Commit 2912890

Browse files
authored
rubyzip 3.2: Add type sig for block-form/generic overrides and fix sig top-level config (#1023)
* add tests for missing block-form return types * add generic overrides for `Zip::File.open` and `Zip::File.open_buffer` * add block-form/generic method overrides for `Zip::FileSystem::(Dir|File|ZipFileNameMapper)` * add block-form/generic method overrides for `Zip::(Input|Output)Stream` * add block-form/generic method overrides for `Zip::Streamable` methods * add non-block/generic method overrides for `Zip::Entry` * More tests * more tests * Fix top level `::Zip` module config methods * more tests * Use new `next_entry` var for `get_next_entry` in tests so it does not cause type issues with the var `entry` resulting from `get_entry` * rubocop -A
1 parent 51d8156 commit 2912890

File tree

11 files changed

+608
-65
lines changed

11 files changed

+608
-65
lines changed

gems/rubyzip/3.2/_test/test_example.rb

Lines changed: 510 additions & 9 deletions
Large diffs are not rendered by default.

gems/rubyzip/3.2/rubyzip.rbs

Lines changed: 0 additions & 38 deletions
This file was deleted.

gems/rubyzip/3.2/zip.rbs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
module Zip
2+
extend Zip
3+
4+
DEFAULT_RESTORE_OPTIONS: { restore_ownership: bool, restore_permissions: bool, restore_times: bool }
5+
ZLIB_FLUSHING_STRATEGY: Integer
6+
7+
def unicode_names: () -> bool
8+
def unicode_names=: (bool) -> bool
9+
10+
def on_exists_proc: () -> bool
11+
def on_exists_proc=: (bool) -> bool
12+
13+
def continue_on_exists_proc: () -> bool
14+
def continue_on_exists_proc=: (bool) -> bool
15+
16+
def sort_entries: () -> bool
17+
def sort_entries=: (bool) -> bool
18+
19+
def default_compression: () -> Integer
20+
def default_compression=: (Integer) -> Integer
21+
22+
def write_zip64_support: () -> bool
23+
def write_zip64_support=: (bool) -> bool
24+
25+
def warn_invalid_date: () -> bool
26+
def warn_invalid_date=: (bool) -> bool
27+
28+
def case_insensitive_match: () -> bool
29+
def case_insensitive_match=: (bool) -> bool
30+
31+
def force_entry_names_encoding: () -> String?
32+
def force_entry_names_encoding=: (String?) -> String?
33+
34+
def validate_entry_sizes: () -> bool
35+
def validate_entry_sizes=: (bool) -> bool
36+
37+
def setup: () { (Zip) -> void } -> void
38+
39+
def reset!: () -> void
40+
end

gems/rubyzip/3.2/zip/entry.rbs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ module Zip
7878

7979
def extract: (?String entry_path, ?destination_directory: String) ?{ (Entry, String) -> boolish } -> self
8080

81-
def get_input_stream: () ?{ (IO) -> void } -> IO
81+
def get_input_stream: [TContent] () { (IO) -> TContent } -> TContent
82+
| () -> IO
8283

8384
def write_to_zip_output_stream: (OutputStream zip_output_stream) -> void
8485

gems/rubyzip/3.2/zip/file.rbs

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,43 @@ module Zip
1717
def glob: (String pattern, ?Integer flags) ?{ (Entry) -> void } -> Array[Entry]
1818
def size: () -> Integer
1919

20-
def self.open: (
20+
def self.open: [TContent] (
2121
String file_name,
2222
?create: bool,
2323
?restore_ownership: bool,
2424
?restore_permissions: bool,
2525
?restore_times: bool,
2626
?compression_level: Integer,
2727
?suppress_extra_fields: bool
28-
) ?{ (File) -> void } -> File?
28+
) { (File) -> TContent } -> TContent
29+
| (
30+
String file_name,
31+
?create: bool,
32+
?restore_ownership: bool,
33+
?restore_permissions: bool,
34+
?restore_times: bool,
35+
?compression_level: Integer,
36+
?suppress_extra_fields: bool
37+
) -> File
2938

30-
def self.open_buffer: (
31-
?IO io,
39+
def self.open_buffer: [TContent] (
40+
?IO | String io,
3241
?create: bool,
3342
?restore_ownership: bool,
3443
?restore_permissions: bool,
3544
?restore_times: bool,
3645
?compression_level: Integer,
3746
?suppress_extra_fields: bool
38-
) ?{ (File) -> void } -> File?
47+
) { (File) -> TContent } -> TContent
48+
| (
49+
?IO | String io,
50+
?create: bool,
51+
?restore_ownership: bool,
52+
?restore_permissions: bool,
53+
?restore_times: bool,
54+
?compression_level: Integer,
55+
?suppress_extra_fields: bool
56+
) -> File
3957

4058
def self.foreach: (String zip_file_name) { (Entry) -> void } -> void
4159

@@ -52,9 +70,22 @@ module Zip
5270
?suppress_extra_fields: bool
5371
) -> void
5472

55-
def get_input_stream: (String | Entry entry) ?{ (IO) -> void } -> IO
73+
def get_input_stream: [TContent] (String | Entry entry) { (IO) -> TContent } -> TContent
74+
| (String | Entry entry) -> IO
5675

57-
def get_output_stream: (
76+
def get_output_stream: [TContent] (
77+
String | Entry entry,
78+
?permissions: Integer?,
79+
?comment: String?,
80+
?extra: ExtraField?,
81+
?compressed_size: Integer?,
82+
?crc: Integer?,
83+
?compression_method: Integer?,
84+
?compression_level: Integer?,
85+
?size: Integer?,
86+
?time: Time?
87+
) { (IO) -> TContent } -> TContent
88+
| (
5889
String | Entry entry,
5990
?permissions: Integer?,
6091
?comment: String?,
@@ -65,7 +96,7 @@ module Zip
6596
?compression_level: Integer?,
6697
?size: Integer?,
6798
?time: Time?
68-
) ?{ (IO) -> void } -> IO
99+
) -> IO
69100

70101
def read: (String | Entry entry) -> String
71102

gems/rubyzip/3.2/zip/filesystem/dir.rbs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@ module Zip
77

88
def new: (String directory_name) -> DirectoryIterator
99

10-
def open: (String directory_name) ?{ (DirectoryIterator) -> void } -> DirectoryIterator?
10+
def open: (String directory_name) { (DirectoryIterator) -> void } -> nil
11+
| (String directory_name) -> DirectoryIterator
1112

1213
def pwd: () -> String
1314
alias getwd pwd
1415

15-
def chdir: (String directory_name) ?{ () -> void } -> void
16+
def chdir: (String directory_name) -> void
1617

1718
def entries: (String directory_name) -> Array[String]
1819

gems/rubyzip/3.2/zip/filesystem/file.rbs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ module Zip
2525
def size?: (String filename) -> Integer?
2626
def zero?: (String filename) -> bool
2727

28-
def open: (String filename, ?String mode, ?Integer permissions) ?{ (IO) -> void } -> IO?
28+
def open: [TContent] (String filename, ?String mode, ?Integer permissions) { (IO) -> TContent } -> TContent
29+
| (String filename, ?String mode, ?Integer permissions) -> IO
2930

3031
def read: (String filename) -> String
3132

gems/rubyzip/3.2/zip/filesystem/zip_file_name_mapper.rbs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ module Zip
1111

1212
def get_entry: (String filename) -> Entry
1313

14-
def get_input_stream: (String filename) ?{ (IO) -> void } -> IO?
14+
def get_input_stream: [TContent] (String filename) { (IO) -> TContent } -> TContent
15+
| (String filename) -> IO
1516

16-
def get_output_stream: (String filename, ?Integer? permissions) ?{ (IO) -> void } -> IO?
17+
def get_output_stream: [TContent] (String filename, ?Integer? permissions) { (IO) -> TContent } -> TContent
18+
| (String filename, ?Integer? permissions) -> IO
1719

1820
def glob: (String pattern, *untyped flags) ?{ (String) -> void } -> Array[String]
1921

gems/rubyzip/3.2/zip/input_stream.rbs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ module Zip
44

55
CHUNK_SIZE: Integer
66

7-
def self.open: (String | IO filename_or_io, ?offset: Integer, ?decrypter: Decrypter?) ?{ (InputStream) -> void } -> InputStream?
7+
def self.open: [TContent] (String | IO filename_or_io, ?offset: Integer, ?decrypter: Decrypter?) { (InputStream) -> TContent } -> TContent
8+
| (String | IO filename_or_io, ?offset: Integer, ?decrypter: Decrypter?) -> InputStream
89

910
def initialize: (String | IO context, ?offset: Integer, ?decrypter: Decrypter?) -> void
1011

gems/rubyzip/3.2/zip/output_stream.rbs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ module Zip
22
class OutputStream
33
include IOExtras::AbstractOutputStream
44

5-
def self.open: (String file_name, ?encrypter: Encrypter?, ?suppress_extra_fields: bool) ?{ (OutputStream) -> void } -> OutputStream?
5+
def self.open: [TContent] (String file_name, ?encrypter: Encrypter?, ?suppress_extra_fields: bool) { (OutputStream) -> TContent } -> TContent
6+
| (String file_name, ?encrypter: Encrypter?, ?suppress_extra_fields: bool) -> OutputStream
67

78
def self.write_buffer: (?IO io, ?encrypter: Encrypter?, ?suppress_extra_fields: bool) { (OutputStream) -> void } -> IO
89

0 commit comments

Comments
 (0)