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/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
|
#
|
|
@@ -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)
|
|
@@ -483,8 +484,8 @@ 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"
|
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
|
#
|