rbs 3.7.0 → 3.8.0.pre.1

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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +3 -3
  3. data/.github/workflows/ruby.yml +7 -7
  4. data/CHANGELOG.md +52 -0
  5. data/core/array.rbs +1743 -1580
  6. data/core/basic_object.rbs +38 -35
  7. data/core/comparable.rbs +1 -1
  8. data/core/complex.rbs +165 -93
  9. data/core/data.rbs +1 -1
  10. data/core/dir.rbs +1 -17
  11. data/core/encoding.rbs +12 -6
  12. data/core/enumerable.rbs +270 -266
  13. data/core/enumerator.rbs +0 -2
  14. data/core/env.rbs +1 -1
  15. data/core/errno.rbs +33 -16
  16. data/core/errors.rbs +2 -2
  17. data/core/exception.rbs +236 -170
  18. data/core/fiber.rbs +3 -2
  19. data/core/file.rbs +32 -74
  20. data/core/float.rbs +125 -72
  21. data/core/gc.rbs +138 -40
  22. data/core/hash.rbs +120 -141
  23. data/core/integer.rbs +79 -50
  24. data/core/io/buffer.rbs +49 -43
  25. data/core/io.rbs +97 -144
  26. data/core/kernel.rbs +290 -200
  27. data/core/match_data.rbs +76 -2
  28. data/core/math.rbs +0 -36
  29. data/core/module.rbs +28 -23
  30. data/core/nil_class.rbs +0 -3
  31. data/core/numeric.rbs +100 -103
  32. data/core/object.rbs +0 -4
  33. data/core/object_space/weak_key_map.rbs +3 -4
  34. data/core/object_space.rbs +3 -3
  35. data/core/proc.rbs +0 -2
  36. data/core/process.rbs +109 -57
  37. data/core/ractor.rbs +37 -4
  38. data/core/range.rbs +114 -87
  39. data/core/rational.rbs +0 -2
  40. data/core/rbs/unnamed/argf.rbs +234 -33
  41. data/core/rbs/unnamed/env_class.rbs +35 -53
  42. data/core/rbs/unnamed/random.rbs +1 -2
  43. data/core/regexp.rbs +4 -52
  44. data/core/ruby_vm.rbs +88 -9
  45. data/core/rubygems/config_file.rbs +3 -0
  46. data/core/rubygems/errors.rbs +0 -5
  47. data/core/rubygems/platform.rbs +0 -9
  48. data/core/rubygems/rubygems.rbs +0 -5
  49. data/core/rubygems/version.rbs +6 -6
  50. data/core/set.rbs +3 -15
  51. data/core/string.rbs +130 -136
  52. data/core/struct.rbs +6 -18
  53. data/core/symbol.rbs +14 -21
  54. data/core/thread.rbs +32 -35
  55. data/core/time.rbs +127 -50
  56. data/core/trace_point.rbs +16 -0
  57. data/core/true_class.rbs +0 -1
  58. data/core/warning.rbs +9 -2
  59. data/docs/architecture.md +1 -1
  60. data/docs/syntax.md +1 -1
  61. data/ext/rbs_extension/location.c +29 -19
  62. data/ext/rbs_extension/parser.c +267 -292
  63. data/ext/rbs_extension/parserstate.c +56 -22
  64. data/lib/rbs/annotate/annotations.rb +3 -3
  65. data/lib/rbs/annotate/rdoc_source.rb +2 -2
  66. data/lib/rbs/cli/diff.rb +3 -3
  67. data/lib/rbs/cli/validate.rb +1 -1
  68. data/lib/rbs/cli.rb +13 -13
  69. data/lib/rbs/collection/config.rb +3 -1
  70. data/lib/rbs/definition_builder/ancestor_builder.rb +3 -3
  71. data/lib/rbs/environment_loader.rb +1 -1
  72. data/lib/rbs/namespace.rb +1 -0
  73. data/lib/rbs/parser_aux.rb +2 -2
  74. data/lib/rbs/prototype/rb.rb +11 -8
  75. data/lib/rbs/prototype/rbi.rb +9 -5
  76. data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
  77. data/lib/rbs/prototype/runtime.rb +4 -5
  78. data/lib/rbs/type_name.rb +14 -9
  79. data/lib/rbs/unit_test/type_assertions.rb +2 -2
  80. data/lib/rbs/validator.rb +3 -1
  81. data/lib/rbs/version.rb +1 -1
  82. data/lib/rdoc_plugin/parser.rb +2 -2
  83. data/rbs.gemspec +4 -0
  84. data/sig/ancestor_graph.rbs +4 -4
  85. data/sig/namespace.rbs +2 -3
  86. data/sig/resolver/constant_resolver.rbs +2 -2
  87. data/sig/resolver/context.rbs +1 -1
  88. data/sig/type_alias_regularity.rbs +5 -5
  89. data/sig/typename.rbs +8 -5
  90. data/sig/use_map.rbs +1 -1
  91. data/sig/validator.rbs +2 -2
  92. data/stdlib/base64/0/base64.rbs +0 -9
  93. data/stdlib/benchmark/0/benchmark.rbs +11 -2
  94. data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
  95. data/stdlib/cgi/0/core.rbs +47 -0
  96. data/stdlib/coverage/0/coverage.rbs +0 -3
  97. data/stdlib/csv/0/csv.rbs +18 -58
  98. data/stdlib/date/0/date.rbs +4 -19
  99. data/stdlib/did_you_mean/0/did_you_mean.rbs +0 -5
  100. data/stdlib/digest/0/digest.rbs +25 -2
  101. data/stdlib/erb/0/erb.rbs +0 -1
  102. data/stdlib/etc/0/etc.rbs +51 -34
  103. data/stdlib/fileutils/0/fileutils.rbs +3 -44
  104. data/stdlib/io-console/0/io-console.rbs +69 -15
  105. data/stdlib/ipaddr/0/ipaddr.rbs +8 -4
  106. data/stdlib/json/0/json.rbs +56 -71
  107. data/stdlib/logger/0/log_device.rbs +1 -1
  108. data/stdlib/logger/0/logger.rbs +3 -18
  109. data/stdlib/net-http/0/net-http.rbs +19 -77
  110. data/stdlib/nkf/0/nkf.rbs +30 -0
  111. data/stdlib/objspace/0/objspace.rbs +1 -2
  112. data/stdlib/observable/0/observable.rbs +1 -1
  113. data/stdlib/open-uri/0/open-uri.rbs +52 -0
  114. data/stdlib/open3/0/open3.rbs +0 -8
  115. data/stdlib/openssl/0/openssl.rbs +136 -69
  116. data/stdlib/optparse/0/optparse.rbs +58 -18
  117. data/stdlib/pathname/0/pathname.rbs +2 -8
  118. data/stdlib/pp/0/pp.rbs +3 -1
  119. data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
  120. data/stdlib/pstore/0/pstore.rbs +0 -6
  121. data/stdlib/psych/0/psych.rbs +15 -4
  122. data/stdlib/pty/0/pty.rbs +46 -4
  123. data/stdlib/rdoc/0/code_object.rbs +0 -4
  124. data/stdlib/rdoc/0/markup.rbs +10 -12
  125. data/stdlib/rdoc/0/rdoc.rbs +1 -2
  126. data/stdlib/resolv/0/resolv.rbs +8 -3
  127. data/stdlib/ripper/0/ripper.rbs +0 -2
  128. data/stdlib/securerandom/0/securerandom.rbs +0 -2
  129. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  130. data/stdlib/singleton/0/singleton.rbs +0 -1
  131. data/stdlib/socket/0/addrinfo.rbs +0 -1
  132. data/stdlib/socket/0/basic_socket.rbs +0 -5
  133. data/stdlib/socket/0/socket.rbs +49 -25
  134. data/stdlib/socket/0/tcp_server.rbs +0 -3
  135. data/stdlib/socket/0/tcp_socket.rbs +58 -3
  136. data/stdlib/socket/0/udp_socket.rbs +0 -1
  137. data/stdlib/socket/0/unix_server.rbs +0 -3
  138. data/stdlib/strscan/0/string_scanner.rbs +1265 -422
  139. data/stdlib/tempfile/0/tempfile.rbs +135 -28
  140. data/stdlib/time/0/time.rbs +48 -35
  141. data/stdlib/timeout/0/timeout.rbs +11 -8
  142. data/stdlib/tmpdir/0/tmpdir.rbs +8 -1
  143. data/stdlib/tsort/0/tsort.rbs +0 -4
  144. data/stdlib/uri/0/common.rbs +11 -30
  145. data/stdlib/uri/0/ftp.rbs +1 -1
  146. data/stdlib/uri/0/generic.rbs +22 -18
  147. data/stdlib/uri/0/http.rbs +2 -2
  148. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  149. data/stdlib/zlib/0/buf_error.rbs +1 -70
  150. data/stdlib/zlib/0/data_error.rbs +1 -70
  151. data/stdlib/zlib/0/deflate.rbs +8 -72
  152. data/stdlib/zlib/0/error.rbs +1 -70
  153. data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
  154. data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
  155. data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
  156. data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
  157. data/stdlib/zlib/0/gzip_file.rbs +1 -71
  158. data/stdlib/zlib/0/gzip_reader.rbs +3 -74
  159. data/stdlib/zlib/0/gzip_writer.rbs +1 -70
  160. data/stdlib/zlib/0/inflate.rbs +4 -71
  161. data/stdlib/zlib/0/mem_error.rbs +1 -70
  162. data/stdlib/zlib/0/need_dict.rbs +1 -70
  163. data/stdlib/zlib/0/stream_end.rbs +1 -70
  164. data/stdlib/zlib/0/stream_error.rbs +1 -70
  165. data/stdlib/zlib/0/version_error.rbs +1 -70
  166. data/stdlib/zlib/0/zlib.rbs +0 -2
  167. data/stdlib/zlib/0/zstream.rbs +4 -72
  168. metadata +4 -6
@@ -91,8 +91,10 @@
91
91
  #
92
92
  # #local_path()
93
93
  # : the path of the uploaded file on the local filesystem
94
+ #
94
95
  # #original_filename()
95
96
  # : the name of the file on the client computer
97
+ #
96
98
  # #content_type()
97
99
  # : the content type of the file
98
100
  #
@@ -285,6 +287,7 @@ class CGI
285
287
  # :tag_maker => tag_maker }` Note that it is recommended to use the
286
288
  # `options_hash` form, since it also allows you specify the charset you will
287
289
  # accept.
290
+ #
288
291
  # `options_hash`
289
292
  # : A Hash that recognizes three options:
290
293
  #
@@ -303,6 +306,7 @@ class CGI
303
306
  #
304
307
  # cgi=CGI.new(:accept_charset => "EUC-JP") # => "EUC-JP"
305
308
  #
309
+ #
306
310
  # `:tag_maker`
307
311
  # : String that specifies which version of the HTML generation methods to
308
312
  # use. If not specified, no HTML generation methods will be loaded.
@@ -311,16 +315,21 @@ class CGI
311
315
  #
312
316
  # "html3"
313
317
  # : HTML 3.x
318
+ #
314
319
  # "html4"
315
320
  # : HTML 4.0
321
+ #
316
322
  # "html4Tr"
317
323
  # : HTML 4.0 Transitional
324
+ #
318
325
  # "html4Fr"
319
326
  # : HTML 4.0 with Framesets
327
+ #
320
328
  # "html5"
321
329
  # : HTML 5
322
330
  #
323
331
  #
332
+ #
324
333
  # `:max_multipart_length`
325
334
  # : Specifies maximum length of multipart data. Can be an Integer scalar
326
335
  # or a lambda, that will be evaluated when the request is parsed. This
@@ -334,6 +343,7 @@ class CGI
334
343
  # cgi=CGI.new(:max_multipart_length => -> {check_filesystem}) # lambda
335
344
  #
336
345
  #
346
+ #
337
347
  # `block`
338
348
  # : If provided, the block is called when an invalid encoding is encountered.
339
349
  # For example:
@@ -408,72 +418,99 @@ class CGI
408
418
  #
409
419
  # `content_type_string`
410
420
  # : If this form is used, this string is the `Content-Type`
421
+ #
411
422
  # `headers_hash`
412
423
  # : A Hash of header values. The following header keys are recognized:
413
424
  #
414
425
  # type
415
426
  # : The Content-Type header. Defaults to "text/html"
427
+ #
416
428
  # charset
417
429
  # : The charset of the body, appended to the Content-Type header.
430
+ #
418
431
  # nph
419
432
  # : A boolean value. If true, prepend protocol string and status code,
420
433
  # and date; and sets default values for "server" and "connection" if not
421
434
  # explicitly set.
435
+ #
422
436
  # status
423
437
  # : The HTTP status code as a String, returned as the Status header. The
424
438
  # values are:
425
439
  #
426
440
  # OK
427
441
  # : 200 OK
442
+ #
428
443
  # PARTIAL_CONTENT
429
444
  # : 206 Partial Content
445
+ #
430
446
  # MULTIPLE_CHOICES
431
447
  # : 300 Multiple Choices
448
+ #
432
449
  # MOVED
433
450
  # : 301 Moved Permanently
451
+ #
434
452
  # REDIRECT
435
453
  # : 302 Found
454
+ #
436
455
  # NOT_MODIFIED
437
456
  # : 304 Not Modified
457
+ #
438
458
  # BAD_REQUEST
439
459
  # : 400 Bad Request
460
+ #
440
461
  # AUTH_REQUIRED
441
462
  # : 401 Authorization Required
463
+ #
442
464
  # FORBIDDEN
443
465
  # : 403 Forbidden
466
+ #
444
467
  # NOT_FOUND
445
468
  # : 404 Not Found
469
+ #
446
470
  # METHOD_NOT_ALLOWED
447
471
  # : 405 Method Not Allowed
472
+ #
448
473
  # NOT_ACCEPTABLE
449
474
  # : 406 Not Acceptable
475
+ #
450
476
  # LENGTH_REQUIRED
451
477
  # : 411 Length Required
478
+ #
452
479
  # PRECONDITION_FAILED
453
480
  # : 412 Precondition Failed
481
+ #
454
482
  # SERVER_ERROR
455
483
  # : 500 Internal Server Error
484
+ #
456
485
  # NOT_IMPLEMENTED
457
486
  # : 501 Method Not Implemented
487
+ #
458
488
  # BAD_GATEWAY
459
489
  # : 502 Bad Gateway
490
+ #
460
491
  # VARIANT_ALSO_VARIES
461
492
  # : 506 Variant Also Negotiates
462
493
  #
463
494
  #
495
+ #
464
496
  # server
465
497
  # : The server software, returned as the Server header.
498
+ #
466
499
  # connection
467
500
  # : The connection type, returned as the Connection header (for instance,
468
501
  # "close".
502
+ #
469
503
  # length
470
504
  # : The length of the content that will be sent, returned as the
471
505
  # Content-Length header.
506
+ #
472
507
  # language
473
508
  # : The language of the content, returned as the Content-Language header.
509
+ #
474
510
  # expires
475
511
  # : The time on which the current content expires, as a `Time` object,
476
512
  # returned as the Expires header.
513
+ #
477
514
  # cookie
478
515
  # : A cookie or cookies, returned as one or more Set-Cookie headers. The
479
516
  # value can be the literal string of the cookie; a CGI::Cookie object;
@@ -526,8 +563,10 @@ class CGI
526
563
  #
527
564
  # `content_type_string`
528
565
  # : If a string is passed, it is assumed to be the content type.
566
+ #
529
567
  # `headers_hash`
530
568
  # : This is a Hash of headers, similar to that used by #http_header.
569
+ #
531
570
  # `block`
532
571
  # : A block is required and should evaluate to the body of the response.
533
572
  #
@@ -829,25 +868,33 @@ class CGI
829
868
  # : The name of the cookie; in this form, there is no #domain or #expiration.
830
869
  # The #path is gleaned from the `SCRIPT_NAME` environment variable, and
831
870
  # #secure is false.
871
+ #
832
872
  # `*value`
833
873
  # : value or list of values of the cookie
874
+ #
834
875
  # `options_hash`
835
876
  # : A Hash of options to initialize this Cookie. Possible options are:
836
877
  #
837
878
  # name
838
879
  # : the name of the cookie. Required.
880
+ #
839
881
  # value
840
882
  # : the cookie's value or list of values.
883
+ #
841
884
  # path
842
885
  # : the path for which this cookie applies. Defaults to the value of the
843
886
  # `SCRIPT_NAME` environment variable.
887
+ #
844
888
  # domain
845
889
  # : the domain for which this cookie applies.
890
+ #
846
891
  # expires
847
892
  # : the time at which this cookie expires, as a `Time` object.
893
+ #
848
894
  # secure
849
895
  # : whether this cookie is a secure cookie or not (default to false).
850
896
  # Secure cookies are only transmitted to HTTPS servers.
897
+ #
851
898
  # httponly
852
899
  # : whether this cookie is a HttpOnly cookie or not (default to
853
900
  #
@@ -15,7 +15,6 @@
15
15
  # of line execution by the interpreter. A `nil` value means coverage is
16
16
  # disabled for this line (lines like `else` and `end`).
17
17
  #
18
- #
19
18
  # # Examples
20
19
  #
21
20
  # [foo.rb]
@@ -95,7 +94,6 @@
95
94
  # 5. The ending line number it appears on in the file.
96
95
  # 6. The ending column number it appears on in the file.
97
96
  #
98
- #
99
97
  # ## Methods Coverage
100
98
  #
101
99
  # Methods coverage reports how many times each method was executed.
@@ -134,7 +132,6 @@
134
132
  # 5. The ending line number the method appears on in the file.
135
133
  # 6. The ending column number the method appears on in the file.
136
134
  #
137
- #
138
135
  # ## All Coverage Modes
139
136
  #
140
137
  # You can also run all modes of coverage simultaneously with this shortcut. Note
data/stdlib/csv/0/csv.rbs CHANGED
@@ -9,7 +9,6 @@
9
9
  # * A *column* *separator* delimits fields in a row. A common column separator
10
10
  # is the comma character `","`.
11
11
  #
12
- #
13
12
  # This CSV String, with row separator `"\n"` and column separator `","`, has
14
13
  # three rows and two columns:
15
14
  # "foo,0\nbar,1\nbaz,2\n"
@@ -28,7 +27,6 @@
28
27
  # IO object.
29
28
  # * Generating CSV data to a String object.
30
29
  #
31
- #
32
30
  # To make CSV available:
33
31
  # require 'csv'
34
32
  #
@@ -51,11 +49,9 @@
51
49
  # * The outer Array is the entire "table".
52
50
  # * Each inner Array is a row.
53
51
  # * Each String is a field.
54
- #
55
52
  # * A CSV::Table object. For details, see [\CSV with
56
53
  # Headers](#class-CSV-label-CSV+with+Headers).
57
54
  #
58
- #
59
55
  # #### Parsing a String
60
56
  #
61
57
  # The input to be parsed can be a string:
@@ -168,7 +164,6 @@
168
164
  # * Method CSV.instance returns a new or cached CSV object.
169
165
  # * Method CSV() also returns a new or cached CSV object.
170
166
  #
171
- #
172
167
  # ### Instance Methods
173
168
  #
174
169
  # CSV has three groups of instance methods:
@@ -176,7 +171,6 @@
176
171
  # * Methods included by module Enumerable.
177
172
  # * Methods delegated to class IO. See below.
178
173
  #
179
- #
180
174
  # #### Delegated Methods
181
175
  #
182
176
  # For convenience, a CSV object will delegate to many methods in class IO. (A
@@ -215,7 +209,6 @@
215
209
  # * IO#truncate
216
210
  # * IO#tty?
217
211
  #
218
- #
219
212
  # ### Options
220
213
  #
221
214
  # The default values for options are:
@@ -274,7 +267,6 @@
274
267
  # * `empty_value`: Specifies the object that is to be substituted for each
275
268
  # empty field.
276
269
  #
277
- #
278
270
  # ###### Option `row_sep`
279
271
  #
280
272
  # Specifies the row separator, a String or the Symbol `:auto` (see below), to be
@@ -365,7 +357,6 @@
365
357
  # * Data is `ARGF`, `STDIN`, `STDOUT`, or `STDERR`.
366
358
  # * The stream is only available for output.
367
359
  #
368
- #
369
360
  # Obviously, discovery takes a little time. Set manually if speed is important.
370
361
  # Also note that IO objects should be opened in binary mode on Windows if this
371
362
  # feature will be used as the line-ending translation can cause problems with
@@ -684,7 +675,6 @@
684
675
  # * The converters apply only to the header row.
685
676
  # * The built-in header converters are `:downcase` and `:symbol`.
686
677
  #
687
- #
688
678
  # This section assumes prior execution of:
689
679
  # str = <<-EOT
690
680
  # Name,Value
@@ -756,7 +746,6 @@
756
746
  # * If a String, converts it to a Regexp, ignores lines that match it.
757
747
  # * If `nil`, no lines are considered to be comments.
758
748
  #
759
- #
760
749
  # Default value:
761
750
  # CSV::DEFAULT_OPTIONS.fetch(:skip_lines) # => nil
762
751
  #
@@ -885,7 +874,6 @@
885
874
  # * `write_empty_value`: Specifies the object that is to be substituted for
886
875
  # each empty field.
887
876
  #
888
- #
889
877
  # ###### Option `row_sep`
890
878
  #
891
879
  # Specifies the row separator, a String or the Symbol `:auto` (see below), to be
@@ -976,7 +964,6 @@
976
964
  # * Data is `ARGF`, `STDIN`, `STDOUT`, or `STDERR`.
977
965
  # * The stream is only available for output.
978
966
  #
979
- #
980
967
  # Obviously, discovery takes a little time. Set manually if speed is important.
981
968
  # Also note that IO objects should be opened in binary mode on Windows if this
982
969
  # feature will be used as the line-ending translation can cause problems with
@@ -1231,12 +1218,10 @@
1231
1218
  # * See [Field Converters](#class-CSV-label-Field+Converters).
1232
1219
  # * See [Header Converters](#class-CSV-label-Header+Converters).
1233
1220
  #
1234
- #
1235
1221
  # Also by default, each value to be written during generation is written
1236
1222
  # 'as-is'. You can use a *write* *converter* to modify values before writing.
1237
1223
  # * See [Write Converters](#class-CSV-label-Write+Converters).
1238
1224
  #
1239
- #
1240
1225
  # #### Specifying Converters
1241
1226
  #
1242
1227
  # You can specify converters for parsing or generating in the `options` argument
@@ -1245,14 +1230,12 @@
1245
1230
  # * Option `header_converters` for converting parsed header values.
1246
1231
  # * Option `write_converters` for converting values to be written (generated).
1247
1232
  #
1248
- #
1249
1233
  # There are three forms for specifying converters:
1250
1234
  # * A converter proc: executable code to be used for conversion.
1251
1235
  # * A converter name: the name of a stored converter.
1252
1236
  # * A converter list: an array of converter procs, converter names, and
1253
1237
  # converter lists.
1254
1238
  #
1255
- #
1256
1239
  # ##### Converter Procs
1257
1240
  #
1258
1241
  # This converter proc, `strip_converter`, accepts a value `field` and returns
@@ -1263,7 +1246,6 @@
1263
1246
  # string_converter` specifies that:
1264
1247
  # * Proc `string_converter` is to be called for each parsed field.
1265
1248
  # * The converter's return value is to replace the `field` value.
1266
- #
1267
1249
  # Example:
1268
1250
  # string = " foo , 0 \n bar , 1 \n baz , 2 \n"
1269
1251
  # array = CSV.parse(string, converters: strip_converter)
@@ -1293,7 +1275,6 @@
1293
1275
  # * The 1-based line index.
1294
1276
  # * The field header, if any.
1295
1277
  #
1296
- #
1297
1278
  # ##### Stored Converters
1298
1279
  #
1299
1280
  # A converter may be given a name and stored in a structure where the parsing
@@ -1305,7 +1286,6 @@
1305
1286
  # * `:float`: converts each String-embedded float into a true Float.
1306
1287
  # * `:date`: converts each String-embedded date into a true Date.
1307
1288
  # * `:date_time`: converts each String-embedded date-time into a true DateTime
1308
- #
1309
1289
  # . This example creates a converter proc, then stores it:
1310
1290
  # strip_converter = proc {|field| field.strip }
1311
1291
  # CSV::Converters[:strip] = strip_converter
@@ -1320,7 +1300,6 @@
1320
1300
  # * `:downcase`: Downcases each header.
1321
1301
  # * `:symbol`: Converts each header to a Symbol.
1322
1302
  #
1323
- #
1324
1303
  # There is no such storage structure for write headers.
1325
1304
  #
1326
1305
  # In order for the parsing methods to access stored converters in
@@ -1338,7 +1317,6 @@
1338
1317
  # * Names of stored converters.
1339
1318
  # * Nested converter lists.
1340
1319
  #
1341
- #
1342
1320
  # Examples:
1343
1321
  # numeric_converters = [:integer, :float]
1344
1322
  # date_converters = [:date, :date_time]
@@ -1387,7 +1365,6 @@
1387
1365
  # csv.converters # => [:integer]
1388
1366
  # csv.read # => [["foo", 0], ["bar", 1], ["baz", 2]]
1389
1367
  #
1390
- #
1391
1368
  # Installing a field converter does not affect already-read rows:
1392
1369
  # csv = CSV.new(string)
1393
1370
  # csv.shift # => ["foo", "0"]
@@ -1407,8 +1384,6 @@
1407
1384
  # * A Proc field converter.
1408
1385
  # * An Array of field converter names.
1409
1386
  #
1410
- #
1411
- #
1412
1387
  # Display:
1413
1388
  # CSV::Converters.each_pair do |name, value|
1414
1389
  # if value.kind_of?(Proc)
@@ -1522,7 +1497,6 @@
1522
1497
  # tbl = CSV.parse(string, headers: true)
1523
1498
  # tbl.headers # => ["Name", "Count"]
1524
1499
  #
1525
- #
1526
1500
  # ##### Built-In Header Converters
1527
1501
  #
1528
1502
  # The built-in header converters are in Hash CSV::HeaderConverters. The keys
@@ -1547,7 +1521,6 @@
1547
1521
  # * Removes non-word characters.
1548
1522
  # * Makes the string into a Symbol.
1549
1523
  #
1550
- #
1551
1524
  # ##### Custom Header Converters
1552
1525
  #
1553
1526
  # You can define a custom header converter:
@@ -1744,15 +1717,12 @@ class CSV < Object
1744
1717
  # * Positioned at the beginning. To position at the end, for appending,
1745
1718
  # use method CSV.generate. For any other positioning, pass a preset
1746
1719
  # StringIO object instead.
1747
- #
1748
1720
  # * Argument `options`: See:
1749
1721
  # * [Options for Parsing](#class-CSV-label-Options+for+Parsing)
1750
1722
  # * [Options for Generating](#class-CSV-label-Options+for+Generating)
1751
- #
1752
1723
  # For performance reasons, the options cannot be overridden in a CSV object,
1753
1724
  # so those specified here will endure.
1754
1725
  #
1755
- #
1756
1726
  # In addition to the CSV instance methods, several IO methods are delegated. See
1757
1727
  # [Delegated Methods](#class-CSV-label-Delegated+Methods).
1758
1728
  #
@@ -1793,11 +1763,9 @@ class CSV < Object
1793
1763
  # * Positioned at the beginning. To position at the end, for appending,
1794
1764
  # use method CSV.generate. For any other positioning, pass a preset
1795
1765
  # StringIO object instead.
1796
- #
1797
1766
  # * Argument `options`: see [Options for
1798
1767
  # Parsing](#class-CSV-label-Options+for+Parsing)
1799
1768
  #
1800
- #
1801
1769
  # ###### Without Option `headers`
1802
1770
  #
1803
1771
  # Without {option `headers`[}](#class-CSV-label-Option+headers) case.
@@ -1916,11 +1884,9 @@ class CSV < Object
1916
1884
  # * Positioned at the beginning. To position at the end, for appending,
1917
1885
  # use method CSV.generate. For any other positioning, pass a preset
1918
1886
  # StringIO object instead.
1919
- #
1920
1887
  # * Argument `options`: see [Options for
1921
1888
  # Parsing](#class-CSV-label-Options+for+Parsing)
1922
1889
  #
1923
- #
1924
1890
  # ###### Without Option `headers`
1925
1891
  #
1926
1892
  # Without option `headers`, returns the first row as a new Array.
@@ -1975,7 +1941,6 @@ class CSV < Object
1975
1941
  # * A CSV::Table object, if headers are in use.
1976
1942
  # * An Array of Arrays, otherwise.
1977
1943
  #
1978
- #
1979
1944
  # The data source must be opened for reading.
1980
1945
  #
1981
1946
  # Without headers:
@@ -2043,7 +2008,6 @@ class CSV < Object
2043
2008
  # * Argument `row` must be an Array object or a CSV::Row object.
2044
2009
  # * The output stream must be open for writing.
2045
2010
  #
2046
- #
2047
2011
  # ---
2048
2012
  #
2049
2013
  # Append Arrays:
@@ -2099,7 +2063,6 @@ class CSV < Object
2099
2063
  # * Arguments `options`, if given, should be generating options. See [Options
2100
2064
  # for Generating](#class-CSV-label-Options+for+Generating).
2101
2065
  #
2102
- #
2103
2066
  # ---
2104
2067
  #
2105
2068
  # Creates a new CSV object via `CSV.new(csv_string, **options)`; calls the block
@@ -2227,7 +2190,6 @@ CSV::VERSION: String
2227
2190
  # * Fields: each is an object, not necessarily a String.
2228
2191
  # * Headers: each serves a key, and also need not be a String.
2229
2192
  #
2230
- #
2231
2193
  # ### Instance Methods
2232
2194
  #
2233
2195
  # CSV::Row has three groups of instance methods:
@@ -2238,8 +2200,6 @@ CSV::VERSION: String
2238
2200
  # * Array#length
2239
2201
  # * Array#size
2240
2202
  #
2241
- #
2242
- #
2243
2203
  # ## Creating a CSV::Row Instance
2244
2204
  #
2245
2205
  # Commonly, a new CSV::Row instance is created by parsing CSV source that has
@@ -2658,7 +2618,6 @@ class CSV::Row < Object
2658
2618
  # * Header.
2659
2619
  # * Range of headers.
2660
2620
  #
2661
- #
2662
2621
  # For `specifier` in one of the first four cases above, returns the result of
2663
2622
  # `self.field(specifier)`; see #field.
2664
2623
  #
@@ -2765,7 +2724,6 @@ class CSV::Row < Object
2765
2724
  # Returns an ASCII-compatible String showing:
2766
2725
  # * Class CSV::Row.
2767
2726
  # * Header-value pairs.
2768
- #
2769
2727
  # Example:
2770
2728
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
2771
2729
  # table = CSV.parse(source, headers: true)
@@ -2875,7 +2833,6 @@ end
2875
2833
  # * Rows: each is a Table::Row object.
2876
2834
  # * Headers: names for the columns.
2877
2835
  #
2878
- #
2879
2836
  # ### Instance Methods
2880
2837
  #
2881
2838
  # CSV::Table has three groups of instance methods:
@@ -2886,8 +2843,6 @@ end
2886
2843
  # * Array#length
2887
2844
  # * Array#size
2888
2845
  #
2889
- #
2890
- #
2891
2846
  # ## Creating a CSV::Table Instance
2892
2847
  #
2893
2848
  # Commonly, a new CSV::Table instance is created by parsing CSV source using
@@ -2921,7 +2876,6 @@ end
2921
2876
  # * Column mode.
2922
2877
  # * Mixed mode (the default for a new table).
2923
2878
  #
2924
- #
2925
2879
  # The access mode for aCSV::Table instance affects the behavior of some of its
2926
2880
  # instance methods:
2927
2881
  # * #[]
@@ -2931,7 +2885,6 @@ end
2931
2885
  # * #each
2932
2886
  # * #values_at
2933
2887
  #
2934
- #
2935
2888
  # ### Row Mode
2936
2889
  #
2937
2890
  # Set a table to row mode with method #by_row!:
@@ -2984,7 +2937,6 @@ end
2984
2937
  # * A Range index refers to multiple rows.
2985
2938
  # * A String index refers to a column.
2986
2939
  #
2987
- #
2988
2940
  # Set a table to mixed mode with method #by_col_or_row!:
2989
2941
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
2990
2942
  # table = CSV.parse(source, headers: true)
@@ -3025,7 +2977,6 @@ class CSV::Table[out Elem] < Object
3025
2977
  # * Argument `array_of_rows` must be an Array of CSV::Row objects.
3026
2978
  # * Argument `headers`, if given, may be an Array of Strings.
3027
2979
  #
3028
- #
3029
2980
  # ---
3030
2981
  #
3031
2982
  # Create an empty CSV::Table object:
@@ -3135,7 +3086,6 @@ class CSV::Table[out Elem] < Object
3135
3086
  # * Access mode: `:row` or `:col_or_row`.
3136
3087
  # * Return value: *nth* row of the table, if that row exists; otherwise `nil`.
3137
3088
  #
3138
- #
3139
3089
  # Returns the *nth* row of the table if that row exists:
3140
3090
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3141
3091
  # table = CSV.parse(source, headers: true)
@@ -3166,7 +3116,6 @@ class CSV::Table[out Elem] < Object
3166
3116
  # * Return value: *nth* column of the table, if that column exists; otherwise
3167
3117
  # an Array of `nil` fields of length `self.size`.
3168
3118
  #
3169
- #
3170
3119
  # Returns the *nth* column of the table if that column exists:
3171
3120
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3172
3121
  # table = CSV.parse(source, headers: true)
@@ -3190,7 +3139,6 @@ class CSV::Table[out Elem] < Object
3190
3139
  # * Return value: rows from the table, beginning at row `range.start`, if
3191
3140
  # those rows exists.
3192
3141
  #
3193
- #
3194
3142
  # Returns rows from the table, beginning at row `range.first`, if those rows
3195
3143
  # exist:
3196
3144
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
@@ -3230,7 +3178,6 @@ class CSV::Table[out Elem] < Object
3230
3178
  # * Return value: column data from the table, beginning at column
3231
3179
  # `range.start`, if those columns exist.
3232
3180
  #
3233
- #
3234
3181
  # Returns column values from the table, if the column exists; the values are
3235
3182
  # arranged by row:
3236
3183
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
@@ -3261,7 +3208,6 @@ class CSV::Table[out Elem] < Object
3261
3208
  # * Access mode: `:col` or `:col_or_row`
3262
3209
  # * Return value: column data from the table, if that `header` exists.
3263
3210
  #
3264
- #
3265
3211
  # Returns column values from the table, if the column exists:
3266
3212
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3267
3213
  # table = CSV.parse(source, headers: true)
@@ -3299,7 +3245,6 @@ class CSV::Table[out Elem] < Object
3299
3245
  # * Access mode: `:row` or `:col_or_row`.
3300
3246
  # * Return value: `row`.
3301
3247
  #
3302
- #
3303
3248
  # If the row exists, it is replaced:
3304
3249
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3305
3250
  # table = CSV.parse(source, headers: true)
@@ -3341,7 +3286,6 @@ class CSV::Table[out Elem] < Object
3341
3286
  # * Access mode: `:col`.
3342
3287
  # * Return value: `array_of_fields`.
3343
3288
  #
3344
- #
3345
3289
  # If the column exists, it is replaced:
3346
3290
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3347
3291
  # table = CSV.parse(source, headers: true)
@@ -3380,7 +3324,6 @@ class CSV::Table[out Elem] < Object
3380
3324
  # * Access mode: `:col` or `:col_or_row`.
3381
3325
  # * Return value: `field_or_array_of_fields`.
3382
3326
  #
3383
- #
3384
3327
  # If the column exists, it is replaced:
3385
3328
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3386
3329
  # table = CSV.parse(source, headers: true)
@@ -3684,7 +3627,6 @@ class CSV::Table[out Elem] < Object
3684
3627
  # * Access mode: `:row`, `:col`, or `:col_or_row`.
3685
3628
  # * Size: Row count, including the header row.
3686
3629
  #
3687
- #
3688
3630
  # Example:
3689
3631
  # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
3690
3632
  # table = CSV.parse(source, headers: true)
@@ -3814,3 +3756,21 @@ class CSV::Table[out Elem] < Object
3814
3756
  #
3815
3757
  def values_at: (*untyped indices_or_headers) -> untyped
3816
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