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.
Files changed (330) hide show
  1. checksums.yaml +4 -4
  2. data/.clang-format +74 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +14 -14
  5. data/.github/workflows/bundle-update.yml +60 -0
  6. data/.github/workflows/c-check.yml +58 -0
  7. data/.github/workflows/comments.yml +5 -3
  8. data/.github/workflows/dependabot.yml +2 -2
  9. data/.github/workflows/ruby.yml +40 -32
  10. data/.github/workflows/rust.yml +95 -0
  11. data/.github/workflows/typecheck.yml +2 -2
  12. data/.github/workflows/windows.yml +3 -3
  13. data/.gitignore +4 -0
  14. data/.rubocop.yml +2 -2
  15. data/.vscode/extensions.json +5 -0
  16. data/.vscode/settings.json +19 -0
  17. data/CHANGELOG.md +284 -0
  18. data/README.md +38 -1
  19. data/Rakefile +144 -29
  20. data/Steepfile +2 -0
  21. data/config.yml +634 -62
  22. data/core/array.rbs +307 -227
  23. data/core/basic_object.rbs +9 -8
  24. data/core/binding.rbs +0 -2
  25. data/core/builtin.rbs +2 -2
  26. data/core/class.rbs +6 -5
  27. data/core/comparable.rbs +55 -34
  28. data/core/complex.rbs +104 -78
  29. data/core/dir.rbs +61 -49
  30. data/core/encoding.rbs +12 -15
  31. data/core/enumerable.rbs +188 -87
  32. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  33. data/core/enumerator.rbs +65 -2
  34. data/core/errno.rbs +11 -2
  35. data/core/errors.rbs +58 -29
  36. data/core/exception.rbs +13 -13
  37. data/core/fiber.rbs +74 -54
  38. data/core/file.rbs +280 -177
  39. data/core/file_test.rbs +3 -3
  40. data/core/float.rbs +257 -92
  41. data/core/gc.rbs +425 -281
  42. data/core/hash.rbs +1045 -739
  43. data/core/integer.rbs +135 -137
  44. data/core/io/buffer.rbs +53 -42
  45. data/core/io/wait.rbs +13 -35
  46. data/core/io.rbs +196 -148
  47. data/core/kernel.rbs +216 -155
  48. data/core/marshal.rbs +4 -4
  49. data/core/match_data.rbs +15 -13
  50. data/core/math.rbs +107 -66
  51. data/core/method.rbs +69 -33
  52. data/core/module.rbs +244 -106
  53. data/core/nil_class.rbs +7 -6
  54. data/core/numeric.rbs +74 -63
  55. data/core/object.rbs +9 -11
  56. data/core/object_space.rbs +30 -23
  57. data/core/pathname.rbs +1322 -0
  58. data/core/proc.rbs +95 -58
  59. data/core/process.rbs +222 -202
  60. data/core/ractor.rbs +371 -515
  61. data/core/random.rbs +21 -3
  62. data/core/range.rbs +159 -57
  63. data/core/rational.rbs +60 -89
  64. data/core/rbs/unnamed/argf.rbs +60 -53
  65. data/core/rbs/unnamed/env_class.rbs +19 -14
  66. data/core/rbs/unnamed/main_class.rbs +123 -0
  67. data/core/rbs/unnamed/random.rbs +11 -118
  68. data/core/regexp.rbs +258 -214
  69. data/core/ruby.rbs +53 -0
  70. data/core/ruby_vm.rbs +38 -34
  71. data/core/rubygems/config_file.rbs +5 -5
  72. data/core/rubygems/errors.rbs +4 -71
  73. data/core/rubygems/requirement.rbs +5 -5
  74. data/core/rubygems/rubygems.rbs +16 -82
  75. data/core/rubygems/version.rbs +2 -3
  76. data/core/set.rbs +490 -360
  77. data/core/signal.rbs +26 -16
  78. data/core/string.rbs +3303 -1365
  79. data/core/struct.rbs +27 -26
  80. data/core/symbol.rbs +41 -34
  81. data/core/thread.rbs +135 -74
  82. data/core/time.rbs +81 -50
  83. data/core/trace_point.rbs +41 -35
  84. data/core/true_class.rbs +2 -2
  85. data/core/unbound_method.rbs +24 -16
  86. data/core/warning.rbs +7 -7
  87. data/docs/aliases.md +79 -0
  88. data/docs/collection.md +3 -3
  89. data/docs/config.md +171 -0
  90. data/docs/encoding.md +56 -0
  91. data/docs/gem.md +0 -1
  92. data/docs/inline.md +576 -0
  93. data/docs/sigs.md +3 -3
  94. data/docs/syntax.md +46 -16
  95. data/docs/type_fingerprint.md +21 -0
  96. data/exe/rbs +1 -1
  97. data/ext/rbs_extension/ast_translation.c +1513 -0
  98. data/ext/rbs_extension/ast_translation.h +37 -0
  99. data/ext/rbs_extension/class_constants.c +185 -0
  100. data/{include/rbs/constants.h → ext/rbs_extension/class_constants.h} +22 -1
  101. data/ext/rbs_extension/compat.h +10 -0
  102. data/ext/rbs_extension/extconf.rb +25 -1
  103. data/ext/rbs_extension/legacy_location.c +294 -0
  104. data/ext/rbs_extension/legacy_location.h +82 -0
  105. data/ext/rbs_extension/main.c +468 -24
  106. data/ext/rbs_extension/rbs_extension.h +6 -21
  107. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  108. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  109. data/include/rbs/ast.h +1022 -0
  110. data/include/rbs/defines.h +86 -0
  111. data/include/rbs/lexer.h +206 -0
  112. data/include/rbs/location.h +40 -0
  113. data/include/rbs/parser.h +153 -0
  114. data/include/rbs/string.h +47 -0
  115. data/include/rbs/util/rbs_allocator.h +59 -0
  116. data/include/rbs/util/rbs_assert.h +20 -0
  117. data/include/rbs/util/rbs_buffer.h +83 -0
  118. data/include/rbs/util/rbs_constant_pool.h +6 -70
  119. data/include/rbs/util/rbs_encoding.h +282 -0
  120. data/include/rbs/util/rbs_unescape.h +24 -0
  121. data/include/rbs.h +9 -2
  122. data/lib/rbs/annotate/formatter.rb +3 -13
  123. data/lib/rbs/annotate/rdoc_annotator.rb +3 -1
  124. data/lib/rbs/annotate/rdoc_source.rb +1 -1
  125. data/lib/rbs/ast/annotation.rb +1 -1
  126. data/lib/rbs/ast/comment.rb +1 -1
  127. data/lib/rbs/ast/declarations.rb +10 -10
  128. data/lib/rbs/ast/members.rb +14 -14
  129. data/lib/rbs/ast/ruby/annotations.rb +409 -0
  130. data/lib/rbs/ast/ruby/comment_block.rb +245 -0
  131. data/lib/rbs/ast/ruby/declarations.rb +281 -0
  132. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  133. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  134. data/lib/rbs/ast/ruby/members.rb +723 -0
  135. data/lib/rbs/ast/type_param.rb +24 -4
  136. data/lib/rbs/buffer.rb +105 -20
  137. data/lib/rbs/cli/diff.rb +16 -15
  138. data/lib/rbs/cli/validate.rb +63 -126
  139. data/lib/rbs/cli.rb +56 -24
  140. data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
  141. data/lib/rbs/collection/sources/git.rb +1 -0
  142. data/lib/rbs/collection.rb +0 -1
  143. data/lib/rbs/definition.rb +6 -1
  144. data/lib/rbs/definition_builder/ancestor_builder.rb +121 -65
  145. data/lib/rbs/definition_builder/method_builder.rb +65 -30
  146. data/lib/rbs/definition_builder.rb +177 -20
  147. data/lib/rbs/diff.rb +7 -1
  148. data/lib/rbs/environment/class_entry.rb +69 -0
  149. data/lib/rbs/environment/module_entry.rb +66 -0
  150. data/lib/rbs/environment.rb +402 -214
  151. data/lib/rbs/environment_loader.rb +2 -8
  152. data/lib/rbs/errors.rb +31 -21
  153. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  154. data/lib/rbs/inline_parser.rb +542 -0
  155. data/lib/rbs/location_aux.rb +36 -4
  156. data/lib/rbs/locator.rb +5 -1
  157. data/lib/rbs/method_type.rb +5 -3
  158. data/lib/rbs/namespace.rb +0 -7
  159. data/lib/rbs/parser_aux.rb +35 -7
  160. data/lib/rbs/prototype/helpers.rb +57 -0
  161. data/lib/rbs/prototype/rb.rb +3 -28
  162. data/lib/rbs/prototype/rbi.rb +3 -20
  163. data/lib/rbs/prototype/runtime.rb +10 -2
  164. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  165. data/lib/rbs/resolver/type_name_resolver.rb +116 -38
  166. data/lib/rbs/source.rb +99 -0
  167. data/lib/rbs/subtractor.rb +7 -4
  168. data/lib/rbs/test/type_check.rb +19 -2
  169. data/lib/rbs/type_name.rb +1 -8
  170. data/lib/rbs/types.rb +91 -79
  171. data/lib/rbs/unit_test/convertibles.rb +1 -0
  172. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  173. data/lib/rbs/validator.rb +2 -2
  174. data/lib/rbs/version.rb +1 -1
  175. data/lib/rbs.rb +13 -2
  176. data/lib/rdoc/discover.rb +1 -1
  177. data/lib/rdoc_plugin/parser.rb +3 -3
  178. data/rbs.gemspec +4 -2
  179. data/rust/.gitignore +1 -0
  180. data/rust/Cargo.lock +378 -0
  181. data/rust/Cargo.toml +7 -0
  182. data/rust/ruby-rbs/Cargo.toml +22 -0
  183. data/rust/ruby-rbs/build.rs +764 -0
  184. data/rust/ruby-rbs/examples/locations.rs +60 -0
  185. data/rust/ruby-rbs/src/lib.rs +1 -0
  186. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  187. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  188. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  189. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  190. data/rust/ruby-rbs-sys/build.rs +204 -0
  191. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  192. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  193. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  194. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  195. data/schema/typeParam.json +17 -1
  196. data/sig/ancestor_builder.rbs +1 -1
  197. data/sig/annotate/formatter.rbs +2 -2
  198. data/sig/annotate/rdoc_annotater.rbs +1 -1
  199. data/sig/ast/ruby/annotations.rbs +421 -0
  200. data/sig/ast/ruby/comment_block.rbs +127 -0
  201. data/sig/ast/ruby/declarations.rbs +158 -0
  202. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  203. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  204. data/sig/ast/ruby/members.rbs +178 -0
  205. data/sig/buffer.rbs +63 -5
  206. data/sig/cli/diff.rbs +5 -11
  207. data/sig/cli/validate.rbs +12 -8
  208. data/sig/cli.rbs +18 -18
  209. data/sig/definition.rbs +6 -0
  210. data/sig/definition_builder.rbs +3 -1
  211. data/sig/environment/class_entry.rbs +50 -0
  212. data/sig/environment/module_entry.rbs +50 -0
  213. data/sig/environment.rbs +94 -87
  214. data/sig/errors.rbs +26 -20
  215. data/sig/inline_parser/comment_association.rbs +71 -0
  216. data/sig/inline_parser.rbs +124 -0
  217. data/sig/location.rbs +32 -7
  218. data/sig/locator.rbs +0 -2
  219. data/sig/manifest.yaml +0 -1
  220. data/sig/method_builder.rbs +9 -4
  221. data/sig/namespace.rbs +0 -5
  222. data/sig/parser.rbs +67 -13
  223. data/sig/prototype/helpers.rbs +2 -0
  224. data/sig/resolver/type_name_resolver.rbs +35 -7
  225. data/sig/source.rbs +48 -0
  226. data/sig/type_param.rbs +13 -8
  227. data/sig/typename.rbs +0 -5
  228. data/sig/types.rbs +10 -8
  229. data/sig/unit_test/spy.rbs +0 -8
  230. data/sig/unit_test/type_assertions.rbs +11 -0
  231. data/src/ast.c +1604 -0
  232. data/src/lexer.c +3194 -0
  233. data/src/lexer.re +154 -0
  234. data/src/lexstate.c +212 -0
  235. data/src/location.c +31 -0
  236. data/src/parser.c +4205 -0
  237. data/src/string.c +41 -0
  238. data/src/util/rbs_allocator.c +165 -0
  239. data/src/util/rbs_assert.c +19 -0
  240. data/src/util/rbs_buffer.c +54 -0
  241. data/src/util/rbs_constant_pool.c +18 -92
  242. data/src/util/rbs_encoding.c +21308 -0
  243. data/src/util/rbs_unescape.c +167 -0
  244. data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
  245. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  246. data/stdlib/cgi/0/core.rbs +9 -393
  247. data/stdlib/cgi/0/manifest.yaml +1 -0
  248. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  249. data/stdlib/coverage/0/coverage.rbs +7 -4
  250. data/stdlib/date/0/date.rbs +92 -79
  251. data/stdlib/date/0/date_time.rbs +25 -24
  252. data/stdlib/delegate/0/delegator.rbs +10 -7
  253. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  254. data/stdlib/digest/0/digest.rbs +110 -0
  255. data/stdlib/erb/0/erb.rbs +748 -347
  256. data/stdlib/etc/0/etc.rbs +55 -50
  257. data/stdlib/fileutils/0/fileutils.rbs +158 -139
  258. data/stdlib/forwardable/0/forwardable.rbs +13 -10
  259. data/stdlib/io-console/0/io-console.rbs +2 -2
  260. data/stdlib/json/0/json.rbs +226 -179
  261. data/stdlib/monitor/0/monitor.rbs +3 -3
  262. data/stdlib/net-http/0/net-http.rbs +162 -134
  263. data/stdlib/objspace/0/objspace.rbs +17 -34
  264. data/stdlib/open-uri/0/open-uri.rbs +48 -8
  265. data/stdlib/open3/0/open3.rbs +469 -10
  266. data/stdlib/openssl/0/openssl.rbs +475 -357
  267. data/stdlib/optparse/0/optparse.rbs +26 -17
  268. data/stdlib/pathname/0/pathname.rbs +11 -1381
  269. data/stdlib/pp/0/pp.rbs +9 -8
  270. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  271. data/stdlib/pstore/0/pstore.rbs +35 -30
  272. data/stdlib/psych/0/psych.rbs +65 -12
  273. data/stdlib/psych/0/store.rbs +2 -4
  274. data/stdlib/pty/0/pty.rbs +9 -6
  275. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  276. data/stdlib/rdoc/0/code_object.rbs +4 -3
  277. data/stdlib/rdoc/0/comment.rbs +2 -0
  278. data/stdlib/rdoc/0/options.rbs +76 -0
  279. data/stdlib/rdoc/0/parser.rbs +1 -1
  280. data/stdlib/rdoc/0/rdoc.rbs +7 -5
  281. data/stdlib/rdoc/0/store.rbs +2 -2
  282. data/stdlib/resolv/0/resolv.rbs +25 -68
  283. data/stdlib/ripper/0/ripper.rbs +25 -19
  284. data/stdlib/securerandom/0/manifest.yaml +2 -0
  285. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  286. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  287. data/stdlib/singleton/0/singleton.rbs +3 -0
  288. data/stdlib/socket/0/addrinfo.rbs +9 -9
  289. data/stdlib/socket/0/basic_socket.rbs +3 -3
  290. data/stdlib/socket/0/ip_socket.rbs +10 -8
  291. data/stdlib/socket/0/socket.rbs +23 -10
  292. data/stdlib/socket/0/tcp_server.rbs +1 -1
  293. data/stdlib/socket/0/tcp_socket.rbs +11 -3
  294. data/stdlib/socket/0/udp_socket.rbs +1 -1
  295. data/stdlib/socket/0/unix_server.rbs +1 -1
  296. data/stdlib/stringio/0/stringio.rbs +1177 -85
  297. data/stdlib/strscan/0/string_scanner.rbs +27 -25
  298. data/stdlib/tempfile/0/tempfile.rbs +25 -21
  299. data/stdlib/time/0/time.rbs +8 -6
  300. data/stdlib/timeout/0/timeout.rbs +63 -7
  301. data/stdlib/tsort/0/cyclic.rbs +3 -0
  302. data/stdlib/tsort/0/tsort.rbs +7 -6
  303. data/stdlib/uri/0/common.rbs +42 -20
  304. data/stdlib/uri/0/file.rbs +3 -3
  305. data/stdlib/uri/0/generic.rbs +26 -18
  306. data/stdlib/uri/0/http.rbs +2 -2
  307. data/stdlib/uri/0/ldap.rbs +2 -2
  308. data/stdlib/uri/0/mailto.rbs +3 -3
  309. data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
  310. data/stdlib/zlib/0/deflate.rbs +4 -3
  311. data/stdlib/zlib/0/gzip_reader.rbs +6 -6
  312. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  313. data/stdlib/zlib/0/inflate.rbs +1 -1
  314. data/stdlib/zlib/0/need_dict.rbs +1 -1
  315. data/stdlib/zlib/0/zstream.rbs +1 -0
  316. metadata +121 -18
  317. data/ext/rbs_extension/lexer.c +0 -2728
  318. data/ext/rbs_extension/lexer.h +0 -179
  319. data/ext/rbs_extension/lexer.re +0 -147
  320. data/ext/rbs_extension/lexstate.c +0 -175
  321. data/ext/rbs_extension/location.c +0 -325
  322. data/ext/rbs_extension/location.h +0 -85
  323. data/ext/rbs_extension/parser.c +0 -2982
  324. data/ext/rbs_extension/parser.h +0 -18
  325. data/ext/rbs_extension/parserstate.c +0 -411
  326. data/ext/rbs_extension/parserstate.h +0 -163
  327. data/ext/rbs_extension/unescape.c +0 -32
  328. data/include/rbs/ruby_objs.h +0 -72
  329. data/src/constants.c +0 -153
  330. 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: Markup::Document | Comment | String
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=: (Markup::Document | Comment | String | nil) -> (Markup::Document | Comment | String)
50
+ def comment=: (Comment | String | nil) -> (Comment | String | nil)
50
51
  end
51
52
  end
@@ -20,6 +20,8 @@ module RDoc
20
20
  #
21
21
  attr_accessor location: String
22
22
 
23
+ alias file location
24
+
23
25
  # <!--
24
26
  # rdoc-file=lib/rdoc/comment.rb
25
27
  # - new(text = nil, location = nil, language = nil)
@@ -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
@@ -42,7 +42,7 @@ module RDoc
42
42
 
43
43
  # <!--
44
44
  # rdoc-file=lib/rdoc/parser.rb
45
- # - new(top_level, file_name, content, options, stats)
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
@@ -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 `singleton`) -> void
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 `singleton`) -> void
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 -->
@@ -22,11 +22,11 @@ module RDoc
22
22
  class Store
23
23
  # <!--
24
24
  # rdoc-file=lib/rdoc/store.rb
25
- # - new(path = nil, type = nil)
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? path, ?Symbol? type) -> void
29
+ def initialize: (Options, ?path: String? , ?type: Symbol?) -> void
30
30
 
31
31
  # <!--
32
32
  # rdoc-file=lib/rdoc/store.rb