rbs 4.0.0.dev.4 → 4.0.0
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/dependabot.yml +14 -14
- data/.github/workflows/bundle-update.yml +60 -0
- data/.github/workflows/c-check.yml +18 -11
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/ruby.yml +27 -34
- data/.github/workflows/rust.yml +95 -0
- data/.github/workflows/typecheck.yml +2 -2
- data/.github/workflows/windows.yml +2 -2
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +323 -0
- data/README.md +1 -1
- data/Rakefile +43 -33
- data/Steepfile +1 -0
- data/config.yml +426 -24
- data/core/array.rbs +307 -227
- data/core/basic_object.rbs +9 -8
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +2 -2
- data/core/class.rbs +6 -5
- data/core/comparable.rbs +55 -34
- data/core/complex.rbs +104 -78
- data/core/dir.rbs +61 -49
- data/core/encoding.rbs +12 -15
- data/core/enumerable.rbs +179 -87
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator.rbs +65 -2
- data/core/errno.rbs +11 -2
- data/core/errors.rbs +58 -29
- data/core/exception.rbs +13 -13
- data/core/fiber.rbs +74 -54
- data/core/file.rbs +280 -177
- data/core/file_test.rbs +3 -3
- data/core/float.rbs +257 -92
- data/core/gc.rbs +425 -281
- data/core/hash.rbs +1045 -739
- data/core/integer.rbs +135 -137
- data/core/io/buffer.rbs +53 -42
- data/core/io/wait.rbs +13 -35
- data/core/io.rbs +192 -144
- data/core/kernel.rbs +216 -155
- data/core/marshal.rbs +4 -4
- data/core/match_data.rbs +15 -13
- data/core/math.rbs +107 -66
- data/core/method.rbs +69 -33
- data/core/module.rbs +244 -106
- data/core/nil_class.rbs +7 -6
- data/core/numeric.rbs +74 -63
- data/core/object.rbs +9 -11
- data/core/object_space.rbs +30 -23
- data/core/pathname.rbs +1322 -0
- data/core/proc.rbs +95 -58
- data/core/process.rbs +222 -202
- data/core/ractor.rbs +371 -515
- data/core/random.rbs +21 -3
- data/core/range.rbs +159 -57
- data/core/rational.rbs +60 -89
- data/core/rbs/unnamed/argf.rbs +60 -53
- data/core/rbs/unnamed/env_class.rbs +19 -14
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +11 -118
- data/core/regexp.rbs +258 -214
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +38 -34
- data/core/rubygems/config_file.rbs +5 -5
- data/core/rubygems/errors.rbs +4 -71
- data/core/rubygems/requirement.rbs +5 -5
- data/core/rubygems/rubygems.rbs +16 -82
- data/core/rubygems/version.rbs +2 -3
- data/core/set.rbs +490 -360
- data/core/signal.rbs +26 -16
- data/core/string.rbs +3234 -1285
- data/core/struct.rbs +27 -26
- data/core/symbol.rbs +41 -34
- data/core/thread.rbs +135 -67
- data/core/time.rbs +81 -50
- data/core/trace_point.rbs +41 -35
- data/core/true_class.rbs +2 -2
- data/core/unbound_method.rbs +24 -16
- data/core/warning.rbs +7 -7
- data/docs/aliases.md +79 -0
- data/docs/collection.md +3 -3
- data/docs/config.md +171 -0
- data/docs/encoding.md +56 -0
- data/docs/gem.md +0 -1
- data/docs/inline.md +576 -0
- data/docs/sigs.md +3 -3
- data/docs/syntax.md +46 -16
- data/docs/type_fingerprint.md +21 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +544 -116
- data/ext/rbs_extension/ast_translation.h +3 -0
- data/ext/rbs_extension/class_constants.c +16 -2
- data/ext/rbs_extension/class_constants.h +8 -0
- data/ext/rbs_extension/extconf.rb +5 -1
- data/ext/rbs_extension/legacy_location.c +33 -56
- data/ext/rbs_extension/legacy_location.h +37 -0
- data/ext/rbs_extension/main.c +44 -35
- data/include/rbs/ast.h +448 -173
- data/include/rbs/defines.h +27 -0
- data/include/rbs/lexer.h +30 -11
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +6 -6
- data/include/rbs/string.h +0 -2
- data/include/rbs/util/rbs_allocator.h +34 -13
- data/include/rbs/util/rbs_assert.h +12 -1
- data/include/rbs/util/rbs_constant_pool.h +0 -3
- data/include/rbs/util/rbs_encoding.h +2 -0
- data/include/rbs/util/rbs_unescape.h +2 -1
- data/include/rbs.h +8 -0
- data/lib/rbs/ast/annotation.rb +1 -1
- data/lib/rbs/ast/comment.rb +1 -1
- data/lib/rbs/ast/declarations.rb +10 -10
- data/lib/rbs/ast/members.rb +14 -14
- data/lib/rbs/ast/ruby/annotations.rb +293 -3
- data/lib/rbs/ast/ruby/comment_block.rb +24 -0
- data/lib/rbs/ast/ruby/declarations.rb +198 -3
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
- data/lib/rbs/ast/ruby/members.rb +532 -22
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +20 -15
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +38 -106
- data/lib/rbs/cli.rb +52 -19
- data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
- data/lib/rbs/collection/sources/git.rb +1 -0
- data/lib/rbs/definition.rb +1 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
- data/lib/rbs/definition_builder/method_builder.rb +20 -0
- data/lib/rbs/definition_builder.rb +147 -25
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment.rb +227 -74
- data/lib/rbs/environment_loader.rb +0 -6
- data/lib/rbs/errors.rb +27 -18
- data/lib/rbs/inline_parser.rb +342 -6
- data/lib/rbs/location_aux.rb +1 -1
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/parser_aux.rb +20 -7
- data/lib/rbs/prototype/helpers.rb +57 -0
- data/lib/rbs/prototype/rb.rb +3 -28
- data/lib/rbs/prototype/rbi.rb +3 -20
- data/lib/rbs/prototype/runtime.rb +8 -0
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +116 -38
- data/lib/rbs/subtractor.rb +3 -1
- data/lib/rbs/test/type_check.rb +19 -2
- data/lib/rbs/type_name.rb +1 -1
- data/lib/rbs/types.rb +88 -78
- data/lib/rbs/unit_test/type_assertions.rb +35 -8
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +1 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +1 -1
- data/rbs.gemspec +4 -3
- data/rust/.gitignore +1 -0
- data/rust/Cargo.lock +378 -0
- data/rust/Cargo.toml +7 -0
- data/rust/ruby-rbs/Cargo.toml +22 -0
- data/rust/ruby-rbs/build.rs +764 -0
- data/rust/ruby-rbs/examples/locations.rs +60 -0
- data/rust/ruby-rbs/src/lib.rs +1 -0
- data/rust/ruby-rbs/src/node/mod.rs +742 -0
- data/rust/ruby-rbs/tests/sanity.rs +47 -0
- data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
- data/rust/ruby-rbs-sys/Cargo.toml +23 -0
- data/rust/ruby-rbs-sys/build.rs +204 -0
- data/rust/ruby-rbs-sys/src/lib.rs +50 -0
- data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
- data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
- data/rust/ruby-rbs-sys/wrapper.h +1 -0
- data/schema/typeParam.json +17 -1
- data/sig/ast/ruby/annotations.rbs +315 -4
- data/sig/ast/ruby/comment_block.rbs +8 -0
- data/sig/ast/ruby/declarations.rbs +102 -4
- data/sig/ast/ruby/members.rbs +108 -2
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +12 -8
- data/sig/cli.rbs +18 -18
- data/sig/definition.rbs +6 -1
- data/sig/definition_builder.rbs +2 -0
- data/sig/environment.rbs +70 -12
- data/sig/errors.rbs +13 -14
- data/sig/inline_parser.rbs +39 -2
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -1
- data/sig/method_builder.rbs +3 -1
- data/sig/parser.rbs +31 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +35 -7
- data/sig/source.rbs +3 -3
- data/sig/type_param.rbs +13 -8
- data/sig/types.rbs +6 -7
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +11 -0
- data/src/ast.c +410 -153
- data/src/lexer.c +1392 -1313
- data/src/lexer.re +3 -0
- data/src/lexstate.c +58 -37
- data/src/location.c +8 -48
- data/src/parser.c +977 -516
- data/src/string.c +0 -48
- data/src/util/rbs_allocator.c +89 -71
- data/src/util/rbs_assert.c +1 -1
- data/src/util/rbs_buffer.c +2 -2
- data/src/util/rbs_constant_pool.c +10 -14
- data/src/util/rbs_encoding.c +4 -8
- data/src/util/rbs_unescape.c +56 -20
- data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
- data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
- data/stdlib/cgi/0/core.rbs +9 -393
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/stdlib/coverage/0/coverage.rbs +7 -4
- data/stdlib/date/0/date.rbs +92 -79
- data/stdlib/date/0/date_time.rbs +25 -24
- data/stdlib/delegate/0/delegator.rbs +10 -7
- data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
- data/stdlib/digest/0/digest.rbs +110 -0
- data/stdlib/erb/0/erb.rbs +748 -347
- data/stdlib/etc/0/etc.rbs +55 -50
- data/stdlib/fileutils/0/fileutils.rbs +158 -139
- data/stdlib/forwardable/0/forwardable.rbs +13 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +217 -136
- data/stdlib/monitor/0/monitor.rbs +3 -3
- data/stdlib/net-http/0/net-http.rbs +162 -134
- data/stdlib/objspace/0/objspace.rbs +17 -34
- data/stdlib/open-uri/0/open-uri.rbs +48 -8
- data/stdlib/open3/0/open3.rbs +469 -10
- data/stdlib/openssl/0/openssl.rbs +475 -357
- data/stdlib/optparse/0/optparse.rbs +26 -17
- data/stdlib/pathname/0/pathname.rbs +11 -1381
- data/stdlib/pp/0/pp.rbs +9 -8
- data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
- data/stdlib/pstore/0/pstore.rbs +35 -30
- data/stdlib/psych/0/psych.rbs +65 -12
- data/stdlib/psych/0/store.rbs +2 -4
- data/stdlib/pty/0/pty.rbs +9 -6
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +2 -1
- data/stdlib/rdoc/0/parser.rbs +1 -1
- data/stdlib/rdoc/0/rdoc.rbs +1 -1
- data/stdlib/rdoc/0/store.rbs +1 -1
- data/stdlib/resolv/0/resolv.rbs +25 -68
- data/stdlib/ripper/0/ripper.rbs +22 -19
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +7 -20
- data/stdlib/shellwords/0/shellwords.rbs +2 -2
- data/stdlib/singleton/0/singleton.rbs +3 -0
- data/stdlib/socket/0/addrinfo.rbs +7 -7
- data/stdlib/socket/0/basic_socket.rbs +3 -3
- data/stdlib/socket/0/ip_socket.rbs +10 -8
- data/stdlib/socket/0/socket.rbs +23 -10
- data/stdlib/socket/0/tcp_server.rbs +1 -1
- data/stdlib/socket/0/tcp_socket.rbs +11 -3
- data/stdlib/socket/0/udp_socket.rbs +1 -1
- data/stdlib/socket/0/unix_server.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +1177 -85
- data/stdlib/strscan/0/string_scanner.rbs +27 -25
- data/stdlib/tempfile/0/tempfile.rbs +25 -21
- data/stdlib/time/0/time.rbs +8 -6
- data/stdlib/timeout/0/timeout.rbs +63 -7
- data/stdlib/tsort/0/cyclic.rbs +3 -0
- data/stdlib/tsort/0/tsort.rbs +7 -6
- data/stdlib/uri/0/common.rbs +42 -20
- data/stdlib/uri/0/file.rbs +3 -3
- data/stdlib/uri/0/generic.rbs +26 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/ldap.rbs +2 -2
- data/stdlib/uri/0/mailto.rbs +3 -3
- data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
- data/stdlib/zlib/0/deflate.rbs +4 -3
- data/stdlib/zlib/0/gzip_reader.rbs +6 -6
- data/stdlib/zlib/0/gzip_writer.rbs +14 -12
- data/stdlib/zlib/0/inflate.rbs +1 -1
- data/stdlib/zlib/0/need_dict.rbs +1 -1
- data/stdlib/zlib/0/zstream.rbs +1 -0
- metadata +50 -6
data/core/io/buffer.rbs
CHANGED
|
@@ -64,9 +64,9 @@ class IO
|
|
|
64
64
|
#
|
|
65
65
|
# File.write('test.txt', 'test data')
|
|
66
66
|
# # => 9
|
|
67
|
-
# buffer = IO::Buffer.map(File.open('test.txt'))
|
|
67
|
+
# buffer = IO::Buffer.map(File.open('test.txt'), nil, 0, IO::Buffer::READONLY)
|
|
68
68
|
# # =>
|
|
69
|
-
# # #<IO::Buffer 0x00007f3f0768c000+9 MAPPED
|
|
69
|
+
# # #<IO::Buffer 0x00007f3f0768c000+9 EXTERNAL MAPPED FILE SHARED READONLY>
|
|
70
70
|
# # ...
|
|
71
71
|
# buffer.get_string(5, 2) # read 2 bytes, starting from offset 5
|
|
72
72
|
# # => "da"
|
|
@@ -81,9 +81,9 @@ class IO
|
|
|
81
81
|
# File.read('test.txt')
|
|
82
82
|
# # => "t--- data"
|
|
83
83
|
#
|
|
84
|
-
#
|
|
85
|
-
# especially true of file mappings which may be removed entirely in the
|
|
86
|
-
# future
|
|
84
|
+
# <strong>The class is experimental and the interface is subject to change, this
|
|
85
|
+
# is especially true of file mappings which may be removed entirely in the
|
|
86
|
+
# future.</strong>
|
|
87
87
|
#
|
|
88
88
|
class Buffer
|
|
89
89
|
include Comparable
|
|
@@ -113,7 +113,7 @@ class IO
|
|
|
113
113
|
# buffer.get_string(0, 1)
|
|
114
114
|
# # => "t"
|
|
115
115
|
# string
|
|
116
|
-
# # => "
|
|
116
|
+
# # => "test"
|
|
117
117
|
#
|
|
118
118
|
# buffer.resize(100)
|
|
119
119
|
# # in `resize': Cannot resize external buffer! (IO::Buffer::AccessError)
|
|
@@ -131,18 +131,25 @@ class IO
|
|
|
131
131
|
# - IO::Buffer.map(file, [size, [offset, [flags]]]) -> io_buffer
|
|
132
132
|
# -->
|
|
133
133
|
# Create an IO::Buffer for reading from `file` by memory-mapping the file.
|
|
134
|
-
# `
|
|
134
|
+
# `file` should be a `File` instance, opened for reading or reading and writing.
|
|
135
|
+
#
|
|
136
|
+
# Optional `size` and `offset` of mapping can be specified. Trying to map an
|
|
137
|
+
# empty file or specify `size` of 0 will raise an error. Valid values for
|
|
138
|
+
# `offset` are system-dependent.
|
|
135
139
|
#
|
|
136
|
-
#
|
|
140
|
+
# By default, the buffer is writable and expects the file to be writable. It is
|
|
141
|
+
# also shared, so several processes can use the same mapping.
|
|
137
142
|
#
|
|
138
|
-
#
|
|
139
|
-
#
|
|
140
|
-
# `flags`
|
|
143
|
+
# You can pass IO::Buffer::READONLY in `flags` argument to make a read-only
|
|
144
|
+
# buffer; this allows to work with files opened only for reading. Specifying
|
|
145
|
+
# IO::Buffer::PRIVATE in `flags` creates a private mapping, which will not
|
|
146
|
+
# impact other processes or the underlying file. It also allows updating a
|
|
147
|
+
# buffer created from a read-only file.
|
|
141
148
|
#
|
|
142
149
|
# File.write('test.txt', 'test')
|
|
143
150
|
#
|
|
144
151
|
# buffer = IO::Buffer.map(File.open('test.txt'), nil, 0, IO::Buffer::READONLY)
|
|
145
|
-
# # => #<IO::Buffer 0x00000001014a0000+4 MAPPED READONLY>
|
|
152
|
+
# # => #<IO::Buffer 0x00000001014a0000+4 EXTERNAL MAPPED FILE SHARED READONLY>
|
|
146
153
|
#
|
|
147
154
|
# buffer.readonly? # => true
|
|
148
155
|
#
|
|
@@ -150,7 +157,7 @@ class IO
|
|
|
150
157
|
# # => "test"
|
|
151
158
|
#
|
|
152
159
|
# buffer.set_string('b', 0)
|
|
153
|
-
# #
|
|
160
|
+
# # 'IO::Buffer#set_string': Buffer is not writable! (IO::Buffer::AccessError)
|
|
154
161
|
#
|
|
155
162
|
# # create read/write mapping: length 4 bytes, offset 0, flags 0
|
|
156
163
|
# buffer = IO::Buffer.map(File.open('test.txt', 'r+'), 4, 0)
|
|
@@ -349,7 +356,7 @@ class IO
|
|
|
349
356
|
# - get_string([offset, [length, [encoding]]]) -> string
|
|
350
357
|
# -->
|
|
351
358
|
# Read a chunk or all of the buffer into a string, in the specified `encoding`.
|
|
352
|
-
# If no encoding is provided
|
|
359
|
+
# If no encoding is provided <code>Encoding::BINARY</code> is used.
|
|
353
360
|
#
|
|
354
361
|
# buffer = IO::Buffer.for('test')
|
|
355
362
|
# buffer.get_string
|
|
@@ -368,28 +375,32 @@ class IO
|
|
|
368
375
|
# Read from buffer a value of `type` at `offset`. `buffer_type` should be one of
|
|
369
376
|
# symbols:
|
|
370
377
|
#
|
|
371
|
-
# *
|
|
372
|
-
# *
|
|
373
|
-
# *
|
|
374
|
-
# *
|
|
375
|
-
# *
|
|
376
|
-
# *
|
|
377
|
-
# *
|
|
378
|
-
# *
|
|
379
|
-
# *
|
|
380
|
-
# *
|
|
381
|
-
# *
|
|
382
|
-
# *
|
|
383
|
-
# *
|
|
384
|
-
# *
|
|
385
|
-
# *
|
|
386
|
-
# *
|
|
387
|
-
# *
|
|
388
|
-
# *
|
|
378
|
+
# * <code>:U8</code>: unsigned integer, 1 byte
|
|
379
|
+
# * <code>:S8</code>: signed integer, 1 byte
|
|
380
|
+
# * <code>:u16</code>: unsigned integer, 2 bytes, little-endian
|
|
381
|
+
# * <code>:U16</code>: unsigned integer, 2 bytes, big-endian
|
|
382
|
+
# * <code>:s16</code>: signed integer, 2 bytes, little-endian
|
|
383
|
+
# * <code>:S16</code>: signed integer, 2 bytes, big-endian
|
|
384
|
+
# * <code>:u32</code>: unsigned integer, 4 bytes, little-endian
|
|
385
|
+
# * <code>:U32</code>: unsigned integer, 4 bytes, big-endian
|
|
386
|
+
# * <code>:s32</code>: signed integer, 4 bytes, little-endian
|
|
387
|
+
# * <code>:S32</code>: signed integer, 4 bytes, big-endian
|
|
388
|
+
# * <code>:u64</code>: unsigned integer, 8 bytes, little-endian
|
|
389
|
+
# * <code>:U64</code>: unsigned integer, 8 bytes, big-endian
|
|
390
|
+
# * <code>:s64</code>: signed integer, 8 bytes, little-endian
|
|
391
|
+
# * <code>:S64</code>: signed integer, 8 bytes, big-endian
|
|
392
|
+
# * <code>:u128</code>: unsigned integer, 16 bytes, little-endian
|
|
393
|
+
# * <code>:U128</code>: unsigned integer, 16 bytes, big-endian
|
|
394
|
+
# * <code>:s128</code>: signed integer, 16 bytes, little-endian
|
|
395
|
+
# * <code>:S128</code>: signed integer, 16 bytes, big-endian
|
|
396
|
+
# * <code>:f32</code>: float, 4 bytes, little-endian
|
|
397
|
+
# * <code>:F32</code>: float, 4 bytes, big-endian
|
|
398
|
+
# * <code>:f64</code>: double, 8 bytes, little-endian
|
|
399
|
+
# * <code>:F64</code>: double, 8 bytes, big-endian
|
|
389
400
|
#
|
|
390
401
|
# A buffer type refers specifically to the type of binary buffer that is stored
|
|
391
|
-
# in the buffer. For example, a
|
|
392
|
-
# in little-endian format.
|
|
402
|
+
# in the buffer. For example, a <code>:u32</code> buffer type is a 32-bit
|
|
403
|
+
# unsigned integer in little-endian format.
|
|
393
404
|
#
|
|
394
405
|
# string = [1.5].pack('f')
|
|
395
406
|
# # => "\x00\x00\xC0?"
|
|
@@ -546,7 +557,7 @@ class IO
|
|
|
546
557
|
# -->
|
|
547
558
|
# Read at least `length` bytes from the `io` starting at the specified `from`
|
|
548
559
|
# position, into the buffer starting at `offset`. If an error occurs, return
|
|
549
|
-
#
|
|
560
|
+
# <code>-errno</code>.
|
|
550
561
|
#
|
|
551
562
|
# If `length` is not given or `nil`, it defaults to the size of the buffer minus
|
|
552
563
|
# the offset, i.e. the entire buffer.
|
|
@@ -579,7 +590,7 @@ class IO
|
|
|
579
590
|
# -->
|
|
580
591
|
# Write at least `length` bytes from the buffer starting at `offset`, into the
|
|
581
592
|
# `io` starting at the specified `from` position. If an error occurs, return
|
|
582
|
-
#
|
|
593
|
+
# <code>-errno</code>.
|
|
583
594
|
#
|
|
584
595
|
# If `length` is not given or `nil`, it defaults to the size of the buffer minus
|
|
585
596
|
# the offset, i.e. the entire buffer.
|
|
@@ -596,7 +607,7 @@ class IO
|
|
|
596
607
|
# IO::Buffer.for('1234567').pwrite(out, 2, 3, 1)
|
|
597
608
|
#
|
|
598
609
|
# This leads to `234` (3 bytes, starting from position 1) being written into
|
|
599
|
-
#
|
|
610
|
+
# <code>output.txt</code>, starting from file position 2.
|
|
600
611
|
#
|
|
601
612
|
def pwrite: (untyped, untyped, untyped) -> untyped
|
|
602
613
|
|
|
@@ -605,7 +616,7 @@ class IO
|
|
|
605
616
|
# - read(io, [length, [offset]]) -> read length or -errno
|
|
606
617
|
# -->
|
|
607
618
|
# Read at least `length` bytes from the `io`, into the buffer starting at
|
|
608
|
-
# `offset`. If an error occurs, return
|
|
619
|
+
# `offset`. If an error occurs, return <code>-errno</code>.
|
|
609
620
|
#
|
|
610
621
|
# If `length` is not given or `nil`, it defaults to the size of the buffer minus
|
|
611
622
|
# the offset, i.e. the entire buffer.
|
|
@@ -745,8 +756,8 @@ class IO
|
|
|
745
756
|
# minus the specified offset. If the length is negative, it will raise an
|
|
746
757
|
# ArgumentError.
|
|
747
758
|
#
|
|
748
|
-
# Raises RuntimeError if the
|
|
749
|
-
# bounds.
|
|
759
|
+
# Raises RuntimeError if the <code>offset+length</code> is out of the current
|
|
760
|
+
# buffer's bounds.
|
|
750
761
|
#
|
|
751
762
|
# string = 'test'
|
|
752
763
|
# buffer = IO::Buffer.for(string).dup
|
|
@@ -830,7 +841,7 @@ class IO
|
|
|
830
841
|
# - write(io, [length, [offset]]) -> written length or -errno
|
|
831
842
|
# -->
|
|
832
843
|
# Write at least `length` bytes from the buffer starting at `offset`, into the
|
|
833
|
-
# `io`. If an error occurs, return
|
|
844
|
+
# `io`. If an error occurs, return <code>-errno</code>.
|
|
834
845
|
#
|
|
835
846
|
# If `length` is not given or `nil`, it defaults to the size of the buffer minus
|
|
836
847
|
# the offset, i.e. the entire buffer.
|
|
@@ -843,7 +854,7 @@ class IO
|
|
|
843
854
|
# out = File.open('output.txt', 'wb')
|
|
844
855
|
# IO::Buffer.for('1234567').write(out, 3)
|
|
845
856
|
#
|
|
846
|
-
# This leads to `123` being written into
|
|
857
|
+
# This leads to `123` being written into <code>output.txt</code>
|
|
847
858
|
#
|
|
848
859
|
def write: (untyped, untyped) -> untyped
|
|
849
860
|
|
data/core/io/wait.rbs
CHANGED
|
@@ -1,42 +1,24 @@
|
|
|
1
1
|
%a{annotate:rdoc:skip}
|
|
2
2
|
class IO
|
|
3
3
|
# <!--
|
|
4
|
-
# rdoc-file=
|
|
5
|
-
# - io.nread -> int
|
|
6
|
-
# -->
|
|
7
|
-
# Returns number of bytes that can be read without blocking. Returns zero if no
|
|
8
|
-
# information available.
|
|
9
|
-
#
|
|
10
|
-
# You must require 'io/wait' to use this method.
|
|
11
|
-
#
|
|
12
|
-
def nread: () -> Integer
|
|
13
|
-
|
|
14
|
-
# <!--
|
|
15
|
-
# rdoc-file=ext/io/wait/wait.c
|
|
16
|
-
# - io.ready? -> truthy or falsy
|
|
17
|
-
# -->
|
|
18
|
-
# Returns a truthy value if input available without blocking, or a falsy value.
|
|
19
|
-
#
|
|
20
|
-
# You must require 'io/wait' to use this method.
|
|
21
|
-
#
|
|
22
|
-
def ready?: () -> boolish
|
|
23
|
-
|
|
24
|
-
# <!--
|
|
25
|
-
# rdoc-file=ext/io/wait/wait.c
|
|
4
|
+
# rdoc-file=io.c
|
|
26
5
|
# - io.wait(events, timeout) -> event mask, false or nil
|
|
27
|
-
# - io.wait(
|
|
6
|
+
# - io.wait(*event_symbols[, timeout]) -> self, true, or false
|
|
28
7
|
# -->
|
|
29
8
|
# Waits until the IO becomes ready for the specified events and returns the
|
|
30
9
|
# subset of events that become ready, or a falsy value when times out.
|
|
31
10
|
#
|
|
32
|
-
# The events can be a bit mask of
|
|
33
|
-
#
|
|
34
|
-
#
|
|
35
|
-
# Returns a truthy value immediately when buffered data is available.
|
|
11
|
+
# The events can be a bit mask of <code>IO::READABLE</code>,
|
|
12
|
+
# <code>IO::WRITABLE</code> or <code>IO::PRIORITY</code>.
|
|
36
13
|
#
|
|
37
|
-
#
|
|
14
|
+
# Returns an event mask (truthy value) immediately when buffered data is
|
|
15
|
+
# available.
|
|
38
16
|
#
|
|
39
|
-
#
|
|
17
|
+
# The second form: if one or more event symbols (<code>:read</code>,
|
|
18
|
+
# <code>:write</code>, or <code>:read_write</code>) are passed, the event mask
|
|
19
|
+
# is the bit OR of the bitmask corresponding to those symbols. In this form,
|
|
20
|
+
# `timeout` is optional, the order of the arguments is arbitrary, and returns
|
|
21
|
+
# `io` if any of the events is ready.
|
|
40
22
|
#
|
|
41
23
|
def wait: (Integer events, ?Time::_Timeout timeout) -> (Integer | false | nil)
|
|
42
24
|
| (?Time::_Timeout? timeout, *wait_mode mode) -> (self | true | false)
|
|
@@ -44,7 +26,7 @@ class IO
|
|
|
44
26
|
type wait_mode = :read | :r | :readable | :write | :w | :writable | :read_write | :rw | :readable_writable
|
|
45
27
|
|
|
46
28
|
# <!--
|
|
47
|
-
# rdoc-file=
|
|
29
|
+
# rdoc-file=io.c
|
|
48
30
|
# - io.wait_readable -> truthy or falsy
|
|
49
31
|
# - io.wait_readable(timeout) -> truthy or falsy
|
|
50
32
|
# -->
|
|
@@ -52,19 +34,15 @@ class IO
|
|
|
52
34
|
# times out. Returns a truthy value immediately when buffered data is
|
|
53
35
|
# available.
|
|
54
36
|
#
|
|
55
|
-
# You must require 'io/wait' to use this method.
|
|
56
|
-
#
|
|
57
37
|
def wait_readable: (?Time::_Timeout? timeout) -> boolish
|
|
58
38
|
|
|
59
39
|
# <!--
|
|
60
|
-
# rdoc-file=
|
|
40
|
+
# rdoc-file=io.c
|
|
61
41
|
# - io.wait_writable -> truthy or falsy
|
|
62
42
|
# - io.wait_writable(timeout) -> truthy or falsy
|
|
63
43
|
# -->
|
|
64
44
|
# Waits until IO is writable and returns a truthy value or a falsy value when
|
|
65
45
|
# times out.
|
|
66
46
|
#
|
|
67
|
-
# You must require 'io/wait' to use this method.
|
|
68
|
-
#
|
|
69
47
|
def wait_writable: (?Time::_Timeout? timeout) -> boolish
|
|
70
48
|
end
|