rbs 3.1.3 → 3.2.0.pre.1
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/.github/workflows/ruby.yml +0 -6
- data/CHANGELOG.md +68 -0
- data/Gemfile +0 -6
- data/Gemfile.lock +12 -21
- data/README.md +1 -1
- data/Rakefile +44 -0
- data/Steepfile +3 -3
- data/core/array.rbs +0 -8
- data/core/builtin.rbs +28 -8
- data/core/constants.rbs +13 -5
- data/core/exception.rbs +1 -1
- data/core/global_variables.rbs +27 -27
- data/core/io.rbs +163 -172
- data/core/kernel.rbs +7 -4
- data/core/module.rbs +34 -32
- data/core/object.rbs +2 -2
- data/core/string_io.rbs +9 -0
- data/core/thread.rbs +25 -1
- data/core/time.rbs +3 -3
- data/docs/CONTRIBUTING.md +1 -1
- data/docs/rbs_by_example.md +16 -35
- data/docs/repo.md +1 -1
- data/docs/sigs.md +7 -7
- data/docs/stdlib.md +2 -3
- data/docs/syntax.md +40 -40
- data/lib/rbs/cli.rb +15 -4
- data/lib/rbs/collection/installer.rb +5 -2
- data/lib/rbs/collection/sources/stdlib.rb +5 -1
- data/lib/rbs/errors.rb +8 -1
- data/lib/rbs/file_finder.rb +1 -1
- data/lib/rbs/prototype/rb.rb +64 -6
- data/lib/rbs/prototype/rbi.rb +2 -6
- data/lib/rbs/prototype/runtime.rb +29 -8
- data/lib/rbs/subtractor.rb +17 -0
- data/lib/rbs/type_name.rb +4 -4
- data/lib/rbs/version.rb +1 -1
- data/rbs.gemspec +1 -1
- data/schema/decls.json +1 -1
- data/sig/errors.rbs +54 -0
- data/sig/parser.rbs +2 -2
- data/sig/prototype/rb.rbs +9 -1
- data/sig/subtractor.rbs +4 -0
- data/stdlib/logger/0/logger.rbs +1 -1
- data/stdlib/observable/0/observable.rbs +219 -0
- data/stdlib/uri/0/common.rbs +24 -0
- data/stdlib/zlib/0/buf_error.rbs +79 -0
- data/stdlib/zlib/0/data_error.rbs +79 -0
- data/stdlib/zlib/0/deflate.rbs +276 -0
- data/stdlib/zlib/0/error.rbs +89 -0
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +115 -0
- data/stdlib/zlib/0/gzip_file/error.rbs +128 -0
- data/stdlib/zlib/0/gzip_file/length_error.rbs +115 -0
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +114 -0
- data/stdlib/zlib/0/gzip_file.rbs +228 -0
- data/stdlib/zlib/0/gzip_reader.rbs +362 -0
- data/stdlib/zlib/0/gzip_writer.rbs +237 -0
- data/stdlib/zlib/0/inflate.rbs +249 -0
- data/stdlib/zlib/0/mem_error.rbs +79 -0
- data/stdlib/zlib/0/need_dict.rbs +82 -0
- data/stdlib/zlib/0/stream_end.rbs +80 -0
- data/stdlib/zlib/0/stream_error.rbs +80 -0
- data/stdlib/zlib/0/version_error.rbs +80 -0
- data/stdlib/zlib/0/zstream.rbs +270 -0
- metadata +24 -8
- data/stdlib/prime/0/integer-extension.rbs +0 -41
- data/stdlib/prime/0/manifest.yaml +0 -2
- data/stdlib/prime/0/prime.rbs +0 -372
@@ -0,0 +1,79 @@
|
|
1
|
+
# <!-- rdoc-file=ext/zlib/zlib.c -->
|
2
|
+
# This module provides access to the [zlib library](http://zlib.net). Zlib is
|
3
|
+
# designed to be a portable, free, general-purpose, legally unencumbered -- that
|
4
|
+
# is, not covered by any patents -- lossless data-compression library for use on
|
5
|
+
# virtually any computer hardware and operating system.
|
6
|
+
#
|
7
|
+
# The zlib compression library provides in-memory compression and decompression
|
8
|
+
# functions, including integrity checks of the uncompressed data.
|
9
|
+
#
|
10
|
+
# The zlib compressed data format is described in RFC 1950, which is a wrapper
|
11
|
+
# around a deflate stream which is described in RFC 1951.
|
12
|
+
#
|
13
|
+
# The library also supports reading and writing files in gzip (.gz) format with
|
14
|
+
# an interface similar to that of IO. The gzip format is described in RFC 1952
|
15
|
+
# which is also a wrapper around a deflate stream.
|
16
|
+
#
|
17
|
+
# The zlib format was designed to be compact and fast for use in memory and on
|
18
|
+
# communications channels. The gzip format was designed for single-file
|
19
|
+
# compression on file systems, has a larger header than zlib to maintain
|
20
|
+
# directory information, and uses a different, slower check method than zlib.
|
21
|
+
#
|
22
|
+
# See your system's zlib.h for further information about zlib
|
23
|
+
#
|
24
|
+
# ## Sample usage
|
25
|
+
#
|
26
|
+
# Using the wrapper to compress strings with default parameters is quite simple:
|
27
|
+
#
|
28
|
+
# require "zlib"
|
29
|
+
#
|
30
|
+
# data_to_compress = File.read("don_quixote.txt")
|
31
|
+
#
|
32
|
+
# puts "Input size: #{data_to_compress.size}"
|
33
|
+
# #=> Input size: 2347740
|
34
|
+
#
|
35
|
+
# data_compressed = Zlib::Deflate.deflate(data_to_compress)
|
36
|
+
#
|
37
|
+
# puts "Compressed size: #{data_compressed.size}"
|
38
|
+
# #=> Compressed size: 887238
|
39
|
+
#
|
40
|
+
# uncompressed_data = Zlib::Inflate.inflate(data_compressed)
|
41
|
+
#
|
42
|
+
# puts "Uncompressed data is: #{uncompressed_data}"
|
43
|
+
# #=> Uncompressed data is: The Project Gutenberg EBook of Don Quixote...
|
44
|
+
#
|
45
|
+
# ## Class tree
|
46
|
+
#
|
47
|
+
# * Zlib::Deflate
|
48
|
+
# * Zlib::Inflate
|
49
|
+
# * Zlib::ZStream
|
50
|
+
# * Zlib::Error
|
51
|
+
# * Zlib::StreamEnd
|
52
|
+
# * Zlib::NeedDict
|
53
|
+
# * Zlib::DataError
|
54
|
+
# * Zlib::StreamError
|
55
|
+
# * Zlib::MemError
|
56
|
+
# * Zlib::BufError
|
57
|
+
# * Zlib::VersionError
|
58
|
+
# * Zlib::InProgressError
|
59
|
+
#
|
60
|
+
#
|
61
|
+
#
|
62
|
+
# (if you have GZIP_SUPPORT)
|
63
|
+
# * Zlib::GzipReader
|
64
|
+
# * Zlib::GzipWriter
|
65
|
+
# * Zlib::GzipFile
|
66
|
+
# * Zlib::GzipFile::Error
|
67
|
+
# * Zlib::GzipFile::LengthError
|
68
|
+
# * Zlib::GzipFile::CRCError
|
69
|
+
# * Zlib::GzipFile::NoFooter
|
70
|
+
#
|
71
|
+
module Zlib
|
72
|
+
# <!-- rdoc-file=ext/zlib/zlib.c -->
|
73
|
+
# Subclass of Zlib::Error when zlib returns a Z_BUF_ERROR.
|
74
|
+
#
|
75
|
+
# Usually if no progress is possible.
|
76
|
+
#
|
77
|
+
class BufError < Zlib::Error
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# <!-- rdoc-file=ext/zlib/zlib.c -->
|
2
|
+
# This module provides access to the [zlib library](http://zlib.net). Zlib is
|
3
|
+
# designed to be a portable, free, general-purpose, legally unencumbered -- that
|
4
|
+
# is, not covered by any patents -- lossless data-compression library for use on
|
5
|
+
# virtually any computer hardware and operating system.
|
6
|
+
#
|
7
|
+
# The zlib compression library provides in-memory compression and decompression
|
8
|
+
# functions, including integrity checks of the uncompressed data.
|
9
|
+
#
|
10
|
+
# The zlib compressed data format is described in RFC 1950, which is a wrapper
|
11
|
+
# around a deflate stream which is described in RFC 1951.
|
12
|
+
#
|
13
|
+
# The library also supports reading and writing files in gzip (.gz) format with
|
14
|
+
# an interface similar to that of IO. The gzip format is described in RFC 1952
|
15
|
+
# which is also a wrapper around a deflate stream.
|
16
|
+
#
|
17
|
+
# The zlib format was designed to be compact and fast for use in memory and on
|
18
|
+
# communications channels. The gzip format was designed for single-file
|
19
|
+
# compression on file systems, has a larger header than zlib to maintain
|
20
|
+
# directory information, and uses a different, slower check method than zlib.
|
21
|
+
#
|
22
|
+
# See your system's zlib.h for further information about zlib
|
23
|
+
#
|
24
|
+
# ## Sample usage
|
25
|
+
#
|
26
|
+
# Using the wrapper to compress strings with default parameters is quite simple:
|
27
|
+
#
|
28
|
+
# require "zlib"
|
29
|
+
#
|
30
|
+
# data_to_compress = File.read("don_quixote.txt")
|
31
|
+
#
|
32
|
+
# puts "Input size: #{data_to_compress.size}"
|
33
|
+
# #=> Input size: 2347740
|
34
|
+
#
|
35
|
+
# data_compressed = Zlib::Deflate.deflate(data_to_compress)
|
36
|
+
#
|
37
|
+
# puts "Compressed size: #{data_compressed.size}"
|
38
|
+
# #=> Compressed size: 887238
|
39
|
+
#
|
40
|
+
# uncompressed_data = Zlib::Inflate.inflate(data_compressed)
|
41
|
+
#
|
42
|
+
# puts "Uncompressed data is: #{uncompressed_data}"
|
43
|
+
# #=> Uncompressed data is: The Project Gutenberg EBook of Don Quixote...
|
44
|
+
#
|
45
|
+
# ## Class tree
|
46
|
+
#
|
47
|
+
# * Zlib::Deflate
|
48
|
+
# * Zlib::Inflate
|
49
|
+
# * Zlib::ZStream
|
50
|
+
# * Zlib::Error
|
51
|
+
# * Zlib::StreamEnd
|
52
|
+
# * Zlib::NeedDict
|
53
|
+
# * Zlib::DataError
|
54
|
+
# * Zlib::StreamError
|
55
|
+
# * Zlib::MemError
|
56
|
+
# * Zlib::BufError
|
57
|
+
# * Zlib::VersionError
|
58
|
+
# * Zlib::InProgressError
|
59
|
+
#
|
60
|
+
#
|
61
|
+
#
|
62
|
+
# (if you have GZIP_SUPPORT)
|
63
|
+
# * Zlib::GzipReader
|
64
|
+
# * Zlib::GzipWriter
|
65
|
+
# * Zlib::GzipFile
|
66
|
+
# * Zlib::GzipFile::Error
|
67
|
+
# * Zlib::GzipFile::LengthError
|
68
|
+
# * Zlib::GzipFile::CRCError
|
69
|
+
# * Zlib::GzipFile::NoFooter
|
70
|
+
#
|
71
|
+
module Zlib
|
72
|
+
# <!-- rdoc-file=ext/zlib/zlib.c -->
|
73
|
+
# Subclass of Zlib::Error when zlib returns a Z_DATA_ERROR.
|
74
|
+
#
|
75
|
+
# Usually if a stream was prematurely freed.
|
76
|
+
#
|
77
|
+
class DataError < Zlib::Error
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,276 @@
|
|
1
|
+
# <!-- rdoc-file=ext/zlib/zlib.c -->
|
2
|
+
# This module provides access to the [zlib library](http://zlib.net). Zlib is
|
3
|
+
# designed to be a portable, free, general-purpose, legally unencumbered -- that
|
4
|
+
# is, not covered by any patents -- lossless data-compression library for use on
|
5
|
+
# virtually any computer hardware and operating system.
|
6
|
+
#
|
7
|
+
# The zlib compression library provides in-memory compression and decompression
|
8
|
+
# functions, including integrity checks of the uncompressed data.
|
9
|
+
#
|
10
|
+
# The zlib compressed data format is described in RFC 1950, which is a wrapper
|
11
|
+
# around a deflate stream which is described in RFC 1951.
|
12
|
+
#
|
13
|
+
# The library also supports reading and writing files in gzip (.gz) format with
|
14
|
+
# an interface similar to that of IO. The gzip format is described in RFC 1952
|
15
|
+
# which is also a wrapper around a deflate stream.
|
16
|
+
#
|
17
|
+
# The zlib format was designed to be compact and fast for use in memory and on
|
18
|
+
# communications channels. The gzip format was designed for single-file
|
19
|
+
# compression on file systems, has a larger header than zlib to maintain
|
20
|
+
# directory information, and uses a different, slower check method than zlib.
|
21
|
+
#
|
22
|
+
# See your system's zlib.h for further information about zlib
|
23
|
+
#
|
24
|
+
# ## Sample usage
|
25
|
+
#
|
26
|
+
# Using the wrapper to compress strings with default parameters is quite simple:
|
27
|
+
#
|
28
|
+
# require "zlib"
|
29
|
+
#
|
30
|
+
# data_to_compress = File.read("don_quixote.txt")
|
31
|
+
#
|
32
|
+
# puts "Input size: #{data_to_compress.size}"
|
33
|
+
# #=> Input size: 2347740
|
34
|
+
#
|
35
|
+
# data_compressed = Zlib::Deflate.deflate(data_to_compress)
|
36
|
+
#
|
37
|
+
# puts "Compressed size: #{data_compressed.size}"
|
38
|
+
# #=> Compressed size: 887238
|
39
|
+
#
|
40
|
+
# uncompressed_data = Zlib::Inflate.inflate(data_compressed)
|
41
|
+
#
|
42
|
+
# puts "Uncompressed data is: #{uncompressed_data}"
|
43
|
+
# #=> Uncompressed data is: The Project Gutenberg EBook of Don Quixote...
|
44
|
+
#
|
45
|
+
# ## Class tree
|
46
|
+
#
|
47
|
+
# * Zlib::Deflate
|
48
|
+
# * Zlib::Inflate
|
49
|
+
# * Zlib::ZStream
|
50
|
+
# * Zlib::Error
|
51
|
+
# * Zlib::StreamEnd
|
52
|
+
# * Zlib::NeedDict
|
53
|
+
# * Zlib::DataError
|
54
|
+
# * Zlib::StreamError
|
55
|
+
# * Zlib::MemError
|
56
|
+
# * Zlib::BufError
|
57
|
+
# * Zlib::VersionError
|
58
|
+
# * Zlib::InProgressError
|
59
|
+
#
|
60
|
+
#
|
61
|
+
#
|
62
|
+
# (if you have GZIP_SUPPORT)
|
63
|
+
# * Zlib::GzipReader
|
64
|
+
# * Zlib::GzipWriter
|
65
|
+
# * Zlib::GzipFile
|
66
|
+
# * Zlib::GzipFile::Error
|
67
|
+
# * Zlib::GzipFile::LengthError
|
68
|
+
# * Zlib::GzipFile::CRCError
|
69
|
+
# * Zlib::GzipFile::NoFooter
|
70
|
+
#
|
71
|
+
module Zlib
|
72
|
+
# <!-- rdoc-file=ext/zlib/zlib.c -->
|
73
|
+
# Zlib::Deflate is the class for compressing data. See Zlib::ZStream for more
|
74
|
+
# information.
|
75
|
+
#
|
76
|
+
class Deflate < Zlib::ZStream
|
77
|
+
type compression_level = Integer
|
78
|
+
|
79
|
+
# <!--
|
80
|
+
# rdoc-file=ext/zlib/zlib.c
|
81
|
+
# - Zlib.deflate(string[, level])
|
82
|
+
# - Zlib::Deflate.deflate(string[, level])
|
83
|
+
# -->
|
84
|
+
# Compresses the given `string`. Valid values of level are Zlib::NO_COMPRESSION,
|
85
|
+
# Zlib::BEST_SPEED, Zlib::BEST_COMPRESSION, Zlib::DEFAULT_COMPRESSION, or an
|
86
|
+
# integer from 0 to 9.
|
87
|
+
#
|
88
|
+
# This method is almost equivalent to the following code:
|
89
|
+
#
|
90
|
+
# def deflate(string, level)
|
91
|
+
# z = Zlib::Deflate.new(level)
|
92
|
+
# dst = z.deflate(string, Zlib::FINISH)
|
93
|
+
# z.close
|
94
|
+
# dst
|
95
|
+
# end
|
96
|
+
#
|
97
|
+
# See also Zlib.inflate
|
98
|
+
#
|
99
|
+
def self.deflate: (string string, ?compression_level level) -> String
|
100
|
+
|
101
|
+
public
|
102
|
+
|
103
|
+
# <!--
|
104
|
+
# rdoc-file=ext/zlib/zlib.c
|
105
|
+
# - << string
|
106
|
+
# -->
|
107
|
+
# Inputs `string` into the deflate stream just like Zlib::Deflate#deflate, but
|
108
|
+
# returns the Zlib::Deflate object itself. The output from the stream is
|
109
|
+
# preserved in output buffer.
|
110
|
+
#
|
111
|
+
def <<: (string string) -> self
|
112
|
+
|
113
|
+
# <!--
|
114
|
+
# rdoc-file=ext/zlib/zlib.c
|
115
|
+
# - z.deflate(string, flush = Zlib::NO_FLUSH) -> String
|
116
|
+
# - z.deflate(string, flush = Zlib::NO_FLUSH) { |chunk| ... } -> nil
|
117
|
+
# -->
|
118
|
+
# Inputs `string` into the deflate stream and returns the output from the
|
119
|
+
# stream. On calling this method, both the input and the output buffers of the
|
120
|
+
# stream are flushed. If `string` is nil, this method finishes the stream, just
|
121
|
+
# like Zlib::ZStream#finish.
|
122
|
+
#
|
123
|
+
# If a block is given consecutive deflated chunks from the `string` are yielded
|
124
|
+
# to the block and `nil` is returned.
|
125
|
+
#
|
126
|
+
# The `flush` parameter specifies the flush mode. The following constants may
|
127
|
+
# be used:
|
128
|
+
#
|
129
|
+
# Zlib::NO_FLUSH
|
130
|
+
# : The default
|
131
|
+
# Zlib::SYNC_FLUSH
|
132
|
+
# : Flushes the output to a byte boundary
|
133
|
+
# Zlib::FULL_FLUSH
|
134
|
+
# : SYNC_FLUSH + resets the compression state
|
135
|
+
# Zlib::FINISH
|
136
|
+
# : Pending input is processed, pending output is flushed.
|
137
|
+
#
|
138
|
+
#
|
139
|
+
# See the constants for further description.
|
140
|
+
#
|
141
|
+
def deflate: (string string, ?Integer flush) -> String
|
142
|
+
| (string string, ?Integer flush) { (String chunk) -> nil } -> nil
|
143
|
+
|
144
|
+
# <!--
|
145
|
+
# rdoc-file=ext/zlib/zlib.c
|
146
|
+
# - flush(flush = Zlib::SYNC_FLUSH) -> String
|
147
|
+
# - flush(flush = Zlib::SYNC_FLUSH) { |chunk| ... } -> nil
|
148
|
+
# -->
|
149
|
+
# This method is equivalent to `deflate('', flush)`. This method is just
|
150
|
+
# provided to improve the readability of your Ruby program. If a block is given
|
151
|
+
# chunks of deflate output are yielded to the block until the buffer is flushed.
|
152
|
+
#
|
153
|
+
# See Zlib::Deflate#deflate for detail on the `flush` constants NO_FLUSH,
|
154
|
+
# SYNC_FLUSH, FULL_FLUSH and FINISH.
|
155
|
+
#
|
156
|
+
def flush: (?Integer flush) -> String
|
157
|
+
| (?Integer flush) {(String chunk) -> nil } -> nil
|
158
|
+
|
159
|
+
# <!--
|
160
|
+
# rdoc-file=ext/zlib/zlib.c
|
161
|
+
# - params(level, strategy)
|
162
|
+
# -->
|
163
|
+
# Changes the parameters of the deflate stream to allow changes between
|
164
|
+
# different types of data that require different types of compression. Any
|
165
|
+
# unprocessed data is flushed before changing the params.
|
166
|
+
#
|
167
|
+
# See Zlib::Deflate.new for a description of `level` and `strategy`.
|
168
|
+
#
|
169
|
+
def params: (compression_level level, Integer strategy) -> void
|
170
|
+
|
171
|
+
# <!--
|
172
|
+
# rdoc-file=ext/zlib/zlib.c
|
173
|
+
# - set_dictionary(string)
|
174
|
+
# -->
|
175
|
+
# Sets the preset dictionary and returns `string`. This method is available just
|
176
|
+
# only after Zlib::Deflate.new or Zlib::ZStream#reset method was called. See
|
177
|
+
# zlib.h for details.
|
178
|
+
#
|
179
|
+
# Can raise errors of Z_STREAM_ERROR if a parameter is invalid (such as NULL
|
180
|
+
# dictionary) or the stream state is inconsistent, Z_DATA_ERROR if the given
|
181
|
+
# dictionary doesn't match the expected one (incorrect adler32 value)
|
182
|
+
#
|
183
|
+
def set_dictionary: (String dictionary) -> String
|
184
|
+
|
185
|
+
private
|
186
|
+
|
187
|
+
# <!--
|
188
|
+
# rdoc-file=ext/zlib/zlib.c
|
189
|
+
# - Zlib::Deflate.new(level=DEFAULT_COMPRESSION, window_bits=MAX_WBITS, mem_level=DEF_MEM_LEVEL, strategy=DEFAULT_STRATEGY)
|
190
|
+
# -->
|
191
|
+
# Creates a new deflate stream for compression. If a given argument is nil, the
|
192
|
+
# default value of that argument is used.
|
193
|
+
#
|
194
|
+
# The `level` sets the compression level for the deflate stream between 0 (no
|
195
|
+
# compression) and 9 (best compression). The following constants have been
|
196
|
+
# defined to make code more readable:
|
197
|
+
#
|
198
|
+
# * Zlib::DEFAULT_COMPRESSION
|
199
|
+
# * Zlib::NO_COMPRESSION
|
200
|
+
# * Zlib::BEST_SPEED
|
201
|
+
# * Zlib::BEST_COMPRESSION
|
202
|
+
#
|
203
|
+
#
|
204
|
+
# See http://www.zlib.net/manual.html#Constants for further information.
|
205
|
+
#
|
206
|
+
# The `window_bits` sets the size of the history buffer and should be between 8
|
207
|
+
# and 15. Larger values of this parameter result in better compression at the
|
208
|
+
# expense of memory usage.
|
209
|
+
#
|
210
|
+
# The `mem_level` specifies how much memory should be allocated for the internal
|
211
|
+
# compression state. 1 uses minimum memory but is slow and reduces compression
|
212
|
+
# ratio while 9 uses maximum memory for optimal speed. The default value is 8.
|
213
|
+
# Two constants are defined:
|
214
|
+
#
|
215
|
+
# * Zlib::DEF_MEM_LEVEL
|
216
|
+
# * Zlib::MAX_MEM_LEVEL
|
217
|
+
#
|
218
|
+
#
|
219
|
+
# The `strategy` sets the deflate compression strategy. The following
|
220
|
+
# strategies are available:
|
221
|
+
#
|
222
|
+
# Zlib::DEFAULT_STRATEGY
|
223
|
+
# : For normal data
|
224
|
+
# Zlib::FILTERED
|
225
|
+
# : For data produced by a filter or predictor
|
226
|
+
# Zlib::FIXED
|
227
|
+
# : Prevents dynamic Huffman codes
|
228
|
+
# Zlib::HUFFMAN_ONLY
|
229
|
+
# : Prevents string matching
|
230
|
+
# Zlib::RLE
|
231
|
+
# : Designed for better compression of PNG image data
|
232
|
+
#
|
233
|
+
#
|
234
|
+
# See the constants for further description.
|
235
|
+
#
|
236
|
+
# ## Examples
|
237
|
+
#
|
238
|
+
# ### Basic
|
239
|
+
#
|
240
|
+
# open "compressed.file", "w+" do |io|
|
241
|
+
# io << Zlib::Deflate.new.deflate(File.read("big.file"))
|
242
|
+
# end
|
243
|
+
#
|
244
|
+
# ### Custom compression
|
245
|
+
#
|
246
|
+
# open "compressed.file", "w+" do |compressed_io|
|
247
|
+
# deflate = Zlib::Deflate.new(Zlib::BEST_COMPRESSION,
|
248
|
+
# Zlib::MAX_WBITS,
|
249
|
+
# Zlib::MAX_MEM_LEVEL,
|
250
|
+
# Zlib::HUFFMAN_ONLY)
|
251
|
+
#
|
252
|
+
# begin
|
253
|
+
# open "big.file" do |big_io|
|
254
|
+
# until big_io.eof? do
|
255
|
+
# compressed_io << zd.deflate(big_io.read(16384))
|
256
|
+
# end
|
257
|
+
# end
|
258
|
+
# ensure
|
259
|
+
# deflate.close
|
260
|
+
# end
|
261
|
+
# end
|
262
|
+
#
|
263
|
+
# While this example will work, for best optimization review the flags for your
|
264
|
+
# specific time, memory usage and output space requirements.
|
265
|
+
#
|
266
|
+
def initialize: (?compression_level level, ?Integer window_bits, ?Integer mem_level, ?Integer strategy) -> void
|
267
|
+
|
268
|
+
# <!--
|
269
|
+
# rdoc-file=ext/zlib/zlib.c
|
270
|
+
# - initialize_copy(p1)
|
271
|
+
# -->
|
272
|
+
# Duplicates the deflate stream.
|
273
|
+
#
|
274
|
+
def initialize_copy: (self other) -> self
|
275
|
+
end
|
276
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# <!-- rdoc-file=ext/zlib/zlib.c -->
|
2
|
+
# This module provides access to the [zlib library](http://zlib.net). Zlib is
|
3
|
+
# designed to be a portable, free, general-purpose, legally unencumbered -- that
|
4
|
+
# is, not covered by any patents -- lossless data-compression library for use on
|
5
|
+
# virtually any computer hardware and operating system.
|
6
|
+
#
|
7
|
+
# The zlib compression library provides in-memory compression and decompression
|
8
|
+
# functions, including integrity checks of the uncompressed data.
|
9
|
+
#
|
10
|
+
# The zlib compressed data format is described in RFC 1950, which is a wrapper
|
11
|
+
# around a deflate stream which is described in RFC 1951.
|
12
|
+
#
|
13
|
+
# The library also supports reading and writing files in gzip (.gz) format with
|
14
|
+
# an interface similar to that of IO. The gzip format is described in RFC 1952
|
15
|
+
# which is also a wrapper around a deflate stream.
|
16
|
+
#
|
17
|
+
# The zlib format was designed to be compact and fast for use in memory and on
|
18
|
+
# communications channels. The gzip format was designed for single-file
|
19
|
+
# compression on file systems, has a larger header than zlib to maintain
|
20
|
+
# directory information, and uses a different, slower check method than zlib.
|
21
|
+
#
|
22
|
+
# See your system's zlib.h for further information about zlib
|
23
|
+
#
|
24
|
+
# ## Sample usage
|
25
|
+
#
|
26
|
+
# Using the wrapper to compress strings with default parameters is quite simple:
|
27
|
+
#
|
28
|
+
# require "zlib"
|
29
|
+
#
|
30
|
+
# data_to_compress = File.read("don_quixote.txt")
|
31
|
+
#
|
32
|
+
# puts "Input size: #{data_to_compress.size}"
|
33
|
+
# #=> Input size: 2347740
|
34
|
+
#
|
35
|
+
# data_compressed = Zlib::Deflate.deflate(data_to_compress)
|
36
|
+
#
|
37
|
+
# puts "Compressed size: #{data_compressed.size}"
|
38
|
+
# #=> Compressed size: 887238
|
39
|
+
#
|
40
|
+
# uncompressed_data = Zlib::Inflate.inflate(data_compressed)
|
41
|
+
#
|
42
|
+
# puts "Uncompressed data is: #{uncompressed_data}"
|
43
|
+
# #=> Uncompressed data is: The Project Gutenberg EBook of Don Quixote...
|
44
|
+
#
|
45
|
+
# ## Class tree
|
46
|
+
#
|
47
|
+
# * Zlib::Deflate
|
48
|
+
# * Zlib::Inflate
|
49
|
+
# * Zlib::ZStream
|
50
|
+
# * Zlib::Error
|
51
|
+
# * Zlib::StreamEnd
|
52
|
+
# * Zlib::NeedDict
|
53
|
+
# * Zlib::DataError
|
54
|
+
# * Zlib::StreamError
|
55
|
+
# * Zlib::MemError
|
56
|
+
# * Zlib::BufError
|
57
|
+
# * Zlib::VersionError
|
58
|
+
# * Zlib::InProgressError
|
59
|
+
#
|
60
|
+
#
|
61
|
+
#
|
62
|
+
# (if you have GZIP_SUPPORT)
|
63
|
+
# * Zlib::GzipReader
|
64
|
+
# * Zlib::GzipWriter
|
65
|
+
# * Zlib::GzipFile
|
66
|
+
# * Zlib::GzipFile::Error
|
67
|
+
# * Zlib::GzipFile::LengthError
|
68
|
+
# * Zlib::GzipFile::CRCError
|
69
|
+
# * Zlib::GzipFile::NoFooter
|
70
|
+
#
|
71
|
+
module Zlib
|
72
|
+
# <!-- rdoc-file=ext/zlib/zlib.c -->
|
73
|
+
# The superclass for all exceptions raised by Ruby/zlib.
|
74
|
+
#
|
75
|
+
# The following exceptions are defined as subclasses of Zlib::Error. These
|
76
|
+
# exceptions are raised when zlib library functions return with an error status.
|
77
|
+
#
|
78
|
+
# * Zlib::StreamEnd
|
79
|
+
# * Zlib::NeedDict
|
80
|
+
# * Zlib::DataError
|
81
|
+
# * Zlib::StreamError
|
82
|
+
# * Zlib::MemError
|
83
|
+
# * Zlib::BufError
|
84
|
+
# * Zlib::VersionError
|
85
|
+
# * Zlib::InProgressError
|
86
|
+
#
|
87
|
+
class Error < StandardError
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
# <!-- rdoc-file=ext/zlib/zlib.c -->
|
2
|
+
# This module provides access to the [zlib library](http://zlib.net). Zlib is
|
3
|
+
# designed to be a portable, free, general-purpose, legally unencumbered -- that
|
4
|
+
# is, not covered by any patents -- lossless data-compression library for use on
|
5
|
+
# virtually any computer hardware and operating system.
|
6
|
+
#
|
7
|
+
# The zlib compression library provides in-memory compression and decompression
|
8
|
+
# functions, including integrity checks of the uncompressed data.
|
9
|
+
#
|
10
|
+
# The zlib compressed data format is described in RFC 1950, which is a wrapper
|
11
|
+
# around a deflate stream which is described in RFC 1951.
|
12
|
+
#
|
13
|
+
# The library also supports reading and writing files in gzip (.gz) format with
|
14
|
+
# an interface similar to that of IO. The gzip format is described in RFC 1952
|
15
|
+
# which is also a wrapper around a deflate stream.
|
16
|
+
#
|
17
|
+
# The zlib format was designed to be compact and fast for use in memory and on
|
18
|
+
# communications channels. The gzip format was designed for single-file
|
19
|
+
# compression on file systems, has a larger header than zlib to maintain
|
20
|
+
# directory information, and uses a different, slower check method than zlib.
|
21
|
+
#
|
22
|
+
# See your system's zlib.h for further information about zlib
|
23
|
+
#
|
24
|
+
# ## Sample usage
|
25
|
+
#
|
26
|
+
# Using the wrapper to compress strings with default parameters is quite simple:
|
27
|
+
#
|
28
|
+
# require "zlib"
|
29
|
+
#
|
30
|
+
# data_to_compress = File.read("don_quixote.txt")
|
31
|
+
#
|
32
|
+
# puts "Input size: #{data_to_compress.size}"
|
33
|
+
# #=> Input size: 2347740
|
34
|
+
#
|
35
|
+
# data_compressed = Zlib::Deflate.deflate(data_to_compress)
|
36
|
+
#
|
37
|
+
# puts "Compressed size: #{data_compressed.size}"
|
38
|
+
# #=> Compressed size: 887238
|
39
|
+
#
|
40
|
+
# uncompressed_data = Zlib::Inflate.inflate(data_compressed)
|
41
|
+
#
|
42
|
+
# puts "Uncompressed data is: #{uncompressed_data}"
|
43
|
+
# #=> Uncompressed data is: The Project Gutenberg EBook of Don Quixote...
|
44
|
+
#
|
45
|
+
# ## Class tree
|
46
|
+
#
|
47
|
+
# * Zlib::Deflate
|
48
|
+
# * Zlib::Inflate
|
49
|
+
# * Zlib::ZStream
|
50
|
+
# * Zlib::Error
|
51
|
+
# * Zlib::StreamEnd
|
52
|
+
# * Zlib::NeedDict
|
53
|
+
# * Zlib::DataError
|
54
|
+
# * Zlib::StreamError
|
55
|
+
# * Zlib::MemError
|
56
|
+
# * Zlib::BufError
|
57
|
+
# * Zlib::VersionError
|
58
|
+
# * Zlib::InProgressError
|
59
|
+
#
|
60
|
+
#
|
61
|
+
#
|
62
|
+
# (if you have GZIP_SUPPORT)
|
63
|
+
# * Zlib::GzipReader
|
64
|
+
# * Zlib::GzipWriter
|
65
|
+
# * Zlib::GzipFile
|
66
|
+
# * Zlib::GzipFile::Error
|
67
|
+
# * Zlib::GzipFile::LengthError
|
68
|
+
# * Zlib::GzipFile::CRCError
|
69
|
+
# * Zlib::GzipFile::NoFooter
|
70
|
+
#
|
71
|
+
module Zlib
|
72
|
+
# <!-- rdoc-file=ext/zlib/zlib.c -->
|
73
|
+
# Zlib::GzipFile is an abstract class for handling a gzip formatted compressed
|
74
|
+
# file. The operations are defined in the subclasses, Zlib::GzipReader for
|
75
|
+
# reading, and Zlib::GzipWriter for writing.
|
76
|
+
#
|
77
|
+
# GzipReader should be used by associating an IO, or IO-like, object.
|
78
|
+
#
|
79
|
+
# ## Method Catalogue
|
80
|
+
#
|
81
|
+
# * ::wrap
|
82
|
+
# * ::open (Zlib::GzipReader::open and Zlib::GzipWriter::open)
|
83
|
+
# * #close
|
84
|
+
# * #closed?
|
85
|
+
# * #comment
|
86
|
+
# * comment= (Zlib::GzipWriter#comment=)
|
87
|
+
# * #crc
|
88
|
+
# * eof? (Zlib::GzipReader#eof?)
|
89
|
+
# * #finish
|
90
|
+
# * #level
|
91
|
+
# * lineno (Zlib::GzipReader#lineno)
|
92
|
+
# * lineno= (Zlib::GzipReader#lineno=)
|
93
|
+
# * #mtime
|
94
|
+
# * mtime= (Zlib::GzipWriter#mtime=)
|
95
|
+
# * #orig_name
|
96
|
+
# * orig_name (Zlib::GzipWriter#orig_name=)
|
97
|
+
# * #os_code
|
98
|
+
# * path (when the underlying IO supports #path)
|
99
|
+
# * #sync
|
100
|
+
# * #sync=
|
101
|
+
# * #to_io
|
102
|
+
#
|
103
|
+
#
|
104
|
+
# (due to internal structure, documentation may appear under Zlib::GzipReader or
|
105
|
+
# Zlib::GzipWriter)
|
106
|
+
#
|
107
|
+
class GzipFile
|
108
|
+
# <!-- rdoc-file=ext/zlib/zlib.c -->
|
109
|
+
# Raised when the CRC checksum recorded in gzip file footer is not equivalent to
|
110
|
+
# the CRC checksum of the actual uncompressed data.
|
111
|
+
#
|
112
|
+
class CRCError < Zlib::GzipFile::Error
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|