rbs 3.1.3 → 3.2.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|