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
|
@@ -34,7 +34,7 @@ module RBS
|
|
|
34
34
|
# ENV[''] = '0'
|
|
35
35
|
# # Raises Errno::EINVAL (Invalid argument - ruby_setenv())
|
|
36
36
|
#
|
|
37
|
-
# * May not contain character
|
|
37
|
+
# * May not contain character <code>"="</code>:
|
|
38
38
|
# ENV['='] = '0'
|
|
39
39
|
# # Raises Errno::EINVAL (Invalid argument - ruby_setenv(=))
|
|
40
40
|
#
|
|
@@ -47,7 +47,7 @@ module RBS
|
|
|
47
47
|
# ENV[Object.new] = '0'
|
|
48
48
|
# # Raises TypeError (no implicit conversion of Object into String)
|
|
49
49
|
#
|
|
50
|
-
# * May not contain the NUL character
|
|
50
|
+
# * May not contain the NUL character <code>"\0"</code>:
|
|
51
51
|
#
|
|
52
52
|
# ENV['foo'] = "\0"
|
|
53
53
|
# # Raises ArgumentError (bad environment variable value: contains null byte)
|
|
@@ -140,7 +140,7 @@ module RBS
|
|
|
140
140
|
#
|
|
141
141
|
# * ::assoc: Returns a 2-element array containing the name and value of the
|
|
142
142
|
# named environment variable if it exists:
|
|
143
|
-
# * ::clone:
|
|
143
|
+
# * ::clone: Raises an exception.
|
|
144
144
|
# * ::except: Returns a hash of all name/value pairs except those given.
|
|
145
145
|
# * ::fetch: Returns the value for the given name.
|
|
146
146
|
# * ::inspect: Returns the contents of `ENV` as a string.
|
|
@@ -156,7 +156,7 @@ module RBS
|
|
|
156
156
|
# * ::to_a: Returns the entries as an array of 2-element Arrays.
|
|
157
157
|
# * ::to_h: Returns a hash of entries selected by the block.
|
|
158
158
|
# * ::to_hash: Returns a hash of all entries.
|
|
159
|
-
# * ::to_s: Returns the string
|
|
159
|
+
# * ::to_s: Returns the string <code>'ENV'</code>.
|
|
160
160
|
# * ::values: Returns all values as an array.
|
|
161
161
|
# * ::values_at: Returns an array of the values for the given name.
|
|
162
162
|
#
|
|
@@ -1001,11 +1001,12 @@ module RBS
|
|
|
1001
1001
|
# ENV.include?('baz') # => false
|
|
1002
1002
|
#
|
|
1003
1003
|
# Returns `false` if `name` is the empty String or is a String containing
|
|
1004
|
-
# character
|
|
1004
|
+
# character <code>'='</code>:
|
|
1005
1005
|
# ENV.include?('') # => false
|
|
1006
1006
|
# ENV.include?('=') # => false
|
|
1007
1007
|
#
|
|
1008
|
-
# Raises an exception if `name` is a String containing the NUL character
|
|
1008
|
+
# Raises an exception if `name` is a String containing the NUL character
|
|
1009
|
+
# <code>"\0"</code>:
|
|
1009
1010
|
# ENV.include?("\0") # Raises ArgumentError (bad environment variable name: contains null byte)
|
|
1010
1011
|
#
|
|
1011
1012
|
# Raises an exception if `name` has an encoding that is not ASCII-compatible:
|
|
@@ -1034,11 +1035,12 @@ module RBS
|
|
|
1034
1035
|
# ENV.include?('baz') # => false
|
|
1035
1036
|
#
|
|
1036
1037
|
# Returns `false` if `name` is the empty String or is a String containing
|
|
1037
|
-
# character
|
|
1038
|
+
# character <code>'='</code>:
|
|
1038
1039
|
# ENV.include?('') # => false
|
|
1039
1040
|
# ENV.include?('=') # => false
|
|
1040
1041
|
#
|
|
1041
|
-
# Raises an exception if `name` is a String containing the NUL character
|
|
1042
|
+
# Raises an exception if `name` is a String containing the NUL character
|
|
1043
|
+
# <code>"\0"</code>:
|
|
1042
1044
|
# ENV.include?("\0") # Raises ArgumentError (bad environment variable name: contains null byte)
|
|
1043
1045
|
#
|
|
1044
1046
|
# Raises an exception if `name` has an encoding that is not ASCII-compatible:
|
|
@@ -1067,11 +1069,12 @@ module RBS
|
|
|
1067
1069
|
# ENV.include?('baz') # => false
|
|
1068
1070
|
#
|
|
1069
1071
|
# Returns `false` if `name` is the empty String or is a String containing
|
|
1070
|
-
# character
|
|
1072
|
+
# character <code>'='</code>:
|
|
1071
1073
|
# ENV.include?('') # => false
|
|
1072
1074
|
# ENV.include?('=') # => false
|
|
1073
1075
|
#
|
|
1074
|
-
# Raises an exception if `name` is a String containing the NUL character
|
|
1076
|
+
# Raises an exception if `name` is a String containing the NUL character
|
|
1077
|
+
# <code>"\0"</code>:
|
|
1075
1078
|
# ENV.include?("\0") # Raises ArgumentError (bad environment variable name: contains null byte)
|
|
1076
1079
|
#
|
|
1077
1080
|
# Raises an exception if `name` has an encoding that is not ASCII-compatible:
|
|
@@ -1132,11 +1135,12 @@ module RBS
|
|
|
1132
1135
|
# ENV.include?('baz') # => false
|
|
1133
1136
|
#
|
|
1134
1137
|
# Returns `false` if `name` is the empty String or is a String containing
|
|
1135
|
-
# character
|
|
1138
|
+
# character <code>'='</code>:
|
|
1136
1139
|
# ENV.include?('') # => false
|
|
1137
1140
|
# ENV.include?('=') # => false
|
|
1138
1141
|
#
|
|
1139
|
-
# Raises an exception if `name` is a String containing the NUL character
|
|
1142
|
+
# Raises an exception if `name` is a String containing the NUL character
|
|
1143
|
+
# <code>"\0"</code>:
|
|
1140
1144
|
# ENV.include?("\0") # Raises ArgumentError (bad environment variable name: contains null byte)
|
|
1141
1145
|
#
|
|
1142
1146
|
# Raises an exception if `name` has an encoding that is not ASCII-compatible:
|
|
@@ -1173,9 +1177,10 @@ module RBS
|
|
|
1173
1177
|
# variable.
|
|
1174
1178
|
#
|
|
1175
1179
|
# Returns `nil` if `name` is the empty String or is a String containing
|
|
1176
|
-
# character
|
|
1180
|
+
# character <code>'='</code>.
|
|
1177
1181
|
#
|
|
1178
|
-
# Raises an exception if `name` is a String containing the NUL character
|
|
1182
|
+
# Raises an exception if `name` is a String containing the NUL character
|
|
1183
|
+
# <code>"\0"</code>:
|
|
1179
1184
|
# ENV.assoc("\0") # Raises ArgumentError (bad environment variable name: contains null byte)
|
|
1180
1185
|
#
|
|
1181
1186
|
# Raises an exception if `name` has an encoding that is not ASCII-compatible:
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
module Unnamed
|
|
3
|
+
class TopLevelSelfClass
|
|
4
|
+
private
|
|
5
|
+
|
|
6
|
+
# <!--
|
|
7
|
+
# rdoc-file=eval.c
|
|
8
|
+
# - include(module, ...) -> self
|
|
9
|
+
# -->
|
|
10
|
+
# Invokes Module.append_features on each parameter in reverse order.
|
|
11
|
+
#
|
|
12
|
+
%a{annotate:rdoc:copy:Module#include}
|
|
13
|
+
def include: (Module, *Module arg0) -> self
|
|
14
|
+
|
|
15
|
+
# <!--
|
|
16
|
+
# rdoc-file=eval.c
|
|
17
|
+
# - using(module) -> self
|
|
18
|
+
# -->
|
|
19
|
+
# Import class refinements from *module* into the current class or module
|
|
20
|
+
# definition.
|
|
21
|
+
#
|
|
22
|
+
%a{annotate:rdoc:copy:Module#using}
|
|
23
|
+
def using: (Module arg0) -> self
|
|
24
|
+
|
|
25
|
+
# <!--
|
|
26
|
+
# rdoc-file=proc.c
|
|
27
|
+
# - define_method(symbol, method) -> symbol
|
|
28
|
+
# - define_method(symbol) { block } -> symbol
|
|
29
|
+
# -->
|
|
30
|
+
# Defines an instance method in the receiver. The *method* parameter can be a
|
|
31
|
+
# `Proc`, a `Method` or an `UnboundMethod` object. If a block is specified, it
|
|
32
|
+
# is used as the method body. If a block or the *method* parameter has
|
|
33
|
+
# parameters, they're used as method parameters. This block is evaluated using
|
|
34
|
+
# #instance_eval.
|
|
35
|
+
#
|
|
36
|
+
# class A
|
|
37
|
+
# def fred
|
|
38
|
+
# puts "In Fred"
|
|
39
|
+
# end
|
|
40
|
+
# def create_method(name, &block)
|
|
41
|
+
# self.class.define_method(name, &block)
|
|
42
|
+
# end
|
|
43
|
+
# define_method(:wilma) { puts "Charge it!" }
|
|
44
|
+
# define_method(:flint) {|name| puts "I'm #{name}!"}
|
|
45
|
+
# end
|
|
46
|
+
# class B < A
|
|
47
|
+
# define_method(:barney, instance_method(:fred))
|
|
48
|
+
# end
|
|
49
|
+
# a = B.new
|
|
50
|
+
# a.barney
|
|
51
|
+
# a.wilma
|
|
52
|
+
# a.flint('Dino')
|
|
53
|
+
# a.create_method(:betty) { p self }
|
|
54
|
+
# a.betty
|
|
55
|
+
#
|
|
56
|
+
# <em>produces:</em>
|
|
57
|
+
#
|
|
58
|
+
# In Fred
|
|
59
|
+
# Charge it!
|
|
60
|
+
# I'm Dino!
|
|
61
|
+
# #<B:0x401b39e8>
|
|
62
|
+
#
|
|
63
|
+
%a{annotate:rdoc:copy:Module#define_method}
|
|
64
|
+
def define_method: (interned symbol, ^(?) [self: top] -> untyped | Method | UnboundMethod method) -> Symbol
|
|
65
|
+
| (interned symbol) { (?) [self: top] -> untyped } -> Symbol
|
|
66
|
+
|
|
67
|
+
# <!--
|
|
68
|
+
# rdoc-file=vm_method.c
|
|
69
|
+
# - public -> nil
|
|
70
|
+
# - public(method_name) -> method_name
|
|
71
|
+
# - public(method_name, method_name, ...) -> array
|
|
72
|
+
# - public(array) -> array
|
|
73
|
+
# -->
|
|
74
|
+
# With no arguments, sets the default visibility for subsequently defined
|
|
75
|
+
# methods to public. With arguments, sets the named methods to have public
|
|
76
|
+
# visibility. String arguments are converted to symbols. An Array of Symbols
|
|
77
|
+
# and/or Strings is also accepted. If a single argument is passed, it is
|
|
78
|
+
# returned. If no argument is passed, nil is returned. If multiple arguments are
|
|
79
|
+
# passed, the arguments are returned as an array.
|
|
80
|
+
#
|
|
81
|
+
%a{annotate:rdoc:copy:Module#public}
|
|
82
|
+
def public: () -> nil
|
|
83
|
+
| (Symbol method_name) -> Symbol
|
|
84
|
+
| (Symbol, Symbol, *Symbol method_name) -> Array[Symbol]
|
|
85
|
+
| (string method_name) -> string
|
|
86
|
+
| (interned, interned, *interned method_name) -> Array[interned]
|
|
87
|
+
| (Array[interned]) -> Array[interned]
|
|
88
|
+
|
|
89
|
+
# <!--
|
|
90
|
+
# rdoc-file=vm_method.c
|
|
91
|
+
# - private -> nil
|
|
92
|
+
# - private(method_name) -> method_name
|
|
93
|
+
# - private(method_name, method_name, ...) -> array
|
|
94
|
+
# - private(array) -> array
|
|
95
|
+
# -->
|
|
96
|
+
# With no arguments, sets the default visibility for subsequently defined
|
|
97
|
+
# methods to private. With arguments, sets the named methods to have private
|
|
98
|
+
# visibility. String arguments are converted to symbols. An Array of Symbols
|
|
99
|
+
# and/or Strings is also accepted. If a single argument is passed, it is
|
|
100
|
+
# returned. If no argument is passed, nil is returned. If multiple arguments are
|
|
101
|
+
# passed, the arguments are returned as an array.
|
|
102
|
+
#
|
|
103
|
+
# module Mod
|
|
104
|
+
# def a() end
|
|
105
|
+
# def b() end
|
|
106
|
+
# private
|
|
107
|
+
# def c() end
|
|
108
|
+
# private :a
|
|
109
|
+
# end
|
|
110
|
+
# Mod.private_instance_methods #=> [:a, :c]
|
|
111
|
+
#
|
|
112
|
+
# Note that to show a private method on RDoc, use <code>:doc:</code>.
|
|
113
|
+
#
|
|
114
|
+
%a{annotate:rdoc:copy:Module#private}
|
|
115
|
+
def private: () -> nil
|
|
116
|
+
| (Symbol method_name) -> Symbol
|
|
117
|
+
| (Symbol, Symbol, *Symbol method_name) -> Array[Symbol]
|
|
118
|
+
| (string method_name) -> string
|
|
119
|
+
| (interned, interned, *interned method_name) -> Array[interned]
|
|
120
|
+
| (Array[interned]) -> Array[interned]
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
data/core/rbs/unnamed/random.rbs
CHANGED
|
@@ -31,12 +31,14 @@ module RBS
|
|
|
31
31
|
# prng.rand(100) # => 42
|
|
32
32
|
#
|
|
33
33
|
# When `max` is a Float, `rand` returns a random floating point number between
|
|
34
|
-
# 0.0 and `max`, including 0.0 and excluding `max`.
|
|
34
|
+
# 0.0 and `max`, including 0.0 and excluding `max`. Note that it behaves
|
|
35
|
+
# differently from Kernel.rand.
|
|
35
36
|
#
|
|
36
|
-
# prng.rand(1.5)
|
|
37
|
+
# prng.rand(1.5) # => 1.4600282860034115
|
|
38
|
+
# rand(1.5) # => 0
|
|
37
39
|
#
|
|
38
40
|
# When `range` is a Range, `rand` returns a random number where
|
|
39
|
-
#
|
|
41
|
+
# <code>range.member?(number) == true</code>.
|
|
40
42
|
#
|
|
41
43
|
# prng.rand(5..9) # => one of [5, 6, 7, 8, 9]
|
|
42
44
|
# prng.rand(5...9) # => one of [5, 6, 7, 8]
|
|
@@ -44,7 +46,8 @@ module RBS
|
|
|
44
46
|
# prng.rand(5.0...9.0) # => between 5.0 and 9.0, excluding 9.0
|
|
45
47
|
#
|
|
46
48
|
# Both the beginning and ending values of the range must respond to subtract
|
|
47
|
-
# (
|
|
49
|
+
# (<code>-</code>) and add (<code>+</code>)methods, or rand will raise an
|
|
50
|
+
# ArgumentError.
|
|
48
51
|
#
|
|
49
52
|
%a{annotate:rdoc:copy:Random#rand}
|
|
50
53
|
def rand: (?0) -> Float
|
|
@@ -85,9 +88,10 @@ module RBS
|
|
|
85
88
|
# <!-- rdoc-file=lib/random/formatter.rb -->
|
|
86
89
|
# ## Random number formatter.
|
|
87
90
|
#
|
|
88
|
-
# Formats generated random numbers in many manners. When
|
|
89
|
-
# required, several methods are added to
|
|
90
|
-
#
|
|
91
|
+
# Formats generated random numbers in many manners. When
|
|
92
|
+
# <code>'random/formatter'</code> is required, several methods are added to
|
|
93
|
+
# empty core module <code>Random::Formatter</code>, making them available as
|
|
94
|
+
# Random's instance and module methods.
|
|
91
95
|
#
|
|
92
96
|
# Standard library SecureRandom is also extended with the module, and the
|
|
93
97
|
# methods described below are available as a module methods in it.
|
|
@@ -146,56 +150,6 @@ module RBS
|
|
|
146
150
|
#
|
|
147
151
|
%a{annotate:rdoc:copy:Random::Formatter}
|
|
148
152
|
module Random_Formatter
|
|
149
|
-
# <!--
|
|
150
|
-
# rdoc-file=lib/random/formatter.rb
|
|
151
|
-
# - base64(n=nil)
|
|
152
|
-
# -->
|
|
153
|
-
# Generate a random base64 string.
|
|
154
|
-
#
|
|
155
|
-
# The argument *n* specifies the length, in bytes, of the random number to be
|
|
156
|
-
# generated. The length of the result string is about 4/3 of *n*.
|
|
157
|
-
#
|
|
158
|
-
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
|
159
|
-
# future.
|
|
160
|
-
#
|
|
161
|
-
# The result may contain A-Z, a-z, 0-9, "+", "/" and "=".
|
|
162
|
-
#
|
|
163
|
-
# require 'random/formatter'
|
|
164
|
-
#
|
|
165
|
-
# Random.base64 #=> "/2BuBuLf3+WfSKyQbRcc/A=="
|
|
166
|
-
# # or
|
|
167
|
-
# prng = Random.new
|
|
168
|
-
# prng.base64 #=> "6BbW0pxO0YENxn38HMUbcQ=="
|
|
169
|
-
#
|
|
170
|
-
# See RFC 3548 for the definition of base64.
|
|
171
|
-
#
|
|
172
|
-
%a{annotate:rdoc:copy:Random::Formatter#base64}
|
|
173
|
-
def base64: (?Integer? n) -> String
|
|
174
|
-
|
|
175
|
-
# <!--
|
|
176
|
-
# rdoc-file=lib/random/formatter.rb
|
|
177
|
-
# - hex(n=nil)
|
|
178
|
-
# -->
|
|
179
|
-
# Generate a random hexadecimal string.
|
|
180
|
-
#
|
|
181
|
-
# The argument *n* specifies the length, in bytes, of the random number to be
|
|
182
|
-
# generated. The length of the resulting hexadecimal string is twice of *n*.
|
|
183
|
-
#
|
|
184
|
-
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
|
185
|
-
# future.
|
|
186
|
-
#
|
|
187
|
-
# The result may contain 0-9 and a-f.
|
|
188
|
-
#
|
|
189
|
-
# require 'random/formatter'
|
|
190
|
-
#
|
|
191
|
-
# Random.hex #=> "eb693ec8252cd630102fd0d0fb7c3485"
|
|
192
|
-
# # or
|
|
193
|
-
# prng = Random.new
|
|
194
|
-
# prng.hex #=> "91dc3bfb4de5b11d029d376634589b61"
|
|
195
|
-
#
|
|
196
|
-
%a{annotate:rdoc:copy:Random::Formatter#hex}
|
|
197
|
-
def hex: (?Integer? n) -> String
|
|
198
|
-
|
|
199
153
|
# <!-- rdoc-file=random.c -->
|
|
200
154
|
# Generates formatted random number from raw random bytes. See Random#rand.
|
|
201
155
|
#
|
|
@@ -208,9 +162,6 @@ module RBS
|
|
|
208
162
|
| (::Range[Integer] n) -> Integer
|
|
209
163
|
| (::Range[Numeric] n) -> Numeric
|
|
210
164
|
|
|
211
|
-
%a{annotate:rdoc:copy:Random::Formatter#random_byte}
|
|
212
|
-
def random_bytes: (?Integer? n) -> String
|
|
213
|
-
|
|
214
165
|
# <!--
|
|
215
166
|
# rdoc-file=random.c
|
|
216
167
|
# - prng.random_number -> float
|
|
@@ -230,64 +181,6 @@ module RBS
|
|
|
230
181
|
| (?::Range[Float]? n) -> Float
|
|
231
182
|
| (?::Range[Integer]? n) -> Integer
|
|
232
183
|
| (?::Range[Numeric]? n) -> Numeric
|
|
233
|
-
|
|
234
|
-
# <!--
|
|
235
|
-
# rdoc-file=lib/random/formatter.rb
|
|
236
|
-
# - urlsafe_base64(n=nil, padding=false)
|
|
237
|
-
# -->
|
|
238
|
-
# Generate a random URL-safe base64 string.
|
|
239
|
-
#
|
|
240
|
-
# The argument *n* specifies the length, in bytes, of the random number to be
|
|
241
|
-
# generated. The length of the result string is about 4/3 of *n*.
|
|
242
|
-
#
|
|
243
|
-
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
|
244
|
-
# future.
|
|
245
|
-
#
|
|
246
|
-
# The boolean argument *padding* specifies the padding. If it is false or nil,
|
|
247
|
-
# padding is not generated. Otherwise padding is generated. By default, padding
|
|
248
|
-
# is not generated because "=" may be used as a URL delimiter.
|
|
249
|
-
#
|
|
250
|
-
# The result may contain A-Z, a-z, 0-9, "-" and "_". "=" is also used if
|
|
251
|
-
# *padding* is true.
|
|
252
|
-
#
|
|
253
|
-
# require 'random/formatter'
|
|
254
|
-
#
|
|
255
|
-
# Random.urlsafe_base64 #=> "b4GOKm4pOYU_-BOXcrUGDg"
|
|
256
|
-
# # or
|
|
257
|
-
# prng = Random.new
|
|
258
|
-
# prng.urlsafe_base64 #=> "UZLdOkzop70Ddx-IJR0ABg"
|
|
259
|
-
#
|
|
260
|
-
# prng.urlsafe_base64(nil, true) #=> "i0XQ-7gglIsHGV2_BNPrdQ=="
|
|
261
|
-
# prng.urlsafe_base64(nil, true) #=> "-M8rLhr7JEpJlqFGUMmOxg=="
|
|
262
|
-
#
|
|
263
|
-
# See RFC 3548 for the definition of URL-safe base64.
|
|
264
|
-
#
|
|
265
|
-
%a{annotate:rdoc:copy:Random::Formatter#urlsafe_base64}
|
|
266
|
-
def urlsafe_base64: (?Integer? n, ?boolish padding) -> String
|
|
267
|
-
|
|
268
|
-
# <!--
|
|
269
|
-
# rdoc-file=lib/random/formatter.rb
|
|
270
|
-
# - uuid()
|
|
271
|
-
# -->
|
|
272
|
-
# Generate a random v4 UUID (Universally Unique IDentifier).
|
|
273
|
-
#
|
|
274
|
-
# require 'random/formatter'
|
|
275
|
-
#
|
|
276
|
-
# Random.uuid #=> "2d931510-d99f-494a-8c67-87feb05e1594"
|
|
277
|
-
# Random.uuid #=> "bad85eb9-0713-4da7-8d36-07a8e4b00eab"
|
|
278
|
-
# # or
|
|
279
|
-
# prng = Random.new
|
|
280
|
-
# prng.uuid #=> "62936e70-1815-439b-bf89-8492855a7e6b"
|
|
281
|
-
#
|
|
282
|
-
# The version 4 UUID is purely random (except the version). It doesn't contain
|
|
283
|
-
# meaningful information such as MAC addresses, timestamps, etc.
|
|
284
|
-
#
|
|
285
|
-
# The result contains 122 random bits (15.25 random bytes).
|
|
286
|
-
#
|
|
287
|
-
# See [RFC9562](https://www.rfc-editor.org/rfc/rfc9562) for details of UUIDv4.
|
|
288
|
-
#
|
|
289
|
-
%a{annotate:rdoc:copy:Random::Formatter#uuid}
|
|
290
|
-
def uuid: () -> String
|
|
291
184
|
end
|
|
292
185
|
end
|
|
293
186
|
end
|