rbs 4.1.0.pre.2-java

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 (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. metadata +660 -0
@@ -0,0 +1,637 @@
1
+ # <!-- rdoc-file=re.c -->
2
+ # MatchData encapsulates the result of matching a Regexp against string. It is
3
+ # returned by Regexp#match and String#match, and also stored in a global
4
+ # variable returned by Regexp.last_match.
5
+ #
6
+ # Usage:
7
+ #
8
+ # url = 'https://docs.ruby-lang.org/en/2.5.0/MatchData.html'
9
+ # m = url.match(/(\d\.?)+/) # => #<MatchData "2.5.0" 1:"0">
10
+ # m.string # => "https://docs.ruby-lang.org/en/2.5.0/MatchData.html"
11
+ # m.regexp # => /(\d\.?)+/
12
+ # # entire matched substring:
13
+ # m[0] # => "2.5.0"
14
+ #
15
+ # # Working with unnamed captures
16
+ # m = url.match(%r{([^/]+)/([^/]+)\.html$})
17
+ # m.captures # => ["2.5.0", "MatchData"]
18
+ # m[1] # => "2.5.0"
19
+ # m.values_at(1, 2) # => ["2.5.0", "MatchData"]
20
+ #
21
+ # # Working with named captures
22
+ # m = url.match(%r{(?<version>[^/]+)/(?<module>[^/]+)\.html$})
23
+ # m.captures # => ["2.5.0", "MatchData"]
24
+ # m.named_captures # => {"version"=>"2.5.0", "module"=>"MatchData"}
25
+ # m[:version] # => "2.5.0"
26
+ # m.values_at(:version, :module)
27
+ # # => ["2.5.0", "MatchData"]
28
+ # # Numerical indexes are working, too
29
+ # m[1] # => "2.5.0"
30
+ # m.values_at(1, 2) # => ["2.5.0", "MatchData"]
31
+ #
32
+ # ## Global variables equivalence
33
+ #
34
+ # Parts of last MatchData (returned by Regexp.last_match) are also aliased as
35
+ # global variables:
36
+ #
37
+ # * <code>$~</code> is Regexp.last_match;
38
+ # * <code>$&</code> is Regexp.last_match<code>[ 0 ]</code>;
39
+ # * <code>$1</code>, <code>$2</code>, and so on are Regexp.last_match<code>[ i
40
+ # ]</code> (captures by number);
41
+ # * <code>$`</code> is Regexp.last_match<code>.pre_match</code>;
42
+ # * <code>$'</code> is Regexp.last_match<code>.post_match</code>;
43
+ # * <code>$+</code> is Regexp.last_match<code>[ -1 ]</code> (the last
44
+ # capture).
45
+ #
46
+ # See also Regexp@Global+Variables.
47
+ #
48
+ class MatchData
49
+ type capture = String | Symbol | int
50
+
51
+ def initialize_copy: (MatchData instance) -> self
52
+
53
+ # <!-- rdoc-file=re.c -->
54
+ # Returns `true` if `object` is another MatchData object whose target string,
55
+ # regexp, match, and captures are the same as `self`, `false` otherwise.
56
+ #
57
+ def ==: (MatchData other) -> bool
58
+ | (untyped) -> false
59
+
60
+ # <!--
61
+ # rdoc-file=re.c
62
+ # - matchdata[index] -> string or nil
63
+ # - matchdata[start, length] -> array
64
+ # - matchdata[range] -> array
65
+ # - matchdata[name] -> string or nil
66
+ # -->
67
+ # When arguments `index`, +start and `length`, or `range` are given, returns
68
+ # match and captures in the style of Array#[]:
69
+ #
70
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
71
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
72
+ # m[0] # => "HX1138"
73
+ # m[1, 2] # => ["H", "X"]
74
+ # m[1..3] # => ["H", "X", "113"]
75
+ # m[-3, 2] # => ["X", "113"]
76
+ #
77
+ # When string or symbol argument `name` is given, returns the matched substring
78
+ # for the given name:
79
+ #
80
+ # m = /(?<foo>.)(.)(?<bar>.+)/.match("hoge")
81
+ # # => #<MatchData "hoge" foo:"h" bar:"ge">
82
+ # m['foo'] # => "h"
83
+ # m[:bar] # => "ge"
84
+ #
85
+ # If multiple captures have the same name, returns the last matched substring.
86
+ #
87
+ # m = /(?<foo>.)(?<foo>.+)/.match("hoge")
88
+ # # => #<MatchData "hoge" foo:"h" foo:"oge">
89
+ # m[:foo] #=> "oge"
90
+ #
91
+ # m = /\W(?<foo>.+)|\w(?<foo>.+)|(?<foo>.+)/.match("hoge")
92
+ # #<MatchData "hoge" foo:nil foo:"oge" foo:nil>
93
+ # m[:foo] #=> "oge"
94
+ #
95
+ def []: (capture backref, ?nil) -> String?
96
+ | (int start, int length) -> Array[String?]
97
+ | (range[int?] range) -> Array[String?]
98
+
99
+ # <!--
100
+ # rdoc-file=re.c
101
+ # - begin(n) -> integer
102
+ # - begin(name) -> integer
103
+ # -->
104
+ # Returns the offset (in characters) of the beginning of the specified match.
105
+ #
106
+ # When non-negative integer argument `n` is given, returns the offset of the
107
+ # beginning of the `n`th match:
108
+ #
109
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
110
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
111
+ # m[0] # => "HX1138"
112
+ # m.begin(0) # => 1
113
+ # m[3] # => "113"
114
+ # m.begin(3) # => 3
115
+ #
116
+ # m = /(т)(е)(с)/.match('тест')
117
+ # # => #<MatchData "тес" 1:"т" 2:"е" 3:"с">
118
+ # m[0] # => "тес"
119
+ # m.begin(0) # => 0
120
+ # m[3] # => "с"
121
+ # m.begin(3) # => 2
122
+ #
123
+ # When string or symbol argument `name` is given, returns the offset of the
124
+ # beginning for the named match:
125
+ #
126
+ # m = /(?<foo>.)(.)(?<bar>.)/.match("hoge")
127
+ # # => #<MatchData "hog" foo:"h" bar:"g">
128
+ # m[:foo] # => "h"
129
+ # m.begin('foo') # => 0
130
+ # m[:bar] # => "g"
131
+ # m.begin(:bar) # => 2
132
+ #
133
+ # Related: MatchData#end, MatchData#offset, MatchData#byteoffset.
134
+ #
135
+ def begin: (capture backref) -> Integer?
136
+
137
+ # <!--
138
+ # rdoc-file=re.c
139
+ # - bytebegin(n) -> integer
140
+ # - bytebegin(name) -> integer
141
+ # -->
142
+ # Returns the offset (in bytes) of the beginning of the specified match.
143
+ #
144
+ # When non-negative integer argument `n` is given, returns the offset of the
145
+ # beginning of the `n`th match:
146
+ #
147
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
148
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
149
+ # m[0] # => "HX1138"
150
+ # m.bytebegin(0) # => 1
151
+ # m[3] # => "113"
152
+ # m.bytebegin(3) # => 3
153
+ #
154
+ # m = /(т)(е)(с)/.match('тест')
155
+ # # => #<MatchData "тес" 1:"т" 2:"е" 3:"с">
156
+ # m[0] # => "тес"
157
+ # m.bytebegin(0) # => 0
158
+ # m[3] # => "с"
159
+ # m.bytebegin(3) # => 4
160
+ #
161
+ # When string or symbol argument `name` is given, returns the offset of the
162
+ # beginning for the named match:
163
+ #
164
+ # m = /(?<foo>.)(.)(?<bar>.)/.match("hoge")
165
+ # # => #<MatchData "hog" foo:"h" bar:"g">
166
+ # m[:foo] # => "h"
167
+ # m.bytebegin('foo') # => 0
168
+ # m[:bar] # => "g"
169
+ # m.bytebegin(:bar) # => 2
170
+ #
171
+ # Related: MatchData#byteend, MatchData#byteoffset.
172
+ #
173
+ def bytebegin: (capture backref) -> Integer?
174
+
175
+ # <!--
176
+ # rdoc-file=re.c
177
+ # - byteend(n) -> integer
178
+ # - byteend(name) -> integer
179
+ # -->
180
+ # Returns the offset (in bytes) of the end of the specified match.
181
+ #
182
+ # When non-negative integer argument `n` is given, returns the offset of the end
183
+ # of the `n`th match:
184
+ #
185
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
186
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
187
+ # m[0] # => "HX1138"
188
+ # m.byteend(0) # => 7
189
+ # m[3] # => "113"
190
+ # m.byteend(3) # => 6
191
+ #
192
+ # m = /(т)(е)(с)/.match('тест')
193
+ # # => #<MatchData "тес" 1:"т" 2:"е" 3:"с">
194
+ # m[0] # => "тес"
195
+ # m.byteend(0) # => 6
196
+ # m[3] # => "с"
197
+ # m.byteend(3) # => 6
198
+ #
199
+ # When string or symbol argument `name` is given, returns the offset of the end
200
+ # for the named match:
201
+ #
202
+ # m = /(?<foo>.)(.)(?<bar>.)/.match("hoge")
203
+ # # => #<MatchData "hog" foo:"h" bar:"g">
204
+ # m[:foo] # => "h"
205
+ # m.byteend('foo') # => 1
206
+ # m[:bar] # => "g"
207
+ # m.byteend(:bar) # => 3
208
+ #
209
+ # Related: MatchData#bytebegin, MatchData#byteoffset.
210
+ #
211
+ def byteend: (capture backref) -> Integer?
212
+
213
+ # <!--
214
+ # rdoc-file=re.c
215
+ # - mtch.byteoffset(n) -> array
216
+ # -->
217
+ # Returns a two-element array containing the beginning and ending byte-based
218
+ # offsets of the *n*th match. *n* can be a string or symbol to reference a named
219
+ # capture.
220
+ #
221
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
222
+ # m.byteoffset(0) #=> [1, 7]
223
+ # m.byteoffset(4) #=> [6, 7]
224
+ #
225
+ # m = /(?<foo>.)(.)(?<bar>.)/.match("hoge")
226
+ # p m.byteoffset(:foo) #=> [0, 1]
227
+ # p m.byteoffset(:bar) #=> [2, 3]
228
+ #
229
+ def byteoffset: (capture backref) -> ([Integer, Integer] | [nil, nil])
230
+
231
+ # <!--
232
+ # rdoc-file=re.c
233
+ # - captures -> array
234
+ # -->
235
+ # Returns the array of captures, which are all matches except <code>m[0]</code>:
236
+ #
237
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
238
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
239
+ # m[0] # => "HX1138"
240
+ # m.captures # => ["H", "X", "113", "8"]
241
+ #
242
+ # Related: MatchData.to_a.
243
+ #
244
+ def captures: () -> Array[String?]
245
+
246
+ # <!-- rdoc-file=re.c -->
247
+ # Returns the array of captures, which are all matches except <code>m[0]</code>:
248
+ #
249
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
250
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
251
+ # m[0] # => "HX1138"
252
+ # m.captures # => ["H", "X", "113", "8"]
253
+ #
254
+ # Related: MatchData.to_a.
255
+ #
256
+ alias deconstruct captures
257
+
258
+ # <!--
259
+ # rdoc-file=re.c
260
+ # - deconstruct_keys(array_of_names) -> hash
261
+ # -->
262
+ # Returns a hash of the named captures for the given names.
263
+ #
264
+ # m = /(?<hours>\d{2}):(?<minutes>\d{2}):(?<seconds>\d{2})/.match("18:37:22")
265
+ # m.deconstruct_keys([:hours, :minutes]) # => {:hours => "18", :minutes => "37"}
266
+ # m.deconstruct_keys(nil) # => {:hours => "18", :minutes => "37", :seconds => "22"}
267
+ #
268
+ # Returns an empty hash if no named captures were defined:
269
+ #
270
+ # m = /(\d{2}):(\d{2}):(\d{2})/.match("18:37:22")
271
+ # m.deconstruct_keys(nil) # => {}
272
+ #
273
+ def deconstruct_keys: (Array[Symbol]? array_of_names) -> Hash[Symbol, String?]
274
+
275
+ # <!--
276
+ # rdoc-file=re.c
277
+ # - end(n) -> integer
278
+ # - end(name) -> integer
279
+ # -->
280
+ # Returns the offset (in characters) of the end of the specified match.
281
+ #
282
+ # When non-negative integer argument `n` is given, returns the offset of the end
283
+ # of the `n`th match:
284
+ #
285
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
286
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
287
+ # m[0] # => "HX1138"
288
+ # m.end(0) # => 7
289
+ # m[3] # => "113"
290
+ # m.end(3) # => 6
291
+ #
292
+ # m = /(т)(е)(с)/.match('тест')
293
+ # # => #<MatchData "тес" 1:"т" 2:"е" 3:"с">
294
+ # m[0] # => "тес"
295
+ # m.end(0) # => 3
296
+ # m[3] # => "с"
297
+ # m.end(3) # => 3
298
+ #
299
+ # When string or symbol argument `name` is given, returns the offset of the end
300
+ # for the named match:
301
+ #
302
+ # m = /(?<foo>.)(.)(?<bar>.)/.match("hoge")
303
+ # # => #<MatchData "hog" foo:"h" bar:"g">
304
+ # m[:foo] # => "h"
305
+ # m.end('foo') # => 1
306
+ # m[:bar] # => "g"
307
+ # m.end(:bar) # => 3
308
+ #
309
+ # Related: MatchData#begin, MatchData#offset, MatchData#byteoffset.
310
+ #
311
+ def end: (capture backref) -> Integer?
312
+
313
+ # <!--
314
+ # rdoc-file=re.c
315
+ # - matchdata == object -> true or false
316
+ # -->
317
+ # Returns `true` if `object` is another MatchData object whose target string,
318
+ # regexp, match, and captures are the same as `self`, `false` otherwise.
319
+ #
320
+ alias eql? ==
321
+
322
+ # <!--
323
+ # rdoc-file=re.c
324
+ # - hash -> integer
325
+ # -->
326
+ # Returns the integer hash value for `self`, based on the target string, regexp,
327
+ # match, and captures.
328
+ #
329
+ # See also Object#hash.
330
+ #
331
+ def hash: () -> Integer
332
+
333
+ # <!--
334
+ # rdoc-file=re.c
335
+ # - inspect -> string
336
+ # -->
337
+ # Returns a string representation of `self`:
338
+ #
339
+ # m = /.$/.match("foo")
340
+ # # => #<MatchData "o">
341
+ # m.inspect # => "#<MatchData \"o\">"
342
+ #
343
+ # m = /(.)(.)(.)/.match("foo")
344
+ # # => #<MatchData "foo" 1:"f" 2:"o" 3:"o">
345
+ # m.inspect # => "#<MatchData \"foo\" 1:\"f\" 2:\"o\
346
+ #
347
+ # m = /(.)(.)?(.)/.match("fo")
348
+ # # => #<MatchData "fo" 1:"f" 2:nil 3:"o">
349
+ # m.inspect # => "#<MatchData \"fo\" 1:\"f\" 2:nil 3:\"o\">"
350
+ #
351
+ # Related: MatchData#to_s.
352
+ #
353
+ def inspect: () -> String
354
+
355
+ # <!-- rdoc-file=re.c -->
356
+ # Returns size of the match array:
357
+ #
358
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
359
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
360
+ # m.size # => 5
361
+ #
362
+ alias length size
363
+
364
+ # <!--
365
+ # rdoc-file=re.c
366
+ # - named_captures(symbolize_names: false) -> hash
367
+ # -->
368
+ # Returns a hash of the named captures; each key is a capture name; each value
369
+ # is its captured string or `nil`:
370
+ #
371
+ # m = /(?<foo>.)(.)(?<bar>.+)/.match("hoge")
372
+ # # => #<MatchData "hoge" foo:"h" bar:"ge">
373
+ # m.named_captures # => {"foo"=>"h", "bar"=>"ge"}
374
+ #
375
+ # m = /(?<a>.)(?<b>.)/.match("01")
376
+ # # => #<MatchData "01" a:"0" b:"1">
377
+ # m.named_captures #=> {"a" => "0", "b" => "1"}
378
+ #
379
+ # m = /(?<a>.)(?<b>.)?/.match("0")
380
+ # # => #<MatchData "0" a:"0" b:nil>
381
+ # m.named_captures #=> {"a" => "0", "b" => nil}
382
+ #
383
+ # m = /(?<a>.)(?<a>.)/.match("01")
384
+ # # => #<MatchData "01" a:"0" a:"1">
385
+ # m.named_captures #=> {"a" => "1"}
386
+ #
387
+ # If keyword argument `symbolize_names` is given a true value, the keys in the
388
+ # resulting hash are Symbols:
389
+ #
390
+ # m = /(?<a>.)(?<a>.)/.match("01")
391
+ # # => #<MatchData "01" a:"0" a:"1">
392
+ # m.named_captures(symbolize_names: true) #=> {:a => "1"}
393
+ #
394
+ def named_captures: () -> Hash[String, String?]
395
+ | (symbolize_names: true) -> Hash[Symbol, String?]
396
+ | (symbolize_names: boolish) -> Hash[String | Symbol, String?]
397
+
398
+ # <!--
399
+ # rdoc-file=re.c
400
+ # - names -> array_of_names
401
+ # -->
402
+ # Returns an array of the capture names (see [Named
403
+ # Captures](rdoc-ref:Regexp@Named+Captures)):
404
+ #
405
+ # m = /(?<foo>.)(?<bar>.)(?<baz>.)/.match("hoge")
406
+ # # => #<MatchData "hog" foo:"h" bar:"o" baz:"g">
407
+ # m.names # => ["foo", "bar", "baz"]
408
+ #
409
+ # m = /foo/.match('foo') # => #<MatchData "foo">
410
+ # m.names # => [] # No named captures.
411
+ #
412
+ # Equivalent to:
413
+ #
414
+ # m = /(?<foo>.)(?<bar>.)(?<baz>.)/.match("hoge")
415
+ # m.regexp.names # => ["foo", "bar", "baz"]
416
+ #
417
+ def names: () -> Array[String]
418
+
419
+ # <!--
420
+ # rdoc-file=re.c
421
+ # - match(n) -> string or nil
422
+ # - match(name) -> string or nil
423
+ # -->
424
+ # Returns the matched substring corresponding to the given argument.
425
+ #
426
+ # When non-negative argument `n` is given, returns the matched substring for the
427
+ # `n`th match:
428
+ #
429
+ # m = /(.)(.)(\d+)(\d)(\w)?/.match("THX1138.")
430
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8" 5:nil>
431
+ # m.match(0) # => "HX1138"
432
+ # m.match(4) # => "8"
433
+ # m.match(5) # => nil
434
+ #
435
+ # When string or symbol argument `name` is given, returns the matched substring
436
+ # for the given name:
437
+ #
438
+ # m = /(?<foo>.)(.)(?<bar>.+)/.match("hoge")
439
+ # # => #<MatchData "hoge" foo:"h" bar:"ge">
440
+ # m.match('foo') # => "h"
441
+ # m.match(:bar) # => "ge"
442
+ #
443
+ def match: (capture backref) -> String?
444
+
445
+ # <!--
446
+ # rdoc-file=re.c
447
+ # - match_length(n) -> integer or nil
448
+ # - match_length(name) -> integer or nil
449
+ # -->
450
+ # Returns the length (in characters) of the matched substring corresponding to
451
+ # the given argument.
452
+ #
453
+ # When non-negative argument `n` is given, returns the length of the matched
454
+ # substring for the `n`th match:
455
+ #
456
+ # m = /(.)(.)(\d+)(\d)(\w)?/.match("THX1138.")
457
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8" 5:nil>
458
+ # m.match_length(0) # => 6
459
+ # m.match_length(4) # => 1
460
+ # m.match_length(5) # => nil
461
+ #
462
+ # When string or symbol argument `name` is given, returns the length of the
463
+ # matched substring for the named match:
464
+ #
465
+ # m = /(?<foo>.)(.)(?<bar>.+)/.match("hoge")
466
+ # # => #<MatchData "hoge" foo:"h" bar:"ge">
467
+ # m.match_length('foo') # => 1
468
+ # m.match_length(:bar) # => 2
469
+ #
470
+ def match_length: (capture backref) -> Integer?
471
+
472
+ # <!--
473
+ # rdoc-file=re.c
474
+ # - offset(n) -> [start_offset, end_offset]
475
+ # - offset(name) -> [start_offset, end_offset]
476
+ # -->
477
+ # Returns a 2-element array containing the beginning and ending offsets (in
478
+ # characters) of the specified match.
479
+ #
480
+ # When non-negative integer argument `n` is given, returns the starting and
481
+ # ending offsets of the `n`th match:
482
+ #
483
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
484
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
485
+ # m[0] # => "HX1138"
486
+ # m.offset(0) # => [1, 7]
487
+ # m[3] # => "113"
488
+ # m.offset(3) # => [3, 6]
489
+ #
490
+ # m = /(т)(е)(с)/.match('тест')
491
+ # # => #<MatchData "тес" 1:"т" 2:"е" 3:"с">
492
+ # m[0] # => "тес"
493
+ # m.offset(0) # => [0, 3]
494
+ # m[3] # => "с"
495
+ # m.offset(3) # => [2, 3]
496
+ #
497
+ # When string or symbol argument `name` is given, returns the starting and
498
+ # ending offsets for the named match:
499
+ #
500
+ # m = /(?<foo>.)(.)(?<bar>.)/.match("hoge")
501
+ # # => #<MatchData "hog" foo:"h" bar:"g">
502
+ # m[:foo] # => "h"
503
+ # m.offset('foo') # => [0, 1]
504
+ # m[:bar] # => "g"
505
+ # m.offset(:bar) # => [2, 3]
506
+ #
507
+ # Related: MatchData#byteoffset, MatchData#begin, MatchData#end.
508
+ #
509
+ def offset: (capture backref) -> ([Integer, Integer] | [nil, nil])
510
+
511
+ # <!--
512
+ # rdoc-file=re.c
513
+ # - post_match -> str
514
+ # -->
515
+ # Returns the substring of the target string from the end of the first match in
516
+ # `self` (that is, <code>self[0]</code>) to the end of the string; equivalent to
517
+ # regexp global variable <code>$'</code>:
518
+ #
519
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138: The Movie")
520
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
521
+ # m[0] # => "HX1138"
522
+ # m.post_match # => ": The Movie"\
523
+ #
524
+ # Related: MatchData.pre_match.
525
+ #
526
+ def post_match: () -> String
527
+
528
+ # <!--
529
+ # rdoc-file=re.c
530
+ # - pre_match -> string
531
+ # -->
532
+ # Returns the substring of the target string from its beginning up to the first
533
+ # match in `self` (that is, <code>self[0]</code>); equivalent to regexp global
534
+ # variable <code>$`</code>:
535
+ #
536
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
537
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
538
+ # m[0] # => "HX1138"
539
+ # m.pre_match # => "T"
540
+ #
541
+ # Related: MatchData#post_match.
542
+ #
543
+ def pre_match: () -> String
544
+
545
+ # <!--
546
+ # rdoc-file=re.c
547
+ # - regexp -> regexp
548
+ # -->
549
+ # Returns the regexp that produced the match:
550
+ #
551
+ # m = /a.*b/.match("abc") # => #<MatchData "ab">
552
+ # m.regexp # => /a.*b/
553
+ #
554
+ def regexp: () -> Regexp
555
+
556
+ # <!--
557
+ # rdoc-file=re.c
558
+ # - size -> integer
559
+ # -->
560
+ # Returns size of the match array:
561
+ #
562
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
563
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
564
+ # m.size # => 5
565
+ #
566
+ def size: () -> Integer
567
+
568
+ # <!--
569
+ # rdoc-file=re.c
570
+ # - string -> string
571
+ # -->
572
+ # Returns the target string if it was frozen; otherwise, returns a frozen copy
573
+ # of the target string:
574
+ #
575
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
576
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
577
+ # m.string # => "THX1138."
578
+ #
579
+ def string: () -> String
580
+
581
+ # <!--
582
+ # rdoc-file=re.c
583
+ # - to_a -> array
584
+ # -->
585
+ # Returns the array of matches:
586
+ #
587
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
588
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
589
+ # m.to_a # => ["HX1138", "H", "X", "113", "8"]
590
+ #
591
+ # Related: MatchData#captures.
592
+ #
593
+ def to_a: () -> Array[String?]
594
+
595
+ # <!--
596
+ # rdoc-file=re.c
597
+ # - to_s -> string
598
+ # -->
599
+ # Returns the matched string:
600
+ #
601
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
602
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
603
+ # m.to_s # => "HX1138"
604
+ #
605
+ # m = /(?<foo>.)(.)(?<bar>.+)/.match("hoge")
606
+ # # => #<MatchData "hoge" foo:"h" bar:"ge">
607
+ # m.to_s # => "hoge"
608
+ #
609
+ # Related: MatchData.inspect.
610
+ #
611
+ def to_s: () -> String
612
+
613
+ # <!--
614
+ # rdoc-file=re.c
615
+ # - values_at(*indexes) -> array
616
+ # -->
617
+ # Returns match and captures at the given `indexes`, which may include any
618
+ # mixture of:
619
+ #
620
+ # * Integers.
621
+ # * Ranges.
622
+ # * Names (strings and symbols).
623
+ #
624
+ # Examples:
625
+ #
626
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138: The Movie")
627
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
628
+ # m.values_at(0, 2, -2) # => ["HX1138", "X", "113"]
629
+ # m.values_at(1..2, -1) # => ["H", "X", "8"]
630
+ #
631
+ # m = /(?<a>\d+) *(?<op>[+\-*\/]) *(?<b>\d+)/.match("1 + 2")
632
+ # # => #<MatchData "1 + 2" a:"1" op:"+" b:"2">
633
+ # m.values_at(0, 1..2, :a, :b, :op)
634
+ # # => ["1 + 2", "1", "+", "1", "2", "+"]
635
+ #
636
+ def values_at: (*capture | range[int?] backrefs) -> Array[String?]
637
+ end