rbs 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +5 -0
  3. data/CHANGELOG.md +23 -0
  4. data/README.md +6 -1
  5. data/core/array.rbs +2866 -1086
  6. data/core/basic_object.rbs +150 -30
  7. data/core/binding.rbs +33 -0
  8. data/core/builtin.rbs +4 -4
  9. data/core/class.rbs +43 -5
  10. data/core/comparable.rbs +57 -0
  11. data/core/complex.rbs +170 -4
  12. data/core/constants.rbs +51 -0
  13. data/core/deprecated.rbs +7 -0
  14. data/core/dir.rbs +305 -20
  15. data/core/encoding.rbs +472 -77
  16. data/core/enumerable.rbs +2173 -234
  17. data/core/enumerator.rbs +448 -182
  18. data/core/env.rbs +448 -1
  19. data/core/errno.rbs +1 -10
  20. data/core/errors.rbs +152 -2
  21. data/core/exception.rbs +201 -127
  22. data/core/false_class.rbs +27 -0
  23. data/core/fiber.rbs +118 -37
  24. data/core/fiber_error.rbs +8 -9
  25. data/core/file.rbs +1059 -139
  26. data/core/file_test.rbs +287 -32
  27. data/core/float.rbs +776 -300
  28. data/core/gc.rbs +185 -34
  29. data/core/global_variables.rbs +5 -1
  30. data/core/hash.rbs +1582 -649
  31. data/core/integer.rbs +974 -204
  32. data/core/io/buffer.rbs +710 -0
  33. data/core/io/wait.rbs +29 -8
  34. data/core/io.rbs +2438 -417
  35. data/core/kernel.rbs +2315 -316
  36. data/core/marshal.rbs +37 -2
  37. data/core/match_data.rbs +123 -6
  38. data/core/math.rbs +126 -6
  39. data/core/method.rbs +226 -102
  40. data/core/module.rbs +421 -45
  41. data/core/nil_class.rbs +64 -0
  42. data/core/numeric.rbs +620 -142
  43. data/core/object.rbs +453 -81
  44. data/core/object_space.rbs +92 -2
  45. data/core/proc.rbs +482 -285
  46. data/core/process.rbs +443 -34
  47. data/core/ractor.rbs +232 -9
  48. data/core/random.rbs +151 -52
  49. data/core/range.rbs +885 -160
  50. data/core/rational.rbs +122 -6
  51. data/core/rb_config.rbs +14 -4
  52. data/core/refinement.rbs +44 -0
  53. data/core/regexp.rbs +156 -14
  54. data/core/ruby_vm.rbs +42 -3
  55. data/core/signal.rbs +78 -39
  56. data/core/string.rbs +2123 -567
  57. data/core/string_io.rbs +204 -0
  58. data/core/struct.rbs +283 -28
  59. data/core/symbol.rbs +304 -30
  60. data/core/thread.rbs +1288 -688
  61. data/core/thread_group.rbs +66 -10
  62. data/core/time.rbs +643 -217
  63. data/core/trace_point.rbs +100 -12
  64. data/core/true_class.rbs +24 -0
  65. data/core/unbound_method.rbs +73 -7
  66. data/core/warning.rbs +37 -12
  67. data/docs/CONTRIBUTING.md +40 -34
  68. data/docs/stdlib.md +3 -102
  69. data/lib/rbs/annotate/annotations.rb +197 -0
  70. data/lib/rbs/annotate/formatter.rb +80 -0
  71. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  72. data/lib/rbs/annotate/rdoc_source.rb +120 -0
  73. data/lib/rbs/annotate.rb +6 -0
  74. data/lib/rbs/cli.rb +45 -1
  75. data/lib/rbs/definition_builder.rb +5 -1
  76. data/lib/rbs/location_aux.rb +12 -0
  77. data/lib/rbs/prototype/rb.rb +12 -0
  78. data/lib/rbs/version.rb +1 -1
  79. data/sig/annotate/annotations.rbs +102 -0
  80. data/sig/annotate/formatter.rbs +24 -0
  81. data/sig/annotate/rdoc_annotater.rbs +82 -0
  82. data/sig/annotate/rdoc_source.rbs +30 -0
  83. data/sig/cli.rbs +2 -0
  84. data/sig/collection/{collections.rbs → sources.rbs} +0 -0
  85. data/sig/location.rbs +6 -0
  86. data/sig/method_types.rbs +5 -1
  87. data/sig/polyfill.rbs +78 -0
  88. data/stdlib/abbrev/0/abbrev.rbs +6 -0
  89. data/stdlib/abbrev/0/array.rbs +26 -0
  90. data/stdlib/base64/0/base64.rbs +31 -0
  91. data/stdlib/benchmark/0/benchmark.rbs +74 -3
  92. data/stdlib/bigdecimal/0/big_decimal.rbs +614 -165
  93. data/stdlib/bigdecimal-math/0/big_math.rbs +41 -64
  94. data/stdlib/cgi/0/core.rbs +59 -0
  95. data/stdlib/coverage/0/coverage.rbs +164 -2
  96. data/stdlib/csv/0/csv.rbs +2862 -398
  97. data/stdlib/date/0/date.rbs +483 -25
  98. data/stdlib/date/0/date_time.rbs +187 -12
  99. data/stdlib/dbm/0/dbm.rbs +152 -17
  100. data/stdlib/digest/0/digest.rbs +146 -0
  101. data/stdlib/erb/0/erb.rbs +65 -245
  102. data/stdlib/fiber/0/fiber.rbs +73 -91
  103. data/stdlib/fileutils/0/fileutils.rbs +301 -1
  104. data/stdlib/find/0/find.rbs +9 -0
  105. data/stdlib/forwardable/0/forwardable.rbs +65 -1
  106. data/stdlib/io-console/0/io-console.rbs +227 -15
  107. data/stdlib/ipaddr/0/ipaddr.rbs +161 -0
  108. data/stdlib/json/0/json.rbs +1146 -144
  109. data/stdlib/logger/0/formatter.rbs +24 -0
  110. data/stdlib/logger/0/log_device.rbs +64 -0
  111. data/stdlib/logger/0/logger.rbs +165 -13
  112. data/stdlib/logger/0/period.rbs +10 -0
  113. data/stdlib/logger/0/severity.rbs +26 -0
  114. data/stdlib/monitor/0/monitor.rbs +163 -0
  115. data/stdlib/mutex_m/0/mutex_m.rbs +35 -6
  116. data/stdlib/net-http/0/net-http.rbs +1492 -683
  117. data/stdlib/nkf/0/nkf.rbs +372 -0
  118. data/stdlib/objspace/0/objspace.rbs +149 -90
  119. data/stdlib/openssl/0/openssl.rbs +8108 -71
  120. data/stdlib/optparse/0/optparse.rbs +487 -19
  121. data/stdlib/pathname/0/pathname.rbs +425 -124
  122. data/stdlib/prettyprint/0/prettyprint.rbs +120 -99
  123. data/stdlib/prime/0/integer-extension.rbs +20 -2
  124. data/stdlib/prime/0/prime.rbs +88 -21
  125. data/stdlib/pstore/0/pstore.rbs +102 -0
  126. data/stdlib/pty/0/pty.rbs +64 -14
  127. data/stdlib/resolv/0/resolv.rbs +420 -31
  128. data/stdlib/rubygems/0/basic_specification.rbs +4 -1
  129. data/stdlib/rubygems/0/config_file.rbs +33 -1
  130. data/stdlib/rubygems/0/dependency_installer.rbs +4 -3
  131. data/stdlib/rubygems/0/installer.rbs +13 -1
  132. data/stdlib/rubygems/0/path_support.rbs +4 -1
  133. data/stdlib/rubygems/0/platform.rbs +5 -1
  134. data/stdlib/rubygems/0/request_set.rbs +44 -2
  135. data/stdlib/rubygems/0/requirement.rbs +65 -2
  136. data/stdlib/rubygems/0/rubygems.rbs +407 -0
  137. data/stdlib/rubygems/0/source_list.rbs +13 -0
  138. data/stdlib/rubygems/0/specification.rbs +21 -1
  139. data/stdlib/rubygems/0/stream_ui.rbs +3 -1
  140. data/stdlib/rubygems/0/uninstaller.rbs +8 -1
  141. data/stdlib/rubygems/0/version.rbs +60 -157
  142. data/stdlib/securerandom/0/securerandom.rbs +44 -0
  143. data/stdlib/set/0/set.rbs +420 -106
  144. data/stdlib/shellwords/0/shellwords.rbs +55 -77
  145. data/stdlib/singleton/0/singleton.rbs +20 -0
  146. data/stdlib/socket/0/addrinfo.rbs +210 -9
  147. data/stdlib/socket/0/basic_socket.rbs +103 -11
  148. data/stdlib/socket/0/ip_socket.rbs +31 -9
  149. data/stdlib/socket/0/socket.rbs +586 -38
  150. data/stdlib/socket/0/tcp_server.rbs +22 -2
  151. data/stdlib/socket/0/tcp_socket.rbs +12 -1
  152. data/stdlib/socket/0/udp_socket.rbs +25 -2
  153. data/stdlib/socket/0/unix_server.rbs +22 -2
  154. data/stdlib/socket/0/unix_socket.rbs +45 -5
  155. data/stdlib/strscan/0/string_scanner.rbs +210 -9
  156. data/stdlib/tempfile/0/tempfile.rbs +58 -10
  157. data/stdlib/time/0/time.rbs +208 -116
  158. data/stdlib/timeout/0/timeout.rbs +10 -0
  159. data/stdlib/tmpdir/0/tmpdir.rbs +13 -4
  160. data/stdlib/tsort/0/cyclic.rbs +1 -0
  161. data/stdlib/tsort/0/interfaces.rbs +1 -0
  162. data/stdlib/tsort/0/tsort.rbs +42 -0
  163. data/stdlib/uri/0/common.rbs +57 -8
  164. data/stdlib/uri/0/file.rbs +55 -109
  165. data/stdlib/uri/0/ftp.rbs +6 -3
  166. data/stdlib/uri/0/generic.rbs +556 -327
  167. data/stdlib/uri/0/http.rbs +26 -115
  168. data/stdlib/uri/0/https.rbs +8 -102
  169. data/stdlib/uri/0/ldap.rbs +143 -137
  170. data/stdlib/uri/0/ldaps.rbs +8 -102
  171. data/stdlib/uri/0/mailto.rbs +3 -0
  172. data/stdlib/uri/0/rfc2396_parser.rbs +66 -26
  173. data/stdlib/uri/0/ws.rbs +6 -3
  174. data/stdlib/uri/0/wss.rbs +5 -3
  175. data/stdlib/yaml/0/dbm.rbs +151 -87
  176. data/stdlib/yaml/0/store.rbs +6 -0
  177. data/stdlib/zlib/0/zlib.rbs +90 -31
  178. metadata +17 -5
  179. data/lib/rbs/location.rb +0 -221
@@ -1,3 +1,4 @@
1
+ # <!-- rdoc-file=ext/bigdecimal/lib/bigdecimal/math.rb -->
1
2
  # Provides mathematical functions.
2
3
  #
3
4
  # Example:
@@ -10,22 +11,34 @@
10
11
  # puts sin(a,100) # => 0.99999999999999999999......e0
11
12
  #
12
13
  module BigMath
14
+ # <!--
15
+ # rdoc-file=ext/bigdecimal/lib/bigdecimal/math.rb
16
+ # - E(numeric) -> BigDecimal
17
+ # -->
13
18
  # Computes e (the base of natural logarithms) to the specified number of digits
14
19
  # of precision, `numeric`.
15
20
  #
16
21
  # BigMath.E(10).to_s
17
22
  # #=> "0.271828182845904523536028752390026306410273e1"
18
23
  #
19
- def self.E: (Numeric prec) -> BigDecimal
24
+ def self?.E: (Numeric prec) -> BigDecimal
20
25
 
26
+ # <!--
27
+ # rdoc-file=ext/bigdecimal/lib/bigdecimal/math.rb
28
+ # - PI(numeric) -> BigDecimal
29
+ # -->
21
30
  # Computes the value of pi to the specified number of digits of precision,
22
31
  # `numeric`.
23
32
  #
24
33
  # BigMath.PI(10).to_s
25
34
  # #=> "0.3141592653589793238462643388813853786957412e1"
26
35
  #
27
- def self.PI: (Numeric prec) -> BigDecimal
36
+ def self?.PI: (Numeric prec) -> BigDecimal
28
37
 
38
+ # <!--
39
+ # rdoc-file=ext/bigdecimal/lib/bigdecimal/math.rb
40
+ # - atan(decimal, numeric) -> BigDecimal
41
+ # -->
29
42
  # Computes the arctangent of `decimal` to the specified number of digits of
30
43
  # precision, `numeric`.
31
44
  #
@@ -34,8 +47,12 @@ module BigMath
34
47
  # BigMath.atan(BigDecimal('-1'), 16).to_s
35
48
  # #=> "-0.785398163397448309615660845819878471907514682065e0"
36
49
  #
37
- def self.atan: (BigDecimal x, Numeric prec) -> BigDecimal
50
+ def self?.atan: (BigDecimal x, Numeric prec) -> BigDecimal
38
51
 
52
+ # <!--
53
+ # rdoc-file=ext/bigdecimal/lib/bigdecimal/math.rb
54
+ # - cos(decimal, numeric) -> BigDecimal
55
+ # -->
39
56
  # Computes the cosine of `decimal` to the specified number of digits of
40
57
  # precision, `numeric`.
41
58
  #
@@ -44,8 +61,12 @@ module BigMath
44
61
  # BigMath.cos(BigMath.PI(4), 16).to_s
45
62
  # #=> "-0.999999999999999999999999999999856613163740061349e0"
46
63
  #
47
- def self.cos: (BigDecimal x, Numeric prec) -> BigDecimal
64
+ def self?.cos: (BigDecimal x, Numeric prec) -> BigDecimal
48
65
 
66
+ # <!--
67
+ # rdoc-file=ext/bigdecimal/bigdecimal.c
68
+ # - BigMath.exp(decimal, numeric) -> BigDecimal
69
+ # -->
49
70
  # Computes the value of e (the base of natural logarithms) raised to the power
50
71
  # of `decimal`, to the specified number of digits of precision.
51
72
  #
@@ -53,8 +74,12 @@ module BigMath
53
74
  #
54
75
  # If `decimal` is NaN, returns NaN.
55
76
  #
56
- def self.exp: (BigDecimal, Numeric prec) -> BigDecimal
77
+ def self?.exp: (BigDecimal, Numeric prec) -> BigDecimal
57
78
 
79
+ # <!--
80
+ # rdoc-file=ext/bigdecimal/bigdecimal.c
81
+ # - BigMath.log(decimal, numeric) -> BigDecimal
82
+ # -->
58
83
  # Computes the natural logarithm of `decimal` to the specified number of digits
59
84
  # of precision, `numeric`.
60
85
  #
@@ -64,8 +89,12 @@ module BigMath
64
89
  #
65
90
  # If `decimal` is NaN, returns NaN.
66
91
  #
67
- def self.log: (BigDecimal, Numeric prec) -> BigDecimal
92
+ def self?.log: (BigDecimal, Numeric prec) -> BigDecimal
68
93
 
94
+ # <!--
95
+ # rdoc-file=ext/bigdecimal/lib/bigdecimal/math.rb
96
+ # - sin(decimal, numeric) -> BigDecimal
97
+ # -->
69
98
  # Computes the sine of `decimal` to the specified number of digits of precision,
70
99
  # `numeric`.
71
100
  #
@@ -74,69 +103,17 @@ module BigMath
74
103
  # BigMath.sin(BigMath.PI(5)/4, 5).to_s
75
104
  # #=> "0.70710678118654752440082036563292800375e0"
76
105
  #
77
- def self.sin: (BigDecimal x, Numeric prec) -> BigDecimal
106
+ def self?.sin: (BigDecimal x, Numeric prec) -> BigDecimal
78
107
 
108
+ # <!--
109
+ # rdoc-file=ext/bigdecimal/lib/bigdecimal/math.rb
110
+ # - sqrt(decimal, numeric) -> BigDecimal
111
+ # -->
79
112
  # Computes the square root of `decimal` to the specified number of digits of
80
113
  # precision, `numeric`.
81
114
  #
82
115
  # BigMath.sqrt(BigDecimal('2'), 16).to_s
83
116
  # #=> "0.1414213562373095048801688724e1"
84
117
  #
85
- def self.sqrt: (BigDecimal x, Numeric prec) -> BigDecimal
86
-
87
- private
88
-
89
- # Computes e (the base of natural logarithms) to the specified number of digits
90
- # of precision, `numeric`.
91
- #
92
- # BigMath.E(10).to_s
93
- # #=> "0.271828182845904523536028752390026306410273e1"
94
- #
95
- def E: (Numeric prec) -> BigDecimal
96
-
97
- # Computes the value of pi to the specified number of digits of precision,
98
- # `numeric`.
99
- #
100
- # BigMath.PI(10).to_s
101
- # #=> "0.3141592653589793238462643388813853786957412e1"
102
- #
103
- def PI: (Numeric prec) -> BigDecimal
104
-
105
- # Computes the arctangent of `decimal` to the specified number of digits of
106
- # precision, `numeric`.
107
- #
108
- # If `decimal` is NaN, returns NaN.
109
- #
110
- # BigMath.atan(BigDecimal('-1'), 16).to_s
111
- # #=> "-0.785398163397448309615660845819878471907514682065e0"
112
- #
113
- def atan: (BigDecimal x, Numeric prec) -> BigDecimal
114
-
115
- # Computes the cosine of `decimal` to the specified number of digits of
116
- # precision, `numeric`.
117
- #
118
- # If `decimal` is Infinity or NaN, returns NaN.
119
- #
120
- # BigMath.cos(BigMath.PI(4), 16).to_s
121
- # #=> "-0.999999999999999999999999999999856613163740061349e0"
122
- #
123
- def cos: (BigDecimal x, Numeric prec) -> BigDecimal
124
-
125
- # Computes the sine of `decimal` to the specified number of digits of precision,
126
- # `numeric`.
127
- #
128
- # If `decimal` is Infinity or NaN, returns NaN.
129
- #
130
- # BigMath.sin(BigMath.PI(5)/4, 5).to_s
131
- # #=> "0.70710678118654752440082036563292800375e0"
132
- #
133
- def sin: (BigDecimal x, Numeric prec) -> BigDecimal
134
-
135
- # Computes the square root of `decimal` to the specified number of digits of
136
- # precision, `numeric`.
137
- #
138
- # BigMath.sqrt(BigDecimal('2'), 16).to_s
139
- # #=> "0.1414213562373095048801688724e1"
140
- #
141
- def sqrt: (BigDecimal x, Numeric prec) -> BigDecimal
118
+ def self?.sqrt: (BigDecimal x, Numeric prec) -> BigDecimal
142
119
  end
@@ -1,3 +1,4 @@
1
+ # <!-- rdoc-file=lib/cgi.rb -->
1
2
  # ## Overview
2
3
  #
3
4
  # The Common Gateway Interface (CGI) is a simple protocol for passing an HTTP
@@ -266,7 +267,13 @@
266
267
  # include CGI::Util
267
268
  # escapeHTML('Usage: foo "bar" <baz>')
268
269
  # h('Usage: foo "bar" <baz>') # alias
270
+ #
269
271
  class CGI
272
+ # <!--
273
+ # rdoc-file=lib/cgi/core.rb
274
+ # - CGI.new(tag_maker) { block }
275
+ # - CGI.new(options_hash = {}) { block }
276
+ # -->
270
277
  # Create a new CGI instance.
271
278
  #
272
279
  # `tag_maker`
@@ -343,16 +350,31 @@ class CGI
343
350
  def initialize: (?String tag_maker) ?{ (String name, String value) -> void } -> void
344
351
  | (Hash[Symbol, untyped] options_hash) ?{ (String name, String value) -> void } -> void
345
352
 
353
+ # <!-- rdoc-file=lib/cgi/core.rb -->
354
+ # Return the accept character set for this CGI instance.
355
+ #
346
356
  attr_reader accept_charset: String
347
357
 
358
+ # <!--
359
+ # rdoc-file=lib/cgi/core.rb
360
+ # - accept_charset()
361
+ # -->
348
362
  # Return the accept character set for all new CGI instances.
349
363
  #
350
364
  def self.accept_charset: () -> String
351
365
 
366
+ # <!--
367
+ # rdoc-file=lib/cgi/core.rb
368
+ # - accept_charset=(accept_charset)
369
+ # -->
352
370
  # Set the accept character set for all new CGI instances.
353
371
  #
354
372
  def self.accept_charset=: (String accept_charset) -> String
355
373
 
374
+ # <!--
375
+ # rdoc-file=lib/cgi/core.rb
376
+ # - parse(query)
377
+ # -->
356
378
  # Parse an HTTP query string into a hash of key=>value pairs.
357
379
  #
358
380
  # params = CGI.parse("query_string")
@@ -363,6 +385,7 @@ class CGI
363
385
 
364
386
  public
365
387
 
388
+ # <!-- rdoc-file=lib/cgi/core.rb -->
366
389
  # This method is an alias for #http_header, when HTML5 tag maker is inactive.
367
390
  #
368
391
  # NOTE: use #http_header to create HTTP header blocks, this alias is only
@@ -372,6 +395,11 @@ class CGI
372
395
  #
373
396
  alias header http_header
374
397
 
398
+ # <!--
399
+ # rdoc-file=lib/cgi/core.rb
400
+ # - http_header(content_type_string="text/html")
401
+ # - http_header(headers_hash)
402
+ # -->
375
403
  # Create an HTTP header block as a string.
376
404
  #
377
405
  # Includes the empty line that ends the header block.
@@ -487,6 +515,11 @@ class CGI
487
515
 
488
516
  def nph?: () -> boolish
489
517
 
518
+ # <!--
519
+ # rdoc-file=lib/cgi/core.rb
520
+ # - cgi.out(content_type_string='text/html')
521
+ # - cgi.out(headers_hash)
522
+ # -->
490
523
  # Print an HTTP header and body to $DEFAULT_OUTPUT ($>)
491
524
  #
492
525
  # `content_type_string`
@@ -551,6 +584,10 @@ class CGI
551
584
  def out: (?String content_type_string) { () -> String } -> void
552
585
  | (Hash[String | Symbol, untyped] headers_hash) { () -> String } -> void
553
586
 
587
+ # <!--
588
+ # rdoc-file=lib/cgi/core.rb
589
+ # - print(*options)
590
+ # -->
554
591
  # Print an argument or list of arguments to the default output stream
555
592
  #
556
593
  # cgi = CGI.new
@@ -560,34 +597,56 @@ class CGI
560
597
 
561
598
  private
562
599
 
600
+ # <!--
601
+ # rdoc-file=lib/cgi/core.rb
602
+ # - stdinput()
603
+ # -->
563
604
  # Synonym for $stdin.
564
605
  #
565
606
  def stdinput: () -> ::IO
566
607
 
608
+ # <!--
609
+ # rdoc-file=lib/cgi/core.rb
610
+ # - stdoutput()
611
+ # -->
567
612
  # Synonym for $stdout.
568
613
  #
569
614
  def stdoutput: () -> ::IO
570
615
  end
571
616
 
617
+ # <!-- rdoc-file=lib/cgi/core.rb -->
572
618
  # String for carriage return
619
+ #
573
620
  CGI::CR: String
574
621
 
622
+ # <!-- rdoc-file=lib/cgi/core.rb -->
575
623
  # Standard internet newline sequence
624
+ #
576
625
  CGI::EOL: String
577
626
 
627
+ # <!-- rdoc-file=lib/cgi/core.rb -->
578
628
  # HTTP status codes.
629
+ #
579
630
  CGI::HTTP_STATUS: Hash[String, String]
580
631
 
632
+ # <!-- rdoc-file=lib/cgi/core.rb -->
581
633
  # String for linefeed
634
+ #
582
635
  CGI::LF: String
583
636
 
637
+ # <!-- rdoc-file=lib/cgi/core.rb -->
584
638
  # Maximum number of request parameters when multipart
639
+ #
585
640
  CGI::MAX_MULTIPART_COUNT: Integer
586
641
 
642
+ # <!-- rdoc-file=lib/cgi/core.rb -->
587
643
  # Whether processing will be required in binary vs text
644
+ #
588
645
  CGI::NEEDS_BINMODE: bool
589
646
 
647
+ # <!-- rdoc-file=lib/cgi/core.rb -->
590
648
  # Path separators in different environments.
649
+ #
591
650
  CGI::PATH_SEPARATOR: Hash[String, String]
592
651
 
593
652
  CGI::REVISION: String
@@ -1,6 +1,10 @@
1
+ # <!-- rdoc-file=ext/coverage/coverage.c -->
1
2
  # Coverage provides coverage measurement feature for Ruby. This feature is
2
3
  # experimental, so these APIs may be changed in future.
3
4
  #
5
+ # Caveat: Currently, only process-global coverage measurement is supported. You
6
+ # cannot measure per-thread covearge.
7
+ #
4
8
  # # Usage
5
9
  #
6
10
  # 1. require "coverage"
@@ -12,7 +16,7 @@
12
16
  # disabled for this line (lines like `else` and `end`).
13
17
  #
14
18
  #
15
- # # Example
19
+ # # Examples
16
20
  #
17
21
  # [foo.rb]
18
22
  # s = 0
@@ -32,9 +36,129 @@
32
36
  # require "foo.rb"
33
37
  # p Coverage.result #=> {"foo.rb"=>[1, 1, 10, nil, nil, 1, 1, nil, 0, nil]}
34
38
  #
39
+ # ## Lines Coverage
40
+ #
41
+ # If a coverage mode is not explicitly specified when starting coverage, lines
42
+ # coverage is what will run. It reports the number of line executions for each
43
+ # line.
44
+ #
45
+ # require "coverage"
46
+ # Coverage.start(lines: true)
47
+ # require "foo.rb"
48
+ # p Coverage.result #=> {"foo.rb"=>{:lines=>[1, 1, 10, nil, nil, 1, 1, nil, 0, nil]}}
49
+ #
50
+ # The value of the lines coverage result is an array containing how many times
51
+ # each line was executed. Order in this array is important. For example, the
52
+ # first item in this array, at index 0, reports how many times line 1 of this
53
+ # file was executed while coverage was run (which, in this example, is one
54
+ # time).
55
+ #
56
+ # A `nil` value means coverage is disabled for this line (lines like `else` and
57
+ # `end`).
58
+ #
59
+ # ## Oneshot Lines Coverage
60
+ #
61
+ # Oneshot lines coverage tracks and reports on the executed lines while coverage
62
+ # is running. It will not report how many times a line was executed, only that
63
+ # it was executed.
64
+ #
65
+ # require "coverage"
66
+ # Coverage.start(oneshot_lines: true)
67
+ # require "foo.rb"
68
+ # p Coverage.result #=> {"foo.rb"=>{:oneshot_lines=>[1, 2, 3, 6, 7]}}
69
+ #
70
+ # The value of the oneshot lines coverage result is an array containing the line
71
+ # numbers that were executed.
72
+ #
73
+ # ## Branches Coverage
74
+ #
75
+ # Branches coverage reports how many times each branch within each conditional
76
+ # was executed.
77
+ #
78
+ # require "coverage"
79
+ # Coverage.start(branches: true)
80
+ # require "foo.rb"
81
+ # p Coverage.result #=> {"foo.rb"=>{:branches=>{[:if, 0, 6, 0, 10, 3]=>{[:then, 1, 7, 2, 7, 7]=>1, [:else, 2, 9, 2, 9, 7]=>0}}}}
82
+ #
83
+ # Each entry within the branches hash is a conditional, the value of which is
84
+ # another hash where each entry is a branch in that conditional. The values are
85
+ # the number of times the method was executed, and the keys are identifying
86
+ # information about the branch.
87
+ #
88
+ # The information that makes up each key identifying branches or conditionals is
89
+ # the following, from left to right:
90
+ #
91
+ # 1. A label for the type of branch or conditional.
92
+ # 2. A unique identifier.
93
+ # 3. The starting line number it appears on in the file.
94
+ # 4. The starting column number it appears on in the file.
95
+ # 5. The ending line number it appears on in the file.
96
+ # 6. The ending column number it appears on in the file.
97
+ #
98
+ #
99
+ # ## Methods Coverage
100
+ #
101
+ # Methods coverage reports how many times each method was executed.
102
+ #
103
+ # [foo_method.rb]
104
+ # class Greeter
105
+ # def greet
106
+ # "welcome!"
107
+ # end
108
+ # end
109
+ #
110
+ # def hello
111
+ # "Hi"
112
+ # end
113
+ #
114
+ # hello()
115
+ # Greeter.new.greet()
116
+ # [EOF]
117
+ #
118
+ # require "coverage"
119
+ # Coverage.start(methods: true)
120
+ # require "foo_method.rb"
121
+ # p Coverage.result #=> {"foo_method.rb"=>{:methods=>{[Object, :hello, 7, 0, 9, 3]=>1, [Greeter, :greet, 2, 2, 4, 5]=>1}}}
122
+ #
123
+ # Each entry within the methods hash represents a method. The values in this
124
+ # hash are the number of times the method was executed, and the keys are
125
+ # identifying information about the method.
126
+ #
127
+ # The information that makes up each key identifying a method is the following,
128
+ # from left to right:
129
+ #
130
+ # 1. The class.
131
+ # 2. The method name.
132
+ # 3. The starting line number the method appears on in the file.
133
+ # 4. The starting column number the method appears on in the file.
134
+ # 5. The ending line number the method appears on in the file.
135
+ # 6. The ending column number the method appears on in the file.
136
+ #
137
+ #
138
+ # ## All Coverage Modes
139
+ #
140
+ # You can also run all modes of coverage simultaneously with this shortcut. Note
141
+ # that running all coverage modes does not run both lines and oneshot lines.
142
+ # Those modes cannot be run simultaneously. Lines coverage is run in this case,
143
+ # because you can still use it to determine whether or not a line was executed.
144
+ #
145
+ # require "coverage"
146
+ # Coverage.start(:all)
147
+ # require "foo.rb"
148
+ # p Coverage.result #=> {"foo.rb"=>{:lines=>[1, 1, 10, nil, nil, 1, 1, nil, 0, nil], :branches=>{[:if, 0, 6, 0, 10, 3]=>{[:then, 1, 7, 2, 7, 7]=>1, [:else, 2, 9, 2, 9, 7]=>0}}, :methods=>{}}}
149
+ #
35
150
  module Coverage
151
+ # <!--
152
+ # rdoc-file=ext/coverage/lib/coverage.rb
153
+ # - line_stub(file)
154
+ # -->
155
+ #
36
156
  def self.line_stub: () -> Array[Integer?]
37
157
 
158
+ # <!--
159
+ # rdoc-file=ext/coverage/coverage.c
160
+ # - Coverage.peek_result => hash
161
+ # -->
38
162
  # Returns a hash that contains filename as key and coverage array as value. This
39
163
  # is the same as `Coverage.result(stop: false, clear: false)`.
40
164
  #
@@ -45,18 +169,56 @@ module Coverage
45
169
  #
46
170
  def self.peek_result: () -> Hash[String, untyped]
47
171
 
172
+ # <!--
173
+ # rdoc-file=ext/coverage/coverage.c
174
+ # - Coverage.result(stop: true, clear: true) => hash
175
+ # -->
48
176
  # Returns a hash that contains filename as key and coverage array as value. If
49
177
  # `clear` is true, it clears the counters to zero. If `stop` is true, it
50
178
  # disables coverage measurement.
51
179
  #
52
180
  def self.result: (?stop: boolish, ?clear: boolish) -> Hash[String, untyped]
53
181
 
182
+ # <!--
183
+ # rdoc-file=ext/coverage/coverage.c
184
+ # - Coverage.running? => bool
185
+ # -->
54
186
  # Returns true if coverage stats are currently being collected (after
55
187
  # Coverage.start call, but before Coverage.result call)
56
188
  #
57
189
  def self.running?: () -> bool
58
190
 
59
- # Enables coverage measurement.
191
+ # <!--
192
+ # rdoc-file=ext/coverage/coverage.c
193
+ # - Coverage.start => nil
194
+ # - Coverage.start(:all) => nil
195
+ # - Coverage.start(lines: bool, branches: bool, methods: bool) => nil
196
+ # - Coverage.start(oneshot_lines: true) => nil
197
+ # -->
198
+ # Enables the coverage measurement. See the documentation of Coverage class in
199
+ # detail. This is equivalent to Coverage.setup and Coverage.resume.
60
200
  #
61
201
  def self.start: (?lines: boolish, ?branches: boolish, ?methods: boolish, ?oneshot_lines: boolish) -> nil
202
+
203
+ # <!--
204
+ # rdoc-file=ext/coverage/coverage.c
205
+ # - Coverage.resume => nil
206
+ # -->
207
+ # Start/resume the coverage measurement.
208
+ #
209
+ # Caveat: Currently, only process-global coverage measurement is supported. You
210
+ # cannot measure per-thread covearge. If your process has multiple thread, using
211
+ # Coverage.resume/suspend to capture code coverage executed from only a limited
212
+ # code block, may yield misleading results.
213
+ #
214
+ def self.resume: () -> nil
215
+
216
+ # <!--
217
+ # rdoc-file=ext/coverage/coverage.c
218
+ # - Coverage.suspend => nil
219
+ # -->
220
+ # Suspend the coverage measurement. You can use Coverage.resume to restart the
221
+ # measurement.
222
+ #
223
+ def self.suspend: () -> nil
62
224
  end