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
data/stdlib/csv/0/csv.rbs CHANGED
@@ -1,15 +1,6 @@
1
1
  # <!-- rdoc-file=lib/csv.rb -->
2
2
  # ## CSV
3
3
  #
4
- # ### In a Hurry?
5
- #
6
- # If you are familiar with CSV data and have a particular task in mind, you may
7
- # want to go directly to the:
8
- # * [Recipes for CSV](doc/csv/recipes/recipes_rdoc.html).
9
- #
10
- #
11
- # Otherwise, read on here, about the API: classes, methods, and constants.
12
- #
13
4
  # ### CSV Data
14
5
  #
15
6
  # CSV (comma-separated values) data is a text representation of a table:
@@ -18,7 +9,6 @@
18
9
  # * A *column* *separator* delimits fields in a row. A common column separator
19
10
  # is the comma character `","`.
20
11
  #
21
- #
22
12
  # This CSV String, with row separator `"\n"` and column separator `","`, has
23
13
  # three rows and two columns:
24
14
  # "foo,0\nbar,1\nbaz,2\n"
@@ -37,7 +27,6 @@
37
27
  # IO object.
38
28
  # * Generating CSV data to a String object.
39
29
  #
40
- #
41
30
  # To make CSV available:
42
31
  # require 'csv'
43
32
  #
@@ -60,11 +49,9 @@
60
49
  # * The outer Array is the entire "table".
61
50
  # * Each inner Array is a row.
62
51
  # * Each String is a field.
63
- #
64
52
  # * A CSV::Table object. For details, see [\CSV with
65
53
  # Headers](#class-CSV-label-CSV+with+Headers).
66
54
  #
67
- #
68
55
  # #### Parsing a String
69
56
  #
70
57
  # The input to be parsed can be a string:
@@ -177,7 +164,6 @@
177
164
  # * Method CSV.instance returns a new or cached CSV object.
178
165
  # * Method CSV() also returns a new or cached CSV object.
179
166
  #
180
- #
181
167
  # ### Instance Methods
182
168
  #
183
169
  # CSV has three groups of instance methods:
@@ -185,7 +171,6 @@
185
171
  # * Methods included by module Enumerable.
186
172
  # * Methods delegated to class IO. See below.
187
173
  #
188
- #
189
174
  # #### Delegated Methods
190
175
  #
191
176
  # For convenience, a CSV object will delegate to many methods in class IO. (A
@@ -224,7 +209,6 @@
224
209
  # * IO#truncate
225
210
  # * IO#tty?
226
211
  #
227
- #
228
212
  # ### Options
229
213
  #
230
214
  # The default values for options are:
@@ -283,7 +267,6 @@
283
267
  # * `empty_value`: Specifies the object that is to be substituted for each
284
268
  # empty field.
285
269
  #
286
- #
287
270
  # ###### Option `row_sep`
288
271
  #
289
272
  # Specifies the row separator, a String or the Symbol `:auto` (see below), to be
@@ -374,21 +357,11 @@
374
357
  # * Data is `ARGF`, `STDIN`, `STDOUT`, or `STDERR`.
375
358
  # * The stream is only available for output.
376
359
  #
377
- #
378
360
  # Obviously, discovery takes a little time. Set manually if speed is important.
379
361
  # Also note that IO objects should be opened in binary mode on Windows if this
380
362
  # feature will be used as the line-ending translation can cause problems with
381
363
  # resetting the document position to where it was before the read ahead.
382
364
  #
383
- # ---
384
- #
385
- # Raises an exception if the given value is not String-convertible:
386
- # row_sep = BasicObject.new
387
- # # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
388
- # CSV.generate(ary, row_sep: row_sep)
389
- # # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
390
- # CSV.parse(str, row_sep: row_sep)
391
- #
392
365
  # ###### Option `col_sep`
393
366
  #
394
367
  # Specifies the String field separator to be used for both parsing and
@@ -445,13 +418,6 @@
445
418
  # # Raises ArgumentError (:col_sep must be 1 or more characters: "")
446
419
  # CSV.parse("foo0\nbar1\nbaz2\n", col_sep: col_sep)
447
420
  #
448
- # Raises an exception if the given value is not String-convertible:
449
- # col_sep = BasicObject.new
450
- # # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
451
- # CSV.generate(line, col_sep: col_sep)
452
- # # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
453
- # CSV.parse(str, col_sep: col_sep)
454
- #
455
421
  # ###### Option `quote_char`
456
422
  #
457
423
  # Specifies the character (String of length 1) used used to quote fields in both
@@ -709,7 +675,6 @@
709
675
  # * The converters apply only to the header row.
710
676
  # * The built-in header converters are `:downcase` and `:symbol`.
711
677
  #
712
- #
713
678
  # This section assumes prior execution of:
714
679
  # str = <<-EOT
715
680
  # Name,Value
@@ -781,7 +746,6 @@
781
746
  # * If a String, converts it to a Regexp, ignores lines that match it.
782
747
  # * If `nil`, no lines are considered to be comments.
783
748
  #
784
- #
785
749
  # Default value:
786
750
  # CSV::DEFAULT_OPTIONS.fetch(:skip_lines) # => nil
787
751
  #
@@ -832,13 +796,14 @@
832
796
  #
833
797
  # ###### Option `liberal_parsing`
834
798
  #
835
- # Specifies the boolean value that determines whether CSV will attempt to parse
836
- # input not conformant with RFC 4180, such as double quotes in unquoted fields.
799
+ # Specifies the boolean or hash value that determines whether CSV will attempt
800
+ # to parse input not conformant with RFC 4180, such as double quotes in unquoted
801
+ # fields.
837
802
  #
838
803
  # Default value:
839
804
  # CSV::DEFAULT_OPTIONS.fetch(:liberal_parsing) # => false
840
805
  #
841
- # For examples in this section:
806
+ # For the next two examples:
842
807
  # str = 'is,this "three, or four",fields'
843
808
  #
844
809
  # Without `liberal_parsing`:
@@ -849,6 +814,24 @@
849
814
  # ary = CSV.parse_line(str, liberal_parsing: true)
850
815
  # ary # => ["is", "this \"three", " or four\"", "fields"]
851
816
  #
817
+ # Use the `backslash_quote` sub-option to parse values that use a backslash to
818
+ # escape a double-quote character. This causes the parser to treat `\"` as if
819
+ # it were `""`.
820
+ #
821
+ # For the next two examples:
822
+ # str = 'Show,"Harry \"Handcuff\" Houdini, the one and only","Tampa Theater"'
823
+ #
824
+ # With `liberal_parsing`, but without the `backslash_quote` sub-option:
825
+ # # Incorrect interpretation of backslash; incorrectly interprets the quoted comma as a field separator.
826
+ # ary = CSV.parse_line(str, liberal_parsing: true)
827
+ # ary # => ["Show", "\"Harry \\\"Handcuff\\\" Houdini", " the one and only\"", "Tampa Theater"]
828
+ # puts ary[1] # => "Harry \"Handcuff\" Houdini
829
+ #
830
+ # With `liberal_parsing` and its `backslash_quote` sub-option:
831
+ # ary = CSV.parse_line(str, liberal_parsing: { backslash_quote: true })
832
+ # ary # => ["Show", "Harry \"Handcuff\" Houdini, the one and only", "Tampa Theater"]
833
+ # puts ary[1] # => Harry "Handcuff" Houdini, the one and only
834
+ #
852
835
  # ###### Option `nil_value`
853
836
  #
854
837
  # Specifies the object that is to be substituted for each null (no-text) field.
@@ -891,7 +874,6 @@
891
874
  # * `write_empty_value`: Specifies the object that is to be substituted for
892
875
  # each empty field.
893
876
  #
894
- #
895
877
  # ###### Option `row_sep`
896
878
  #
897
879
  # Specifies the row separator, a String or the Symbol `:auto` (see below), to be
@@ -982,21 +964,11 @@
982
964
  # * Data is `ARGF`, `STDIN`, `STDOUT`, or `STDERR`.
983
965
  # * The stream is only available for output.
984
966
  #
985
- #
986
967
  # Obviously, discovery takes a little time. Set manually if speed is important.
987
968
  # Also note that IO objects should be opened in binary mode on Windows if this
988
969
  # feature will be used as the line-ending translation can cause problems with
989
970
  # resetting the document position to where it was before the read ahead.
990
971
  #
991
- # ---
992
- #
993
- # Raises an exception if the given value is not String-convertible:
994
- # row_sep = BasicObject.new
995
- # # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
996
- # CSV.generate(ary, row_sep: row_sep)
997
- # # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
998
- # CSV.parse(str, row_sep: row_sep)
999
- #
1000
972
  # ###### Option `col_sep`
1001
973
  #
1002
974
  # Specifies the String field separator to be used for both parsing and
@@ -1053,13 +1025,6 @@
1053
1025
  # # Raises ArgumentError (:col_sep must be 1 or more characters: "")
1054
1026
  # CSV.parse("foo0\nbar1\nbaz2\n", col_sep: col_sep)
1055
1027
  #
1056
- # Raises an exception if the given value is not String-convertible:
1057
- # col_sep = BasicObject.new
1058
- # # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
1059
- # CSV.generate(line, col_sep: col_sep)
1060
- # # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
1061
- # CSV.parse(str, col_sep: col_sep)
1062
- #
1063
1028
  # ###### Option `quote_char`
1064
1029
  #
1065
1030
  # Specifies the character (String of length 1) used used to quote fields in both
@@ -1124,7 +1089,7 @@
1124
1089
  #
1125
1090
  # With `write_headers`":
1126
1091
  # CSV.open(file_path,'w',
1127
- # :write_headers=> true,
1092
+ # :write_headers => true,
1128
1093
  # :headers => ['Name','Value']
1129
1094
  # ) do |csv|
1130
1095
  # csv << ['foo', '0']
@@ -1192,14 +1157,6 @@
1192
1157
  #
1193
1158
  # See also [Write Converters](#class-CSV-label-Write+Converters)
1194
1159
  #
1195
- # ---
1196
- #
1197
- # Raises an exception if the converter returns a value that is neither `nil` nor
1198
- # String-convertible:
1199
- # bad_converter = proc {|field| BasicObject.new }
1200
- # # Raises NoMethodError (undefined method `is_a?' for #<BasicObject:>)
1201
- # CSV.generate_line(['a', 'b', 'c'], write_converters: bad_converter)#
1202
- #
1203
1160
  # ###### Option `write_nil_value`
1204
1161
  #
1205
1162
  # Specifies the object that is to be substituted for each `nil`-valued field.
@@ -1261,12 +1218,10 @@
1261
1218
  # * See [Field Converters](#class-CSV-label-Field+Converters).
1262
1219
  # * See [Header Converters](#class-CSV-label-Header+Converters).
1263
1220
  #
1264
- #
1265
1221
  # Also by default, each value to be written during generation is written
1266
1222
  # 'as-is'. You can use a *write* *converter* to modify values before writing.
1267
1223
  # * See [Write Converters](#class-CSV-label-Write+Converters).
1268
1224
  #
1269
- #
1270
1225
  # #### Specifying Converters
1271
1226
  #
1272
1227
  # You can specify converters for parsing or generating in the `options` argument
@@ -1275,14 +1230,12 @@
1275
1230
  # * Option `header_converters` for converting parsed header values.
1276
1231
  # * Option `write_converters` for converting values to be written (generated).
1277
1232
  #
1278
- #
1279
1233
  # There are three forms for specifying converters:
1280
1234
  # * A converter proc: executable code to be used for conversion.
1281
1235
  # * A converter name: the name of a stored converter.
1282
1236
  # * A converter list: an array of converter procs, converter names, and
1283
1237
  # converter lists.
1284
1238
  #
1285
- #
1286
1239
  # ##### Converter Procs
1287
1240
  #
1288
1241
  # This converter proc, `strip_converter`, accepts a value `field` and returns
@@ -1293,7 +1246,6 @@
1293
1246
  # string_converter` specifies that:
1294
1247
  # * Proc `string_converter` is to be called for each parsed field.
1295
1248
  # * The converter's return value is to replace the `field` value.
1296
- #
1297
1249
  # Example:
1298
1250
  # string = " foo , 0 \n bar , 1 \n baz , 2 \n"
1299
1251
  # array = CSV.parse(string, converters: strip_converter)
@@ -1323,7 +1275,6 @@
1323
1275
  # * The 1-based line index.
1324
1276
  # * The field header, if any.
1325
1277
  #
1326
- #
1327
1278
  # ##### Stored Converters
1328
1279
  #
1329
1280
  # A converter may be given a name and stored in a structure where the parsing
@@ -1335,7 +1286,6 @@
1335
1286
  # * `:float`: converts each String-embedded float into a true Float.
1336
1287
  # * `:date`: converts each String-embedded date into a true Date.
1337
1288
  # * `:date_time`: converts each String-embedded date-time into a true DateTime
1338
- #
1339
1289
  # . This example creates a converter proc, then stores it:
1340
1290
  # strip_converter = proc {|field| field.strip }
1341
1291
  # CSV::Converters[:strip] = strip_converter
@@ -1350,7 +1300,6 @@
1350
1300
  # * `:downcase`: Downcases each header.
1351
1301
  # * `:symbol`: Converts each header to a Symbol.
1352
1302
  #
1353
- #
1354
1303
  # There is no such storage structure for write headers.
1355
1304
  #
1356
1305
  # In order for the parsing methods to access stored converters in
@@ -1368,7 +1317,6 @@
1368
1317
  # * Names of stored converters.
1369
1318
  # * Nested converter lists.
1370
1319
  #
1371
- #
1372
1320
  # Examples:
1373
1321
  # numeric_converters = [:integer, :float]
1374
1322
  # date_converters = [:date, :date_time]
@@ -1417,7 +1365,6 @@
1417
1365
  # csv.converters # => [:integer]
1418
1366
  # csv.read # => [["foo", 0], ["bar", 1], ["baz", 2]]
1419
1367
  #
1420
- #
1421
1368
  # Installing a field converter does not affect already-read rows:
1422
1369
  # csv = CSV.new(string)
1423
1370
  # csv.shift # => ["foo", "0"]
@@ -1437,8 +1384,6 @@
1437
1384
  # * A Proc field converter.
1438
1385
  # * An Array of field converter names.
1439
1386
  #
1440
- #
1441
- #
1442
1387
  # Display:
1443
1388
  # CSV::Converters.each_pair do |name, value|
1444
1389
  # if value.kind_of?(Proc)
@@ -1552,7 +1497,6 @@
1552
1497
  # tbl = CSV.parse(string, headers: true)
1553
1498
  # tbl.headers # => ["Name", "Count"]
1554
1499
  #
1555
- #
1556
1500
  # ##### Built-In Header Converters
1557
1501
  #
1558
1502
  # The built-in header converters are in Hash CSV::HeaderConverters. The keys
@@ -1577,7 +1521,6 @@
1577
1521
  # * Removes non-word characters.
1578
1522
  # * Makes the string into a Symbol.
1579
1523
  #
1580
- #
1581
1524
  # ##### Custom Header Converters
1582
1525
  #
1583
1526
  # You can define a custom header converter:
@@ -1737,8 +1680,8 @@ class CSV < Object
1737
1680
  #
1738
1681
  # Arguments:
1739
1682
  # * Argument `path_or_io` must be a file path or an IO stream.
1740
- # * Argument `mode`, if given, must be a File mode See [Open
1741
- # Mode](https://ruby-doc.org/core/IO.html#method-c-new-label-Open+Mode).
1683
+ # * Argument `mode`, if given, must be a File mode. See [Access
1684
+ # Modes](rdoc-ref:File@Access+Modes).
1742
1685
  # * Arguments `**options` must be keyword options. See [Options for
1743
1686
  # Parsing](#class-CSV-label-Options+for+Parsing).
1744
1687
  # * This method optionally accepts an additional `:encoding` option that you
@@ -1752,7 +1695,10 @@ class CSV < Object
1752
1695
  # would read `UTF-32BE` data from the file but transcode it to `UTF-8`
1753
1696
  # before parsing.
1754
1697
  #
1755
- def self.foreach: [U] (String | IO | StringIO path, ?::Hash[Symbol, U] options) { (::Array[String?] arg0) -> void } -> void
1698
+ def self.foreach: (String | IO path, ?String mode, headers: true | :first_row | Array[untyped] | String, **untyped options) { (::CSV::Row arg0) -> void } -> void
1699
+ | (String | IO path, ?String mode, headers: true | :first_row | Array[untyped] | String, **untyped options) -> Enumerator[::CSV::Row, void]
1700
+ | (String | IO path, ?String mode, **untyped options) { (::Array[String?] arg0) -> void } -> void
1701
+ | (String | IO path, ?String mode, **untyped options) -> Enumerator[::Array[String?], void]
1756
1702
 
1757
1703
  # <!--
1758
1704
  # rdoc-file=lib/csv.rb
@@ -1771,15 +1717,12 @@ class CSV < Object
1771
1717
  # * Positioned at the beginning. To position at the end, for appending,
1772
1718
  # use method CSV.generate. For any other positioning, pass a preset
1773
1719
  # StringIO object instead.
1774
- #
1775
1720
  # * Argument `options`: See:
1776
1721
  # * [Options for Parsing](#class-CSV-label-Options+for+Parsing)
1777
1722
  # * [Options for Generating](#class-CSV-label-Options+for+Generating)
1778
- #
1779
1723
  # For performance reasons, the options cannot be overridden in a CSV object,
1780
1724
  # so those specified here will endure.
1781
1725
  #
1782
- #
1783
1726
  # In addition to the CSV instance methods, several IO methods are delegated. See
1784
1727
  # [Delegated Methods](#class-CSV-label-Delegated+Methods).
1785
1728
  #
@@ -1820,11 +1763,9 @@ class CSV < Object
1820
1763
  # * Positioned at the beginning. To position at the end, for appending,
1821
1764
  # use method CSV.generate. For any other positioning, pass a preset
1822
1765
  # StringIO object instead.
1823
- #
1824
1766
  # * Argument `options`: see [Options for
1825
1767
  # Parsing](#class-CSV-label-Options+for+Parsing)
1826
1768
  #
1827
- #
1828
1769
  # ###### Without Option `headers`
1829
1770
  #
1830
1771
  # Without {option `headers`[}](#class-CSV-label-Option+headers) case.
@@ -1943,11 +1884,9 @@ class CSV < Object
1943
1884
  # * Positioned at the beginning. To position at the end, for appending,
1944
1885
  # use method CSV.generate. For any other positioning, pass a preset
1945
1886
  # StringIO object instead.
1946
- #
1947
1887
  # * Argument `options`: see [Options for
1948
1888
  # Parsing](#class-CSV-label-Options+for+Parsing)
1949
1889
  #
1950
- #
1951
1890
  # ###### Without Option `headers`
1952
1891
  #
1953
1892
  # Without option `headers`, returns the first row as a new Array.
@@ -2002,7 +1941,6 @@ class CSV < Object
2002
1941
  # * A CSV::Table object, if headers are in use.
2003
1942
  # * An Array of Arrays, otherwise.
2004
1943
  #
2005
- #
2006
1944
  # The data source must be opened for reading.
2007
1945
  #
2008
1946
  # Without headers:
@@ -2058,7 +1996,8 @@ class CSV < Object
2058
1996
  # File.write(path, string)
2059
1997
  # CSV.read(path, headers: true) # => #<CSV::Table mode:col_or_row row_count:4>
2060
1998
  #
2061
- def self.read: (String path, ?::Hash[Symbol, untyped] options) -> ::Array[::Array[String?]]
1999
+ def self.read: (String | IO path, headers: true | :first_row | Array[untyped] | String, **untyped options) -> ::CSV::Table[CSV::Row]
2000
+ | (String | IO path, ?::Hash[Symbol, untyped] options) -> ::Array[::Array[String?]]
2062
2001
 
2063
2002
  # <!--
2064
2003
  # rdoc-file=lib/csv.rb
@@ -2069,7 +2008,6 @@ class CSV < Object
2069
2008
  # * Argument `row` must be an Array object or a CSV::Row object.
2070
2009
  # * The output stream must be open for writing.
2071
2010
  #
2072
- #
2073
2011
  # ---
2074
2012
  #
2075
2013
  # Append Arrays:
@@ -2125,7 +2063,6 @@ class CSV < Object
2125
2063
  # * Arguments `options`, if given, should be generating options. See [Options
2126
2064
  # for Generating](#class-CSV-label-Options+for+Generating).
2127
2065
  #
2128
- #
2129
2066
  # ---
2130
2067
  #
2131
2068
  # Creates a new CSV object via `CSV.new(csv_string, **options)`; calls the block
@@ -2222,6 +2159,16 @@ class CSV < Object
2222
2159
  #
2223
2160
  def each: () -> Enumerator[untyped, Integer]
2224
2161
  | () { (untyped) -> void } -> Integer
2162
+
2163
+ # <!--
2164
+ # rdoc-file=lib/csv.rb
2165
+ # - csv.headers -> object
2166
+ # -->
2167
+ # Returns the value that determines whether headers are used; used for parsing;
2168
+ # see {Option `headers`[}](#class-CSV-label-Option+headers):
2169
+ # CSV.new('').headers # => nil
2170
+ #
2171
+ def headers: () -> (Array[String] | true | nil)
2225
2172
  end
2226
2173
 
2227
2174
  # <!-- rdoc-file=lib/csv.rb -->
@@ -2243,7 +2190,6 @@ CSV::VERSION: String
2243
2190
  # * Fields: each is an object, not necessarily a String.
2244
2191
  # * Headers: each serves a key, and also need not be a String.
2245
2192
  #
2246
- #
2247
2193
  # ### Instance Methods
2248
2194
  #
2249
2195
  # CSV::Row has three groups of instance methods:
@@ -2254,8 +2200,6 @@ CSV::VERSION: String
2254
2200
  # * Array#length
2255
2201
  # * Array#size
2256
2202
  #
2257
- #
2258
- #
2259
2203
  # ## Creating a CSV::Row Instance
2260
2204
  #
2261
2205
  # Commonly, a new CSV::Row instance is created by parsing CSV source that has
@@ -2314,6 +2258,33 @@ class CSV::Row < Object
2314
2258
  include Enumerable[Array[String]]
2315
2259
  extend Forwardable
2316
2260
 
2261
+ # <!--
2262
+ # rdoc-file=lib/csv/row.rb
2263
+ # - CSV::Row.new(headers, fields, header_row = false) -> csv_row
2264
+ # -->
2265
+ # Returns the new CSV::Row instance constructed from arguments `headers` and
2266
+ # `fields`; both should be Arrays; note that the fields need not be Strings:
2267
+ # row = CSV::Row.new(['Name', 'Value'], ['foo', 0])
2268
+ # row # => #<CSV::Row "Name":"foo" "Value":0>
2269
+ #
2270
+ # If the Array lengths are different, the shorter is `nil`-filled:
2271
+ # row = CSV::Row.new(['Name', 'Value', 'Date', 'Size'], ['foo', 0])
2272
+ # row # => #<CSV::Row "Name":"foo" "Value":0 "Date":nil "Size":nil>
2273
+ #
2274
+ # Each CSV::Row object is either a *field row* or a *header row*; by default, a
2275
+ # new row is a field row; for the row created above:
2276
+ # row.field_row? # => true
2277
+ # row.header_row? # => false
2278
+ #
2279
+ # If the optional argument `header_row` is given as `true`, the created row is a
2280
+ # header row:
2281
+ # row = CSV::Row.new(['Name', 'Value'], ['foo', 0], header_row = true)
2282
+ # row # => #<CSV::Row "Name":"foo" "Value":0>
2283
+ # row.field_row? # => false
2284
+ # row.header_row? # => true
2285
+ #
2286
+ def initialize: (Array[untyped] headers, Array[untyped] fields, ?header_row: bool) -> void
2287
+
2317
2288
  # <!--
2318
2289
  # rdoc-file=lib/csv/row.rb
2319
2290
  # - row << [header, value] -> self
@@ -2488,7 +2459,7 @@ class CSV::Row < Object
2488
2459
  # `index_or_header` and `specifiers`.
2489
2460
  #
2490
2461
  # The nested objects may be instances of various classes. See [Dig
2491
- # Methods](https://docs.ruby-lang.org/en/master/dig_methods_rdoc.html).
2462
+ # Methods](rdoc-ref:dig_methods.rdoc).
2492
2463
  #
2493
2464
  # Examples:
2494
2465
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
@@ -2647,7 +2618,6 @@ class CSV::Row < Object
2647
2618
  # * Header.
2648
2619
  # * Range of headers.
2649
2620
  #
2650
- #
2651
2621
  # For `specifier` in one of the first four cases above, returns the result of
2652
2622
  # `self.field(specifier)`; see #field.
2653
2623
  #
@@ -2754,7 +2724,6 @@ class CSV::Row < Object
2754
2724
  # Returns an ASCII-compatible String showing:
2755
2725
  # * Class CSV::Row.
2756
2726
  # * Header-value pairs.
2757
- #
2758
2727
  # Example:
2759
2728
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
2760
2729
  # table = CSV.parse(source, headers: true)
@@ -2864,7 +2833,6 @@ end
2864
2833
  # * Rows: each is a Table::Row object.
2865
2834
  # * Headers: names for the columns.
2866
2835
  #
2867
- #
2868
2836
  # ### Instance Methods
2869
2837
  #
2870
2838
  # CSV::Table has three groups of instance methods:
@@ -2875,8 +2843,6 @@ end
2875
2843
  # * Array#length
2876
2844
  # * Array#size
2877
2845
  #
2878
- #
2879
- #
2880
2846
  # ## Creating a CSV::Table Instance
2881
2847
  #
2882
2848
  # Commonly, a new CSV::Table instance is created by parsing CSV source using
@@ -2910,7 +2876,6 @@ end
2910
2876
  # * Column mode.
2911
2877
  # * Mixed mode (the default for a new table).
2912
2878
  #
2913
- #
2914
2879
  # The access mode for aCSV::Table instance affects the behavior of some of its
2915
2880
  # instance methods:
2916
2881
  # * #[]
@@ -2920,7 +2885,6 @@ end
2920
2885
  # * #each
2921
2886
  # * #values_at
2922
2887
  #
2923
- #
2924
2888
  # ### Row Mode
2925
2889
  #
2926
2890
  # Set a table to row mode with method #by_row!:
@@ -2973,7 +2937,6 @@ end
2973
2937
  # * A Range index refers to multiple rows.
2974
2938
  # * A String index refers to a column.
2975
2939
  #
2976
- #
2977
2940
  # Set a table to mixed mode with method #by_col_or_row!:
2978
2941
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
2979
2942
  # table = CSV.parse(source, headers: true)
@@ -3002,7 +2965,7 @@ end
3002
2965
  # table['Name'] # => ["Foo", "Bar", "Baz"]
3003
2966
  #
3004
2967
  class CSV::Table[out Elem] < Object
3005
- include Enumerable[untyped]
2968
+ include Enumerable[Elem]
3006
2969
  extend Forwardable
3007
2970
 
3008
2971
  # <!--
@@ -3014,7 +2977,6 @@ class CSV::Table[out Elem] < Object
3014
2977
  # * Argument `array_of_rows` must be an Array of CSV::Row objects.
3015
2978
  # * Argument `headers`, if given, may be an Array of Strings.
3016
2979
  #
3017
- #
3018
2980
  # ---
3019
2981
  #
3020
2982
  # Create an empty CSV::Table object:
@@ -3124,7 +3086,6 @@ class CSV::Table[out Elem] < Object
3124
3086
  # * Access mode: `:row` or `:col_or_row`.
3125
3087
  # * Return value: *nth* row of the table, if that row exists; otherwise `nil`.
3126
3088
  #
3127
- #
3128
3089
  # Returns the *nth* row of the table if that row exists:
3129
3090
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3130
3091
  # table = CSV.parse(source, headers: true)
@@ -3155,7 +3116,6 @@ class CSV::Table[out Elem] < Object
3155
3116
  # * Return value: *nth* column of the table, if that column exists; otherwise
3156
3117
  # an Array of `nil` fields of length `self.size`.
3157
3118
  #
3158
- #
3159
3119
  # Returns the *nth* column of the table if that column exists:
3160
3120
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3161
3121
  # table = CSV.parse(source, headers: true)
@@ -3179,7 +3139,6 @@ class CSV::Table[out Elem] < Object
3179
3139
  # * Return value: rows from the table, beginning at row `range.start`, if
3180
3140
  # those rows exists.
3181
3141
  #
3182
- #
3183
3142
  # Returns rows from the table, beginning at row `range.first`, if those rows
3184
3143
  # exist:
3185
3144
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
@@ -3219,7 +3178,6 @@ class CSV::Table[out Elem] < Object
3219
3178
  # * Return value: column data from the table, beginning at column
3220
3179
  # `range.start`, if those columns exist.
3221
3180
  #
3222
- #
3223
3181
  # Returns column values from the table, if the column exists; the values are
3224
3182
  # arranged by row:
3225
3183
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
@@ -3250,7 +3208,6 @@ class CSV::Table[out Elem] < Object
3250
3208
  # * Access mode: `:col` or `:col_or_row`
3251
3209
  # * Return value: column data from the table, if that `header` exists.
3252
3210
  #
3253
- #
3254
3211
  # Returns column values from the table, if the column exists:
3255
3212
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3256
3213
  # table = CSV.parse(source, headers: true)
@@ -3288,7 +3245,6 @@ class CSV::Table[out Elem] < Object
3288
3245
  # * Access mode: `:row` or `:col_or_row`.
3289
3246
  # * Return value: `row`.
3290
3247
  #
3291
- #
3292
3248
  # If the row exists, it is replaced:
3293
3249
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3294
3250
  # table = CSV.parse(source, headers: true)
@@ -3330,7 +3286,6 @@ class CSV::Table[out Elem] < Object
3330
3286
  # * Access mode: `:col`.
3331
3287
  # * Return value: `array_of_fields`.
3332
3288
  #
3333
- #
3334
3289
  # If the column exists, it is replaced:
3335
3290
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3336
3291
  # table = CSV.parse(source, headers: true)
@@ -3369,7 +3324,6 @@ class CSV::Table[out Elem] < Object
3369
3324
  # * Access mode: `:col` or `:col_or_row`.
3370
3325
  # * Return value: `field_or_array_of_fields`.
3371
3326
  #
3372
- #
3373
3327
  # If the column exists, it is replaced:
3374
3328
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3375
3329
  # table = CSV.parse(source, headers: true)
@@ -3633,8 +3587,8 @@ class CSV::Table[out Elem] < Object
3633
3587
  # Returns a new Enumerator if no block is given:
3634
3588
  # table.each # => #<Enumerator: #<CSV::Table mode:col row_count:4>:each>
3635
3589
  #
3636
- def each: () -> Enumerator[untyped, self]
3637
- | () { (untyped) -> void } -> self
3590
+ def each: () -> Enumerator[Elem, self]
3591
+ | () { (Elem) -> void } -> self
3638
3592
  | () { (*untyped) -> void } -> self
3639
3593
 
3640
3594
  def empty?: (*untyped args) { (*untyped) -> untyped } -> untyped
@@ -3673,7 +3627,6 @@ class CSV::Table[out Elem] < Object
3673
3627
  # * Access mode: `:row`, `:col`, or `:col_or_row`.
3674
3628
  # * Size: Row count, including the header row.
3675
3629
  #
3676
- #
3677
3630
  # Example:
3678
3631
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3679
3632
  # table = CSV.parse(source, headers: true)
@@ -3803,3 +3756,21 @@ class CSV::Table[out Elem] < Object
3803
3756
  #
3804
3757
  def values_at: (*untyped indices_or_headers) -> untyped
3805
3758
  end
3759
+
3760
+ %a{annotate:rdoc:skip}
3761
+ class Array[unchecked out Elem] < Object
3762
+ # Equivalent to CSV::generate_line(self, options)
3763
+ #
3764
+ # ["CSV", "data"].to_csv
3765
+ # #=> "CSV,data\n"
3766
+ def to_csv: (**untyped options) -> String
3767
+ end
3768
+
3769
+ %a{annotate:rdoc:skip}
3770
+ class String
3771
+ # Equivalent to CSV::parse_line(self, options)
3772
+ #
3773
+ # "CSV,data".parse_csv
3774
+ # #=> ["CSV", "data"]
3775
+ def parse_csv: (**untyped options) -> ::Array[String?]?
3776
+ end
@@ -1,2 +1,3 @@
1
1
  dependencies:
2
2
  - name: forwardable
3
+ - name: stringio