rbs 0.6.0 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +32 -0
- data/lib/rbs/ast/comment.rb +6 -0
- data/lib/rbs/cli.rb +21 -3
- data/lib/rbs/constant_table.rb +1 -1
- data/lib/rbs/definition.rb +4 -2
- data/lib/rbs/definition_builder.rb +264 -96
- data/lib/rbs/environment.rb +1 -1
- data/lib/rbs/errors.rb +25 -0
- data/lib/rbs/location.rb +15 -0
- data/lib/rbs/parser.y +29 -17
- data/lib/rbs/prototype/rb.rb +1 -1
- data/lib/rbs/substitution.rb +6 -2
- data/lib/rbs/test.rb +1 -0
- data/lib/rbs/test/errors.rb +5 -1
- data/lib/rbs/test/hook.rb +1 -0
- data/lib/rbs/test/setup.rb +33 -15
- data/lib/rbs/test/setup_helper.rb +29 -0
- data/lib/rbs/test/tester.rb +59 -15
- data/lib/rbs/test/type_check.rb +32 -16
- data/lib/rbs/validator.rb +4 -0
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/writer.rb +7 -2
- data/stdlib/builtin/enumerable.rbs +2 -2
- data/stdlib/json/json.rbs +6 -0
- data/stdlib/pty/pty.rbs +159 -0
- data/stdlib/zlib/zlib.rbs +392 -0
- metadata +5 -2
data/lib/rbs/test/type_check.rb
CHANGED
@@ -3,11 +3,17 @@ module RBS
|
|
3
3
|
class TypeCheck
|
4
4
|
attr_reader :self_class
|
5
5
|
attr_reader :builder
|
6
|
+
attr_reader :sample_size
|
6
7
|
|
7
|
-
|
8
|
+
attr_reader :const_cache
|
9
|
+
|
10
|
+
DEFAULT_SAMPLE_SIZE = 100
|
11
|
+
|
12
|
+
def initialize(self_class:, builder:, sample_size:)
|
8
13
|
@self_class = self_class
|
9
14
|
@builder = builder
|
10
|
-
@
|
15
|
+
@sample_size = sample_size
|
16
|
+
@const_cache = {}
|
11
17
|
end
|
12
18
|
|
13
19
|
def overloaded_call(method, method_name, call, errors:)
|
@@ -176,12 +182,25 @@ module RBS
|
|
176
182
|
end
|
177
183
|
end
|
178
184
|
|
179
|
-
def
|
180
|
-
|
185
|
+
def each_sample(array, &block)
|
186
|
+
if block
|
187
|
+
if sample_size && array.size > sample_size
|
188
|
+
if sample_size > 0
|
189
|
+
size = array.size
|
190
|
+
sample_size.times do
|
191
|
+
yield array[rand(size)]
|
192
|
+
end
|
193
|
+
end
|
194
|
+
else
|
195
|
+
array.each(&block)
|
196
|
+
end
|
197
|
+
else
|
198
|
+
enum_for :each_sample, array
|
199
|
+
end
|
181
200
|
end
|
182
201
|
|
183
|
-
def
|
184
|
-
|
202
|
+
def get_class(type_name)
|
203
|
+
const_cache[type_name] ||= Object.const_get(type_name.to_s)
|
185
204
|
end
|
186
205
|
|
187
206
|
def value(val, type)
|
@@ -205,17 +224,14 @@ module RBS
|
|
205
224
|
when Types::Bases::Instance
|
206
225
|
Test.call(val, IS_AP, self_class)
|
207
226
|
when Types::ClassInstance
|
208
|
-
klass =
|
227
|
+
klass = get_class(type.name)
|
209
228
|
case
|
210
229
|
when klass == ::Array
|
211
|
-
Test.call(val, IS_AP, klass) &&
|
212
|
-
val.all? {|v| value(v, type.args[0]) }
|
213
|
-
end
|
230
|
+
Test.call(val, IS_AP, klass) && each_sample(val).all? {|v| value(v, type.args[0]) }
|
214
231
|
when klass == ::Hash
|
215
|
-
Test.call(val, IS_AP, klass) &&
|
216
|
-
|
217
|
-
|
218
|
-
end
|
232
|
+
Test.call(val, IS_AP, klass) && each_sample(val.keys).all? do |key|
|
233
|
+
value(key, type.args[0]) && value(val[key], type.args[1])
|
234
|
+
end
|
219
235
|
when klass == ::Range
|
220
236
|
Test.call(val, IS_AP, klass) && value(val.begin, type.args[0]) && value(val.end, type.args[0])
|
221
237
|
when klass == ::Enumerator
|
@@ -236,7 +252,7 @@ module RBS
|
|
236
252
|
end
|
237
253
|
end
|
238
254
|
|
239
|
-
|
255
|
+
each_sample(values).all? do |v|
|
240
256
|
if v.size == 1
|
241
257
|
# Only one block argument.
|
242
258
|
value(v[0], type.args[0]) || value(v, type.args[0])
|
@@ -254,7 +270,7 @@ module RBS
|
|
254
270
|
Test.call(val, IS_AP, klass)
|
255
271
|
end
|
256
272
|
when Types::ClassSingleton
|
257
|
-
klass =
|
273
|
+
klass = get_class(type.name)
|
258
274
|
val == klass
|
259
275
|
when Types::Interface
|
260
276
|
methods = Set.new(Test.call(val, METHODS))
|
data/lib/rbs/validator.rb
CHANGED
@@ -41,6 +41,10 @@ module RBS
|
|
41
41
|
params: type_params.each.map(&:name),
|
42
42
|
location: type.location
|
43
43
|
)
|
44
|
+
|
45
|
+
when Types::Alias, Types::ClassSingleton
|
46
|
+
type = absolute_type(type, context: context) { type.name.absolute! }
|
47
|
+
NoTypeFoundError.check!(type.name, env: env, location: type.location)
|
44
48
|
end
|
45
49
|
|
46
50
|
type.each_type do |type|
|
data/lib/rbs/version.rb
CHANGED
data/lib/rbs/writer.rb
CHANGED
@@ -251,8 +251,7 @@ module RBS
|
|
251
251
|
string = ""
|
252
252
|
|
253
253
|
attrs = member.attributes.empty? ? "" : member.attributes.join(" ") + " "
|
254
|
-
|
255
|
-
prefix = "#{overload}#{attrs}def #{name}:"
|
254
|
+
prefix = "#{attrs}def #{name}:"
|
256
255
|
padding = " " * (prefix.size-1)
|
257
256
|
|
258
257
|
string << prefix
|
@@ -266,6 +265,12 @@ module RBS
|
|
266
265
|
string << " #{type}\n"
|
267
266
|
end
|
268
267
|
|
268
|
+
if member.overload
|
269
|
+
string << padding
|
270
|
+
string << "|"
|
271
|
+
string << " ...\n"
|
272
|
+
end
|
273
|
+
|
269
274
|
string.each_line do |line|
|
270
275
|
puts line.chomp
|
271
276
|
end
|
@@ -46,7 +46,7 @@ module Enumerable[unchecked out Elem, out Return]: _Each[Elem, Return]
|
|
46
46
|
| () { (Elem arg0) -> untyped } -> bool
|
47
47
|
|
48
48
|
def collect: [U] () { (Elem arg0) -> U } -> ::Array[U]
|
49
|
-
| () -> ::Enumerator[Elem,
|
49
|
+
| () -> ::Enumerator[Elem, ::Array[untyped]]
|
50
50
|
|
51
51
|
def collect_concat: [U] () { (Elem arg0) -> ::Enumerator[U, untyped] } -> ::Array[U]
|
52
52
|
|
@@ -317,7 +317,7 @@ module Enumerable[unchecked out Elem, out Return]: _Each[Elem, Return]
|
|
317
317
|
| () -> ::Enumerator[Elem, Return]
|
318
318
|
|
319
319
|
def map: [U] () { (Elem arg0) -> U } -> ::Array[U]
|
320
|
-
| () -> ::Enumerator[Elem,
|
320
|
+
| () -> ::Enumerator[Elem, ::Array[untyped]]
|
321
321
|
|
322
322
|
def member?: (untyped arg0) -> bool
|
323
323
|
|
data/stdlib/json/json.rbs
CHANGED
@@ -42,6 +42,9 @@ end
|
|
42
42
|
class JSON::Ext::Generator::State
|
43
43
|
end
|
44
44
|
|
45
|
+
class JSON::Ext::Parser
|
46
|
+
end
|
47
|
+
|
45
48
|
module JSON::Pure
|
46
49
|
end
|
47
50
|
|
@@ -51,6 +54,9 @@ end
|
|
51
54
|
class JSON::Pure::Generator::State
|
52
55
|
end
|
53
56
|
|
57
|
+
class JSON::Pure::Parser
|
58
|
+
end
|
59
|
+
|
54
60
|
type json_generator = singleton(::JSON::Ext::Generator) | singleton(::JSON::Pure::Generator)
|
55
61
|
type json_parser = singleton(::JSON::Ext::Parser) | singleton(::JSON::Pure::Parser)
|
56
62
|
type json_state = singleton(JSON::Ext::Generator::State) | singleton(JSON::Pure::Generator::State)
|
data/stdlib/pty/pty.rbs
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
# Creates and manages pseudo terminals (PTYs). See also
|
2
|
+
# http://en.wikipedia.org/wiki/Pseudo_terminal
|
3
|
+
#
|
4
|
+
# PTY allows you to allocate new terminals using ::open or ::spawn a new
|
5
|
+
# terminal with a specific command.
|
6
|
+
#
|
7
|
+
# ## Example
|
8
|
+
#
|
9
|
+
# In this example we will change the buffering type in the `factor` command,
|
10
|
+
# assuming that factor uses stdio for stdout buffering.
|
11
|
+
#
|
12
|
+
# If IO.pipe is used instead of PTY.open, this code deadlocks because factor's
|
13
|
+
# stdout is fully buffered.
|
14
|
+
#
|
15
|
+
# # start by requiring the standard library PTY
|
16
|
+
# require 'pty'
|
17
|
+
#
|
18
|
+
# master, slave = PTY.open
|
19
|
+
# read, write = IO.pipe
|
20
|
+
# pid = spawn("factor", :in=>read, :out=>slave)
|
21
|
+
# read.close # we dont need the read
|
22
|
+
# slave.close # or the slave
|
23
|
+
#
|
24
|
+
# # pipe "42" to the factor command
|
25
|
+
# write.puts "42"
|
26
|
+
# # output the response from factor
|
27
|
+
# p master.gets #=> "42: 2 3 7\n"
|
28
|
+
#
|
29
|
+
# # pipe "144" to factor and print out the response
|
30
|
+
# write.puts "144"
|
31
|
+
# p master.gets #=> "144: 2 2 2 2 3 3\n"
|
32
|
+
# write.close # close the pipe
|
33
|
+
#
|
34
|
+
# # The result of read operation when pty slave is closed is platform
|
35
|
+
# # dependent.
|
36
|
+
# ret = begin
|
37
|
+
# master.gets # FreeBSD returns nil.
|
38
|
+
# rescue Errno::EIO # GNU/Linux raises EIO.
|
39
|
+
# nil
|
40
|
+
# end
|
41
|
+
# p ret #=> nil
|
42
|
+
#
|
43
|
+
# ## License
|
44
|
+
#
|
45
|
+
# C) Copyright 1998 by Akinori Ito.
|
46
|
+
#
|
47
|
+
# This software may be redistributed freely for this purpose, in full
|
48
|
+
# or in part, provided that this entire copyright notice is included
|
49
|
+
# on any copies of this software and applications and derivations thereof.
|
50
|
+
#
|
51
|
+
# This software is provided on an "as is" basis, without warranty of any
|
52
|
+
# kind, either expressed or implied, as to any matter including, but not
|
53
|
+
# limited to warranty of fitness of purpose, or merchantability, or
|
54
|
+
# results obtained from use of this software.
|
55
|
+
#
|
56
|
+
module PTY
|
57
|
+
# Checks the status of the child process specified by `pid`. Returns `nil` if
|
58
|
+
# the process is still alive.
|
59
|
+
#
|
60
|
+
# If the process is not alive, and `raise` was true, a PTY::ChildExited
|
61
|
+
# exception will be raised. Otherwise it will return a Process::Status instance.
|
62
|
+
#
|
63
|
+
# `pid`
|
64
|
+
# : The process id of the process to check
|
65
|
+
# `raise`
|
66
|
+
# : If `true` and the process identified by `pid` is no longer alive a
|
67
|
+
# PTY::ChildExited is raised.
|
68
|
+
def self.check: (Integer pid) -> (Process::Status | nil)
|
69
|
+
| (Integer pid, FalseClass raise) -> (Process::Status | nil)
|
70
|
+
| (Integer pid, TrueClass raise) -> nil
|
71
|
+
|
72
|
+
# Spawns the specified command on a newly allocated pty. You can also use the
|
73
|
+
# alias ::getpty.
|
74
|
+
#
|
75
|
+
# The command's controlling tty is set to the slave device of the pty and its
|
76
|
+
# standard input/output/error is redirected to the slave device.
|
77
|
+
#
|
78
|
+
# `command` and `command_line` are the full commands to run, given a String. Any
|
79
|
+
# additional `arguments` will be passed to the command.
|
80
|
+
#
|
81
|
+
# ### Return values
|
82
|
+
#
|
83
|
+
# In the non-block form this returns an array of size three, `[r, w, pid]`.
|
84
|
+
#
|
85
|
+
# In the block form these same values will be yielded to the block:
|
86
|
+
#
|
87
|
+
# `r`
|
88
|
+
# : A readable IO that contains the command's standard output and standard
|
89
|
+
# error
|
90
|
+
# `w`
|
91
|
+
# : A writable IO that is the command's standard input
|
92
|
+
# `pid`
|
93
|
+
# : The process identifier for the command.
|
94
|
+
def self.getpty: (*String command) -> [ IO, IO, Integer ]
|
95
|
+
| (*String command) { ([ IO ,IO , Integer ]) -> untyped } -> untyped
|
96
|
+
|
97
|
+
# Allocates a pty (pseudo-terminal).
|
98
|
+
#
|
99
|
+
# In the block form, yields two arguments `master_io, slave_file` and the value
|
100
|
+
# of the block is returned from `open`.
|
101
|
+
#
|
102
|
+
# The IO and File are both closed after the block completes if they haven't been
|
103
|
+
# already closed.
|
104
|
+
#
|
105
|
+
# PTY.open {|master, slave|
|
106
|
+
# p master #=> #<IO:masterpty:/dev/pts/1>
|
107
|
+
# p slave #=> #<File:/dev/pts/1>
|
108
|
+
# p slave.path #=> "/dev/pts/1"
|
109
|
+
# }
|
110
|
+
#
|
111
|
+
# In the non-block form, returns a two element array, `[master_io, slave_file]`.
|
112
|
+
#
|
113
|
+
# master, slave = PTY.open
|
114
|
+
# # do something with master for IO, or the slave file
|
115
|
+
#
|
116
|
+
# The arguments in both forms are:
|
117
|
+
#
|
118
|
+
# `master_io`
|
119
|
+
# : the master of the pty, as an IO.
|
120
|
+
# `slave_file`
|
121
|
+
# : the slave of the pty, as a File. The path to the terminal device is
|
122
|
+
# available via `slave_file.path`
|
123
|
+
#
|
124
|
+
#
|
125
|
+
# IO#raw! is usable to disable newline conversions:
|
126
|
+
#
|
127
|
+
# require 'io/console'
|
128
|
+
# PTY.open {|m, s|
|
129
|
+
# s.raw!
|
130
|
+
# ...
|
131
|
+
# }
|
132
|
+
def self.open: () -> [ IO, File ]
|
133
|
+
| () { ([ IO , File ]) -> untyped } -> untyped
|
134
|
+
|
135
|
+
# Spawns the specified command on a newly allocated pty. You can also use the
|
136
|
+
# alias ::getpty.
|
137
|
+
#
|
138
|
+
# The command's controlling tty is set to the slave device of the pty and its
|
139
|
+
# standard input/output/error is redirected to the slave device.
|
140
|
+
#
|
141
|
+
# `command` and `command_line` are the full commands to run, given a String. Any
|
142
|
+
# additional `arguments` will be passed to the command.
|
143
|
+
#
|
144
|
+
# ### Return values
|
145
|
+
#
|
146
|
+
# In the non-block form this returns an array of size three, `[r, w, pid]`.
|
147
|
+
#
|
148
|
+
# In the block form these same values will be yielded to the block:
|
149
|
+
#
|
150
|
+
# `r`
|
151
|
+
# : A readable IO that contains the command's standard output and standard
|
152
|
+
# error
|
153
|
+
# `w`
|
154
|
+
# : A writable IO that is the command's standard input
|
155
|
+
# `pid`
|
156
|
+
# : The process identifier for the command.
|
157
|
+
def self.spawn: (*String command) -> [ IO, IO, Integer ]
|
158
|
+
| (*String command) {([ IO , IO , Integer ]) -> untyped } -> untyped
|
159
|
+
end
|
@@ -0,0 +1,392 @@
|
|
1
|
+
# This module provides access to the [zlib library](http://zlib.net). Zlib is
|
2
|
+
# designed to be a portable, free, general-purpose, legally unencumbered -- that
|
3
|
+
# is, not covered by any patents -- lossless data-compression library for use on
|
4
|
+
# virtually any computer hardware and operating system.
|
5
|
+
#
|
6
|
+
# The zlib compression library provides in-memory compression and decompression
|
7
|
+
# functions, including integrity checks of the uncompressed data.
|
8
|
+
#
|
9
|
+
# The zlib compressed data format is described in RFC 1950, which is a wrapper
|
10
|
+
# around a deflate stream which is described in RFC 1951.
|
11
|
+
#
|
12
|
+
# The library also supports reading and writing files in gzip (.gz) format with
|
13
|
+
# an interface similar to that of IO. The gzip format is described in RFC 1952
|
14
|
+
# which is also a wrapper around a deflate stream.
|
15
|
+
#
|
16
|
+
# The zlib format was designed to be compact and fast for use in memory and on
|
17
|
+
# communications channels. The gzip format was designed for single-file
|
18
|
+
# compression on file systems, has a larger header than zlib to maintain
|
19
|
+
# directory information, and uses a different, slower check method than zlib.
|
20
|
+
#
|
21
|
+
# See your system's zlib.h for further information about zlib
|
22
|
+
#
|
23
|
+
# ## Sample usage
|
24
|
+
#
|
25
|
+
# Using the wrapper to compress strings with default parameters is quite simple:
|
26
|
+
#
|
27
|
+
# require "zlib"
|
28
|
+
#
|
29
|
+
# data_to_compress = File.read("don_quixote.txt")
|
30
|
+
#
|
31
|
+
# puts "Input size: #{data_to_compress.size}"
|
32
|
+
# #=> Input size: 2347740
|
33
|
+
#
|
34
|
+
# data_compressed = Zlib::Deflate.deflate(data_to_compress)
|
35
|
+
#
|
36
|
+
# puts "Compressed size: #{data_compressed.size}"
|
37
|
+
# #=> Compressed size: 887238
|
38
|
+
#
|
39
|
+
# uncompressed_data = Zlib::Inflate.inflate(data_compressed)
|
40
|
+
#
|
41
|
+
# puts "Uncompressed data is: #{uncompressed_data}"
|
42
|
+
# #=> Uncompressed data is: The Project Gutenberg EBook of Don Quixote...
|
43
|
+
#
|
44
|
+
# ## Class tree
|
45
|
+
#
|
46
|
+
# * Zlib::Deflate
|
47
|
+
# * Zlib::Inflate
|
48
|
+
# * Zlib::ZStream
|
49
|
+
# * Zlib::Error
|
50
|
+
# * Zlib::StreamEnd
|
51
|
+
# * Zlib::NeedDict
|
52
|
+
# * Zlib::DataError
|
53
|
+
# * Zlib::StreamError
|
54
|
+
# * Zlib::MemError
|
55
|
+
# * Zlib::BufError
|
56
|
+
# * Zlib::VersionError
|
57
|
+
#
|
58
|
+
#
|
59
|
+
#
|
60
|
+
# (if you have GZIP_SUPPORT)
|
61
|
+
# * Zlib::GzipReader
|
62
|
+
# * Zlib::GzipWriter
|
63
|
+
# * Zlib::GzipFile
|
64
|
+
# * Zlib::GzipFile::Error
|
65
|
+
# * Zlib::GzipFile::LengthError
|
66
|
+
# * Zlib::GzipFile::CRCError
|
67
|
+
# * Zlib::GzipFile::NoFooter
|
68
|
+
#
|
69
|
+
#
|
70
|
+
#
|
71
|
+
module Zlib
|
72
|
+
# Calculates Adler-32 checksum for `string`, and returns updated value of
|
73
|
+
# `adler`. If `string` is omitted, it returns the Adler-32 initial value. If
|
74
|
+
# `adler` is omitted, it assumes that the initial value is given to `adler`.
|
75
|
+
#
|
76
|
+
# Example usage:
|
77
|
+
#
|
78
|
+
# require "zlib"
|
79
|
+
#
|
80
|
+
# data = "foo"
|
81
|
+
# puts "Adler32 checksum: #{Zlib.adler32(data).to_s(16)}"
|
82
|
+
# #=> Adler32 checksum: 2820145
|
83
|
+
#
|
84
|
+
def self.adler32: () -> Integer
|
85
|
+
| (String) -> Integer
|
86
|
+
| (String, Integer) -> Integer
|
87
|
+
|
88
|
+
# Combine two Adler-32 check values in to one. `alder1` is the first Adler-32
|
89
|
+
# value, `adler2` is the second Adler-32 value. `len2` is the length of the
|
90
|
+
# string used to generate `adler2`.
|
91
|
+
#
|
92
|
+
def self.adler32_combine: (Integer, Integer, Integer) -> Integer
|
93
|
+
|
94
|
+
# Calculates CRC checksum for `string`, and returns updated value of `crc`. If
|
95
|
+
# `string` is omitted, it returns the CRC initial value. If `crc` is omitted, it
|
96
|
+
# assumes that the initial value is given to `crc`.
|
97
|
+
#
|
98
|
+
# FIXME: expression.
|
99
|
+
#
|
100
|
+
def self.crc32: () -> Integer
|
101
|
+
| (String) -> Integer
|
102
|
+
| (String, Integer) -> Integer
|
103
|
+
|
104
|
+
# Combine two CRC-32 check values in to one. `crc1` is the first CRC-32 value,
|
105
|
+
# `crc2` is the second CRC-32 value. `len2` is the length of the string used to
|
106
|
+
# generate `crc2`.
|
107
|
+
#
|
108
|
+
def self.crc32_combine: (Integer, Integer, Integer) -> Integer
|
109
|
+
|
110
|
+
# Returns the table for calculating CRC checksum as an array.
|
111
|
+
#
|
112
|
+
def self.crc_table: () -> Array[Integer]
|
113
|
+
|
114
|
+
# Compresses the given `string`. Valid values of level are Zlib::NO_COMPRESSION,
|
115
|
+
# Zlib::BEST_SPEED, Zlib::BEST_COMPRESSION, Zlib::DEFAULT_COMPRESSION, or an
|
116
|
+
# integer from 0 to 9.
|
117
|
+
#
|
118
|
+
# This method is almost equivalent to the following code:
|
119
|
+
#
|
120
|
+
# def deflate(string, level)
|
121
|
+
# z = Zlib::Deflate.new(level)
|
122
|
+
# dst = z.deflate(string, Zlib::FINISH)
|
123
|
+
# z.close
|
124
|
+
# dst
|
125
|
+
# end
|
126
|
+
#
|
127
|
+
# See also Zlib.inflate
|
128
|
+
#
|
129
|
+
def self.deflate: (String) -> String
|
130
|
+
| (String, Integer) -> String
|
131
|
+
# Decode the given gzipped `string`.
|
132
|
+
#
|
133
|
+
# This method is almost equivalent to the following code:
|
134
|
+
#
|
135
|
+
# def gunzip(string)
|
136
|
+
# sio = StringIO.new(string)
|
137
|
+
# gz = Zlib::GzipReader.new(sio, encoding: Encoding::ASCII_8BIT)
|
138
|
+
# gz.read
|
139
|
+
# ensure
|
140
|
+
# gz&.close
|
141
|
+
# end
|
142
|
+
#
|
143
|
+
# See also Zlib.gzip
|
144
|
+
#
|
145
|
+
def self.gunzip: (String) -> String
|
146
|
+
|
147
|
+
# Gzip the given `string`. Valid values of level are Zlib::NO_COMPRESSION,
|
148
|
+
# Zlib::BEST_SPEED, Zlib::BEST_COMPRESSION, Zlib::DEFAULT_COMPRESSION (default),
|
149
|
+
# or an integer from 0 to 9.
|
150
|
+
#
|
151
|
+
# This method is almost equivalent to the following code:
|
152
|
+
#
|
153
|
+
# def gzip(string, level: nil, strategy: nil)
|
154
|
+
# sio = StringIO.new
|
155
|
+
# sio.binmode
|
156
|
+
# gz = Zlib::GzipWriter.new(sio, level, strategy)
|
157
|
+
# gz.write(string)
|
158
|
+
# gz.close
|
159
|
+
# sio.string
|
160
|
+
# end
|
161
|
+
#
|
162
|
+
# See also Zlib.gunzip
|
163
|
+
#
|
164
|
+
def self.gzip: (String) -> String
|
165
|
+
| (String, level: Integer) -> String
|
166
|
+
| (String, strategy: Integer) -> String
|
167
|
+
| (String, level: Integer, strategy: Integer) -> String
|
168
|
+
# Decompresses `string`. Raises a Zlib::NeedDict exception if a preset
|
169
|
+
# dictionary is needed for decompression.
|
170
|
+
#
|
171
|
+
# This method is almost equivalent to the following code:
|
172
|
+
#
|
173
|
+
# def inflate(string)
|
174
|
+
# zstream = Zlib::Inflate.new
|
175
|
+
# buf = zstream.inflate(string)
|
176
|
+
# zstream.finish
|
177
|
+
# zstream.close
|
178
|
+
# buf
|
179
|
+
# end
|
180
|
+
#
|
181
|
+
# See also Zlib.deflate
|
182
|
+
#
|
183
|
+
def self.inflate: (String) -> String
|
184
|
+
|
185
|
+
# Returns the string which represents the version of zlib library.
|
186
|
+
#
|
187
|
+
def self.zlib_version: () -> String
|
188
|
+
end
|
189
|
+
|
190
|
+
# Represents text data as guessed by deflate.
|
191
|
+
#
|
192
|
+
# NOTE: The underlying constant Z_ASCII was deprecated in favor of Z_TEXT in
|
193
|
+
# zlib 1.2.2. New applications should not use this constant.
|
194
|
+
#
|
195
|
+
# See Zlib::Deflate#data_type.
|
196
|
+
#
|
197
|
+
#
|
198
|
+
Zlib::ASCII: Integer
|
199
|
+
|
200
|
+
# Slowest compression level, but with the best space savings.
|
201
|
+
#
|
202
|
+
#
|
203
|
+
Zlib::BEST_COMPRESSION: Integer
|
204
|
+
|
205
|
+
# Fastest compression level, but with the lowest space savings.
|
206
|
+
#
|
207
|
+
#
|
208
|
+
Zlib::BEST_SPEED: Integer
|
209
|
+
|
210
|
+
# Represents binary data as guessed by deflate.
|
211
|
+
#
|
212
|
+
# See Zlib::Deflate#data_type.
|
213
|
+
#
|
214
|
+
#
|
215
|
+
Zlib::BINARY: Integer
|
216
|
+
|
217
|
+
# Default compression level which is a good trade-off between space and time
|
218
|
+
#
|
219
|
+
Zlib::DEFAULT_COMPRESSION: Integer
|
220
|
+
|
221
|
+
# Default deflate strategy which is used for normal data.
|
222
|
+
#
|
223
|
+
#
|
224
|
+
Zlib::DEFAULT_STRATEGY: Integer
|
225
|
+
|
226
|
+
# The default memory level for allocating zlib deflate compression state.
|
227
|
+
#
|
228
|
+
Zlib::DEF_MEM_LEVEL: Integer
|
229
|
+
|
230
|
+
# Deflate strategy for data produced by a filter (or predictor). The effect of
|
231
|
+
# FILTERED is to force more Huffman codes and less string matching; it is
|
232
|
+
# somewhat intermediate between DEFAULT_STRATEGY and HUFFMAN_ONLY. Filtered data
|
233
|
+
# consists mostly of small values with a somewhat random distribution.
|
234
|
+
#
|
235
|
+
Zlib::FILTERED: Integer
|
236
|
+
|
237
|
+
# Processes all pending input and flushes pending output.
|
238
|
+
#
|
239
|
+
#
|
240
|
+
Zlib::FINISH: Integer
|
241
|
+
|
242
|
+
# Deflate strategy which prevents the use of dynamic Huffman codes, allowing for
|
243
|
+
# a simpler decoder for specialized applications.
|
244
|
+
#
|
245
|
+
Zlib::FIXED: Integer
|
246
|
+
|
247
|
+
# Flushes all output as with SYNC_FLUSH, and the compression state is reset so
|
248
|
+
# that decompression can restart from this point if previous compressed data has
|
249
|
+
# been damaged or if random access is desired. Like SYNC_FLUSH, using FULL_FLUSH
|
250
|
+
# too often can seriously degrade compression.
|
251
|
+
#
|
252
|
+
Zlib::FULL_FLUSH: Integer
|
253
|
+
|
254
|
+
# Deflate strategy which uses Huffman codes only (no string matching).
|
255
|
+
#
|
256
|
+
#
|
257
|
+
Zlib::HUFFMAN_ONLY: Integer
|
258
|
+
|
259
|
+
# The maximum memory level for allocating zlib deflate compression state.
|
260
|
+
#
|
261
|
+
Zlib::MAX_MEM_LEVEL: Integer
|
262
|
+
|
263
|
+
# The maximum size of the zlib history buffer. Note that zlib allows larger
|
264
|
+
# values to enable different inflate modes. See Zlib::Inflate.new for details.
|
265
|
+
#
|
266
|
+
Zlib::MAX_WBITS: Integer
|
267
|
+
|
268
|
+
# No compression, passes through data untouched. Use this for appending
|
269
|
+
# pre-compressed data to a deflate stream.
|
270
|
+
#
|
271
|
+
Zlib::NO_COMPRESSION: Integer
|
272
|
+
|
273
|
+
# NO_FLUSH is the default flush method and allows deflate to decide how much
|
274
|
+
# data to accumulate before producing output in order to maximize compression.
|
275
|
+
#
|
276
|
+
Zlib::NO_FLUSH: Integer
|
277
|
+
|
278
|
+
# OS code for Amiga hosts
|
279
|
+
#
|
280
|
+
#
|
281
|
+
Zlib::OS_AMIGA: Integer
|
282
|
+
|
283
|
+
# OS code for Atari hosts
|
284
|
+
#
|
285
|
+
#
|
286
|
+
Zlib::OS_ATARI: Integer
|
287
|
+
|
288
|
+
# The OS code of current host
|
289
|
+
#
|
290
|
+
#
|
291
|
+
Zlib::OS_CODE: Integer
|
292
|
+
|
293
|
+
# OS code for CP/M hosts
|
294
|
+
#
|
295
|
+
#
|
296
|
+
Zlib::OS_CPM: Integer
|
297
|
+
|
298
|
+
# OS code for Mac OS hosts
|
299
|
+
#
|
300
|
+
#
|
301
|
+
Zlib::OS_MACOS: Integer
|
302
|
+
|
303
|
+
# OS code for MSDOS hosts
|
304
|
+
#
|
305
|
+
#
|
306
|
+
Zlib::OS_MSDOS: Integer
|
307
|
+
|
308
|
+
# OS code for OS2 hosts
|
309
|
+
#
|
310
|
+
#
|
311
|
+
Zlib::OS_OS2: Integer
|
312
|
+
|
313
|
+
# OS code for QDOS hosts
|
314
|
+
#
|
315
|
+
#
|
316
|
+
Zlib::OS_QDOS: Integer
|
317
|
+
|
318
|
+
# OS code for RISC OS hosts
|
319
|
+
#
|
320
|
+
#
|
321
|
+
Zlib::OS_RISCOS: Integer
|
322
|
+
|
323
|
+
# OS code for TOPS-20 hosts
|
324
|
+
#
|
325
|
+
#
|
326
|
+
Zlib::OS_TOPS20: Integer
|
327
|
+
|
328
|
+
# OS code for UNIX hosts
|
329
|
+
#
|
330
|
+
#
|
331
|
+
Zlib::OS_UNIX: Integer
|
332
|
+
|
333
|
+
# OS code for unknown hosts
|
334
|
+
#
|
335
|
+
#
|
336
|
+
Zlib::OS_UNKNOWN: Integer
|
337
|
+
|
338
|
+
# OS code for VM OS hosts
|
339
|
+
#
|
340
|
+
#
|
341
|
+
Zlib::OS_VMCMS: Integer
|
342
|
+
|
343
|
+
# OS code for VMS hosts
|
344
|
+
#
|
345
|
+
#
|
346
|
+
Zlib::OS_VMS: Integer
|
347
|
+
|
348
|
+
# OS code for Win32 hosts
|
349
|
+
#
|
350
|
+
#
|
351
|
+
Zlib::OS_WIN32: Integer
|
352
|
+
|
353
|
+
# OS code for Z-System hosts
|
354
|
+
#
|
355
|
+
#
|
356
|
+
Zlib::OS_ZSYSTEM: Integer
|
357
|
+
|
358
|
+
# Deflate compression strategy designed to be almost as fast as HUFFMAN_ONLY,
|
359
|
+
# but give better compression for PNG image data.
|
360
|
+
#
|
361
|
+
Zlib::RLE: Integer
|
362
|
+
|
363
|
+
# The SYNC_FLUSH method flushes all pending output to the output buffer and the
|
364
|
+
# output is aligned on a byte boundary. Flushing may degrade compression so it
|
365
|
+
# should be used only when necessary, such as at a request or response boundary
|
366
|
+
# for a network stream.
|
367
|
+
#
|
368
|
+
Zlib::SYNC_FLUSH: Integer
|
369
|
+
|
370
|
+
# Represents text data as guessed by deflate.
|
371
|
+
#
|
372
|
+
# See Zlib::Deflate#data_type.
|
373
|
+
#
|
374
|
+
#
|
375
|
+
Zlib::TEXT: Integer
|
376
|
+
|
377
|
+
# Represents an unknown data type as guessed by deflate.
|
378
|
+
#
|
379
|
+
# See Zlib::Deflate#data_type.
|
380
|
+
#
|
381
|
+
#
|
382
|
+
Zlib::UNKNOWN: Integer
|
383
|
+
|
384
|
+
# The Ruby/zlib version string.
|
385
|
+
#
|
386
|
+
#
|
387
|
+
Zlib::VERSION: String
|
388
|
+
|
389
|
+
# The string which represents the version of zlib.h
|
390
|
+
#
|
391
|
+
#
|
392
|
+
Zlib::ZLIB_VERSION: String
|