rbs 3.9.5 → 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/.clang-format +74 -0
- data/.clangd +2 -0
- data/.github/dependabot.yml +14 -14
- data/.github/workflows/bundle-update.yml +60 -0
- data/.github/workflows/c-check.yml +58 -0
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/ruby.yml +40 -32
- data/.github/workflows/rust.yml +95 -0
- data/.github/workflows/typecheck.yml +2 -2
- data/.github/workflows/windows.yml +3 -3
- data/.gitignore +4 -0
- data/.rubocop.yml +2 -2
- data/.vscode/extensions.json +5 -0
- data/.vscode/settings.json +19 -0
- data/CHANGELOG.md +284 -0
- data/README.md +38 -1
- data/Rakefile +144 -29
- data/Steepfile +2 -0
- data/config.yml +634 -62
- 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 +188 -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 +196 -148
- 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 +3303 -1365
- data/core/struct.rbs +27 -26
- data/core/symbol.rbs +41 -34
- data/core/thread.rbs +135 -74
- 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 +1513 -0
- data/ext/rbs_extension/ast_translation.h +37 -0
- data/ext/rbs_extension/class_constants.c +185 -0
- data/{include/rbs/constants.h → ext/rbs_extension/class_constants.h} +22 -1
- data/ext/rbs_extension/compat.h +10 -0
- data/ext/rbs_extension/extconf.rb +25 -1
- data/ext/rbs_extension/legacy_location.c +294 -0
- data/ext/rbs_extension/legacy_location.h +82 -0
- data/ext/rbs_extension/main.c +468 -24
- data/ext/rbs_extension/rbs_extension.h +6 -21
- data/ext/rbs_extension/rbs_string_bridging.c +9 -0
- data/ext/rbs_extension/rbs_string_bridging.h +24 -0
- data/include/rbs/ast.h +1022 -0
- data/include/rbs/defines.h +86 -0
- data/include/rbs/lexer.h +206 -0
- data/include/rbs/location.h +40 -0
- data/include/rbs/parser.h +153 -0
- data/include/rbs/string.h +47 -0
- data/include/rbs/util/rbs_allocator.h +59 -0
- data/include/rbs/util/rbs_assert.h +20 -0
- data/include/rbs/util/rbs_buffer.h +83 -0
- data/include/rbs/util/rbs_constant_pool.h +6 -70
- data/include/rbs/util/rbs_encoding.h +282 -0
- data/include/rbs/util/rbs_unescape.h +24 -0
- data/include/rbs.h +9 -2
- data/lib/rbs/annotate/formatter.rb +3 -13
- data/lib/rbs/annotate/rdoc_annotator.rb +3 -1
- data/lib/rbs/annotate/rdoc_source.rb +1 -1
- 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 +409 -0
- data/lib/rbs/ast/ruby/comment_block.rb +245 -0
- data/lib/rbs/ast/ruby/declarations.rb +281 -0
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
- data/lib/rbs/ast/ruby/members.rb +723 -0
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +105 -20
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +63 -126
- data/lib/rbs/cli.rb +56 -24
- data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
- data/lib/rbs/collection/sources/git.rb +1 -0
- data/lib/rbs/collection.rb +0 -1
- data/lib/rbs/definition.rb +6 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +121 -65
- data/lib/rbs/definition_builder/method_builder.rb +65 -30
- data/lib/rbs/definition_builder.rb +177 -20
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment/class_entry.rb +69 -0
- data/lib/rbs/environment/module_entry.rb +66 -0
- data/lib/rbs/environment.rb +402 -214
- data/lib/rbs/environment_loader.rb +2 -8
- data/lib/rbs/errors.rb +31 -21
- data/lib/rbs/inline_parser/comment_association.rb +117 -0
- data/lib/rbs/inline_parser.rb +542 -0
- data/lib/rbs/location_aux.rb +36 -4
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/namespace.rb +0 -7
- data/lib/rbs/parser_aux.rb +35 -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 -2
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +116 -38
- data/lib/rbs/source.rb +99 -0
- data/lib/rbs/subtractor.rb +7 -4
- data/lib/rbs/test/type_check.rb +19 -2
- data/lib/rbs/type_name.rb +1 -8
- data/lib/rbs/types.rb +91 -79
- data/lib/rbs/unit_test/convertibles.rb +1 -0
- 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 +13 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +3 -3
- data/rbs.gemspec +4 -2
- 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/ancestor_builder.rbs +1 -1
- data/sig/annotate/formatter.rbs +2 -2
- data/sig/annotate/rdoc_annotater.rbs +1 -1
- data/sig/ast/ruby/annotations.rbs +421 -0
- data/sig/ast/ruby/comment_block.rbs +127 -0
- data/sig/ast/ruby/declarations.rbs +158 -0
- data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
- data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
- data/sig/ast/ruby/members.rbs +178 -0
- data/sig/buffer.rbs +63 -5
- 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 -0
- data/sig/definition_builder.rbs +3 -1
- data/sig/environment/class_entry.rbs +50 -0
- data/sig/environment/module_entry.rbs +50 -0
- data/sig/environment.rbs +94 -87
- data/sig/errors.rbs +26 -20
- data/sig/inline_parser/comment_association.rbs +71 -0
- data/sig/inline_parser.rbs +124 -0
- data/sig/location.rbs +32 -7
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -1
- data/sig/method_builder.rbs +9 -4
- data/sig/namespace.rbs +0 -5
- data/sig/parser.rbs +67 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +35 -7
- data/sig/source.rbs +48 -0
- data/sig/type_param.rbs +13 -8
- data/sig/typename.rbs +0 -5
- data/sig/types.rbs +10 -8
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +11 -0
- data/src/ast.c +1604 -0
- data/src/lexer.c +3194 -0
- data/src/lexer.re +154 -0
- data/src/lexstate.c +212 -0
- data/src/location.c +31 -0
- data/src/parser.c +4205 -0
- data/src/string.c +41 -0
- data/src/util/rbs_allocator.c +165 -0
- data/src/util/rbs_assert.c +19 -0
- data/src/util/rbs_buffer.c +54 -0
- data/src/util/rbs_constant_pool.c +18 -92
- data/src/util/rbs_encoding.c +21308 -0
- data/src/util/rbs_unescape.c +167 -0
- 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 +226 -179
- 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 +4 -3
- data/stdlib/rdoc/0/comment.rbs +2 -0
- data/stdlib/rdoc/0/options.rbs +76 -0
- data/stdlib/rdoc/0/parser.rbs +1 -1
- data/stdlib/rdoc/0/rdoc.rbs +7 -5
- data/stdlib/rdoc/0/store.rbs +2 -2
- data/stdlib/resolv/0/resolv.rbs +25 -68
- data/stdlib/ripper/0/ripper.rbs +25 -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 +9 -9
- 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 +121 -18
- data/ext/rbs_extension/lexer.c +0 -2728
- data/ext/rbs_extension/lexer.h +0 -179
- data/ext/rbs_extension/lexer.re +0 -147
- data/ext/rbs_extension/lexstate.c +0 -175
- data/ext/rbs_extension/location.c +0 -325
- data/ext/rbs_extension/location.h +0 -85
- data/ext/rbs_extension/parser.c +0 -2982
- data/ext/rbs_extension/parser.h +0 -18
- data/ext/rbs_extension/parserstate.c +0 -411
- data/ext/rbs_extension/parserstate.h +0 -163
- data/ext/rbs_extension/unescape.c +0 -32
- data/include/rbs/ruby_objs.h +0 -72
- data/src/constants.c +0 -153
- data/src/ruby_objs.c +0 -799
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
module Unnamed
|
|
3
|
+
module Random_Formatter
|
|
4
|
+
# <!--
|
|
5
|
+
# rdoc-file=lib/random/formatter.rb
|
|
6
|
+
# - base64(n=nil)
|
|
7
|
+
# -->
|
|
8
|
+
# Generate a random base64 string.
|
|
9
|
+
#
|
|
10
|
+
# The argument *n* specifies the length, in bytes, of the random number to be
|
|
11
|
+
# generated. The length of the result string is about 4/3 of *n*.
|
|
12
|
+
#
|
|
13
|
+
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
|
14
|
+
# future.
|
|
15
|
+
#
|
|
16
|
+
# The result may contain A-Z, a-z, 0-9, "+", "/" and "=".
|
|
17
|
+
#
|
|
18
|
+
# require 'random/formatter'
|
|
19
|
+
#
|
|
20
|
+
# Random.base64 #=> "/2BuBuLf3+WfSKyQbRcc/A=="
|
|
21
|
+
# # or
|
|
22
|
+
# prng = Random.new
|
|
23
|
+
# prng.base64 #=> "6BbW0pxO0YENxn38HMUbcQ=="
|
|
24
|
+
#
|
|
25
|
+
# See RFC 3548 for the definition of base64.
|
|
26
|
+
#
|
|
27
|
+
%a{annotate:rdoc:copy:Random::Formatter#base64}
|
|
28
|
+
def base64: (?Integer? n) -> String
|
|
29
|
+
|
|
30
|
+
# <!--
|
|
31
|
+
# rdoc-file=lib/random/formatter.rb
|
|
32
|
+
# - hex(n=nil)
|
|
33
|
+
# -->
|
|
34
|
+
# Generate a random hexadecimal string.
|
|
35
|
+
#
|
|
36
|
+
# The argument *n* specifies the length, in bytes, of the random number to be
|
|
37
|
+
# generated. The length of the resulting hexadecimal string is twice of *n*.
|
|
38
|
+
#
|
|
39
|
+
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
|
40
|
+
# future.
|
|
41
|
+
#
|
|
42
|
+
# The result may contain 0-9 and a-f.
|
|
43
|
+
#
|
|
44
|
+
# require 'random/formatter'
|
|
45
|
+
#
|
|
46
|
+
# Random.hex #=> "eb693ec8252cd630102fd0d0fb7c3485"
|
|
47
|
+
# # or
|
|
48
|
+
# prng = Random.new
|
|
49
|
+
# prng.hex #=> "91dc3bfb4de5b11d029d376634589b61"
|
|
50
|
+
#
|
|
51
|
+
%a{annotate:rdoc:copy:Random::Formatter#hex}
|
|
52
|
+
def hex: (?Integer? n) -> String
|
|
53
|
+
|
|
54
|
+
# <!--
|
|
55
|
+
# rdoc-file=lib/random/formatter.rb
|
|
56
|
+
# - random_bytes(n=nil)
|
|
57
|
+
# -->
|
|
58
|
+
# Generate a random binary string.
|
|
59
|
+
#
|
|
60
|
+
# The argument *n* specifies the length of the result string.
|
|
61
|
+
#
|
|
62
|
+
# If *n* is not specified or is nil, 16 is assumed. It may be larger in future.
|
|
63
|
+
#
|
|
64
|
+
# The result may contain any byte: "x00" - "xff".
|
|
65
|
+
#
|
|
66
|
+
# require 'random/formatter'
|
|
67
|
+
#
|
|
68
|
+
# Random.random_bytes #=> "\xD8\\\xE0\xF4\r\xB2\xFC*WM\xFF\x83\x18\xF45\xB6"
|
|
69
|
+
# # or
|
|
70
|
+
# prng = Random.new
|
|
71
|
+
# prng.random_bytes #=> "m\xDC\xFC/\a\x00Uf\xB2\xB2P\xBD\xFF6S\x97"
|
|
72
|
+
#
|
|
73
|
+
%a{annotate:rdoc:copy:Random::Formatter#random_bytes}
|
|
74
|
+
def random_bytes: (?Integer? n) -> String
|
|
75
|
+
|
|
76
|
+
# <!--
|
|
77
|
+
# rdoc-file=lib/random/formatter.rb
|
|
78
|
+
# - urlsafe_base64(n=nil, padding=false)
|
|
79
|
+
# -->
|
|
80
|
+
# Generate a random URL-safe base64 string.
|
|
81
|
+
#
|
|
82
|
+
# The argument *n* specifies the length, in bytes, of the random number to be
|
|
83
|
+
# generated. The length of the result string is about 4/3 of *n*.
|
|
84
|
+
#
|
|
85
|
+
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
|
86
|
+
# future.
|
|
87
|
+
#
|
|
88
|
+
# The boolean argument *padding* specifies the padding. If it is false or nil,
|
|
89
|
+
# padding is not generated. Otherwise padding is generated. By default, padding
|
|
90
|
+
# is not generated because "=" may be used as a URL delimiter.
|
|
91
|
+
#
|
|
92
|
+
# The result may contain A-Z, a-z, 0-9, "-" and "_". "=" is also used if
|
|
93
|
+
# *padding* is true.
|
|
94
|
+
#
|
|
95
|
+
# require 'random/formatter'
|
|
96
|
+
#
|
|
97
|
+
# Random.urlsafe_base64 #=> "b4GOKm4pOYU_-BOXcrUGDg"
|
|
98
|
+
# # or
|
|
99
|
+
# prng = Random.new
|
|
100
|
+
# prng.urlsafe_base64 #=> "UZLdOkzop70Ddx-IJR0ABg"
|
|
101
|
+
#
|
|
102
|
+
# prng.urlsafe_base64(nil, true) #=> "i0XQ-7gglIsHGV2_BNPrdQ=="
|
|
103
|
+
# prng.urlsafe_base64(nil, true) #=> "-M8rLhr7JEpJlqFGUMmOxg=="
|
|
104
|
+
#
|
|
105
|
+
# See RFC 3548 for the definition of URL-safe base64.
|
|
106
|
+
#
|
|
107
|
+
%a{annotate:rdoc:copy:Random::Formatter#urlsafe_base64}
|
|
108
|
+
def urlsafe_base64: (?Integer? n, ?boolish padding) -> String
|
|
109
|
+
|
|
110
|
+
# <!--
|
|
111
|
+
# rdoc-file=lib/random/formatter.rb
|
|
112
|
+
# - uuid()
|
|
113
|
+
# -->
|
|
114
|
+
# Generate a random v4 UUID (Universally Unique IDentifier).
|
|
115
|
+
#
|
|
116
|
+
# require 'random/formatter'
|
|
117
|
+
#
|
|
118
|
+
# Random.uuid #=> "2d931510-d99f-494a-8c67-87feb05e1594"
|
|
119
|
+
# Random.uuid #=> "bad85eb9-0713-4da7-8d36-07a8e4b00eab"
|
|
120
|
+
# # or
|
|
121
|
+
# prng = Random.new
|
|
122
|
+
# prng.uuid #=> "62936e70-1815-439b-bf89-8492855a7e6b"
|
|
123
|
+
#
|
|
124
|
+
# The version 4 UUID is purely random (except the version). It doesn't contain
|
|
125
|
+
# meaningful information such as MAC addresses, timestamps, etc.
|
|
126
|
+
#
|
|
127
|
+
# The result contains 122 random bits (15.25 random bytes).
|
|
128
|
+
#
|
|
129
|
+
# See [RFC9562](https://www.rfc-editor.org/rfc/rfc9562) for details of UUIDv4.
|
|
130
|
+
#
|
|
131
|
+
%a{annotate:rdoc:copy:Random::Formatter#uuid}
|
|
132
|
+
def uuid: () -> String
|
|
133
|
+
|
|
134
|
+
# <!--
|
|
135
|
+
# rdoc-file=lib/random/formatter.rb
|
|
136
|
+
# - uuid_v4()
|
|
137
|
+
# -->
|
|
138
|
+
#
|
|
139
|
+
%a{annotate:rdoc:copy:Random::Formatter#uuid_v4}
|
|
140
|
+
alias uuid_v4 uuid
|
|
141
|
+
|
|
142
|
+
# <!--
|
|
143
|
+
# rdoc-file=lib/random/formatter.rb
|
|
144
|
+
# - uuid_v7(extra_timestamp_bits: 0)
|
|
145
|
+
# -->
|
|
146
|
+
# Generate a random v7 UUID (Universally Unique IDentifier).
|
|
147
|
+
#
|
|
148
|
+
# require 'random/formatter'
|
|
149
|
+
#
|
|
150
|
+
# Random.uuid_v7 # => "0188d4c3-1311-7f96-85c7-242a7aa58f1e"
|
|
151
|
+
# Random.uuid_v7 # => "0188d4c3-16fe-744f-86af-38fa04c62bb5"
|
|
152
|
+
# Random.uuid_v7 # => "0188d4c3-1af8-764f-b049-c204ce0afa23"
|
|
153
|
+
# Random.uuid_v7 # => "0188d4c3-1e74-7085-b14f-ef6415dc6f31"
|
|
154
|
+
# # |<--sorted-->| |<----- random ---->|
|
|
155
|
+
#
|
|
156
|
+
# # or
|
|
157
|
+
# prng = Random.new
|
|
158
|
+
# prng.uuid_v7 # => "0188ca51-5e72-7950-a11d-def7ff977c98"
|
|
159
|
+
#
|
|
160
|
+
# The version 7 UUID starts with the least significant 48 bits of a 64 bit Unix
|
|
161
|
+
# timestamp (milliseconds since the epoch) and fills the remaining bits with
|
|
162
|
+
# random data, excluding the version and variant bits.
|
|
163
|
+
#
|
|
164
|
+
# This allows version 7 UUIDs to be sorted by creation time. Time ordered UUIDs
|
|
165
|
+
# can be used for better database index locality of newly inserted records,
|
|
166
|
+
# which may have a significant performance benefit compared to random data
|
|
167
|
+
# inserts.
|
|
168
|
+
#
|
|
169
|
+
# The result contains 74 random bits (9.25 random bytes).
|
|
170
|
+
#
|
|
171
|
+
# Note that this method cannot be made reproducible because its output includes
|
|
172
|
+
# not only random bits but also timestamp.
|
|
173
|
+
#
|
|
174
|
+
# See [RFC9562](https://www.rfc-editor.org/rfc/rfc9562) for details of UUIDv7.
|
|
175
|
+
#
|
|
176
|
+
# #### Monotonicity
|
|
177
|
+
#
|
|
178
|
+
# UUIDv7 has millisecond precision by default, so multiple UUIDs created within
|
|
179
|
+
# the same millisecond are not issued in monotonically increasing order. To
|
|
180
|
+
# create UUIDs that are time-ordered with sub-millisecond precision, up to 12
|
|
181
|
+
# bits of additional timestamp may added with `extra_timestamp_bits`. The extra
|
|
182
|
+
# timestamp precision comes at the expense of random bits. Setting
|
|
183
|
+
# <code>extra_timestamp_bits: 12</code> provides ~244ns of precision, but only
|
|
184
|
+
# 62 random bits (7.75 random bytes).
|
|
185
|
+
#
|
|
186
|
+
# prng = Random.new
|
|
187
|
+
# Array.new(4) { prng.uuid_v7(extra_timestamp_bits: 12) }
|
|
188
|
+
# # =>
|
|
189
|
+
# ["0188d4c7-13da-74f9-8b53-22a786ffdd5a",
|
|
190
|
+
# "0188d4c7-13da-753b-83a5-7fb9b2afaeea",
|
|
191
|
+
# "0188d4c7-13da-754a-88ea-ac0baeedd8db",
|
|
192
|
+
# "0188d4c7-13da-7557-83e1-7cad9cda0d8d"]
|
|
193
|
+
# # |<--- sorted --->| |<-- random --->|
|
|
194
|
+
#
|
|
195
|
+
# Array.new(4) { prng.uuid_v7(extra_timestamp_bits: 8) }
|
|
196
|
+
# # =>
|
|
197
|
+
# ["0188d4c7-3333-7a95-850a-de6edb858f7e",
|
|
198
|
+
# "0188d4c7-3333-7ae8-842e-bc3a8b7d0cf9", # <- out of order
|
|
199
|
+
# "0188d4c7-3333-7ae2-995a-9f135dc44ead", # <- out of order
|
|
200
|
+
# "0188d4c7-3333-7af9-87c3-8f612edac82e"]
|
|
201
|
+
# # |<--- sorted -->||<---- random --->|
|
|
202
|
+
#
|
|
203
|
+
# Any rollbacks of the system clock will break monotonicity. UUIDv7 is based on
|
|
204
|
+
# UTC, which excludes leap seconds and can rollback the clock. To avoid this,
|
|
205
|
+
# the system clock can synchronize with an NTP server configured to use a "leap
|
|
206
|
+
# smear" approach. NTP or PTP will also be needed to synchronize across
|
|
207
|
+
# distributed nodes.
|
|
208
|
+
#
|
|
209
|
+
# Counters and other mechanisms for stronger guarantees of monotonicity are not
|
|
210
|
+
# implemented. Applications with stricter requirements should follow [Section
|
|
211
|
+
# 6.2](https://www.rfc-editor.org/rfc/rfc9562.html#name-monotonicity-and-counter
|
|
212
|
+
# s) of the specification.
|
|
213
|
+
#
|
|
214
|
+
%a{annotate:rdoc:copy:Random::Formatter#uuid_v7}
|
|
215
|
+
def uuid_v7: (?extra_timestamp_bits: Integer) -> String
|
|
216
|
+
|
|
217
|
+
# <!--
|
|
218
|
+
# rdoc-file=lib/random/formatter.rb
|
|
219
|
+
# - alphanumeric(n = nil, chars: ALPHANUMERIC)
|
|
220
|
+
# -->
|
|
221
|
+
# Generate a random alphanumeric string.
|
|
222
|
+
#
|
|
223
|
+
# The argument *n* specifies the length, in characters, of the alphanumeric
|
|
224
|
+
# string to be generated. The argument *chars* specifies the character list
|
|
225
|
+
# which the result is consist of.
|
|
226
|
+
#
|
|
227
|
+
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
|
228
|
+
# future.
|
|
229
|
+
#
|
|
230
|
+
# The result may contain A-Z, a-z and 0-9, unless *chars* is specified.
|
|
231
|
+
#
|
|
232
|
+
# require 'random/formatter'
|
|
233
|
+
#
|
|
234
|
+
# Random.alphanumeric #=> "2BuBuLf3WfSKyQbR"
|
|
235
|
+
# # or
|
|
236
|
+
# prng = Random.new
|
|
237
|
+
# prng.alphanumeric(10) #=> "i6K93NdqiH"
|
|
238
|
+
#
|
|
239
|
+
# Random.alphanumeric(4, chars: [*"0".."9"]) #=> "2952"
|
|
240
|
+
# # or
|
|
241
|
+
# prng = Random.new
|
|
242
|
+
# prng.alphanumeric(10, chars: [*"!".."/"]) #=> ",.,++%/''."
|
|
243
|
+
#
|
|
244
|
+
%a{annotate:rdoc:copy:Random::Formatter#alphanumeric}
|
|
245
|
+
def alphanumeric: (?Numeric?, ?chars: Array[String]) -> String
|
|
246
|
+
|
|
247
|
+
# <!--
|
|
248
|
+
# rdoc-file=lib/random/formatter.rb
|
|
249
|
+
# - gen_random(n)
|
|
250
|
+
# -->
|
|
251
|
+
# Internal interface to Random; Generate random data *n* bytes.
|
|
252
|
+
#
|
|
253
|
+
%a{annotate:rdoc:copy:Random::Formatter#gen_random}
|
|
254
|
+
private def gen_random: (Integer n) -> String
|
|
255
|
+
|
|
256
|
+
# <!--
|
|
257
|
+
# rdoc-file=lib/random/formatter.rb
|
|
258
|
+
# - choose(source, n)
|
|
259
|
+
# -->
|
|
260
|
+
# Generate a string that randomly draws from a source array of characters.
|
|
261
|
+
#
|
|
262
|
+
# The argument *source* specifies the array of characters from which to generate
|
|
263
|
+
# the string. The argument *n* specifies the length, in characters, of the
|
|
264
|
+
# string to be generated.
|
|
265
|
+
#
|
|
266
|
+
# The result may contain whatever characters are in the source array.
|
|
267
|
+
#
|
|
268
|
+
# require 'random/formatter'
|
|
269
|
+
#
|
|
270
|
+
# prng.choose([*'l'..'r'], 16) #=> "lmrqpoonmmlqlron"
|
|
271
|
+
# prng.choose([*'0'..'9'], 5) #=> "27309"
|
|
272
|
+
#
|
|
273
|
+
%a{annotate:rdoc:copy:Random::Formatter#choose}
|
|
274
|
+
private def choose: (Array[String] source, Integer n) -> String
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
end
|
|
@@ -22,15 +22,16 @@ module RDoc
|
|
|
22
22
|
# * RDoc::MetaMethod
|
|
23
23
|
# * RDoc::Alias
|
|
24
24
|
# * RDoc::Constant
|
|
25
|
+
# * RDoc::Require
|
|
25
26
|
# * RDoc::Mixin
|
|
26
|
-
# * RDoc::Require
|
|
27
27
|
# * RDoc::Include
|
|
28
|
+
# * RDoc::Extend
|
|
28
29
|
#
|
|
29
30
|
class CodeObject
|
|
30
31
|
# <!-- rdoc-file=lib/rdoc/code_object.rb -->
|
|
31
32
|
# Our comment
|
|
32
33
|
#
|
|
33
|
-
attr_reader comment:
|
|
34
|
+
attr_reader comment: Comment | String
|
|
34
35
|
|
|
35
36
|
# <!--
|
|
36
37
|
# rdoc-file=lib/rdoc/code_object.rb
|
|
@@ -46,6 +47,6 @@ module RDoc
|
|
|
46
47
|
# -->
|
|
47
48
|
# Replaces our comment with `comment`, unless it is empty.
|
|
48
49
|
#
|
|
49
|
-
def comment=: (
|
|
50
|
+
def comment=: (Comment | String | nil) -> (Comment | String | nil)
|
|
50
51
|
end
|
|
51
52
|
end
|
data/stdlib/rdoc/0/comment.rbs
CHANGED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
%a{annotate:rdoc:skip}
|
|
2
|
+
module RDoc
|
|
3
|
+
# <!-- rdoc-file=lib/rdoc/options.rb -->
|
|
4
|
+
# RDoc::Options handles the parsing and storage of options
|
|
5
|
+
#
|
|
6
|
+
# ## Saved Options
|
|
7
|
+
#
|
|
8
|
+
# You can save some options like the markup format in the `.rdoc_options` file
|
|
9
|
+
# in your gem. The easiest way to do this is:
|
|
10
|
+
#
|
|
11
|
+
# rdoc --markup tomdoc --write-options
|
|
12
|
+
#
|
|
13
|
+
# Which will automatically create the file and fill it with the options you
|
|
14
|
+
# specified.
|
|
15
|
+
#
|
|
16
|
+
# The following options will not be saved since they interfere with the user's
|
|
17
|
+
# preferences or with the normal operation of RDoc:
|
|
18
|
+
#
|
|
19
|
+
# * `--coverage-report`
|
|
20
|
+
# * `--dry-run`
|
|
21
|
+
# * `--encoding`
|
|
22
|
+
# * `--force-update`
|
|
23
|
+
# * `--format`
|
|
24
|
+
# * `--pipe`
|
|
25
|
+
# * `--quiet`
|
|
26
|
+
# * `--template`
|
|
27
|
+
# * `--verbose`
|
|
28
|
+
#
|
|
29
|
+
# ## Custom Options
|
|
30
|
+
#
|
|
31
|
+
# Generators can hook into RDoc::Options to add generator-specific command line
|
|
32
|
+
# options.
|
|
33
|
+
#
|
|
34
|
+
# When `--format` is encountered in ARGV, RDoc calls ::setup_options on the
|
|
35
|
+
# generator class to add extra options to the option parser. Options for custom
|
|
36
|
+
# generators must occur after `--format`. `rdoc --help` will list options for
|
|
37
|
+
# all installed generators.
|
|
38
|
+
#
|
|
39
|
+
# Example:
|
|
40
|
+
#
|
|
41
|
+
# class RDoc::Generator::Spellcheck
|
|
42
|
+
# RDoc::RDoc.add_generator self
|
|
43
|
+
#
|
|
44
|
+
# def self.setup_options rdoc_options
|
|
45
|
+
# op = rdoc_options.option_parser
|
|
46
|
+
#
|
|
47
|
+
# op.on('--spell-dictionary DICTIONARY',
|
|
48
|
+
# RDoc::Options::Path) do |dictionary|
|
|
49
|
+
# rdoc_options.spell_dictionary = dictionary
|
|
50
|
+
# end
|
|
51
|
+
# end
|
|
52
|
+
# end
|
|
53
|
+
#
|
|
54
|
+
# Of course, RDoc::Options does not respond to `spell_dictionary` by default so
|
|
55
|
+
# you will need to add it:
|
|
56
|
+
#
|
|
57
|
+
# class RDoc::Options
|
|
58
|
+
#
|
|
59
|
+
# ##
|
|
60
|
+
# # The spell dictionary used by the spell-checking plugin.
|
|
61
|
+
#
|
|
62
|
+
# attr_accessor :spell_dictionary
|
|
63
|
+
#
|
|
64
|
+
# end
|
|
65
|
+
#
|
|
66
|
+
# ## Option Validators
|
|
67
|
+
#
|
|
68
|
+
# OptionParser validators will validate and cast user input values. In addition
|
|
69
|
+
# to the validators that ship with OptionParser (String, Integer, Float,
|
|
70
|
+
# TrueClass, FalseClass, Array, Regexp, Date, Time, URI, etc.), RDoc::Options
|
|
71
|
+
# adds Path, PathArray and Template.
|
|
72
|
+
#
|
|
73
|
+
class Options
|
|
74
|
+
def initialize: (?untyped loaded_options) -> void
|
|
75
|
+
end
|
|
76
|
+
end
|
data/stdlib/rdoc/0/parser.rbs
CHANGED
|
@@ -42,7 +42,7 @@ module RDoc
|
|
|
42
42
|
|
|
43
43
|
# <!--
|
|
44
44
|
# rdoc-file=lib/rdoc/parser.rb
|
|
45
|
-
# - new(top_level,
|
|
45
|
+
# - new(top_level, content, options, stats)
|
|
46
46
|
# -->
|
|
47
47
|
# Creates a new Parser storing `top_level`, `file_name`, `content`, `options`
|
|
48
48
|
# and `stats` in instance variables. In +@preprocess+ an
|
data/stdlib/rdoc/0/rdoc.rbs
CHANGED
|
@@ -84,7 +84,7 @@ module RDoc
|
|
|
84
84
|
# -->
|
|
85
85
|
# Starts collecting tokens
|
|
86
86
|
#
|
|
87
|
-
def collect_tokens: () -> void
|
|
87
|
+
def collect_tokens: (Symbol) -> void
|
|
88
88
|
|
|
89
89
|
# <!--
|
|
90
90
|
# rdoc-file=lib/rdoc/token_stream.rb
|
|
@@ -190,7 +190,7 @@ module RDoc
|
|
|
190
190
|
#
|
|
191
191
|
# Usually this is called by super from a subclass.
|
|
192
192
|
#
|
|
193
|
-
def initialize: (String text, String name) -> void
|
|
193
|
+
def initialize: (String text, String name, ?singleton: bool) -> void
|
|
194
194
|
|
|
195
195
|
# <!--
|
|
196
196
|
# rdoc-file=lib/rdoc/method_attr.rb
|
|
@@ -267,7 +267,7 @@ module RDoc
|
|
|
267
267
|
# -->
|
|
268
268
|
# Creates a new AnyMethod with a token stream `text` and `name`
|
|
269
269
|
#
|
|
270
|
-
def initialize: (String? text, String name) -> void
|
|
270
|
+
def initialize: (String? text, String name, ?singleton: bool) -> void
|
|
271
271
|
end
|
|
272
272
|
|
|
273
273
|
# <!-- rdoc-file=lib/rdoc/attr.rb -->
|
|
@@ -286,7 +286,7 @@ module RDoc
|
|
|
286
286
|
# Creates a new Attr with body `text`, `name`, read/write status `rw` and
|
|
287
287
|
# `comment`. `singleton` marks this as a class attribute.
|
|
288
288
|
#
|
|
289
|
-
def initialize: (String? text, String name, String rw, RDoc::Comment? comment, ?bool
|
|
289
|
+
def initialize: (String? text, String name, String rw, RDoc::Comment? comment, ?singleton: bool) -> void
|
|
290
290
|
end
|
|
291
291
|
|
|
292
292
|
# <!-- rdoc-file=lib/rdoc/constant.rb -->
|
|
@@ -372,6 +372,8 @@ module RDoc
|
|
|
372
372
|
#
|
|
373
373
|
attr_accessor old_name: String
|
|
374
374
|
|
|
375
|
+
attr_reader singleton: bool
|
|
376
|
+
|
|
375
377
|
# <!--
|
|
376
378
|
# rdoc-file=lib/rdoc/alias.rb
|
|
377
379
|
# - new(text, old_name, new_name, comment, singleton = false)
|
|
@@ -379,7 +381,7 @@ module RDoc
|
|
|
379
381
|
# Creates a new Alias with a token stream of `text` that aliases `old_name` to
|
|
380
382
|
# `new_name`, has `comment` and is a `singleton` context.
|
|
381
383
|
#
|
|
382
|
-
def initialize: (String? text, String name, String old_name, RDoc::Comment? comment, ?bool
|
|
384
|
+
def initialize: (String? text, String name, String old_name, RDoc::Comment? comment, ?singleton: bool) -> void
|
|
383
385
|
end
|
|
384
386
|
|
|
385
387
|
# <!-- rdoc-file=lib/rdoc/stats.rb -->
|
data/stdlib/rdoc/0/store.rbs
CHANGED
|
@@ -22,11 +22,11 @@ module RDoc
|
|
|
22
22
|
class Store
|
|
23
23
|
# <!--
|
|
24
24
|
# rdoc-file=lib/rdoc/store.rb
|
|
25
|
-
# - new(path
|
|
25
|
+
# - new(options, path: nil, type: nil)
|
|
26
26
|
# -->
|
|
27
27
|
# Creates a new Store of `type` that will load or save to `path`
|
|
28
28
|
#
|
|
29
|
-
def initialize: (?String?
|
|
29
|
+
def initialize: (Options, ?path: String? , ?type: Symbol?) -> void
|
|
30
30
|
|
|
31
31
|
# <!--
|
|
32
32
|
# rdoc-file=lib/rdoc/store.rb
|