rbs 2.0.0 → 2.2.2

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 (208) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +34 -0
  3. data/.github/workflows/ruby.yml +5 -0
  4. data/CHANGELOG.md +82 -0
  5. data/README.md +6 -1
  6. data/Rakefile +56 -21
  7. data/core/array.rbs +2866 -1086
  8. data/core/basic_object.rbs +150 -30
  9. data/core/binding.rbs +33 -0
  10. data/core/builtin.rbs +4 -4
  11. data/core/class.rbs +43 -5
  12. data/core/comparable.rbs +57 -0
  13. data/core/complex.rbs +170 -4
  14. data/core/constants.rbs +51 -0
  15. data/core/deprecated.rbs +7 -0
  16. data/core/dir.rbs +305 -20
  17. data/core/encoding.rbs +1214 -77
  18. data/core/enumerable.rbs +2173 -234
  19. data/core/enumerator.rbs +448 -182
  20. data/core/env.rbs +448 -1
  21. data/core/errno.rbs +1 -10
  22. data/core/errors.rbs +152 -2
  23. data/core/exception.rbs +201 -127
  24. data/core/false_class.rbs +27 -0
  25. data/core/fiber.rbs +118 -37
  26. data/core/fiber_error.rbs +8 -9
  27. data/core/file.rbs +1060 -142
  28. data/core/file_test.rbs +287 -32
  29. data/core/float.rbs +776 -300
  30. data/core/gc.rbs +185 -34
  31. data/core/global_variables.rbs +5 -1
  32. data/core/hash.rbs +1582 -649
  33. data/core/integer.rbs +974 -204
  34. data/core/io/buffer.rbs +710 -0
  35. data/core/io/wait.rbs +29 -8
  36. data/core/io.rbs +2438 -417
  37. data/core/kernel.rbs +2319 -318
  38. data/core/marshal.rbs +37 -2
  39. data/core/match_data.rbs +123 -6
  40. data/core/math.rbs +126 -6
  41. data/core/method.rbs +226 -102
  42. data/core/module.rbs +421 -45
  43. data/core/nil_class.rbs +64 -0
  44. data/core/numeric.rbs +620 -142
  45. data/core/object.rbs +453 -81
  46. data/core/object_space.rbs +92 -2
  47. data/core/proc.rbs +482 -285
  48. data/core/process.rbs +443 -34
  49. data/core/ractor.rbs +232 -9
  50. data/core/random.rbs +151 -52
  51. data/core/range.rbs +885 -160
  52. data/core/rational.rbs +122 -6
  53. data/core/rb_config.rbs +14 -4
  54. data/core/refinement.rbs +44 -0
  55. data/core/regexp.rbs +156 -14
  56. data/core/ruby_vm.rbs +42 -3
  57. data/core/signal.rbs +78 -39
  58. data/core/string.rbs +2123 -567
  59. data/core/string_io.rbs +204 -0
  60. data/core/struct.rbs +283 -28
  61. data/core/symbol.rbs +304 -30
  62. data/core/thread.rbs +1288 -688
  63. data/core/thread_group.rbs +66 -10
  64. data/core/time.rbs +643 -217
  65. data/core/trace_point.rbs +100 -12
  66. data/core/true_class.rbs +24 -0
  67. data/core/unbound_method.rbs +73 -7
  68. data/core/warning.rbs +37 -12
  69. data/docs/CONTRIBUTING.md +40 -34
  70. data/docs/stdlib.md +3 -102
  71. data/docs/syntax.md +54 -11
  72. data/ext/rbs_extension/extconf.rb +1 -0
  73. data/ext/rbs_extension/lexer.h +5 -0
  74. data/ext/rbs_extension/lexstate.c +6 -0
  75. data/ext/rbs_extension/parser.c +85 -10
  76. data/ext/rbs_extension/ruby_objs.c +4 -2
  77. data/ext/rbs_extension/ruby_objs.h +2 -2
  78. data/goodcheck.yml +0 -11
  79. data/lib/rbs/annotate/annotations.rb +197 -0
  80. data/lib/rbs/annotate/formatter.rb +80 -0
  81. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  82. data/lib/rbs/annotate/rdoc_source.rb +120 -0
  83. data/lib/rbs/annotate.rb +6 -0
  84. data/lib/rbs/ast/members.rb +21 -13
  85. data/lib/rbs/buffer.rb +17 -11
  86. data/lib/rbs/cli.rb +48 -1
  87. data/lib/rbs/definition_builder/method_builder.rb +28 -16
  88. data/lib/rbs/definition_builder.rb +6 -2
  89. data/lib/rbs/environment.rb +8 -4
  90. data/lib/rbs/location_aux.rb +12 -0
  91. data/lib/rbs/namespace.rb +1 -1
  92. data/lib/rbs/prototype/rb.rb +12 -0
  93. data/lib/rbs/type_alias_regularity.rb +6 -4
  94. data/lib/rbs/type_name.rb +1 -1
  95. data/lib/rbs/types.rb +1 -1
  96. data/lib/rbs/validator.rb +6 -0
  97. data/lib/rbs/version.rb +1 -1
  98. data/lib/rbs/writer.rb +54 -4
  99. data/lib/rbs.rb +0 -2
  100. data/schema/typeParam.json +3 -3
  101. data/sig/annotate/annotations.rbs +102 -0
  102. data/sig/annotate/formatter.rbs +24 -0
  103. data/sig/annotate/rdoc_annotater.rbs +82 -0
  104. data/sig/annotate/rdoc_source.rbs +30 -0
  105. data/sig/buffer.rbs +6 -2
  106. data/sig/cli.rbs +2 -0
  107. data/sig/collection/{collections.rbs → sources.rbs} +0 -0
  108. data/sig/location.rbs +6 -0
  109. data/sig/members.rbs +24 -18
  110. data/sig/method_builder.rbs +5 -4
  111. data/sig/method_types.rbs +5 -1
  112. data/sig/polyfill.rbs +78 -0
  113. data/sig/validator.rbs +3 -1
  114. data/sig/writer.rbs +79 -2
  115. data/stdlib/abbrev/0/abbrev.rbs +6 -0
  116. data/stdlib/abbrev/0/array.rbs +26 -0
  117. data/stdlib/base64/0/base64.rbs +31 -0
  118. data/stdlib/benchmark/0/benchmark.rbs +74 -3
  119. data/stdlib/bigdecimal/0/big_decimal.rbs +614 -165
  120. data/stdlib/bigdecimal-math/0/big_math.rbs +41 -64
  121. data/stdlib/cgi/0/core.rbs +649 -21
  122. data/stdlib/coverage/0/coverage.rbs +164 -2
  123. data/stdlib/csv/0/csv.rbs +2862 -398
  124. data/stdlib/date/0/date.rbs +483 -25
  125. data/stdlib/date/0/date_time.rbs +187 -12
  126. data/stdlib/dbm/0/dbm.rbs +152 -17
  127. data/stdlib/digest/0/digest.rbs +146 -0
  128. data/stdlib/erb/0/erb.rbs +65 -245
  129. data/stdlib/fiber/0/fiber.rbs +73 -91
  130. data/stdlib/fileutils/0/fileutils.rbs +301 -1
  131. data/stdlib/find/0/find.rbs +9 -0
  132. data/stdlib/forwardable/0/forwardable.rbs +65 -1
  133. data/stdlib/io-console/0/io-console.rbs +227 -15
  134. data/stdlib/ipaddr/0/ipaddr.rbs +161 -0
  135. data/stdlib/json/0/json.rbs +1147 -145
  136. data/stdlib/logger/0/formatter.rbs +24 -0
  137. data/stdlib/logger/0/log_device.rbs +64 -0
  138. data/stdlib/logger/0/logger.rbs +165 -13
  139. data/stdlib/logger/0/period.rbs +10 -0
  140. data/stdlib/logger/0/severity.rbs +26 -0
  141. data/stdlib/monitor/0/monitor.rbs +163 -0
  142. data/stdlib/mutex_m/0/mutex_m.rbs +35 -6
  143. data/stdlib/net-http/0/manifest.yaml +1 -0
  144. data/stdlib/net-http/0/net-http.rbs +1513 -683
  145. data/stdlib/nkf/0/nkf.rbs +372 -0
  146. data/stdlib/objspace/0/objspace.rbs +149 -90
  147. data/stdlib/openssl/0/openssl.rbs +8108 -71
  148. data/stdlib/optparse/0/optparse.rbs +487 -19
  149. data/stdlib/pathname/0/pathname.rbs +425 -124
  150. data/stdlib/prettyprint/0/prettyprint.rbs +120 -99
  151. data/stdlib/prime/0/integer-extension.rbs +20 -2
  152. data/stdlib/prime/0/prime.rbs +88 -21
  153. data/stdlib/pstore/0/pstore.rbs +102 -0
  154. data/stdlib/pty/0/pty.rbs +64 -14
  155. data/stdlib/resolv/0/resolv.rbs +420 -31
  156. data/stdlib/rubygems/0/basic_specification.rbs +4 -1
  157. data/stdlib/rubygems/0/config_file.rbs +33 -1
  158. data/stdlib/rubygems/0/dependency_installer.rbs +4 -3
  159. data/stdlib/rubygems/0/installer.rbs +13 -1
  160. data/stdlib/rubygems/0/path_support.rbs +4 -1
  161. data/stdlib/rubygems/0/platform.rbs +5 -1
  162. data/stdlib/rubygems/0/request_set.rbs +44 -2
  163. data/stdlib/rubygems/0/requirement.rbs +65 -2
  164. data/stdlib/rubygems/0/rubygems.rbs +407 -0
  165. data/stdlib/rubygems/0/source_list.rbs +13 -0
  166. data/stdlib/rubygems/0/specification.rbs +21 -1
  167. data/stdlib/rubygems/0/stream_ui.rbs +3 -1
  168. data/stdlib/rubygems/0/uninstaller.rbs +8 -1
  169. data/stdlib/rubygems/0/version.rbs +60 -157
  170. data/stdlib/securerandom/0/securerandom.rbs +44 -0
  171. data/stdlib/set/0/set.rbs +423 -109
  172. data/stdlib/shellwords/0/shellwords.rbs +55 -77
  173. data/stdlib/singleton/0/singleton.rbs +20 -0
  174. data/stdlib/socket/0/addrinfo.rbs +210 -9
  175. data/stdlib/socket/0/basic_socket.rbs +103 -11
  176. data/stdlib/socket/0/ip_socket.rbs +31 -9
  177. data/stdlib/socket/0/socket.rbs +586 -38
  178. data/stdlib/socket/0/tcp_server.rbs +22 -2
  179. data/stdlib/socket/0/tcp_socket.rbs +12 -1
  180. data/stdlib/socket/0/udp_socket.rbs +25 -2
  181. data/stdlib/socket/0/unix_server.rbs +22 -2
  182. data/stdlib/socket/0/unix_socket.rbs +45 -5
  183. data/stdlib/strscan/0/string_scanner.rbs +210 -9
  184. data/stdlib/tempfile/0/tempfile.rbs +58 -10
  185. data/stdlib/time/0/time.rbs +208 -116
  186. data/stdlib/timeout/0/timeout.rbs +10 -0
  187. data/stdlib/tmpdir/0/tmpdir.rbs +13 -4
  188. data/stdlib/tsort/0/cyclic.rbs +1 -0
  189. data/stdlib/tsort/0/interfaces.rbs +1 -0
  190. data/stdlib/tsort/0/tsort.rbs +42 -0
  191. data/stdlib/uri/0/common.rbs +57 -8
  192. data/stdlib/uri/0/file.rbs +55 -109
  193. data/stdlib/uri/0/ftp.rbs +6 -3
  194. data/stdlib/uri/0/generic.rbs +558 -329
  195. data/stdlib/uri/0/http.rbs +60 -114
  196. data/stdlib/uri/0/https.rbs +8 -102
  197. data/stdlib/uri/0/ldap.rbs +143 -137
  198. data/stdlib/uri/0/ldaps.rbs +8 -102
  199. data/stdlib/uri/0/mailto.rbs +3 -0
  200. data/stdlib/uri/0/rfc2396_parser.rbs +66 -26
  201. data/stdlib/uri/0/ws.rbs +6 -3
  202. data/stdlib/uri/0/wss.rbs +5 -3
  203. data/stdlib/yaml/0/dbm.rbs +151 -87
  204. data/stdlib/yaml/0/store.rbs +6 -0
  205. data/stdlib/zlib/0/zlib.rbs +90 -31
  206. metadata +18 -6
  207. data/lib/rbs/location.rb +0 -221
  208. data/sig/char_scanner.rbs +0 -9
data/core/marshal.rbs CHANGED
@@ -1,3 +1,4 @@
1
+ # <!-- rdoc-file=marshal.c -->
1
2
  # The marshaling library converts collections of Ruby objects into a byte
2
3
  # stream, allowing them to be stored outside the currently active script. This
3
4
  # data may subsequently be read and the original objects reconstituted.
@@ -107,6 +108,10 @@
107
108
  # which is Marshal.loaded in _load for complex objects.
108
109
  #
109
110
  module Marshal
111
+ # <!--
112
+ # rdoc-file=marshal.c
113
+ # - dump( obj [, anIO] , limit=-1 ) -> anIO
114
+ # -->
110
115
  # Serializes obj and all descendant objects. If anIO is specified, the
111
116
  # serialized data will be written to it, otherwise the data will be returned as
112
117
  # a String. If limit is specified, the traversal of subobjects will be limited
@@ -139,6 +144,11 @@ module Marshal
139
144
  def self.dump: (untyped obj, untyped port, ?Integer limit) -> untyped
140
145
  | (untyped obj, ?Integer limit) -> String
141
146
 
147
+ # <!--
148
+ # rdoc-file=marshal.rb
149
+ # - load(source, proc = nil, freeze: false) -> obj
150
+ # - restore(source, proc = nil, freeze: false) -> obj
151
+ # -->
142
152
  # Returns the result of converting the serialized data in source into a Ruby
143
153
  # object (possibly with associated subordinate objects). source may be either an
144
154
  # instance of IO or an object that responds to to_str. If proc is specified,
@@ -147,16 +157,41 @@ module Marshal
147
157
  # Never pass untrusted data (including user supplied input) to this method.
148
158
  # Please see the overview for further details.
149
159
  #
150
- def self.load: (String | untyped port) -> untyped
151
- | [A] (String | untyped port, ^(untyped) -> A) -> A
160
+ # If the `freeze: true` argument is passed, deserialized object would be deeply
161
+ # frozen. Note that it may lead to more efficient memory usage due to frozen
162
+ # strings deduplication:
163
+ #
164
+ # serialized = Marshal.dump(['value1', 'value2', 'value1', 'value2'])
165
+ #
166
+ # deserialized = Marshal.load(serialized)
167
+ # deserialized.map(&:frozen?)
168
+ # # => [false, false, false, false]
169
+ # deserialized.map(&:object_id)
170
+ # # => [1023900, 1023920, 1023940, 1023960] -- 4 different objects
171
+ #
172
+ # deserialized = Marshal.load(serialized, freeze: true)
173
+ # deserialized.map(&:frozen?)
174
+ # # => [true, true, true, true]
175
+ # deserialized.map(&:object_id)
176
+ # # => [1039360, 1039380, 1039360, 1039380] -- only 2 different objects, object_ids repeating
177
+ #
178
+ def self.load: (String | untyped port, ?freeze: boolish) -> untyped
179
+ | [A] (String | untyped port, ^(untyped) -> A, ?freeze: boolish) -> A
152
180
 
181
+ # <!--
182
+ # rdoc-file=marshal.rb
183
+ # - restore(source, proc = nil, freeze: false)
184
+ # -->
185
+ #
153
186
  alias self.restore self.load
154
187
  end
155
188
 
189
+ # <!-- rdoc-file=marshal.c -->
156
190
  # major version
157
191
  #
158
192
  Marshal::MAJOR_VERSION: Integer
159
193
 
194
+ # <!-- rdoc-file=marshal.c -->
160
195
  # minor version
161
196
  #
162
197
  Marshal::MINOR_VERSION: Integer
data/core/match_data.rbs CHANGED
@@ -1,3 +1,4 @@
1
+ # <!-- rdoc-file=re.c -->
1
2
  # MatchData encapsulates the result of matching a Regexp against string. It is
2
3
  # returned by Regexp#match and String#match, and also stored in a global
3
4
  # variable returned by Regexp.last_match.
@@ -34,11 +35,11 @@
34
35
  # global variables:
35
36
  #
36
37
  # * `$~` is Regexp.last_match;
37
- # * `$&` is [Regexp.last_match](0);
38
- # * `$1`, `$2`, and so on are [Regexp.last_match](i) (captures by number);
38
+ # * `$&` is Regexp.last_match`[ 0 ]`;
39
+ # * `$1`, `$2`, and so on are Regexp.last_match`[ i ]` (captures by number);
39
40
  # * `$`` is Regexp.last_match`.pre_match`;
40
41
  # * `$'` is Regexp.last_match`.post_match`;
41
- # * `$+` is [Regexp.last_match](-1) (the last capture).
42
+ # * `$+` is Regexp.last_match`[ -1 ]` (the last capture).
42
43
  #
43
44
  #
44
45
  # See also "Special global variables" section in Regexp documentation.
@@ -46,11 +47,19 @@
46
47
  class MatchData
47
48
  public
48
49
 
50
+ # <!-- rdoc-file=re.c -->
49
51
  # Equality---Two matchdata are equal if their target strings, patterns, and
50
52
  # matched positions are identical.
51
53
  #
52
54
  def ==: (untyped other) -> bool
53
55
 
56
+ # <!--
57
+ # rdoc-file=re.c
58
+ # - mtch[i] -> str or nil
59
+ # - mtch[start, length] -> array
60
+ # - mtch[range] -> array
61
+ # - mtch[name] -> str or nil
62
+ # -->
54
63
  # Match Reference -- MatchData acts as an array, and may be accessed using the
55
64
  # normal array indexing techniques. `mtch[0]` is equivalent to the special
56
65
  # variable `$&`, and returns the entire matched string. `mtch[1]`, `mtch[2]`,
@@ -74,6 +83,10 @@ class MatchData
74
83
  | (::Range[Integer] range) -> ::Array[String?]
75
84
  | (String | Symbol name) -> String?
76
85
 
86
+ # <!--
87
+ # rdoc-file=re.c
88
+ # - mtch.begin(n) -> integer
89
+ # -->
77
90
  # Returns the offset of the start of the *n*th element of the match array in the
78
91
  # string. *n* can be a string or symbol to reference a named capture.
79
92
  #
@@ -87,6 +100,10 @@ class MatchData
87
100
  #
88
101
  def begin: (Integer | String | Symbol n_or_name) -> Integer?
89
102
 
103
+ # <!--
104
+ # rdoc-file=re.c
105
+ # - mtch.captures -> array
106
+ # -->
90
107
  # Returns the array of captures; equivalent to `mtch.to_a[1..-1]`.
91
108
  #
92
109
  # f1,f2,f3,f4 = /(.)(.)(\d+)(\d)/.match("THX1138.").captures
@@ -97,6 +114,10 @@ class MatchData
97
114
  #
98
115
  def captures: () -> ::Array[String?]
99
116
 
117
+ # <!--
118
+ # rdoc-file=re.c
119
+ # - mtch.end(n) -> integer
120
+ # -->
100
121
  # Returns the offset of the character immediately following the end of the *n*th
101
122
  # element of the match array in the string. *n* can be a string or symbol to
102
123
  # reference a named capture.
@@ -109,13 +130,22 @@ class MatchData
109
130
  # p m.end(:foo) #=> 1
110
131
  # p m.end(:bar) #=> 3
111
132
  #
112
- def `end`: (Integer | String | Symbol n_or_name) -> Integer?
133
+ def end: (Integer | String | Symbol n_or_name) -> Integer?
113
134
 
135
+ # <!--
136
+ # rdoc-file=re.c
137
+ # - mtch == mtch2 -> true or false
138
+ # - mtch.eql?(mtch2) -> true or false
139
+ # -->
114
140
  # Equality---Two matchdata are equal if their target strings, patterns, and
115
141
  # matched positions are identical.
116
142
  #
117
143
  def eql?: (untyped other) -> bool
118
144
 
145
+ # <!--
146
+ # rdoc-file=re.c
147
+ # - mtch.hash -> integer
148
+ # -->
119
149
  # Produce a hash based on the target string, regexp and matched positions of
120
150
  # this matchdata.
121
151
  #
@@ -123,6 +153,10 @@ class MatchData
123
153
  #
124
154
  def hash: () -> Integer
125
155
 
156
+ # <!--
157
+ # rdoc-file=re.c
158
+ # - mtch.inspect -> str
159
+ # -->
126
160
  # Returns a printable version of *mtch*.
127
161
  #
128
162
  # puts /.$/.match("foo").inspect
@@ -139,6 +173,7 @@ class MatchData
139
173
  #
140
174
  def inspect: () -> String
141
175
 
176
+ # <!-- rdoc-file=re.c -->
142
177
  # Returns the number of elements in the match array.
143
178
  #
144
179
  # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
@@ -147,6 +182,10 @@ class MatchData
147
182
  #
148
183
  def length: () -> Integer
149
184
 
185
+ # <!--
186
+ # rdoc-file=re.c
187
+ # - mtch.named_captures -> hash
188
+ # -->
150
189
  # Returns a Hash using named capture.
151
190
  #
152
191
  # A key of the hash is a name of the named captures. A value of the hash is a
@@ -166,8 +205,12 @@ class MatchData
166
205
  #
167
206
  def named_captures: () -> ::Hash[String, String?]
168
207
 
169
- # Returns a list of names of captures as an array of strings. It is same as
170
- # mtch.regexp.names.
208
+ # <!--
209
+ # rdoc-file=re.c
210
+ # - mtch.names -> [name1, name2, ...]
211
+ # -->
212
+ # Returns a list of names of captures as an array of strings. This is the same
213
+ # as mtch.regexp.names.
171
214
  #
172
215
  # /(?<foo>.)(?<bar>.)(?<baz>.)/.match("hoge").names
173
216
  # #=> ["foo", "bar", "baz"]
@@ -177,6 +220,46 @@ class MatchData
177
220
  #
178
221
  def names: () -> ::Array[String]
179
222
 
223
+ # <!--
224
+ # rdoc-file=re.c
225
+ # - mtch.match(n) -> string or nil
226
+ # -->
227
+ # Returns the captured substring corresponding to the argument. *n* can be a
228
+ # string or symbol to reference a named capture.
229
+ #
230
+ # m = /(.)(.)(\d+)(\d)(\w)?/.match("THX1138.")
231
+ # m.match(0) #=> "HX1138"
232
+ # m.match(4) #=> "8"
233
+ # m.match(5) #=> nil
234
+ #
235
+ # m = /(?<foo>.)(.)(?<bar>.+)/.match("hoge")
236
+ # m.match(:foo) #=> "h"
237
+ # m.match(:bar) #=> "ge"
238
+ #
239
+ def match: (int | String | Symbol) -> String?
240
+
241
+ # <!--
242
+ # rdoc-file=re.c
243
+ # - mtch.match_length(n) -> array
244
+ # -->
245
+ # Returns the length of the captured substring corresponding to the argument.
246
+ # *n* can be a string or symbol to reference a named capture.
247
+ #
248
+ # m = /(.)(.)(\d+)(\d)(\w)?/.match("THX1138.")
249
+ # m.match_length(0) #=> 6
250
+ # m.match_length(4) #=> 1
251
+ # m.match_length(5) #=> nil
252
+ #
253
+ # m = /(?<foo>.)(.)(?<bar>.+)/.match("hoge")
254
+ # m.match_length(:foo) #=> 1
255
+ # m.match_length(:bar) #=> 2
256
+ #
257
+ def match_length: (int | String | Symbol) -> Integer?
258
+
259
+ # <!--
260
+ # rdoc-file=re.c
261
+ # - mtch.offset(n) -> array
262
+ # -->
180
263
  # Returns a two-element array containing the beginning and ending offsets of the
181
264
  # *n*th match. *n* can be a string or symbol to reference a named capture.
182
265
  #
@@ -190,6 +273,10 @@ class MatchData
190
273
  #
191
274
  def offset: (Integer | Symbol | String n_or_name) -> ([ Integer, Integer ] | [ nil, nil ])
192
275
 
276
+ # <!--
277
+ # rdoc-file=re.c
278
+ # - mtch.post_match -> str
279
+ # -->
193
280
  # Returns the portion of the original string after the current match. Equivalent
194
281
  # to the special variable `$'`.
195
282
  #
@@ -198,6 +285,10 @@ class MatchData
198
285
  #
199
286
  def post_match: () -> String
200
287
 
288
+ # <!--
289
+ # rdoc-file=re.c
290
+ # - mtch.pre_match -> str
291
+ # -->
201
292
  # Returns the portion of the original string before the current match.
202
293
  # Equivalent to the special variable `$``.
203
294
  #
@@ -206,6 +297,10 @@ class MatchData
206
297
  #
207
298
  def pre_match: () -> String
208
299
 
300
+ # <!--
301
+ # rdoc-file=re.c
302
+ # - mtch.regexp -> regexp
303
+ # -->
209
304
  # Returns the regexp.
210
305
  #
211
306
  # m = /a.*b/.match("abc")
@@ -213,6 +308,11 @@ class MatchData
213
308
  #
214
309
  def regexp: () -> Regexp
215
310
 
311
+ # <!--
312
+ # rdoc-file=re.c
313
+ # - mtch.length -> integer
314
+ # - mtch.size -> integer
315
+ # -->
216
316
  # Returns the number of elements in the match array.
217
317
  #
218
318
  # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
@@ -221,6 +321,10 @@ class MatchData
221
321
  #
222
322
  def size: () -> Integer
223
323
 
324
+ # <!--
325
+ # rdoc-file=re.c
326
+ # - mtch.string -> str
327
+ # -->
224
328
  # Returns a frozen copy of the string passed in to `match`.
225
329
  #
226
330
  # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
@@ -228,6 +332,10 @@ class MatchData
228
332
  #
229
333
  def string: () -> String
230
334
 
335
+ # <!--
336
+ # rdoc-file=re.c
337
+ # - mtch.to_a -> anArray
338
+ # -->
231
339
  # Returns the array of matches.
232
340
  #
233
341
  # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
@@ -245,6 +353,10 @@ class MatchData
245
353
  #
246
354
  def to_a: () -> ::Array[String?]
247
355
 
356
+ # <!--
357
+ # rdoc-file=re.c
358
+ # - mtch.to_s -> str
359
+ # -->
248
360
  # Returns the entire matched string.
249
361
  #
250
362
  # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
@@ -252,12 +364,17 @@ class MatchData
252
364
  #
253
365
  def to_s: () -> String
254
366
 
367
+ # <!--
368
+ # rdoc-file=re.c
369
+ # - mtch.values_at(index, ...) -> array
370
+ # -->
255
371
  # Uses each *index* to access the matching values, returning an array of the
256
372
  # corresponding matches.
257
373
  #
258
374
  # m = /(.)(.)(\d+)(\d)/.match("THX1138: The Movie")
259
375
  # m.to_a #=> ["HX1138", "H", "X", "113", "8"]
260
376
  # m.values_at(0, 2, -2) #=> ["HX1138", "X", "113"]
377
+ # m.values_at(1..2, -1) #=> ["H", "X", "8"]
261
378
  #
262
379
  # m = /(?<a>\d+) *(?<op>[+\-*\/]) *(?<b>\d+)/.match("1 + 2")
263
380
  # m.to_a #=> ["1 + 2", "1", "+", "2"]
data/core/math.rbs CHANGED
@@ -1,3 +1,4 @@
1
+ # <!-- rdoc-file=math.c -->
1
2
  # The Math module contains module functions for basic trigonometric and
2
3
  # transcendental functions. See class Float for a list of constants that define
3
4
  # Ruby's floating point accuracy.
@@ -5,6 +6,10 @@
5
6
  # Domains and codomains are given only for real (not complex) numbers.
6
7
  #
7
8
  module Math
9
+ # <!--
10
+ # rdoc-file=math.c
11
+ # - Math.acos(x) -> Float
12
+ # -->
8
13
  # Computes the arc cosine of `x`. Returns 0..PI.
9
14
  #
10
15
  # Domain: [-1, 1]
@@ -15,6 +20,10 @@ module Math
15
20
  #
16
21
  def self.acos: (Numeric x) -> Float
17
22
 
23
+ # <!--
24
+ # rdoc-file=math.c
25
+ # - Math.acosh(x) -> Float
26
+ # -->
18
27
  # Computes the inverse hyperbolic cosine of `x`.
19
28
  #
20
29
  # Domain: [1, INFINITY)
@@ -25,6 +34,10 @@ module Math
25
34
  #
26
35
  def self.acosh: (Numeric x) -> Float
27
36
 
37
+ # <!--
38
+ # rdoc-file=math.c
39
+ # - Math.asin(x) -> Float
40
+ # -->
28
41
  # Computes the arc sine of `x`. Returns -PI/2..PI/2.
29
42
  #
30
43
  # Domain: [-1, -1]
@@ -35,6 +48,10 @@ module Math
35
48
  #
36
49
  def self.asin: (Numeric x) -> Float
37
50
 
51
+ # <!--
52
+ # rdoc-file=math.c
53
+ # - Math.asinh(x) -> Float
54
+ # -->
38
55
  # Computes the inverse hyperbolic sine of `x`.
39
56
  #
40
57
  # Domain: (-INFINITY, INFINITY)
@@ -45,6 +62,10 @@ module Math
45
62
  #
46
63
  def self.asinh: (Numeric x) -> Float
47
64
 
65
+ # <!--
66
+ # rdoc-file=math.c
67
+ # - Math.atan(x) -> Float
68
+ # -->
48
69
  # Computes the arc tangent of `x`. Returns -PI/2..PI/2.
49
70
  #
50
71
  # Domain: (-INFINITY, INFINITY)
@@ -55,6 +76,10 @@ module Math
55
76
  #
56
77
  def self.atan: (Numeric x) -> Float
57
78
 
79
+ # <!--
80
+ # rdoc-file=math.c
81
+ # - Math.atan2(y, x) -> Float
82
+ # -->
58
83
  # Computes the arc tangent given `y` and `x`. Returns a Float in the range
59
84
  # -PI..PI. Return value is a angle in radians between the positive x-axis of
60
85
  # cartesian plane and the point given by the coordinates (`x`, `y`) on it.
@@ -80,6 +105,10 @@ module Math
80
105
  #
81
106
  def self.atan2: (Numeric y, Numeric x) -> Float
82
107
 
108
+ # <!--
109
+ # rdoc-file=math.c
110
+ # - Math.atanh(x) -> Float
111
+ # -->
83
112
  # Computes the inverse hyperbolic tangent of `x`.
84
113
  #
85
114
  # Domain: (-1, 1)
@@ -90,6 +119,10 @@ module Math
90
119
  #
91
120
  def self.atanh: (Numeric x) -> Float
92
121
 
122
+ # <!--
123
+ # rdoc-file=math.c
124
+ # - Math.cbrt(x) -> Float
125
+ # -->
93
126
  # Returns the cube root of `x`.
94
127
  #
95
128
  # Domain: (-INFINITY, INFINITY)
@@ -121,6 +154,10 @@ module Math
121
154
  #
122
155
  def self.cbrt: (Numeric x) -> Float
123
156
 
157
+ # <!--
158
+ # rdoc-file=math.c
159
+ # - Math.cos(x) -> Float
160
+ # -->
124
161
  # Computes the cosine of `x` (expressed in radians). Returns a Float in the
125
162
  # range -1.0..1.0.
126
163
  #
@@ -132,6 +169,10 @@ module Math
132
169
  #
133
170
  def self.cos: (Numeric x) -> Float
134
171
 
172
+ # <!--
173
+ # rdoc-file=math.c
174
+ # - Math.cosh(x) -> Float
175
+ # -->
135
176
  # Computes the hyperbolic cosine of `x` (expressed in radians).
136
177
  #
137
178
  # Domain: (-INFINITY, INFINITY)
@@ -142,6 +183,10 @@ module Math
142
183
  #
143
184
  def self.cosh: (Numeric x) -> Float
144
185
 
186
+ # <!--
187
+ # rdoc-file=math.c
188
+ # - Math.erf(x) -> Float
189
+ # -->
145
190
  # Calculates the error function of `x`.
146
191
  #
147
192
  # Domain: (-INFINITY, INFINITY)
@@ -152,6 +197,10 @@ module Math
152
197
  #
153
198
  def self.erf: (Numeric x) -> Float
154
199
 
200
+ # <!--
201
+ # rdoc-file=math.c
202
+ # - Math.erfc(x) -> Float
203
+ # -->
155
204
  # Calculates the complementary error function of x.
156
205
  #
157
206
  # Domain: (-INFINITY, INFINITY)
@@ -162,6 +211,10 @@ module Math
162
211
  #
163
212
  def self.erfc: (Numeric x) -> Float
164
213
 
214
+ # <!--
215
+ # rdoc-file=math.c
216
+ # - Math.exp(x) -> Float
217
+ # -->
165
218
  # Returns e**x.
166
219
  #
167
220
  # Domain: (-INFINITY, INFINITY)
@@ -174,6 +227,10 @@ module Math
174
227
  #
175
228
  def self.exp: (Numeric x) -> Float
176
229
 
230
+ # <!--
231
+ # rdoc-file=math.c
232
+ # - Math.frexp(x) -> [fraction, exponent]
233
+ # -->
177
234
  # Returns a two-element array containing the normalized fraction (a Float) and
178
235
  # exponent (an Integer) of `x`.
179
236
  #
@@ -182,10 +239,14 @@ module Math
182
239
  #
183
240
  def self.frexp: (Numeric x) -> [ Float, Integer ]
184
241
 
242
+ # <!--
243
+ # rdoc-file=math.c
244
+ # - Math.gamma(x) -> Float
245
+ # -->
185
246
  # Calculates the gamma function of x.
186
247
  #
187
- # Note that gamma(n) is same as fact(n-1) for integer n > 0. However gamma(n)
188
- # returns float and can be an approximation.
248
+ # Note that gamma(n) is the same as fact(n-1) for integer n > 0. However
249
+ # gamma(n) returns float and can be an approximation.
189
250
  #
190
251
  # def fact(n) (1..n).inject(1) {|r,i| r*i } end
191
252
  # 1.upto(26) {|i| p [i, Math.gamma(i), fact(i-1)] }
@@ -218,6 +279,10 @@ module Math
218
279
  #
219
280
  def self.gamma: (Numeric x) -> Float
220
281
 
282
+ # <!--
283
+ # rdoc-file=math.c
284
+ # - Math.hypot(x, y) -> Float
285
+ # -->
221
286
  # Returns sqrt(x**2 + y**2), the hypotenuse of a right-angled triangle with
222
287
  # sides `x` and `y`.
223
288
  #
@@ -225,6 +290,10 @@ module Math
225
290
  #
226
291
  def self.hypot: (Numeric x, Numeric y) -> Float
227
292
 
293
+ # <!--
294
+ # rdoc-file=math.c
295
+ # - Math.ldexp(fraction, exponent) -> float
296
+ # -->
228
297
  # Returns the value of `fraction`*(2**`exponent`).
229
298
  #
230
299
  # fraction, exponent = Math.frexp(1234)
@@ -232,19 +301,45 @@ module Math
232
301
  #
233
302
  def self.ldexp: (Numeric fraction, Numeric exponent) -> Float
234
303
 
304
+ # <!--
305
+ # rdoc-file=math.c
306
+ # - Math.lgamma(x) -> [float, -1 or 1]
307
+ # -->
235
308
  # Calculates the logarithmic gamma of `x` and the sign of gamma of `x`.
236
309
  #
237
- # Math.lgamma(x) is same as
310
+ # Math.lgamma(x) is the same as
238
311
  # [Math.log(Math.gamma(x).abs), Math.gamma(x) < 0 ? -1 : 1]
239
312
  #
240
- # but avoid overflow by Math.gamma(x) for large x.
313
+ # but avoids overflow by Math.gamma(x) for large x.
241
314
  #
242
315
  # Math.lgamma(0) #=> [Infinity, 1]
243
316
  #
244
317
  def self.lgamma: (Numeric x) -> [ Float, Integer ]
245
318
 
319
+ # <!--
320
+ # rdoc-file=math.c
321
+ # - Math.log(x) -> Float
322
+ # - Math.log(x, base) -> Float
323
+ # -->
324
+ # Returns the logarithm of `x`. If additional second argument is given, it will
325
+ # be the base of logarithm. Otherwise it is `e` (for the natural logarithm).
326
+ #
327
+ # Domain: (0, INFINITY)
328
+ #
329
+ # Codomain: (-INFINITY, INFINITY)
330
+ #
331
+ # Math.log(0) #=> -Infinity
332
+ # Math.log(1) #=> 0.0
333
+ # Math.log(Math::E) #=> 1.0
334
+ # Math.log(Math::E**3) #=> 3.0
335
+ # Math.log(12, 3) #=> 2.2618595071429146
336
+ #
246
337
  def self.log: (Numeric x, ?Numeric base) -> Float
247
338
 
339
+ # <!--
340
+ # rdoc-file=math.c
341
+ # - Math.log10(x) -> Float
342
+ # -->
248
343
  # Returns the base 10 logarithm of `x`.
249
344
  #
250
345
  # Domain: (0, INFINITY)
@@ -257,6 +352,10 @@ module Math
257
352
  #
258
353
  def self.log10: (Numeric x) -> Float
259
354
 
355
+ # <!--
356
+ # rdoc-file=math.c
357
+ # - Math.log2(x) -> Float
358
+ # -->
260
359
  # Returns the base 2 logarithm of `x`.
261
360
  #
262
361
  # Domain: (0, INFINITY)
@@ -270,6 +369,10 @@ module Math
270
369
  #
271
370
  def self.log2: (Numeric x) -> Float
272
371
 
372
+ # <!--
373
+ # rdoc-file=math.c
374
+ # - Math.sin(x) -> Float
375
+ # -->
273
376
  # Computes the sine of `x` (expressed in radians). Returns a Float in the range
274
377
  # -1.0..1.0.
275
378
  #
@@ -281,6 +384,10 @@ module Math
281
384
  #
282
385
  def self.sin: (Numeric x) -> Float
283
386
 
387
+ # <!--
388
+ # rdoc-file=math.c
389
+ # - Math.sinh(x) -> Float
390
+ # -->
284
391
  # Computes the hyperbolic sine of `x` (expressed in radians).
285
392
  #
286
393
  # Domain: (-INFINITY, INFINITY)
@@ -291,6 +398,10 @@ module Math
291
398
  #
292
399
  def self.sinh: (Numeric x) -> Float
293
400
 
401
+ # <!--
402
+ # rdoc-file=math.c
403
+ # - Math.sqrt(x) -> Float
404
+ # -->
294
405
  # Returns the non-negative square root of `x`.
295
406
  #
296
407
  # Domain: [0, INFINITY)
@@ -321,6 +432,10 @@ module Math
321
432
  #
322
433
  def self.sqrt: (Numeric x) -> Float
323
434
 
435
+ # <!--
436
+ # rdoc-file=math.c
437
+ # - Math.tan(x) -> Float
438
+ # -->
324
439
  # Computes the tangent of `x` (expressed in radians).
325
440
  #
326
441
  # Domain: (-INFINITY, INFINITY)
@@ -331,6 +446,10 @@ module Math
331
446
  #
332
447
  def self.tan: (Numeric x) -> Float
333
448
 
449
+ # <!--
450
+ # rdoc-file=math.c
451
+ # - Math.tanh(x) -> Float
452
+ # -->
334
453
  # Computes the hyperbolic tangent of `x` (expressed in radians).
335
454
  #
336
455
  # Domain: (-INFINITY, INFINITY)
@@ -342,17 +461,18 @@ module Math
342
461
  def self.tanh: (Numeric x) -> Float
343
462
  end
344
463
 
464
+ # <!-- rdoc-file=math.c -->
345
465
  # Definition of the mathematical constant E for Euler's number (e) as a Float
346
466
  # number.
347
467
  #
348
- #
349
468
  Math::E: Float
350
469
 
470
+ # <!-- rdoc-file=math.c -->
351
471
  # Definition of the mathematical constant PI as a Float number.
352
472
  #
353
- #
354
473
  Math::PI: Float
355
474
 
475
+ # <!-- rdoc-file=math.c -->
356
476
  # Raised when a mathematical function is evaluated outside of its domain of
357
477
  # definition.
358
478
  #