rbs 2.8.4 → 3.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (434) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +12 -4
  3. data/.github/workflows/comments.yml +11 -11
  4. data/.github/workflows/dependabot.yml +30 -0
  5. data/.github/workflows/ruby.yml +40 -49
  6. data/.github/workflows/typecheck.yml +36 -0
  7. data/.github/workflows/windows.yml +28 -0
  8. data/.gitignore +1 -0
  9. data/.rubocop.yml +42 -2
  10. data/CHANGELOG.md +845 -1
  11. data/README.md +64 -4
  12. data/Rakefile +198 -18
  13. data/Steepfile +11 -11
  14. data/config.yml +311 -0
  15. data/core/array.rbs +2189 -1914
  16. data/core/basic_object.rbs +59 -84
  17. data/core/binding.rbs +7 -69
  18. data/core/builtin.rbs +210 -11
  19. data/core/class.rbs +37 -0
  20. data/core/comparable.rbs +23 -25
  21. data/core/complex.rbs +449 -227
  22. data/core/constants.rbs +29 -21
  23. data/core/data.rbs +415 -0
  24. data/core/dir.rbs +698 -415
  25. data/core/encoding.rbs +468 -843
  26. data/core/enumerable.rbs +495 -455
  27. data/core/enumerator/product.rbs +92 -0
  28. data/core/enumerator.rbs +106 -9
  29. data/core/env.rbs +1 -1
  30. data/core/errno.rbs +506 -605
  31. data/core/errors.rbs +15 -17
  32. data/core/exception.rbs +361 -145
  33. data/core/false_class.rbs +39 -26
  34. data/core/fiber.rbs +121 -14
  35. data/core/file.rbs +1262 -320
  36. data/core/file_test.rbs +62 -45
  37. data/core/float.rbs +187 -208
  38. data/core/gc.rbs +446 -196
  39. data/core/global_variables.rbs +29 -29
  40. data/core/hash.rbs +242 -349
  41. data/core/integer.rbs +246 -308
  42. data/core/io/buffer.rbs +373 -122
  43. data/core/io/wait.rbs +29 -17
  44. data/core/io.rbs +1881 -1518
  45. data/core/kernel.rbs +2116 -1538
  46. data/core/marshal.rbs +24 -14
  47. data/core/match_data.rbs +413 -166
  48. data/core/math.rbs +531 -291
  49. data/core/method.rbs +101 -32
  50. data/core/module.rbs +228 -64
  51. data/core/nil_class.rbs +106 -47
  52. data/core/numeric.rbs +206 -292
  53. data/core/object.rbs +73 -1168
  54. data/core/object_space/weak_key_map.rbs +166 -0
  55. data/core/object_space.rbs +5 -3
  56. data/core/proc.rbs +280 -39
  57. data/core/process.rbs +1318 -658
  58. data/core/ractor.rbs +200 -134
  59. data/core/random.rbs +21 -4
  60. data/core/range.rbs +309 -153
  61. data/core/rational.rbs +4 -12
  62. data/core/rb_config.rbs +64 -43
  63. data/core/rbs/unnamed/argf.rbs +411 -147
  64. data/core/rbs/unnamed/env_class.rbs +137 -253
  65. data/core/rbs/unnamed/random.rbs +49 -26
  66. data/core/refinement.rbs +16 -1
  67. data/core/regexp.rbs +1568 -862
  68. data/core/ruby_vm.rbs +719 -7
  69. data/core/rubygems/config_file.rbs +3 -0
  70. data/core/rubygems/errors.rbs +69 -6
  71. data/core/rubygems/rubygems.rbs +71 -17
  72. data/core/rubygems/version.rbs +11 -7
  73. data/{stdlib/set/0 → core}/set.rbs +80 -91
  74. data/core/signal.rbs +14 -8
  75. data/core/string.rbs +1732 -1607
  76. data/core/struct.rbs +467 -95
  77. data/core/symbol.rbs +215 -245
  78. data/core/thread.rbs +133 -89
  79. data/core/thread_group.rbs +9 -9
  80. data/core/time.rbs +1141 -841
  81. data/core/trace_point.rbs +181 -121
  82. data/core/true_class.rbs +58 -32
  83. data/core/unbound_method.rbs +103 -30
  84. data/core/warning.rbs +50 -5
  85. data/docs/CONTRIBUTING.md +1 -1
  86. data/docs/architecture.md +110 -0
  87. data/docs/collection.md +59 -5
  88. data/docs/data_and_struct.md +86 -0
  89. data/docs/gem.md +57 -0
  90. data/docs/rbs_by_example.md +16 -35
  91. data/docs/repo.md +1 -1
  92. data/docs/sigs.md +7 -7
  93. data/docs/stdlib.md +63 -5
  94. data/docs/syntax.md +255 -61
  95. data/docs/tools.md +1 -0
  96. data/ext/rbs_extension/extconf.rb +10 -0
  97. data/ext/rbs_extension/lexer.c +1741 -1548
  98. data/ext/rbs_extension/lexer.h +11 -1
  99. data/ext/rbs_extension/lexer.re +12 -6
  100. data/ext/rbs_extension/lexstate.c +26 -3
  101. data/ext/rbs_extension/location.c +119 -111
  102. data/ext/rbs_extension/location.h +32 -7
  103. data/ext/rbs_extension/main.c +3 -0
  104. data/ext/rbs_extension/parser.c +883 -481
  105. data/ext/rbs_extension/parserstate.c +65 -25
  106. data/ext/rbs_extension/parserstate.h +13 -3
  107. data/ext/rbs_extension/rbs_extension.h +1 -10
  108. data/ext/rbs_extension/unescape.c +7 -47
  109. data/goodcheck.yml +2 -2
  110. data/{ext/rbs_extension → include/rbs}/constants.h +26 -15
  111. data/include/rbs/ruby_objs.h +72 -0
  112. data/include/rbs.h +7 -0
  113. data/lib/rbs/annotate/annotations.rb +3 -3
  114. data/lib/rbs/annotate/formatter.rb +13 -3
  115. data/lib/rbs/annotate/rdoc_annotator.rb +1 -1
  116. data/lib/rbs/annotate/rdoc_source.rb +12 -3
  117. data/lib/rbs/ast/declarations.rb +85 -2
  118. data/lib/rbs/ast/directives.rb +39 -0
  119. data/lib/rbs/ast/members.rb +49 -15
  120. data/lib/rbs/ast/type_param.rb +104 -15
  121. data/lib/rbs/ast/visitor.rb +137 -0
  122. data/lib/rbs/buffer.rb +5 -0
  123. data/lib/rbs/cli/colored_io.rb +48 -0
  124. data/lib/rbs/cli/diff.rb +83 -0
  125. data/lib/rbs/cli/validate.rb +356 -0
  126. data/lib/rbs/cli.rb +253 -143
  127. data/lib/rbs/collection/cleaner.rb +8 -1
  128. data/lib/rbs/collection/config/lockfile.rb +92 -0
  129. data/lib/rbs/collection/config/lockfile_generator.rb +154 -65
  130. data/lib/rbs/collection/config.rb +19 -46
  131. data/lib/rbs/collection/installer.rb +12 -13
  132. data/lib/rbs/collection/sources/base.rb +2 -2
  133. data/lib/rbs/collection/sources/git.rb +146 -69
  134. data/lib/rbs/collection/sources/local.rb +81 -0
  135. data/lib/rbs/collection/sources/rubygems.rb +10 -12
  136. data/lib/rbs/collection/sources/stdlib.rb +14 -13
  137. data/lib/rbs/collection/sources.rb +15 -2
  138. data/lib/rbs/collection.rb +2 -1
  139. data/lib/rbs/definition.rb +13 -16
  140. data/lib/rbs/definition_builder/ancestor_builder.rb +100 -24
  141. data/lib/rbs/definition_builder/method_builder.rb +4 -4
  142. data/lib/rbs/definition_builder.rb +489 -584
  143. data/lib/rbs/diff.rb +125 -0
  144. data/lib/rbs/environment/use_map.rb +77 -0
  145. data/lib/rbs/environment.rb +406 -105
  146. data/lib/rbs/environment_loader.rb +48 -44
  147. data/lib/rbs/environment_walker.rb +1 -1
  148. data/lib/rbs/errors.rb +175 -56
  149. data/lib/rbs/file_finder.rb +28 -0
  150. data/lib/rbs/location_aux.rb +8 -7
  151. data/lib/rbs/locator.rb +37 -15
  152. data/lib/rbs/method_type.rb +23 -0
  153. data/lib/rbs/namespace.rb +1 -0
  154. data/lib/rbs/parser/lex_result.rb +15 -0
  155. data/lib/rbs/parser/token.rb +23 -0
  156. data/lib/rbs/parser_aux.rb +22 -13
  157. data/lib/rbs/prototype/helpers.rb +48 -22
  158. data/lib/rbs/prototype/node_usage.rb +99 -0
  159. data/lib/rbs/prototype/rb.rb +125 -31
  160. data/lib/rbs/prototype/rbi.rb +49 -36
  161. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  162. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  163. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  164. data/lib/rbs/prototype/runtime.rb +273 -159
  165. data/lib/rbs/resolver/constant_resolver.rb +24 -8
  166. data/lib/rbs/resolver/type_name_resolver.rb +41 -7
  167. data/lib/rbs/sorter.rb +153 -123
  168. data/lib/rbs/substitution.rb +19 -0
  169. data/lib/rbs/subtractor.rb +201 -0
  170. data/lib/rbs/test/errors.rb +24 -11
  171. data/lib/rbs/test/guaranteed.rb +30 -0
  172. data/lib/rbs/test/hook.rb +45 -40
  173. data/lib/rbs/test/setup.rb +1 -1
  174. data/lib/rbs/test/tester.rb +1 -1
  175. data/lib/rbs/test/type_check.rb +120 -23
  176. data/lib/rbs/test.rb +6 -3
  177. data/lib/rbs/type_alias_dependency.rb +13 -3
  178. data/lib/rbs/type_alias_regularity.rb +21 -14
  179. data/lib/rbs/type_name.rb +18 -13
  180. data/lib/rbs/types.rb +352 -18
  181. data/lib/rbs/unit_test/convertibles.rb +176 -0
  182. data/lib/rbs/unit_test/spy.rb +136 -0
  183. data/lib/rbs/unit_test/type_assertions.rb +341 -0
  184. data/lib/rbs/unit_test/with_aliases.rb +143 -0
  185. data/lib/rbs/unit_test.rb +6 -0
  186. data/lib/rbs/validator.rb +55 -30
  187. data/lib/rbs/variance_calculator.rb +26 -23
  188. data/lib/rbs/vendorer.rb +3 -3
  189. data/lib/rbs/version.rb +1 -1
  190. data/lib/rbs/writer.rb +69 -22
  191. data/lib/rbs.rb +7 -2
  192. data/lib/rdoc/discover.rb +1 -1
  193. data/lib/rdoc_plugin/parser.rb +5 -5
  194. data/rbs.gemspec +12 -2
  195. data/schema/decls.json +1 -1
  196. data/schema/members.json +15 -10
  197. data/sig/ancestor_builder.rbs +4 -0
  198. data/sig/ancestor_graph.rbs +22 -2
  199. data/sig/annotate/formatter.rbs +2 -2
  200. data/sig/annotate/rdoc_annotater.rbs +1 -1
  201. data/sig/cli/colored_io.rbs +15 -0
  202. data/sig/cli/diff.rbs +21 -0
  203. data/sig/cli/validate.rbs +43 -0
  204. data/sig/cli.rbs +4 -0
  205. data/sig/collection/config/lockfile.rbs +74 -0
  206. data/sig/collection/config/lockfile_generator.rbs +66 -0
  207. data/sig/collection/config.rbs +5 -48
  208. data/sig/collection/installer.rbs +1 -1
  209. data/sig/collection/sources.rbs +105 -33
  210. data/sig/constant.rbs +1 -1
  211. data/sig/declarations.rbs +42 -3
  212. data/sig/definition.rbs +26 -10
  213. data/sig/definition_builder.rbs +103 -81
  214. data/sig/diff.rbs +28 -0
  215. data/sig/directives.rbs +61 -0
  216. data/sig/environment.rbs +175 -29
  217. data/sig/environment_loader.rbs +20 -18
  218. data/sig/errors.rbs +123 -2
  219. data/sig/file_finder.rbs +28 -0
  220. data/sig/location.rbs +0 -3
  221. data/sig/locator.rbs +14 -2
  222. data/sig/manifest.yaml +0 -1
  223. data/sig/members.rbs +32 -9
  224. data/sig/method_types.rbs +10 -4
  225. data/sig/namespace.rbs +2 -3
  226. data/sig/parser.rbs +55 -16
  227. data/sig/prototype/helpers.rbs +4 -0
  228. data/sig/prototype/node_usage.rbs +20 -0
  229. data/sig/prototype/rb.rbs +10 -2
  230. data/sig/prototype/rbi.rbs +2 -0
  231. data/sig/prototype/runtime.rbs +182 -0
  232. data/sig/rbs.rbs +1 -1
  233. data/sig/rdoc/rbs.rbs +4 -0
  234. data/sig/repository.rbs +7 -5
  235. data/sig/resolver/constant_resolver.rbs +3 -4
  236. data/sig/resolver/context.rbs +1 -1
  237. data/sig/resolver/type_name_resolver.rbs +5 -1
  238. data/sig/shims/bundler.rbs +38 -0
  239. data/sig/shims/rubygems.rbs +19 -0
  240. data/sig/sorter.rbs +23 -5
  241. data/sig/substitution.rbs +6 -0
  242. data/sig/subtractor.rbs +37 -0
  243. data/sig/test/errors.rbs +52 -0
  244. data/sig/test/guranteed.rbs +9 -0
  245. data/sig/test/type_check.rbs +19 -0
  246. data/sig/test.rbs +82 -0
  247. data/sig/type_alias_dependency.rbs +31 -0
  248. data/sig/type_alias_regularity.rbs +12 -6
  249. data/sig/type_param.rbs +45 -9
  250. data/sig/typename.rbs +8 -5
  251. data/sig/types.rbs +119 -12
  252. data/sig/unit_test/convertibles.rbs +154 -0
  253. data/sig/unit_test/spy.rbs +28 -0
  254. data/sig/unit_test/type_assertions.rbs +194 -0
  255. data/sig/unit_test/with_aliases.rbs +136 -0
  256. data/sig/use_map.rbs +35 -0
  257. data/sig/validator.rbs +12 -5
  258. data/sig/variance_calculator.rbs +3 -1
  259. data/sig/vendorer.rbs +1 -1
  260. data/sig/visitor.rbs +47 -0
  261. data/sig/writer.rbs +6 -2
  262. data/src/constants.c +153 -0
  263. data/src/ruby_objs.c +793 -0
  264. data/stdlib/base64/0/base64.rbs +298 -45
  265. data/stdlib/benchmark/0/benchmark.rbs +12 -3
  266. data/stdlib/bigdecimal/0/big_decimal.rbs +62 -198
  267. data/stdlib/cgi/0/core.rbs +68 -15
  268. data/stdlib/cgi/0/manifest.yaml +1 -0
  269. data/stdlib/coverage/0/coverage.rbs +50 -11
  270. data/stdlib/csv/0/csv.rbs +90 -119
  271. data/stdlib/csv/0/manifest.yaml +1 -0
  272. data/stdlib/date/0/date.rbs +806 -735
  273. data/stdlib/date/0/date_time.rbs +70 -211
  274. data/stdlib/dbm/0/dbm.rbs +0 -2
  275. data/stdlib/delegate/0/delegator.rbs +184 -0
  276. data/stdlib/delegate/0/kernel.rbs +47 -0
  277. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  278. data/stdlib/did_you_mean/0/did_you_mean.rbs +3 -8
  279. data/stdlib/digest/0/digest.rbs +48 -35
  280. data/stdlib/erb/0/erb.rbs +15 -39
  281. data/stdlib/etc/0/etc.rbs +174 -54
  282. data/stdlib/fileutils/0/fileutils.rbs +1234 -385
  283. data/stdlib/forwardable/0/forwardable.rbs +4 -4
  284. data/stdlib/io-console/0/io-console.rbs +82 -17
  285. data/stdlib/ipaddr/0/ipaddr.rbs +11 -6
  286. data/stdlib/json/0/json.rbs +434 -151
  287. data/stdlib/kconv/0/kconv.rbs +166 -0
  288. data/stdlib/logger/0/formatter.rbs +0 -2
  289. data/stdlib/logger/0/log_device.rbs +1 -3
  290. data/stdlib/logger/0/logger.rbs +465 -328
  291. data/stdlib/minitest/0/kernel.rbs +2 -2
  292. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
  293. data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
  294. data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
  295. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
  296. data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
  297. data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
  298. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  299. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  300. data/stdlib/minitest/0/minitest/mock.rbs +9 -5
  301. data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
  302. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
  303. data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
  304. data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
  305. data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
  306. data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
  307. data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
  308. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
  309. data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
  310. data/stdlib/minitest/0/minitest/spec.rbs +1 -1
  311. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
  312. data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
  313. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +7 -7
  314. data/stdlib/minitest/0/minitest/test.rbs +7 -14
  315. data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
  316. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  317. data/stdlib/minitest/0/minitest/unit.rbs +1 -2
  318. data/stdlib/minitest/0/minitest.rbs +41 -892
  319. data/stdlib/monitor/0/monitor.rbs +91 -10
  320. data/stdlib/mutex_m/0/mutex_m.rbs +0 -2
  321. data/stdlib/net-http/0/manifest.yaml +1 -1
  322. data/stdlib/net-http/0/net-http.rbs +3858 -964
  323. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  324. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  325. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  326. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  327. data/stdlib/nkf/0/nkf.rbs +35 -5
  328. data/stdlib/objspace/0/objspace.rbs +40 -18
  329. data/stdlib/observable/0/observable.rbs +217 -0
  330. data/stdlib/open-uri/0/manifest.yaml +4 -0
  331. data/stdlib/open-uri/0/open-uri.rbs +393 -0
  332. data/stdlib/open3/0/open3.rbs +147 -0
  333. data/stdlib/openssl/0/manifest.yaml +1 -0
  334. data/stdlib/openssl/0/openssl.rbs +681 -316
  335. data/stdlib/optparse/0/optparse.rbs +100 -65
  336. data/stdlib/pathname/0/pathname.rbs +24 -15
  337. data/stdlib/pp/0/manifest.yaml +2 -0
  338. data/stdlib/pp/0/pp.rbs +300 -0
  339. data/stdlib/prettyprint/0/prettyprint.rbs +2 -6
  340. data/stdlib/pstore/0/pstore.rbs +370 -156
  341. data/stdlib/psych/0/core_ext.rbs +12 -0
  342. data/stdlib/{yaml → psych}/0/dbm.rbs +3 -3
  343. data/stdlib/psych/0/manifest.yaml +3 -0
  344. data/stdlib/psych/0/psych.rbs +402 -0
  345. data/stdlib/{yaml → psych}/0/store.rbs +2 -2
  346. data/stdlib/pty/0/pty.rbs +63 -11
  347. data/stdlib/rdoc/0/code_object.rbs +51 -0
  348. data/stdlib/rdoc/0/comment.rbs +59 -0
  349. data/stdlib/rdoc/0/context.rbs +153 -0
  350. data/stdlib/rdoc/0/markup.rbs +117 -0
  351. data/stdlib/rdoc/0/parser.rbs +56 -0
  352. data/stdlib/rdoc/0/rdoc.rbs +13 -380
  353. data/stdlib/rdoc/0/ri.rbs +17 -0
  354. data/stdlib/rdoc/0/store.rbs +48 -0
  355. data/stdlib/rdoc/0/top_level.rbs +97 -0
  356. data/stdlib/resolv/0/resolv.rbs +16 -79
  357. data/stdlib/ripper/0/ripper.rbs +1648 -0
  358. data/stdlib/securerandom/0/securerandom.rbs +7 -2
  359. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  360. data/stdlib/singleton/0/singleton.rbs +0 -3
  361. data/stdlib/socket/0/addrinfo.rbs +13 -18
  362. data/stdlib/socket/0/basic_socket.rbs +5 -10
  363. data/stdlib/socket/0/ip_socket.rbs +0 -2
  364. data/stdlib/socket/0/socket.rbs +77 -46
  365. data/stdlib/socket/0/tcp_server.rbs +0 -5
  366. data/stdlib/socket/0/tcp_socket.rbs +36 -3
  367. data/stdlib/socket/0/udp_socket.rbs +4 -5
  368. data/stdlib/socket/0/unix_server.rbs +0 -5
  369. data/stdlib/socket/0/unix_socket.rbs +2 -4
  370. data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +188 -107
  371. data/stdlib/strscan/0/string_scanner.rbs +1269 -425
  372. data/stdlib/tempfile/0/tempfile.rbs +224 -61
  373. data/stdlib/time/0/time.rbs +48 -35
  374. data/stdlib/timeout/0/timeout.rbs +17 -8
  375. data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
  376. data/stdlib/tsort/0/tsort.rbs +0 -4
  377. data/stdlib/uri/0/common.rbs +271 -144
  378. data/stdlib/uri/0/file.rbs +5 -0
  379. data/stdlib/uri/0/ftp.rbs +1 -1
  380. data/stdlib/uri/0/generic.rbs +26 -22
  381. data/stdlib/uri/0/http.rbs +4 -4
  382. data/stdlib/uri/0/ldap.rbs +1 -1
  383. data/stdlib/uri/0/mailto.rbs +84 -0
  384. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  385. data/stdlib/yaml/0/manifest.yaml +1 -2
  386. data/stdlib/yaml/0/yaml.rbs +1 -199
  387. data/stdlib/zlib/0/buf_error.rbs +10 -0
  388. data/stdlib/zlib/0/data_error.rbs +10 -0
  389. data/stdlib/zlib/0/deflate.rbs +210 -0
  390. data/stdlib/zlib/0/error.rbs +20 -0
  391. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  392. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  393. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  394. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  395. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  396. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  397. data/stdlib/zlib/0/gzip_writer.rbs +166 -0
  398. data/stdlib/zlib/0/inflate.rbs +180 -0
  399. data/stdlib/zlib/0/mem_error.rbs +10 -0
  400. data/stdlib/zlib/0/need_dict.rbs +13 -0
  401. data/stdlib/zlib/0/stream_end.rbs +11 -0
  402. data/stdlib/zlib/0/stream_error.rbs +11 -0
  403. data/stdlib/zlib/0/version_error.rbs +11 -0
  404. data/stdlib/zlib/0/zlib.rbs +1 -3
  405. data/stdlib/zlib/0/zstream.rbs +200 -0
  406. data/templates/include/rbs/constants.h.erb +20 -0
  407. data/templates/include/rbs/ruby_objs.h.erb +10 -0
  408. data/templates/src/constants.c.erb +36 -0
  409. data/templates/src/ruby_objs.c.erb +27 -0
  410. data/templates/template.rb +122 -0
  411. metadata +136 -36
  412. data/Gemfile +0 -33
  413. data/Gemfile.lock +0 -118
  414. data/core/deprecated.rbs +0 -9
  415. data/ext/rbs_extension/constants.c +0 -135
  416. data/ext/rbs_extension/ruby_objs.c +0 -525
  417. data/ext/rbs_extension/ruby_objs.h +0 -43
  418. data/lib/rbs/constant_table.rb +0 -167
  419. data/lib/rbs/parser_compat/lexer_error.rb +0 -6
  420. data/lib/rbs/parser_compat/located_value.rb +0 -7
  421. data/lib/rbs/parser_compat/semantics_error.rb +0 -6
  422. data/lib/rbs/parser_compat/syntax_error.rb +0 -6
  423. data/lib/rbs/test/spy.rb +0 -6
  424. data/lib/rbs/type_name_resolver.rb +0 -67
  425. data/sig/constant_table.rbs +0 -30
  426. data/sig/shims/abstract_syntax_tree.rbs +0 -25
  427. data/sig/shims/pp.rbs +0 -3
  428. data/sig/shims/ripper.rbs +0 -8
  429. data/sig/shims.rbs +0 -69
  430. data/sig/type_name_resolver.rbs +0 -26
  431. data/stdlib/minitest/0/manifest.yaml +0 -2
  432. data/stdlib/prime/0/integer-extension.rbs +0 -41
  433. data/stdlib/prime/0/manifest.yaml +0 -2
  434. data/stdlib/prime/0/prime.rbs +0 -372
@@ -1,6 +1,30 @@
1
+ # <!-- rdoc-file=lib/uri/common.rb -->
2
+ # Base class for all URI exceptions.
3
+ #
4
+ class URI::Error < StandardError
5
+ end
6
+
7
+ # <!-- rdoc-file=lib/uri/common.rb -->
8
+ # Not a URI.
9
+ #
10
+ class URI::InvalidURIError < URI::Error
11
+ end
12
+
13
+ # <!-- rdoc-file=lib/uri/common.rb -->
14
+ # Not a URI component.
15
+ #
16
+ class URI::InvalidComponentError < URI::Error
17
+ end
18
+
19
+ # <!-- rdoc-file=lib/uri/common.rb -->
20
+ # URI is valid, bad usage is not.
21
+ #
22
+ class URI::BadURIError < URI::Error
23
+ end
24
+
1
25
  # <!-- rdoc-file=lib/uri.rb -->
2
26
  # URI is a module providing classes to handle Uniform Resource Identifiers
3
- # ([RFC2396](http://tools.ietf.org/html/rfc2396)).
27
+ # ([RFC2396](https://www.rfc-editor.org/rfc/rfc2396)).
4
28
  #
5
29
  # ## Features
6
30
  #
@@ -9,7 +33,6 @@
9
33
  # * Flexibility to have an alternate URI::Parser (or just different patterns
10
34
  # and regexp's).
11
35
  #
12
- #
13
36
  # ## Basic example
14
37
  #
15
38
  # require 'uri'
@@ -48,15 +71,14 @@
48
71
  # A good place to view an RFC spec is http://www.ietf.org/rfc.html.
49
72
  #
50
73
  # Here is a list of all related RFC's:
51
- # * [RFC822](http://tools.ietf.org/html/rfc822)
52
- # * [RFC1738](http://tools.ietf.org/html/rfc1738)
53
- # * [RFC2255](http://tools.ietf.org/html/rfc2255)
54
- # * [RFC2368](http://tools.ietf.org/html/rfc2368)
55
- # * [RFC2373](http://tools.ietf.org/html/rfc2373)
56
- # * [RFC2396](http://tools.ietf.org/html/rfc2396)
57
- # * [RFC2732](http://tools.ietf.org/html/rfc2732)
58
- # * [RFC3986](http://tools.ietf.org/html/rfc3986)
59
- #
74
+ # * [RFC822](https://www.rfc-editor.org/rfc/rfc822)
75
+ # * [RFC1738](https://www.rfc-editor.org/rfc/rfc1738)
76
+ # * [RFC2255](https://www.rfc-editor.org/rfc/rfc2255)
77
+ # * [RFC2368](https://www.rfc-editor.org/rfc/rfc2368)
78
+ # * [RFC2373](https://www.rfc-editor.org/rfc/rfc2373)
79
+ # * [RFC2396](https://www.rfc-editor.org/rfc/rfc2396)
80
+ # * [RFC2732](https://www.rfc-editor.org/rfc/rfc2732)
81
+ # * [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)
60
82
  #
61
83
  # ## Class tree
62
84
  #
@@ -65,31 +87,27 @@
65
87
  # * URI::FTP - (in uri/ftp.rb)
66
88
  # * URI::HTTP - (in uri/http.rb)
67
89
  # * URI::HTTPS - (in uri/https.rb)
68
- #
69
90
  # * URI::LDAP - (in uri/ldap.rb)
70
91
  # * URI::LDAPS - (in uri/ldaps.rb)
71
- #
72
92
  # * URI::MailTo - (in uri/mailto.rb)
73
- #
74
93
  # * URI::Parser - (in uri/common.rb)
75
94
  # * URI::REGEXP - (in uri/common.rb)
76
95
  # * URI::REGEXP::PATTERN - (in uri/common.rb)
77
- #
78
96
  # * URI::Util - (in uri/common.rb)
79
97
  # * URI::Error - (in uri/common.rb)
80
98
  # * URI::InvalidURIError - (in uri/common.rb)
81
99
  # * URI::InvalidComponentError - (in uri/common.rb)
82
100
  # * URI::BadURIError - (in uri/common.rb)
83
101
  #
84
- #
85
- #
86
102
  # ## Copyright Info
87
103
  #
88
104
  # Author
89
105
  # : Akira Yamada <akira@ruby-lang.org>
106
+ #
90
107
  # Documentation
91
108
  # : Akira Yamada <akira@ruby-lang.org> Dmitry V. Sabanin <sdmitry@lrn.ru>
92
109
  # Vincent Batts <vbatts@hashbangbash.com>
110
+ #
93
111
  # License
94
112
  # : Copyright (c) 2001 akira yamada <akira@ruby-lang.org> You can redistribute
95
113
  # it and/or modify it under the same term as Ruby.
@@ -101,22 +119,37 @@ module URI
101
119
  # rdoc-file=lib/uri/common.rb
102
120
  # - decode_www_form(str, enc=Encoding::UTF_8, separator: '&', use__charset_: false, isindex: false)
103
121
  # -->
104
- # Decodes URL-encoded form data from given `str`.
122
+ # Returns name/value pairs derived from the given string `str`, which must be an
123
+ # ASCII string.
124
+ #
125
+ # The method may be used to decode the body of Net::HTTPResponse object `res`
126
+ # for which `res['Content-Type']` is `'application/x-www-form-urlencoded'`.
127
+ #
128
+ # The returned data is an array of 2-element subarrays; each subarray is a
129
+ # name/value pair (both are strings). Each returned string has encoding `enc`,
130
+ # and has had invalid characters removed via
131
+ # [String#scrub](rdoc-ref:String#scrub).
132
+ #
133
+ # A simple example:
134
+ #
135
+ # URI.decode_www_form('foo=0&bar=1&baz')
136
+ # # => [["foo", "0"], ["bar", "1"], ["baz", ""]]
137
+ #
138
+ # The returned strings have certain conversions, similar to those performed in
139
+ # URI.decode_www_form_component:
140
+ #
141
+ # URI.decode_www_form('f%23o=%2F&b-r=%24&b+z=%40')
142
+ # # => [["f#o", "/"], ["b-r", "$"], ["b z", "@"]]
105
143
  #
106
- # This decodes application/x-www-form-urlencoded data and returns an array of
107
- # key-value arrays.
144
+ # The given string may contain consecutive separators:
108
145
  #
109
- # This refers http://url.spec.whatwg.org/#concept-urlencoded-parser, so this
110
- # supports only &-separator, and doesn't support ;-separator.
146
+ # URI.decode_www_form('foo=0&&bar=1&&baz=2')
147
+ # # => [["foo", "0"], ["", ""], ["bar", "1"], ["", ""], ["baz", "2"]]
111
148
  #
112
- # ary = URI.decode_www_form("a=1&a=2&b=3")
113
- # ary #=> [['a', '1'], ['a', '2'], ['b', '3']]
114
- # ary.assoc('a').last #=> '1'
115
- # ary.assoc('b').last #=> '3'
116
- # ary.rassoc('a').last #=> '2'
117
- # Hash[ary] #=> {"a"=>"2", "b"=>"3"}
149
+ # A different separator may be specified:
118
150
  #
119
- # See URI.decode_www_form_component, URI.encode_www_form.
151
+ # URI.decode_www_form('foo=0--bar=1--baz', separator: '--')
152
+ # # => [["foo", "0"], ["bar", "1"], ["baz", ""]]
120
153
  #
121
154
  def self.decode_www_form: (String str, ?encoding enc, ?isindex: boolish, ?use__charset_: boolish, ?separator: String) -> Array[[ String, String ]]
122
155
 
@@ -124,11 +157,35 @@ module URI
124
157
  # rdoc-file=lib/uri/common.rb
125
158
  # - decode_www_form_component(str, enc=Encoding::UTF_8)
126
159
  # -->
127
- # Decodes given `str` of URL-encoded form data.
160
+ # Returns a string decoded from the given URL-encoded string `str`.
128
161
  #
129
- # This decodes + to SP.
162
+ # The given string is first encoded as Encoding::ASCII-8BIT (using String#b),
163
+ # then decoded (as below), and finally force-encoded to the given encoding
164
+ # `enc`.
130
165
  #
131
- # See URI.encode_www_form_component, URI.decode_www_form.
166
+ # The returned string:
167
+ #
168
+ # * Preserves:
169
+ #
170
+ # * Characters `'*'`, `'.'`, `'-'`, and `'_'`.
171
+ # * Character in ranges `'a'..'z'`, `'A'..'Z'`, and `'0'..'9'`.
172
+ #
173
+ # Example:
174
+ #
175
+ # URI.decode_www_form_component('*.-_azAZ09')
176
+ # # => "*.-_azAZ09"
177
+ #
178
+ # * Converts:
179
+ #
180
+ # * Character `'+'` to character `' '`.
181
+ # * Each "percent notation" to an ASCII character.
182
+ #
183
+ # Example:
184
+ #
185
+ # URI.decode_www_form_component('Here+are+some+punctuation+characters%3A+%2C%3B%3F%3A')
186
+ # # => "Here are some punctuation characters: ,;?:"
187
+ #
188
+ # Related: URI.decode_uri_component (preserves `'+'`).
132
189
  #
133
190
  def self.decode_www_form_component: (String str, ?encoding enc) -> String
134
191
 
@@ -136,33 +193,99 @@ module URI
136
193
  # rdoc-file=lib/uri/common.rb
137
194
  # - encode_www_form(enum, enc=nil)
138
195
  # -->
139
- # Generates URL-encoded form data from given `enum`.
196
+ # Returns a URL-encoded string derived from the given
197
+ # [Enumerable](rdoc-ref:Enumerable@Enumerable+in+Ruby+Classes) `enum`.
198
+ #
199
+ # The result is suitable for use as form data for an HTTP request whose
200
+ # `Content-Type` is `'application/x-www-form-urlencoded'`.
201
+ #
202
+ # The returned string consists of the elements of `enum`, each converted to one
203
+ # or more URL-encoded strings, and all joined with character `'&'`.
204
+ #
205
+ # Simple examples:
206
+ #
207
+ # URI.encode_www_form([['foo', 0], ['bar', 1], ['baz', 2]])
208
+ # # => "foo=0&bar=1&baz=2"
209
+ # URI.encode_www_form({foo: 0, bar: 1, baz: 2})
210
+ # # => "foo=0&bar=1&baz=2"
211
+ #
212
+ # The returned string is formed using method URI.encode_www_form_component,
213
+ # which converts certain characters:
214
+ #
215
+ # URI.encode_www_form('f#o': '/', 'b-r': '$', 'b z': '@')
216
+ # # => "f%23o=%2F&b-r=%24&b+z=%40"
217
+ #
218
+ # When `enum` is Array-like, each element `ele` is converted to a field:
219
+ #
220
+ # * If `ele` is an array of two or more elements, the field is formed from its
221
+ # first two elements (and any additional elements are ignored):
222
+ #
223
+ # name = URI.encode_www_form_component(ele[0], enc)
224
+ # value = URI.encode_www_form_component(ele[1], enc)
225
+ # "#{name}=#{value}"
226
+ #
227
+ # Examples:
228
+ #
229
+ # URI.encode_www_form([%w[foo bar], %w[baz bat bah]])
230
+ # # => "foo=bar&baz=bat"
231
+ # URI.encode_www_form([['foo', 0], ['bar', :baz, 'bat']])
232
+ # # => "foo=0&bar=baz"
233
+ #
234
+ # * If `ele` is an array of one element, the field is formed from `ele[0]`:
235
+ #
236
+ # URI.encode_www_form_component(ele[0])
237
+ #
238
+ # Example:
239
+ #
240
+ # URI.encode_www_form([['foo'], [:bar], [0]])
241
+ # # => "foo&bar&0"
242
+ #
243
+ # * Otherwise the field is formed from `ele`:
244
+ #
245
+ # URI.encode_www_form_component(ele)
246
+ #
247
+ # Example:
248
+ #
249
+ # URI.encode_www_form(['foo', :bar, 0])
250
+ # # => "foo&bar&0"
251
+ #
252
+ # The elements of an Array-like `enum` may be mixture:
253
+ #
254
+ # URI.encode_www_form([['foo', 0], ['bar', 1, 2], ['baz'], :bat])
255
+ # # => "foo=0&bar=1&baz&bat"
256
+ #
257
+ # When `enum` is Hash-like, each `key`/`value` pair is converted to one or more
258
+ # fields:
140
259
  #
141
- # This generates application/x-www-form-urlencoded data defined in HTML5 from
142
- # given an Enumerable object.
260
+ # * If `value` is
261
+ # [Array-convertible](rdoc-ref:implicit_conversion.rdoc@Array-Convertible+Ob
262
+ # jects), each element `ele` in `value` is paired with `key` to form a
263
+ # field:
143
264
  #
144
- # This internally uses URI.encode_www_form_component(str).
265
+ # name = URI.encode_www_form_component(key, enc)
266
+ # value = URI.encode_www_form_component(ele, enc)
267
+ # "#{name}=#{value}"
145
268
  #
146
- # This method doesn't convert the encoding of given items, so convert them
147
- # before calling this method if you want to send data as other than original
148
- # encoding or mixed encoding data. (Strings which are encoded in an HTML5 ASCII
149
- # incompatible encoding are converted to UTF-8.)
269
+ # Example:
150
270
  #
151
- # This method doesn't handle files. When you send a file, use
152
- # multipart/form-data.
271
+ # URI.encode_www_form({foo: [:bar, 1], baz: [:bat, :bam, 2]})
272
+ # # => "foo=bar&foo=1&baz=bat&baz=bam&baz=2"
153
273
  #
154
- # This refers https://url.spec.whatwg.org/#concept-urlencoded-serializer
274
+ # * Otherwise, `key` and `value` are paired to form a field:
155
275
  #
156
- # URI.encode_www_form([["q", "ruby"], ["lang", "en"]])
157
- # #=> "q=ruby&lang=en"
158
- # URI.encode_www_form("q" => "ruby", "lang" => "en")
159
- # #=> "q=ruby&lang=en"
160
- # URI.encode_www_form("q" => ["ruby", "perl"], "lang" => "en")
161
- # #=> "q=ruby&q=perl&lang=en"
162
- # URI.encode_www_form([["q", "ruby"], ["q", "perl"], ["lang", "en"]])
163
- # #=> "q=ruby&q=perl&lang=en"
276
+ # name = URI.encode_www_form_component(key, enc)
277
+ # value = URI.encode_www_form_component(value, enc)
278
+ # "#{name}=#{value}"
164
279
  #
165
- # See URI.encode_www_form_component, URI.decode_www_form.
280
+ # Example:
281
+ #
282
+ # URI.encode_www_form({foo: 0, bar: 1, baz: 2})
283
+ # # => "foo=0&bar=1&baz=2"
284
+ #
285
+ # The elements of a Hash-like `enum` may be mixture:
286
+ #
287
+ # URI.encode_www_form({foo: [0, 1], bar: 2})
288
+ # # => "foo=0&foo=1&bar=2"
166
289
  #
167
290
  def self.encode_www_form: (Enumerable[[ _ToS, _ToS ]] enum, ?encoding? enc) -> String
168
291
 
@@ -170,17 +293,40 @@ module URI
170
293
  # rdoc-file=lib/uri/common.rb
171
294
  # - encode_www_form_component(str, enc=nil)
172
295
  # -->
173
- # Encodes given `str` to URL-encoded form data.
296
+ # Returns a URL-encoded string derived from the given string `str`.
297
+ #
298
+ # The returned string:
299
+ #
300
+ # * Preserves:
301
+ #
302
+ # * Characters `'*'`, `'.'`, `'-'`, and `'_'`.
303
+ # * Character in ranges `'a'..'z'`, `'A'..'Z'`, and `'0'..'9'`.
304
+ #
305
+ # Example:
306
+ #
307
+ # URI.encode_www_form_component('*.-_azAZ09')
308
+ # # => "*.-_azAZ09"
174
309
  #
175
- # This method doesn't convert *, -, ., 0-9, A-Z, _, a-z, but does convert SP
176
- # (ASCII space) to + and converts others to %XX.
310
+ # * Converts:
177
311
  #
178
- # If `enc` is given, convert `str` to the encoding before percent encoding.
312
+ # * Character `' '` to character `'+'`.
313
+ # * Any other character to "percent notation"; the percent notation for
314
+ # character *c* is `'%%%X' % c.ord`.
179
315
  #
180
- # This is an implementation of
181
- # https://www.w3.org/TR/2013/CR-html5-20130806/forms.html#url-encoded-form-data.
316
+ # Example:
182
317
  #
183
- # See URI.decode_www_form_component, URI.encode_www_form.
318
+ # URI.encode_www_form_component('Here are some punctuation characters: ,;?:')
319
+ # # => "Here+are+some+punctuation+characters%3A+%2C%3B%3F%3A"
320
+ #
321
+ # Encoding:
322
+ #
323
+ # * If `str` has encoding Encoding::ASCII_8BIT, argument `enc` is ignored.
324
+ # * Otherwise `str` is converted first to Encoding::UTF_8 (with suitable
325
+ # character replacements), and then to encoding `enc`.
326
+ #
327
+ # In either case, the returned string has forced encoding Encoding::US_ASCII.
328
+ #
329
+ # Related: URI.encode_uri_component (encodes `' '` as `'%20'`).
184
330
  #
185
331
  def self.encode_www_form_component: (_ToS str, ?encoding? enc) -> String
186
332
 
@@ -221,23 +367,13 @@ module URI
221
367
  # rdoc-file=lib/uri/common.rb
222
368
  # - join(*str)
223
369
  # -->
224
- # ## Synopsis
225
- #
226
- # URI::join(str[, str, ...])
227
- #
228
- # ## Args
370
+ # Merges the given URI strings `str` per [RFC
371
+ # 2396](https://www.rfc-editor.org/rfc/rfc2396.html).
229
372
  #
230
- # `str`
231
- # : String(s) to work with, will be converted to RFC3986 URIs before merging.
232
- #
233
- #
234
- # ## Description
373
+ # Each string in `str` is converted to an [RFC3986
374
+ # URI](https://www.rfc-editor.org/rfc/rfc3986.html) before being merged.
235
375
  #
236
- # Joins URIs.
237
- #
238
- # ## Usage
239
- #
240
- # require 'uri'
376
+ # Examples:
241
377
  #
242
378
  # URI.join("http://example.com/","main.rbx")
243
379
  # # => #<URI::HTTP http://example.com/main.rbx>
@@ -254,45 +390,21 @@ module URI
254
390
  # URI.join('http://example.com', '/foo/', 'bar')
255
391
  # # => #<URI::HTTP http://example.com/foo/bar>
256
392
  #
257
- def self.join: (String str, *String strs) -> URI::Generic
393
+ def self.join: (_ToStr | URI::Generic str, *_ToStr | URI::Generic strs) -> URI::Generic
258
394
 
259
395
  # <!--
260
396
  # rdoc-file=lib/uri/common.rb
261
397
  # - parse(uri)
262
398
  # -->
263
- # ## Synopsis
264
- #
265
- # URI::parse(uri_str)
266
- #
267
- # ## Args
268
- #
269
- # `uri_str`
270
- # : String with URI.
271
- #
272
- #
273
- # ## Description
399
+ # Returns a new URI object constructed from the given string `uri`:
274
400
  #
275
- # Creates one of the URI's subclasses instance from the string.
401
+ # URI.parse('https://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top')
402
+ # # => #<URI::HTTPS https://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top>
403
+ # URI.parse('http://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top')
404
+ # # => #<URI::HTTP http://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top>
276
405
  #
277
- # ## Raises
278
- #
279
- # URI::InvalidURIError
280
- # : Raised if URI given is not a correct one.
281
- #
282
- #
283
- # ## Usage
284
- #
285
- # require 'uri'
286
- #
287
- # uri = URI.parse("http://www.ruby-lang.org/")
288
- # # => #<URI::HTTP http://www.ruby-lang.org/>
289
- # uri.scheme
290
- # # => "http"
291
- # uri.host
292
- # # => "www.ruby-lang.org"
293
- #
294
- # It's recommended to first ::escape the provided `uri_str` if there are any
295
- # invalid URI characters.
406
+ # It's recommended to first ::escape string `uri` if it may contain invalid URI
407
+ # characters.
296
408
  #
297
409
  def self.parse: (_ToStr uri) -> (File | FTP | HTTP | HTTPS | LDAP | LDAPS | MailTo | WS | WSS | Generic)
298
410
 
@@ -338,7 +450,20 @@ module URI
338
450
  # rdoc-file=lib/uri/common.rb
339
451
  # - scheme_list()
340
452
  # -->
341
- # Returns a Hash of the defined schemes.
453
+ # Returns a hash of the defined schemes:
454
+ #
455
+ # URI.scheme_list
456
+ # # =>
457
+ # {"MAILTO"=>URI::MailTo,
458
+ # "LDAPS"=>URI::LDAPS,
459
+ # "WS"=>URI::WS,
460
+ # "HTTP"=>URI::HTTP,
461
+ # "HTTPS"=>URI::HTTPS,
462
+ # "LDAP"=>URI::LDAP,
463
+ # "FILE"=>URI::File,
464
+ # "FTP"=>URI::FTP}
465
+ #
466
+ # Related: URI.register_scheme.
342
467
  #
343
468
  def self.scheme_list: () -> Hash[String, Class]
344
469
 
@@ -346,8 +471,20 @@ module URI
346
471
  # rdoc-file=lib/uri/common.rb
347
472
  # - for(scheme, *arguments, default: Generic)
348
473
  # -->
349
- # Construct a URI instance, using the scheme to detect the appropriate class
350
- # from `URI.scheme_list`.
474
+ # Returns a new object constructed from the given `scheme`, `arguments`, and
475
+ # `default`:
476
+ #
477
+ # * The new object is an instance of `URI.scheme_list[scheme.upcase]`.
478
+ # * The object is initialized by calling the class initializer using `scheme`
479
+ # and `arguments`. See URI::Generic.new.
480
+ #
481
+ # Examples:
482
+ #
483
+ # values = ['john.doe', 'www.example.com', '123', nil, '/forum/questions/', nil, 'tag=networking&order=newest', 'top']
484
+ # URI.for('https', *values)
485
+ # # => #<URI::HTTPS https://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top>
486
+ # URI.for('foo', *values, default: URI::HTTP)
487
+ # # => #<URI::HTTP foo://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top>
351
488
  #
352
489
  def self.for: (String scheme, *untyped arguments, ?default: Class) -> (File | FTP | HTTP | HTTPS | LDAP | LDAPS | MailTo | WS | WSS | Generic)
353
490
 
@@ -355,37 +492,22 @@ module URI
355
492
  # rdoc-file=lib/uri/common.rb
356
493
  # - split(uri)
357
494
  # -->
358
- # ## Synopsis
359
- #
360
- # URI::split(uri)
361
- #
362
- # ## Args
363
- #
364
- # `uri`
365
- # : String with URI.
366
- #
367
- #
368
- # ## Description
369
- #
370
- # Splits the string on following parts and returns array with result:
371
- #
372
- # * Scheme
373
- # * Userinfo
374
- # * Host
375
- # * Port
376
- # * Registry
377
- # * Path
378
- # * Opaque
379
- # * Query
380
- # * Fragment
381
- #
382
- #
383
- # ## Usage
384
- #
385
- # require 'uri'
386
- #
387
- # URI.split("http://www.ruby-lang.org/")
388
- # # => ["http", nil, "www.ruby-lang.org", nil, nil, "/", nil, nil, nil]
495
+ # Returns a 9-element array representing the parts of the URI formed from the
496
+ # string `uri`; each array element is a string or `nil`:
497
+ #
498
+ # names = %w[scheme userinfo host port registry path opaque query fragment]
499
+ # values = URI.split('https://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top')
500
+ # names.zip(values)
501
+ # # =>
502
+ # [["scheme", "https"],
503
+ # ["userinfo", "john.doe"],
504
+ # ["host", "www.example.com"],
505
+ # ["port", "123"],
506
+ # ["registry", nil],
507
+ # ["path", "/forum/questions/"],
508
+ # ["opaque", nil],
509
+ # ["query", "tag=networking&order=newest"],
510
+ # ["fragment", "top"]]
389
511
  #
390
512
  def self.split: (_ToStr uri) -> [ String?, String?, String?, String?, nil, String?, String?, String?, String? ]
391
513
  end
@@ -396,9 +518,6 @@ URI::ABS_URI: Regexp
396
518
 
397
519
  URI::ABS_URI_REF: Regexp
398
520
 
399
- # <!-- rdoc-file=lib/uri/common.rb -->
400
- # URI::Parser.new
401
- #
402
521
  URI::DEFAULT_PARSER: URI::RFC2396_Parser
403
522
 
404
523
  URI::ESCAPED: Regexp
@@ -449,7 +568,15 @@ module Kernel
449
568
  # rdoc-file=lib/uri/common.rb
450
569
  # - URI(uri)
451
570
  # -->
452
- # Returns `uri` converted to an URI object.
571
+ # Returns a URI object derived from the given `uri`, which may be a URI string
572
+ # or an existing URI object:
573
+ #
574
+ # # Returns a new URI.
575
+ # uri = URI('http://github.com/ruby/ruby')
576
+ # # => #<URI::HTTP http://github.com/ruby/ruby>
577
+ # # Returns the given URI.
578
+ # URI(uri)
579
+ # # => #<URI::HTTP http://github.com/ruby/ruby>
453
580
  #
454
581
  def self?.URI: (URI::Generic | String uri) -> URI::Generic
455
582
  end
@@ -30,6 +30,8 @@ module URI
30
30
  # If an Array is used, the components must be passed in the order `[host,
31
31
  # path]`.
32
32
  #
33
+ # A path from e.g. the File class should be escaped before being passed.
34
+ #
33
35
  # Examples:
34
36
  #
35
37
  # require 'uri'
@@ -41,6 +43,9 @@ module URI
41
43
  # :path => '/ruby/src'})
42
44
  # uri2.to_s # => "file://host.example.com/ruby/src"
43
45
  #
46
+ # uri3 = URI::File.build({:path => URI::escape('/path/my file.txt')})
47
+ # uri3.to_s # => "file:///path/my%20file.txt"
48
+ #
44
49
  def self.build: (Array[String] args) -> URI::File
45
50
  | ({ host: String?, path: String? }) -> URI::File
46
51
 
data/stdlib/uri/0/ftp.rbs CHANGED
@@ -6,7 +6,7 @@ module URI
6
6
  # This class will be redesigned because of difference of implementations; the
7
7
  # structure of its path. draft-hoffman-ftp-uri-04 is a draft but it is a good
8
8
  # summary about the de facto spec.
9
- # http://tools.ietf.org/html/draft-hoffman-ftp-uri-04
9
+ # https://datatracker.ietf.org/doc/html/draft-hoffman-ftp-uri-04
10
10
  #
11
11
  class FTP < Generic
12
12
  end