rbs 4.0.0.dev.4 → 4.1.0.pre.2
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/.clang-format +1 -0
- data/.github/dependabot.yml +16 -14
- data/.github/workflows/bundle-update.yml +63 -0
- data/.github/workflows/c-check.yml +21 -11
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/jruby.yml +67 -0
- data/.github/workflows/milestone.yml +83 -0
- data/.github/workflows/ruby.yml +63 -24
- data/.github/workflows/rust.yml +184 -0
- data/.github/workflows/truffleruby.yml +54 -0
- data/.github/workflows/typecheck.yml +5 -2
- data/.github/workflows/wasm.yml +53 -0
- data/.github/workflows/windows.yml +8 -2
- data/.gitignore +11 -0
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +357 -0
- data/README.md +4 -4
- data/Rakefile +365 -33
- data/Steepfile +8 -0
- data/config.yml +450 -24
- data/core/array.rbs +443 -363
- data/core/basic_object.rbs +9 -8
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +9 -8
- data/core/class.rbs +11 -8
- 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 +288 -196
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator/product.rbs +5 -5
- data/core/enumerator.rbs +91 -28
- 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 +260 -1151
- data/core/file_constants.rbs +463 -0
- data/core/file_stat.rbs +534 -0
- data/core/file_test.rbs +3 -3
- data/core/float.rbs +257 -92
- data/core/gc.rbs +425 -281
- data/core/hash.rbs +1151 -829
- data/core/integer.rbs +156 -195
- data/core/io/buffer.rbs +53 -42
- data/core/io/wait.rbs +13 -35
- data/core/io.rbs +216 -150
- data/core/kernel.rbs +239 -163
- 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 +302 -150
- data/core/nil_class.rbs +7 -6
- data/core/numeric.rbs +77 -63
- data/core/object.rbs +9 -11
- data/core/object_space/weak_key_map.rbs +7 -7
- 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 +181 -79
- data/core/rational.rbs +60 -89
- data/core/rbs/ops.rbs +154 -0
- data/core/rbs/unnamed/argf.rbs +63 -56
- 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 +78 -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 +493 -363
- data/core/signal.rbs +26 -16
- data/core/string.rbs +3234 -1285
- data/core/struct.rbs +43 -42
- data/core/symbol.rbs +41 -34
- data/core/thread.rbs +141 -73
- 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/CONTRIBUTING.md +2 -1
- 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 +634 -0
- data/docs/rbs_by_example.md +20 -20
- data/docs/rust.md +96 -0
- data/docs/sigs.md +3 -3
- data/docs/syntax.md +48 -18
- data/docs/type_fingerprint.md +21 -0
- data/docs/wasm_serialization.md +80 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +1441 -671
- data/ext/rbs_extension/ast_translation.h +7 -0
- data/ext/rbs_extension/class_constants.c +18 -2
- data/ext/rbs_extension/class_constants.h +9 -0
- data/ext/rbs_extension/extconf.rb +6 -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 +183 -39
- data/include/rbs/ast.h +597 -297
- data/include/rbs/defines.h +40 -0
- data/include/rbs/lexer.h +31 -11
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +6 -6
- data/include/rbs/serialize.h +39 -0
- 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/annotate/rdoc_annotator.rb +27 -31
- 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 +335 -3
- data/lib/rbs/ast/ruby/comment_block.rb +30 -4
- data/lib/rbs/ast/ruby/declarations.rb +209 -4
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +1 -1
- data/lib/rbs/ast/ruby/members.rb +571 -22
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +66 -24
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +38 -106
- data/lib/rbs/cli.rb +55 -24
- data/lib/rbs/collection/config/lockfile_generator.rb +28 -3
- data/lib/rbs/collection/sources/git.rb +7 -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 +32 -6
- data/lib/rbs/definition_builder.rb +147 -25
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment.rb +235 -75
- data/lib/rbs/environment_loader.rb +0 -6
- data/lib/rbs/errors.rb +27 -18
- data/lib/rbs/inline_parser.rb +377 -15
- 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/namespace.rb +47 -11
- 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 +10 -0
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +120 -44
- data/lib/rbs/rewriter.rb +70 -0
- data/lib/rbs/subtractor.rb +3 -1
- data/lib/rbs/test/type_check.rb +25 -3
- data/lib/rbs/type_name.rb +34 -14
- data/lib/rbs/types.rb +88 -78
- data/lib/rbs/unit_test/type_assertions.rb +44 -8
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/wasm/deserializer.rb +213 -0
- data/lib/rbs/wasm/location.rb +61 -0
- data/lib/rbs/wasm/parser.rb +137 -0
- data/lib/rbs/wasm/runtime.rb +217 -0
- data/lib/rbs/wasm/serialization_schema.rb +110 -0
- data/lib/rbs.rb +13 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +1 -1
- data/rbs.gemspec +24 -6
- data/schema/typeParam.json +17 -1
- data/sig/annotate/rdoc_annotater.rbs +12 -9
- data/sig/ast/ruby/annotations.rbs +364 -4
- data/sig/ast/ruby/comment_block.rbs +8 -0
- data/sig/ast/ruby/declarations.rbs +102 -4
- data/sig/ast/ruby/members.rbs +128 -2
- data/sig/buffer.rbs +19 -1
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +12 -8
- data/sig/cli.rbs +18 -18
- data/sig/collection/config/lockfile_generator.rbs +2 -0
- 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 +41 -2
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -2
- data/sig/method_builder.rbs +3 -1
- data/sig/namespace.rbs +20 -0
- data/sig/parser.rbs +41 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +36 -10
- data/sig/rewriter.rbs +45 -0
- data/sig/source.rbs +3 -3
- data/sig/type_param.rbs +13 -8
- data/sig/typename.rbs +15 -0
- data/sig/types.rbs +6 -7
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +15 -0
- data/sig/wasm/deserializer.rbs +66 -0
- data/sig/wasm/serialization_schema.rbs +13 -0
- data/src/ast.c +443 -162
- data/src/lexer.c +1415 -1313
- data/src/lexer.re +4 -0
- data/src/lexstate.c +63 -37
- data/src/location.c +7 -47
- data/src/parser.c +1032 -521
- data/src/serialize.c +958 -0
- data/src/string.c +0 -48
- data/src/util/rbs_allocator.c +89 -74
- 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/abbrev/0/array.rbs +1 -1
- 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/csv/0/csv.rbs +5 -5
- 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 +111 -1
- data/stdlib/erb/0/erb.rbs +748 -347
- data/stdlib/etc/0/etc.rbs +73 -54
- data/stdlib/fileutils/0/fileutils.rbs +179 -160
- data/stdlib/forwardable/0/forwardable.rbs +13 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +223 -142
- 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 +482 -364
- 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 +26 -69
- 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 +3 -3
- 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 +1209 -95
- data/stdlib/strscan/0/string_scanner.rbs +101 -80
- 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 +4 -1
- data/stdlib/tsort/0/interfaces.rbs +8 -8
- data/stdlib/tsort/0/tsort.rbs +16 -15
- 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 +8 -8
- 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
- data/wasm/README.md +59 -0
- data/wasm/rbs_wasm.c +411 -0
- metadata +56 -8
- data/.vscode/extensions.json +0 -5
- data/.vscode/settings.json +0 -19
data/core/struct.rbs
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
# Class Struct provides a convenient way to create a simple class that can store
|
|
3
3
|
# and fetch values.
|
|
4
4
|
#
|
|
5
|
-
# This example creates a subclass of `Struct`,
|
|
6
|
-
# argument, a string, is the name of the subclass; the other
|
|
7
|
-
# determine the *members* of the new subclass.
|
|
5
|
+
# This example creates a subclass of `Struct`, <code>Struct::Customer</code>;
|
|
6
|
+
# the first argument, a string, is the name of the subclass; the other
|
|
7
|
+
# arguments, symbols, determine the *members* of the new subclass.
|
|
8
8
|
#
|
|
9
9
|
# Customer = Struct.new('Customer', :name, :address, :zip)
|
|
10
10
|
# Customer.name # => "Struct::Customer"
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
# methods # => [:zip, :address=, :zip=, :address, :name, :name=]
|
|
19
19
|
#
|
|
20
20
|
# An instance of the subclass may be created, and its members assigned values,
|
|
21
|
-
# via method
|
|
21
|
+
# via method <code>::new</code>:
|
|
22
22
|
#
|
|
23
23
|
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
|
24
24
|
# joe # => #<struct Struct::Customer name="Joe Smith", address="123 Maple, Anytown NC", zip=12345>
|
|
@@ -71,10 +71,10 @@
|
|
|
71
71
|
#
|
|
72
72
|
# ### Methods for Comparing
|
|
73
73
|
#
|
|
74
|
-
# * #==: Returns whether a given object is equal to `self`, using
|
|
75
|
-
# compare member values.
|
|
76
|
-
# * #eql?: Returns whether a given object is equal to `self`, using
|
|
77
|
-
# compare member values.
|
|
74
|
+
# * #==: Returns whether a given object is equal to `self`, using
|
|
75
|
+
# <code>==</code> to compare member values.
|
|
76
|
+
# * #eql?: Returns whether a given object is equal to `self`, using
|
|
77
|
+
# <code>eql?</code> to compare member values.
|
|
78
78
|
#
|
|
79
79
|
# ### Methods for Fetching
|
|
80
80
|
#
|
|
@@ -104,8 +104,8 @@
|
|
|
104
104
|
# * #inspect (aliased as #to_s): Returns a string representation of `self`.
|
|
105
105
|
# * #to_h: Returns a hash of the member name/value pairs in `self`.
|
|
106
106
|
#
|
|
107
|
-
class Struct[
|
|
108
|
-
include Enumerable[
|
|
107
|
+
class Struct[E]
|
|
108
|
+
include Enumerable[E]
|
|
109
109
|
|
|
110
110
|
# The types that can be used when "indexing" into a `Struct` via `[]`, `[]=`, `dig`, and
|
|
111
111
|
# `deconstruct_keys`.
|
|
@@ -119,21 +119,21 @@ class Struct[Elem]
|
|
|
119
119
|
# - Struct_subclass.new(*member_names) -> Struct_subclass_instance
|
|
120
120
|
# - Struct_subclass.new(**member_names) -> Struct_subclass_instance
|
|
121
121
|
# -->
|
|
122
|
-
#
|
|
122
|
+
# <code>Struct.new</code> returns a new subclass of `Struct`. The new subclass:
|
|
123
123
|
#
|
|
124
124
|
# * May be anonymous, or may have the name given by `class_name`.
|
|
125
125
|
# * May have members as given by `member_names`.
|
|
126
126
|
# * May have initialization via ordinary arguments, or via keyword arguments
|
|
127
127
|
#
|
|
128
|
-
# The new subclass has its own method
|
|
128
|
+
# The new subclass has its own method <code>::new</code>; thus:
|
|
129
129
|
#
|
|
130
130
|
# Foo = Struct.new('Foo', :foo, :bar) # => Struct::Foo
|
|
131
131
|
# f = Foo.new(0, 1) # => #<struct Struct::Foo foo=0, bar=1>
|
|
132
132
|
#
|
|
133
|
-
#
|
|
133
|
+
# **Class Name**
|
|
134
134
|
#
|
|
135
135
|
# With string argument `class_name`, returns a new subclass of `Struct` named
|
|
136
|
-
#
|
|
136
|
+
# <code>Struct::<em>class_name</em></code>:
|
|
137
137
|
#
|
|
138
138
|
# Foo = Struct.new('Foo', :foo, :bar) # => Struct::Foo
|
|
139
139
|
# Foo.name # => "Struct::Foo"
|
|
@@ -158,7 +158,7 @@ class Struct[Elem]
|
|
|
158
158
|
# dave # => #<struct Struct::Customer name="Dave", address="123 Main">
|
|
159
159
|
# dave.greeting # => "Hello Dave at 123 Main"
|
|
160
160
|
#
|
|
161
|
-
# Output, from
|
|
161
|
+
# Output, from <code>Struct.new</code>:
|
|
162
162
|
#
|
|
163
163
|
# "The new subclass is Struct::Customer"
|
|
164
164
|
#
|
|
@@ -184,7 +184,7 @@ class Struct[Elem]
|
|
|
184
184
|
#
|
|
185
185
|
# A subclass returned by Struct.new has these singleton methods:
|
|
186
186
|
#
|
|
187
|
-
# * Method
|
|
187
|
+
# * Method <code>::new </code> creates an instance of the subclass:
|
|
188
188
|
#
|
|
189
189
|
# Foo.new # => #<struct Struct::Foo foo=nil, bar=nil>
|
|
190
190
|
# Foo.new(0) # => #<struct Struct::Foo foo=0, bar=nil>
|
|
@@ -197,12 +197,13 @@ class Struct[Elem]
|
|
|
197
197
|
# Foo.new(foo: 0, bar: 1, baz: 2)
|
|
198
198
|
# # Raises ArgumentError: unknown keywords: baz
|
|
199
199
|
#
|
|
200
|
-
# * Method
|
|
200
|
+
# * Method <code>:inspect</code> returns a string representation of the
|
|
201
|
+
# subclass:
|
|
201
202
|
#
|
|
202
203
|
# Foo.inspect
|
|
203
204
|
# # => "Struct::Foo"
|
|
204
205
|
#
|
|
205
|
-
# * Method
|
|
206
|
+
# * Method <code>::members</code> returns an array of the member names:
|
|
206
207
|
#
|
|
207
208
|
# Foo.members # => [:foo, :bar]
|
|
208
209
|
#
|
|
@@ -211,8 +212,8 @@ class Struct[Elem]
|
|
|
211
212
|
# By default, the arguments for initializing an instance of the new subclass can
|
|
212
213
|
# be both positional and keyword arguments.
|
|
213
214
|
#
|
|
214
|
-
# Optional keyword argument
|
|
215
|
-
# arguments to be accepted:
|
|
215
|
+
# Optional keyword argument <code>keyword_init:</code> allows to force only one
|
|
216
|
+
# type of arguments to be accepted:
|
|
216
217
|
#
|
|
217
218
|
# KeywordsOnly = Struct.new(:foo, :bar, keyword_init: true)
|
|
218
219
|
# KeywordsOnly.new(bar: 1, foo: 0)
|
|
@@ -252,8 +253,8 @@ class Struct[Elem]
|
|
|
252
253
|
# rdoc-file=struct.c
|
|
253
254
|
# - StructClass::keyword_init? -> true or falsy value
|
|
254
255
|
# -->
|
|
255
|
-
# Returns `true` if the class was initialized with
|
|
256
|
-
# Otherwise returns `nil` or `false`.
|
|
256
|
+
# Returns `true` if the class was initialized with <code>keyword_init:
|
|
257
|
+
# true</code>. Otherwise returns `nil` or `false`.
|
|
257
258
|
#
|
|
258
259
|
# Examples:
|
|
259
260
|
# Foo = Struct.new(:a)
|
|
@@ -272,8 +273,8 @@ class Struct[Elem]
|
|
|
272
273
|
# Returns `true` if and only if the following are true; otherwise returns
|
|
273
274
|
# `false`:
|
|
274
275
|
#
|
|
275
|
-
# *
|
|
276
|
-
# * For each member name `name`,
|
|
276
|
+
# * <code>other.class == self.class</code>.
|
|
277
|
+
# * For each member name `name`, <code>other.name == self.name</code>.
|
|
277
278
|
#
|
|
278
279
|
# Examples:
|
|
279
280
|
#
|
|
@@ -294,8 +295,8 @@ class Struct[Elem]
|
|
|
294
295
|
# Returns `true` if and only if the following are true; otherwise returns
|
|
295
296
|
# `false`:
|
|
296
297
|
#
|
|
297
|
-
# *
|
|
298
|
-
# * For each member name `name`,
|
|
298
|
+
# * <code>other.class == self.class</code>.
|
|
299
|
+
# * For each member name `name`, <code>other.name.eql?(self.name)</code>.
|
|
299
300
|
#
|
|
300
301
|
# Customer = Struct.new(:name, :address, :zip)
|
|
301
302
|
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
|
@@ -361,7 +362,7 @@ class Struct[Elem]
|
|
|
361
362
|
#
|
|
362
363
|
# Related: #members.
|
|
363
364
|
#
|
|
364
|
-
def to_a: () -> Array[
|
|
365
|
+
def to_a: () -> Array[E]
|
|
365
366
|
|
|
366
367
|
# <!--
|
|
367
368
|
# rdoc-file=struct.c
|
|
@@ -384,8 +385,8 @@ class Struct[Elem]
|
|
|
384
385
|
#
|
|
385
386
|
# Raises ArgumentError if the block returns an inappropriate value.
|
|
386
387
|
#
|
|
387
|
-
def to_h: () -> Hash[Symbol,
|
|
388
|
-
| [K, V] () { (Symbol key,
|
|
388
|
+
def to_h: () -> Hash[Symbol, E]
|
|
389
|
+
| [K, V] () { (Symbol key, E value) -> [K, V] } -> Hash[K, V]
|
|
389
390
|
|
|
390
391
|
# <!-- rdoc-file=struct.c -->
|
|
391
392
|
# Returns the values in `self` as an array:
|
|
@@ -440,8 +441,8 @@ class Struct[Elem]
|
|
|
440
441
|
#
|
|
441
442
|
# Related: #each_pair.
|
|
442
443
|
#
|
|
443
|
-
def each: () -> Enumerator[
|
|
444
|
-
| () { (
|
|
444
|
+
def each: () -> Enumerator[E, self]
|
|
445
|
+
| () { (E value) -> void } -> self
|
|
445
446
|
|
|
446
447
|
# <!--
|
|
447
448
|
# rdoc-file=struct.c
|
|
@@ -464,8 +465,8 @@ class Struct[Elem]
|
|
|
464
465
|
#
|
|
465
466
|
# Related: #each.
|
|
466
467
|
#
|
|
467
|
-
def each_pair: () -> Enumerator[[Symbol,
|
|
468
|
-
| () { ([Symbol,
|
|
468
|
+
def each_pair: () -> Enumerator[[Symbol, E], self]
|
|
469
|
+
| () { ([Symbol, E] key_value) -> void } -> self
|
|
469
470
|
|
|
470
471
|
# <!--
|
|
471
472
|
# rdoc-file=struct.c
|
|
@@ -483,15 +484,15 @@ class Struct[Elem]
|
|
|
483
484
|
#
|
|
484
485
|
# Raises NameError if `name` is not the name of a member.
|
|
485
486
|
#
|
|
486
|
-
# With integer argument `n` given, returns
|
|
487
|
-
# see Array@Array+Indexes:
|
|
487
|
+
# With integer argument `n` given, returns <code>self.values[n]</code> if `n` is
|
|
488
|
+
# in range; see Array@Array+Indexes:
|
|
488
489
|
#
|
|
489
490
|
# joe[2] # => 12345
|
|
490
491
|
# joe[-2] # => "123 Maple, Anytown NC"
|
|
491
492
|
#
|
|
492
493
|
# Raises IndexError if `n` is out of range.
|
|
493
494
|
#
|
|
494
|
-
def []: (index name_or_position) ->
|
|
495
|
+
def []: (index name_or_position) -> E
|
|
495
496
|
|
|
496
497
|
# <!--
|
|
497
498
|
# rdoc-file=struct.c
|
|
@@ -520,7 +521,7 @@ class Struct[Elem]
|
|
|
520
521
|
#
|
|
521
522
|
# Raises IndexError if `n` is out of range.
|
|
522
523
|
#
|
|
523
|
-
def []=: (index name_or_position,
|
|
524
|
+
def []=: (index name_or_position, E value) -> E
|
|
524
525
|
|
|
525
526
|
# <!--
|
|
526
527
|
# rdoc-file=struct.c
|
|
@@ -539,8 +540,8 @@ class Struct[Elem]
|
|
|
539
540
|
#
|
|
540
541
|
# With no block given, returns an Enumerator.
|
|
541
542
|
#
|
|
542
|
-
def select: () -> Enumerator[
|
|
543
|
-
| () { (
|
|
543
|
+
def select: () -> Enumerator[E, Array[E]]
|
|
544
|
+
| () { (E value) -> boolish } -> Array[E]
|
|
544
545
|
|
|
545
546
|
# <!-- rdoc-file=struct.c -->
|
|
546
547
|
# With a block given, returns an array of values from `self` for which the block
|
|
@@ -590,7 +591,7 @@ class Struct[Elem]
|
|
|
590
591
|
# Raises RangeError if any element of the range is negative and out of range;
|
|
591
592
|
# see Array@Array+Indexes.
|
|
592
593
|
#
|
|
593
|
-
def values_at: (*int | range[int?] positions) -> Array[
|
|
594
|
+
def values_at: (*int | range[int?] positions) -> Array[E]
|
|
594
595
|
|
|
595
596
|
# <!--
|
|
596
597
|
# rdoc-file=struct.c
|
|
@@ -633,7 +634,7 @@ class Struct[Elem]
|
|
|
633
634
|
# f.dig(0, 0, :b, 0) # => 1
|
|
634
635
|
# f.dig(:b, 0) # => nil
|
|
635
636
|
#
|
|
636
|
-
def dig: (index name_or_position) ->
|
|
637
|
+
def dig: (index name_or_position) -> E
|
|
637
638
|
| (index name_or_position, untyped, *untyped) -> untyped
|
|
638
639
|
|
|
639
640
|
# <!-- rdoc-file=struct.c -->
|
|
@@ -663,5 +664,5 @@ class Struct[Elem]
|
|
|
663
664
|
# h = joe.deconstruct_keys(nil)
|
|
664
665
|
# h # => {:name=>"Joseph Smith, Jr.", :address=>"123 Maple, Anytown NC", :zip=>12345}
|
|
665
666
|
#
|
|
666
|
-
def deconstruct_keys: (Array[index & Hash::_Key]? indices) -> Hash[index & Hash::_Key,
|
|
667
|
+
def deconstruct_keys: (Array[index & Hash::_Key]? indices) -> Hash[index & Hash::_Key, E]
|
|
667
668
|
end
|
data/core/symbol.rbs
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
# The same `Symbol` object will be created for a given name or string for the
|
|
9
9
|
# duration of a program's execution, regardless of the context or meaning of
|
|
10
10
|
# that name. Thus if `Fred` is a constant in one context, a method in another,
|
|
11
|
-
# and a class in a third, the `Symbol`
|
|
12
|
-
# three contexts.
|
|
11
|
+
# and a class in a third, the `Symbol` <code>:Fred</code> will be the same
|
|
12
|
+
# object in all three contexts.
|
|
13
13
|
#
|
|
14
14
|
# module One
|
|
15
15
|
# class Fred
|
|
@@ -75,7 +75,8 @@
|
|
|
75
75
|
# given Regexp or other object; returns `nil` if no match is found.
|
|
76
76
|
# * #[], #slice : Returns a substring of symbol determined by a given index,
|
|
77
77
|
# start/length, or range, or string.
|
|
78
|
-
# * #empty?: Returns `true` if
|
|
78
|
+
# * #empty?: Returns `true` if <code>self.length</code> is zero; `false`
|
|
79
|
+
# otherwise.
|
|
79
80
|
# * #encoding: Returns the Encoding object that represents the encoding of
|
|
80
81
|
# symbol.
|
|
81
82
|
# * #end_with?: Returns `true` if symbol ends with any of the given strings.
|
|
@@ -130,19 +131,25 @@ class Symbol
|
|
|
130
131
|
|
|
131
132
|
# <!--
|
|
132
133
|
# rdoc-file=string.c
|
|
133
|
-
# -
|
|
134
|
+
# - self <=> other -> -1, 0, 1, or nil
|
|
134
135
|
# -->
|
|
135
|
-
#
|
|
136
|
-
#
|
|
136
|
+
# Compares `self` and `other`, using String#<=>.
|
|
137
|
+
#
|
|
138
|
+
# Returns:
|
|
137
139
|
#
|
|
138
|
-
#
|
|
139
|
-
#
|
|
140
|
-
# :foo <=> :bar # => 1
|
|
140
|
+
# * <code>self.to_s <=> other.to_s</code>, if `other` is a symbol.
|
|
141
|
+
# * `nil`, otherwise.
|
|
141
142
|
#
|
|
142
|
-
#
|
|
143
|
+
# Examples:
|
|
143
144
|
#
|
|
145
|
+
# :bar <=> :foo # => -1
|
|
146
|
+
# :foo <=> :foo # => 0
|
|
147
|
+
# :foo <=> :bar # => 1
|
|
144
148
|
# :foo <=> 'bar' # => nil
|
|
145
149
|
#
|
|
150
|
+
# Class Symbol includes module Comparable, each of whose methods uses Symbol#<=>
|
|
151
|
+
# for comparison.
|
|
152
|
+
#
|
|
146
153
|
# Related: String#<=>.
|
|
147
154
|
#
|
|
148
155
|
def <=>: (Symbol object) -> (-1 | 0 | 1)
|
|
@@ -165,8 +172,8 @@ class Symbol
|
|
|
165
172
|
# rdoc-file=string.c
|
|
166
173
|
# - symbol =~ object -> integer or nil
|
|
167
174
|
# -->
|
|
168
|
-
# Equivalent to
|
|
169
|
-
# variables; see String#=~.
|
|
175
|
+
# Equivalent to <code>symbol.to_s =~ object</code>, including possible updates
|
|
176
|
+
# to global variables; see String#=~.
|
|
170
177
|
#
|
|
171
178
|
def =~: (Regexp regex) -> Integer?
|
|
172
179
|
| [T] (String::_MatchAgainst[String, T] object) -> T
|
|
@@ -179,7 +186,7 @@ class Symbol
|
|
|
179
186
|
# - symbol[regexp, capture = 0] -> string or nil
|
|
180
187
|
# - symbol[substring] -> string or nil
|
|
181
188
|
# -->
|
|
182
|
-
# Equivalent to
|
|
189
|
+
# Equivalent to <code>symbol.to_s[]</code>; see String#[].
|
|
183
190
|
#
|
|
184
191
|
def []: (int start, ?int length) -> String?
|
|
185
192
|
| (range[int?] range) -> String?
|
|
@@ -188,9 +195,9 @@ class Symbol
|
|
|
188
195
|
|
|
189
196
|
# <!--
|
|
190
197
|
# rdoc-file=string.c
|
|
191
|
-
# - capitalize(
|
|
198
|
+
# - capitalize(mapping) -> symbol
|
|
192
199
|
# -->
|
|
193
|
-
# Equivalent to
|
|
200
|
+
# Equivalent to <code>sym.to_s.capitalize.to_sym</code>.
|
|
194
201
|
#
|
|
195
202
|
# See String#capitalize.
|
|
196
203
|
#
|
|
@@ -204,7 +211,7 @@ class Symbol
|
|
|
204
211
|
# - casecmp(object) -> -1, 0, 1, or nil
|
|
205
212
|
# -->
|
|
206
213
|
# Like Symbol#<=>, but case-insensitive; equivalent to
|
|
207
|
-
#
|
|
214
|
+
# <code>self.to_s.casecmp(object.to_s)</code>:
|
|
208
215
|
#
|
|
209
216
|
# lower = :abc
|
|
210
217
|
# upper = :ABC
|
|
@@ -268,9 +275,9 @@ class Symbol
|
|
|
268
275
|
|
|
269
276
|
# <!--
|
|
270
277
|
# rdoc-file=string.c
|
|
271
|
-
# - downcase(
|
|
278
|
+
# - downcase(mapping) -> symbol
|
|
272
279
|
# -->
|
|
273
|
-
# Equivalent to
|
|
280
|
+
# Equivalent to <code>sym.to_s.downcase.to_sym</code>.
|
|
274
281
|
#
|
|
275
282
|
# See String#downcase.
|
|
276
283
|
#
|
|
@@ -285,7 +292,7 @@ class Symbol
|
|
|
285
292
|
# rdoc-file=string.c
|
|
286
293
|
# - empty? -> true or false
|
|
287
294
|
# -->
|
|
288
|
-
# Returns `true` if `self` is
|
|
295
|
+
# Returns `true` if `self` is <code>:''</code>, `false` otherwise.
|
|
289
296
|
#
|
|
290
297
|
def empty?: () -> bool
|
|
291
298
|
|
|
@@ -293,7 +300,7 @@ class Symbol
|
|
|
293
300
|
# rdoc-file=string.c
|
|
294
301
|
# - encoding -> encoding
|
|
295
302
|
# -->
|
|
296
|
-
# Equivalent to
|
|
303
|
+
# Equivalent to <code>self.to_s.encoding</code>; see String#encoding.
|
|
297
304
|
#
|
|
298
305
|
def encoding: () -> Encoding
|
|
299
306
|
|
|
@@ -301,7 +308,7 @@ class Symbol
|
|
|
301
308
|
# rdoc-file=string.c
|
|
302
309
|
# - end_with?(*strings) -> true or false
|
|
303
310
|
# -->
|
|
304
|
-
# Equivalent to
|
|
311
|
+
# Equivalent to <code>self.to_s.end_with?</code>; see String#end_with?.
|
|
305
312
|
#
|
|
306
313
|
def end_with?: (*string suffixes) -> bool
|
|
307
314
|
|
|
@@ -335,7 +342,7 @@ class Symbol
|
|
|
335
342
|
# rdoc-file=string.c
|
|
336
343
|
# - length -> integer
|
|
337
344
|
# -->
|
|
338
|
-
# Equivalent to
|
|
345
|
+
# Equivalent to <code>self.to_s.length</code>; see String#length.
|
|
339
346
|
#
|
|
340
347
|
def length: () -> Integer
|
|
341
348
|
|
|
@@ -344,8 +351,8 @@ class Symbol
|
|
|
344
351
|
# - match(pattern, offset = 0) -> matchdata or nil
|
|
345
352
|
# - match(pattern, offset = 0) {|matchdata| } -> object
|
|
346
353
|
# -->
|
|
347
|
-
# Equivalent to
|
|
348
|
-
# variables; see String#match.
|
|
354
|
+
# Equivalent to <code>self.to_s.match</code>, including possible updates to
|
|
355
|
+
# global variables; see String#match.
|
|
349
356
|
#
|
|
350
357
|
def match: (Regexp | string pattern, ?int offset) -> MatchData?
|
|
351
358
|
| [T] (Regexp | string pattern, ?int offset) { (MatchData matchdata) -> T } -> T?
|
|
@@ -354,12 +361,12 @@ class Symbol
|
|
|
354
361
|
# rdoc-file=string.c
|
|
355
362
|
# - match?(pattern, offset) -> true or false
|
|
356
363
|
# -->
|
|
357
|
-
# Equivalent to
|
|
364
|
+
# Equivalent to <code>sym.to_s.match?</code>; see String#match.
|
|
358
365
|
#
|
|
359
366
|
def match?: (Regexp | string pattern, ?int offset) -> bool
|
|
360
367
|
|
|
361
368
|
# <!-- rdoc-file=string.c -->
|
|
362
|
-
# Equivalent to
|
|
369
|
+
# Equivalent to <code>self.to_s.succ.to_sym</code>:
|
|
363
370
|
#
|
|
364
371
|
# :foo.succ # => :fop
|
|
365
372
|
#
|
|
@@ -382,12 +389,12 @@ class Symbol
|
|
|
382
389
|
def name: () -> String
|
|
383
390
|
|
|
384
391
|
# <!-- rdoc-file=string.c -->
|
|
385
|
-
# Equivalent to
|
|
392
|
+
# Equivalent to <code>self.to_s.length</code>; see String#length.
|
|
386
393
|
#
|
|
387
394
|
alias size length
|
|
388
395
|
|
|
389
396
|
# <!-- rdoc-file=string.c -->
|
|
390
|
-
# Equivalent to
|
|
397
|
+
# Equivalent to <code>symbol.to_s[]</code>; see String#[].
|
|
391
398
|
#
|
|
392
399
|
alias slice []
|
|
393
400
|
|
|
@@ -395,7 +402,7 @@ class Symbol
|
|
|
395
402
|
# rdoc-file=string.c
|
|
396
403
|
# - start_with?(*string_or_regexp) -> true or false
|
|
397
404
|
# -->
|
|
398
|
-
# Equivalent to
|
|
405
|
+
# Equivalent to <code>self.to_s.start_with?</code>; see String#start_with?.
|
|
399
406
|
#
|
|
400
407
|
def start_with?: (*Regexp | string prefixes) -> bool
|
|
401
408
|
|
|
@@ -403,7 +410,7 @@ class Symbol
|
|
|
403
410
|
# rdoc-file=string.c
|
|
404
411
|
# - succ
|
|
405
412
|
# -->
|
|
406
|
-
# Equivalent to
|
|
413
|
+
# Equivalent to <code>self.to_s.succ.to_sym</code>:
|
|
407
414
|
#
|
|
408
415
|
# :foo.succ # => :fop
|
|
409
416
|
#
|
|
@@ -413,9 +420,9 @@ class Symbol
|
|
|
413
420
|
|
|
414
421
|
# <!--
|
|
415
422
|
# rdoc-file=string.c
|
|
416
|
-
# - swapcase(
|
|
423
|
+
# - swapcase(mapping) -> symbol
|
|
417
424
|
# -->
|
|
418
|
-
# Equivalent to
|
|
425
|
+
# Equivalent to <code>sym.to_s.swapcase.to_sym</code>.
|
|
419
426
|
#
|
|
420
427
|
# See String#swapcase.
|
|
421
428
|
#
|
|
@@ -462,9 +469,9 @@ class Symbol
|
|
|
462
469
|
|
|
463
470
|
# <!--
|
|
464
471
|
# rdoc-file=string.c
|
|
465
|
-
# - upcase(
|
|
472
|
+
# - upcase(mapping) -> symbol
|
|
466
473
|
# -->
|
|
467
|
-
# Equivalent to
|
|
474
|
+
# Equivalent to <code>sym.to_s.upcase.to_sym</code>.
|
|
468
475
|
#
|
|
469
476
|
# See String#upcase.
|
|
470
477
|
#
|