rbs 3.7.0 → 3.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) 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 +68 -0
  5. data/core/array.rbs +1756 -1591
  6. data/core/basic_object.rbs +38 -35
  7. data/core/comparable.rbs +1 -1
  8. data/core/complex.rbs +166 -94
  9. data/core/data.rbs +1 -1
  10. data/core/dir.rbs +1 -17
  11. data/core/encoding.rbs +12 -32
  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 +6 -2
  17. data/core/exception.rbs +235 -169
  18. data/core/fiber.rbs +3 -2
  19. data/core/file.rbs +26 -75
  20. data/core/float.rbs +125 -72
  21. data/core/gc.rbs +156 -40
  22. data/core/hash.rbs +122 -143
  23. data/core/integer.rbs +79 -50
  24. data/core/io/buffer.rbs +49 -43
  25. data/core/io.rbs +99 -146
  26. data/core/kernel.rbs +292 -202
  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 +2 -2
  31. data/core/numeric.rbs +101 -104
  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 +80 -12
  36. data/core/process.rbs +109 -57
  37. data/core/ractor.rbs +54 -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 +6 -54
  44. data/core/ruby_vm.rbs +88 -9
  45. data/core/rubygems/config_file.rbs +3 -0
  46. data/core/rubygems/errors.rbs +3 -6
  47. data/core/rubygems/platform.rbs +0 -9
  48. data/core/rubygems/rubygems.rbs +3 -6
  49. data/core/rubygems/version.rbs +6 -6
  50. data/core/set.rbs +3 -15
  51. data/core/string.rbs +256 -260
  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 +131 -50
  56. data/core/trace_point.rbs +124 -113
  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 +268 -293
  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/types.rb +2 -1
  80. data/lib/rbs/unit_test/type_assertions.rb +2 -2
  81. data/lib/rbs/validator.rb +3 -1
  82. data/lib/rbs/version.rb +1 -1
  83. data/lib/rdoc_plugin/parser.rb +2 -2
  84. data/rbs.gemspec +4 -0
  85. data/sig/ancestor_graph.rbs +4 -4
  86. data/sig/namespace.rbs +2 -3
  87. data/sig/resolver/constant_resolver.rbs +2 -2
  88. data/sig/resolver/context.rbs +1 -1
  89. data/sig/type_alias_regularity.rbs +5 -5
  90. data/sig/typename.rbs +8 -5
  91. data/sig/use_map.rbs +1 -1
  92. data/sig/validator.rbs +2 -2
  93. data/stdlib/base64/0/base64.rbs +0 -9
  94. data/stdlib/benchmark/0/benchmark.rbs +11 -2
  95. data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
  96. data/stdlib/cgi/0/core.rbs +47 -0
  97. data/stdlib/coverage/0/coverage.rbs +0 -3
  98. data/stdlib/csv/0/csv.rbs +18 -58
  99. data/stdlib/date/0/date.rbs +27 -42
  100. data/stdlib/did_you_mean/0/did_you_mean.rbs +0 -5
  101. data/stdlib/digest/0/digest.rbs +25 -2
  102. data/stdlib/erb/0/erb.rbs +0 -1
  103. data/stdlib/etc/0/etc.rbs +51 -34
  104. data/stdlib/fileutils/0/fileutils.rbs +3 -44
  105. data/stdlib/io-console/0/io-console.rbs +69 -15
  106. data/stdlib/ipaddr/0/ipaddr.rbs +8 -4
  107. data/stdlib/json/0/json.rbs +56 -71
  108. data/stdlib/logger/0/log_device.rbs +1 -1
  109. data/stdlib/logger/0/logger.rbs +3 -18
  110. data/stdlib/net-http/0/net-http.rbs +39 -106
  111. data/stdlib/nkf/0/nkf.rbs +30 -0
  112. data/stdlib/objspace/0/objspace.rbs +1 -2
  113. data/stdlib/observable/0/observable.rbs +1 -1
  114. data/stdlib/open-uri/0/open-uri.rbs +52 -0
  115. data/stdlib/open3/0/open3.rbs +0 -8
  116. data/stdlib/openssl/0/openssl.rbs +136 -69
  117. data/stdlib/optparse/0/optparse.rbs +58 -18
  118. data/stdlib/pathname/0/pathname.rbs +2 -8
  119. data/stdlib/pp/0/pp.rbs +3 -1
  120. data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
  121. data/stdlib/pstore/0/pstore.rbs +0 -6
  122. data/stdlib/psych/0/psych.rbs +15 -4
  123. data/stdlib/pty/0/pty.rbs +46 -4
  124. data/stdlib/rdoc/0/code_object.rbs +0 -4
  125. data/stdlib/rdoc/0/markup.rbs +10 -12
  126. data/stdlib/rdoc/0/rdoc.rbs +13 -8
  127. data/stdlib/resolv/0/resolv.rbs +13 -4
  128. data/stdlib/ripper/0/ripper.rbs +0 -2
  129. data/stdlib/securerandom/0/securerandom.rbs +7 -2
  130. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  131. data/stdlib/singleton/0/singleton.rbs +0 -1
  132. data/stdlib/socket/0/addrinfo.rbs +0 -1
  133. data/stdlib/socket/0/basic_socket.rbs +0 -5
  134. data/stdlib/socket/0/socket.rbs +32 -27
  135. data/stdlib/socket/0/tcp_server.rbs +0 -3
  136. data/stdlib/socket/0/tcp_socket.rbs +36 -3
  137. data/stdlib/socket/0/udp_socket.rbs +0 -1
  138. data/stdlib/socket/0/unix_server.rbs +0 -3
  139. data/stdlib/strscan/0/string_scanner.rbs +1265 -422
  140. data/stdlib/tempfile/0/tempfile.rbs +135 -28
  141. data/stdlib/time/0/time.rbs +48 -35
  142. data/stdlib/timeout/0/timeout.rbs +11 -8
  143. data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
  144. data/stdlib/tsort/0/tsort.rbs +0 -4
  145. data/stdlib/uri/0/common.rbs +11 -30
  146. data/stdlib/uri/0/ftp.rbs +1 -1
  147. data/stdlib/uri/0/generic.rbs +22 -18
  148. data/stdlib/uri/0/http.rbs +2 -2
  149. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  150. data/stdlib/zlib/0/buf_error.rbs +1 -70
  151. data/stdlib/zlib/0/data_error.rbs +1 -70
  152. data/stdlib/zlib/0/deflate.rbs +8 -72
  153. data/stdlib/zlib/0/error.rbs +1 -70
  154. data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
  155. data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
  156. data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
  157. data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
  158. data/stdlib/zlib/0/gzip_file.rbs +1 -71
  159. data/stdlib/zlib/0/gzip_reader.rbs +3 -74
  160. data/stdlib/zlib/0/gzip_writer.rbs +1 -70
  161. data/stdlib/zlib/0/inflate.rbs +4 -71
  162. data/stdlib/zlib/0/mem_error.rbs +1 -70
  163. data/stdlib/zlib/0/need_dict.rbs +1 -70
  164. data/stdlib/zlib/0/stream_end.rbs +1 -70
  165. data/stdlib/zlib/0/stream_error.rbs +1 -70
  166. data/stdlib/zlib/0/version_error.rbs +1 -70
  167. data/stdlib/zlib/0/zlib.rbs +0 -2
  168. data/stdlib/zlib/0/zstream.rbs +4 -72
  169. metadata +3 -6
data/core/time.rbs CHANGED
@@ -45,6 +45,42 @@
45
45
  # A `Time` object derived from the system clock (for example, by method
46
46
  # Time.now) has the resolution supported by the system.
47
47
  #
48
+ # ## Time Internal Representation
49
+ #
50
+ # Time implementation uses a signed 63 bit integer, Integer, or Rational. It is
51
+ # a number of nanoseconds since the *Epoch*. The signed 63 bit integer can
52
+ # represent 1823-11-12 to 2116-02-20. When Integer or Rational is used (before
53
+ # 1823, after 2116, under nanosecond), Time works slower than when the signed 63
54
+ # bit integer is used.
55
+ #
56
+ # Ruby uses the C function `localtime` and `gmtime` to map between the number
57
+ # and 6-tuple (year,month,day,hour,minute,second). `localtime` is used for local
58
+ # time and "gmtime" is used for UTC.
59
+ #
60
+ # Integer and Rational has no range limit, but the localtime and gmtime has
61
+ # range limits due to the C types `time_t` and `struct tm`. If that limit is
62
+ # exceeded, Ruby extrapolates the localtime function.
63
+ #
64
+ # The Time class always uses the Gregorian calendar. I.e. the proleptic
65
+ # Gregorian calendar is used. Other calendars, such as Julian calendar, are not
66
+ # supported.
67
+ #
68
+ # `time_t` can represent 1901-12-14 to 2038-01-19 if it is 32 bit signed
69
+ # integer, -292277022657-01-27 to 292277026596-12-05 if it is 64 bit signed
70
+ # integer. However `localtime` on some platforms doesn't supports negative
71
+ # `time_t` (before 1970).
72
+ #
73
+ # `struct tm` has *tm_year* member to represent years. (`tm_year = 0` means the
74
+ # year 1900.) It is defined as `int` in the C standard. *tm_year* can represent
75
+ # between -2147481748 to 2147485547 if `int` is 32 bit.
76
+ #
77
+ # Ruby supports leap seconds as far as if the C function `localtime` and
78
+ # `gmtime` supports it. They use the tz database in most Unix systems. The tz
79
+ # database has timezones which supports leap seconds. For example, "Asia/Tokyo"
80
+ # doesn't support leap seconds but "right/Asia/Tokyo" supports leap seconds. So,
81
+ # Ruby supports leap seconds if the TZ environment variable is set to
82
+ # "right/Asia/Tokyo" in most Unix systems.
83
+ #
48
84
  # ## Examples
49
85
  #
50
86
  # All of these examples were done using the EST timezone which is GMT-5.
@@ -127,16 +163,14 @@
127
163
  # * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
128
164
  # * Includes [module Comparable](rdoc-ref:Comparable@What-27s+Here).
129
165
  #
130
- #
131
166
  # Here, class `Time` provides methods that are useful for:
132
167
  #
133
- # * {Creating `Time`[objects}](rdoc-ref:Time@Methods+for+Creating).
134
- # * {Fetching `Time`[values}](rdoc-ref:Time@Methods+for+Fetching).
135
- # * {Querying a `Time`[object}](rdoc-ref:Time@Methods+for+Querying).
136
- # * {Comparing `Time`[objects}](rdoc-ref:Time@Methods+for+Comparing).
137
- # * {Converting a `Time`[object}](rdoc-ref:Time@Methods+for+Converting).
138
- # * {Rounding a `Time`[}](rdoc-ref:Time@Methods+for+Rounding).
139
- #
168
+ # * [Creating Time objects](rdoc-ref:Time@Methods+for+Creating).
169
+ # * [Fetching Time values](rdoc-ref:Time@Methods+for+Fetching).
170
+ # * [Querying a Time object](rdoc-ref:Time@Methods+for+Querying).
171
+ # * [Comparing Time objects](rdoc-ref:Time@Methods+for+Comparing).
172
+ # * [Converting a Time object](rdoc-ref:Time@Methods+for+Converting).
173
+ # * [Rounding a Time](rdoc-ref:Time@Methods+for+Rounding).
140
174
  #
141
175
  # ### Methods for Creating
142
176
  #
@@ -150,7 +184,6 @@
150
184
  # * #+ (plus): Returns a new time increased by the given number of seconds.
151
185
  # * #- (minus): Returns a new time decreased by the given number of seconds.
152
186
  #
153
- #
154
187
  # ### Methods for Fetching
155
188
  #
156
189
  # * #year: Returns the year of the time.
@@ -175,7 +208,6 @@
175
208
  # * #to_r: Returns the Rational number of seconds since epoch for the time.
176
209
  # * #zone: Returns a string representation of the timezone of the time.
177
210
  #
178
- #
179
211
  # ### Methods for Querying
180
212
  #
181
213
  # * #utc? (aliased as #gmt?): Returns whether the time is UTC.
@@ -189,13 +221,11 @@
189
221
  # * #friday?: Returns whether time is a Friday.
190
222
  # * #saturday?: Returns whether the time is a Saturday.
191
223
  #
192
- #
193
224
  # ### Methods for Comparing
194
225
  #
195
226
  # * #<=>: Compares `self` to another time.
196
227
  # * #eql?: Returns whether the time is equal to another time.
197
228
  #
198
- #
199
229
  # ### Methods for Converting
200
230
  #
201
231
  # * #asctime (aliased as #ctime): Returns the time as a string.
@@ -210,14 +240,12 @@
210
240
  # * #deconstruct_keys: Returns a hash of time components used in
211
241
  # pattern-matching.
212
242
  #
213
- #
214
243
  # ### Methods for Rounding
215
244
  #
216
245
  # * #round:Returns a new time with subseconds rounded.
217
246
  # * #ceil: Returns a new time with subseconds raised to a ceiling.
218
247
  # * #floor: Returns a new time with subseconds lowered to a floor.
219
248
  #
220
- #
221
249
  # For the forms of argument `zone`, see [Timezone
222
250
  # Specifiers](rdoc-ref:Time@Timezone+Specifiers).
223
251
  #
@@ -231,7 +259,6 @@
231
259
  # * Time#getlocal: positional argument `zone`.
232
260
  # * Time#localtime: positional argument `zone`.
233
261
  #
234
- #
235
262
  # The value given with any of these must be one of the following (each detailed
236
263
  # below):
237
264
  #
@@ -241,7 +268,6 @@
241
268
  # * [Timezone object](rdoc-ref:Time@Timezone+Objects).
242
269
  # * [Timezone name](rdoc-ref:Time@Timezone+Names).
243
270
  #
244
- #
245
271
  # ### Hours/Minutes Offsets
246
272
  #
247
273
  # The zone value may be a string offset from UTC in the form `'+HH:MM'` or
@@ -250,7 +276,6 @@
250
276
  # * `HH` is the 2-digit hour in the range `0..23`.
251
277
  # * `MM` is the 2-digit minute in the range `0..59`.
252
278
  #
253
- #
254
279
  # Examples:
255
280
  #
256
281
  # t = Time.utc(2000, 1, 1, 20, 15, 1) # => 2000-01-01 20:15:01 UTC
@@ -289,22 +314,33 @@
289
314
  #
290
315
  # * `local_to_utc`:
291
316
  #
292
- # * Called when Time.new is invoked with `tz` as the value of positional
293
- # argument `zone` or keyword argument `in:`.
294
- # * Argument: a [Time-like object](rdoc-ref:Time@Time-Like+Objects).
295
- # * Returns: a [Time-like object](rdoc-ref:Time@Time-Like+Objects) in the
296
- # UTC timezone.
317
+ # Called when Time.new is invoked with `tz` as the value of positional
318
+ # argument `zone` or keyword argument `in:`.
319
+ #
320
+ # Argument
321
+ # : a [Time-like object](rdoc-ref:Time@Time-Like+Objects).
322
+ #
323
+ # Returns
324
+ # : a [Time-like object](rdoc-ref:Time@Time-Like+Objects) in the UTC
325
+ # timezone.
297
326
  #
298
327
  #
299
328
  # * `utc_to_local`:
300
329
  #
301
- # * Called when Time.at or Time.now is invoked with `tz` as the value for
302
- # keyword argument `in:`, and when Time#getlocal or Time#localtime is
303
- # called with `tz` as the value for positional argument `zone`.
304
- # * Argument: a [Time-like object](rdoc-ref:Time@Time-Like+Objects).
305
- # * Returns: a [Time-like object](rdoc-ref:Time@Time-Like+Objects) in the
306
- # local timezone.
330
+ # Called when Time.at or Time.now is invoked with `tz` as the value for
331
+ # keyword argument `in:`, and when Time#getlocal or Time#localtime is called
332
+ # with `tz` as the value for positional argument `zone`.
333
+ #
334
+ # The UTC offset will be calculated as the difference between the original
335
+ # time and the returned object as an `Integer`. If the object is in fixed
336
+ # offset, its `utc_offset` is also counted.
337
+ #
338
+ # Argument
339
+ # : a [Time-like object](rdoc-ref:Time@Time-Like+Objects).
307
340
  #
341
+ # Returns
342
+ # : a [Time-like object](rdoc-ref:Time@Time-Like+Objects) in the local
343
+ # timezone.
308
344
  #
309
345
  #
310
346
  # A custom timezone class may have these instance methods, which will be called
@@ -312,26 +348,37 @@
312
348
  #
313
349
  # * `abbr`:
314
350
  #
315
- # * Called when Time#strftime is invoked with a format involving `%Z`.
316
- # * Argument: a [Time-like object](rdoc-ref:Time@Time-Like+Objects).
317
- # * Returns: a string abbreviation for the timezone name.
351
+ # Called when Time#strftime is invoked with a format involving `%Z`.
352
+ #
353
+ # Argument
354
+ # : a [Time-like object](rdoc-ref:Time@Time-Like+Objects).
355
+ #
356
+ # Returns
357
+ # : a string abbreviation for the timezone name.
318
358
  #
319
359
  #
320
360
  # * `dst?`:
321
361
  #
322
- # * Called when Time.at or Time.now is invoked with `tz` as the value for
323
- # keyword argument `in:`, and when Time#getlocal or Time#localtime is
324
- # called with `tz` as the value for positional argument `zone`.
325
- # * Argument: a [Time-like object](rdoc-ref:Time@Time-Like+Objects).
326
- # * Returns: whether the time is daylight saving time.
362
+ # Called when Time.at or Time.now is invoked with `tz` as the value for
363
+ # keyword argument `in:`, and when Time#getlocal or Time#localtime is called
364
+ # with `tz` as the value for positional argument `zone`.
365
+ #
366
+ # Argument
367
+ # : a [Time-like object](rdoc-ref:Time@Time-Like+Objects).
368
+ #
369
+ # Returns
370
+ # : whether the time is daylight saving time.
327
371
  #
328
372
  #
329
373
  # * `name`:
330
374
  #
331
- # * Called when `Marshal.dump(t)` is invoked
332
- # * Argument: none.
333
- # * Returns: the string name of the timezone.
375
+ # Called when `Marshal.dump(t)` is invoked
376
+ #
377
+ # Argument
378
+ # : none.
334
379
  #
380
+ # Returns
381
+ # : the string name of the timezone.
335
382
  #
336
383
  #
337
384
  # #### `Time`-Like Objects
@@ -358,7 +405,6 @@
358
405
  # * `isdst`
359
406
  # * `to_i`
360
407
  #
361
- #
362
408
  # For a returned `Integer`, its components, decomposed in UTC, are interpreted
363
409
  # as times in the specified timezone.
364
410
  #
@@ -424,7 +470,6 @@ class Time < Object
424
470
  # * A numeric number of [Epoch seconds](rdoc-ref:Time@Epoch+Seconds) for the
425
471
  # returned time.
426
472
  #
427
- #
428
473
  # Examples:
429
474
  #
430
475
  # t = Time.new(2000, 12, 31, 23, 59, 59) # => 2000-12-31 23:59:59 -0600
@@ -460,7 +505,6 @@ class Time < Object
460
505
  # Time.at(secs, 1000000000, :nanosecond) # => 2001-01-01 00:00:00 -0600
461
506
  # Time.at(secs, -1000000000, :nanosecond) # => 2000-12-31 23:59:58 -0600
462
507
  #
463
- #
464
508
  # Optional keyword argument `in: zone` specifies the timezone for the returned
465
509
  # time:
466
510
  #
@@ -527,7 +571,6 @@ class Time < Object
527
571
  # Time.utc(2000, 1, 1, 0, 0, 0, 0) # => 2000-01-01 00:00:00 UTC
528
572
  # Time.utc(2000, 1, 1, 0, 0, 0, 999999) # => 2000-01-01 00:00:00.999999 UTC
529
573
  #
530
- #
531
574
  # The values may be:
532
575
  #
533
576
  # * Integers, as above.
@@ -542,7 +585,6 @@ class Time < Object
542
585
  # # => ["0", "1", "1", "0", "0", "0", "0", "0"]
543
586
  # Time.utc(*a) # => 0000-01-01 00:00:00 UTC
544
587
  #
545
- #
546
588
  # When exactly ten arguments are given, the arguments are interpreted as in the
547
589
  # second calling sequence above:
548
590
  #
@@ -659,7 +701,6 @@ class Time < Object
659
701
  # Time.utc(2000, 1, 1, 0, 0, 0, 0) # => 2000-01-01 00:00:00 UTC
660
702
  # Time.utc(2000, 1, 1, 0, 0, 0, 999999) # => 2000-01-01 00:00:00.999999 UTC
661
703
  #
662
- #
663
704
  # The values may be:
664
705
  #
665
706
  # * Integers, as above.
@@ -674,7 +715,6 @@ class Time < Object
674
715
  # # => ["0", "1", "1", "0", "0", "0", "0", "0"]
675
716
  # Time.utc(*a) # => 0000-01-01 00:00:00 UTC
676
717
  #
677
- #
678
718
  # When exactly ten arguments are given, the arguments are interpreted as in the
679
719
  # second calling sequence above:
680
720
  #
@@ -756,7 +796,6 @@ class Time < Object
756
796
  # * `1`, if `self` is greater then `other_time`.
757
797
  # * `nil`, if `self` and `other_time` are incomparable.
758
798
  #
759
- #
760
799
  # Examples:
761
800
  #
762
801
  # t = Time.now # => 2007-11-19 08:12:12 -0600
@@ -1066,7 +1105,6 @@ class Time < Object
1066
1105
  # Time.new(2000, 1, 1, 0, 0, 59.5) # => 2000-12-31 23:59:59.5 +0900
1067
1106
  # Time.new(2000, 1, 1, 0, 0, 59.7r) # => 2000-12-31 23:59:59.7 +0900
1068
1107
  #
1069
- #
1070
1108
  # These values may be:
1071
1109
  #
1072
1110
  # * Integers, as above.
@@ -1081,7 +1119,6 @@ class Time < Object
1081
1119
  # # => ["0", "1", "1", "0", "0", "0"]
1082
1120
  # Time.new(*a) # => 0000-01-01 00:00:00 -0600
1083
1121
  #
1084
- #
1085
1122
  # When positional argument `zone` or keyword argument `in:` is given, the new
1086
1123
  # `Time` object is in the specified timezone. For the forms of argument `zone`,
1087
1124
  # see [Timezone Specifiers](rdoc-ref:Time@Timezone+Specifiers):
@@ -1138,6 +1175,25 @@ class Time < Object
1138
1175
  #
1139
1176
  def isdst: () -> bool
1140
1177
 
1178
+ # <!-- rdoc-file=lib/time.rb -->
1179
+ # Parses `time` as a dateTime defined by the XML Schema and converts it to a
1180
+ # Time object. The format is a restricted version of the format defined by ISO
1181
+ # 8601.
1182
+ #
1183
+ # ArgumentError is raised if `time` is not compliant with the format or if the
1184
+ # Time class cannot represent the specified time.
1185
+ #
1186
+ # See #xmlschema for more information on this format.
1187
+ #
1188
+ # require 'time'
1189
+ #
1190
+ # Time.xmlschema("2011-10-05T22:26:12-04:00")
1191
+ # #=> 2011-10-05 22:26:12-04:00
1192
+ #
1193
+ # You must require 'time' to use this method.
1194
+ #
1195
+ alias iso8601 xmlschema
1196
+
1141
1197
  # <!--
1142
1198
  # rdoc-file=time.c
1143
1199
  # - localtime -> self or new_time
@@ -1151,7 +1207,6 @@ class Time < Object
1151
1207
  # t = Time.utc(2000, 1, 1, 20, 15, 1) # => 2000-01-01 20:15:01 UTC
1152
1208
  # t.localtime # => 2000-01-01 14:15:01 -0600
1153
1209
  #
1154
- #
1155
1210
  # With argument `zone` given, returns the new `Time` object created by
1156
1211
  # converting `self` to the given time zone:
1157
1212
  #
@@ -1550,6 +1605,32 @@ class Time < Object
1550
1605
  #
1551
1606
  def wednesday?: () -> bool
1552
1607
 
1608
+ # <!--
1609
+ # rdoc-file=lib/time.rb
1610
+ # - xmlschema(fraction_digits=0)
1611
+ # -->
1612
+ # Returns a string which represents the time as a dateTime defined by XML
1613
+ # Schema:
1614
+ #
1615
+ # CCYY-MM-DDThh:mm:ssTZD
1616
+ # CCYY-MM-DDThh:mm:ss.sssTZD
1617
+ #
1618
+ # where TZD is Z or [+-]hh:mm.
1619
+ #
1620
+ # If self is a UTC time, Z is used as TZD. [+-]hh:mm is used otherwise.
1621
+ #
1622
+ # `fraction_digits` specifies a number of digits to use for fractional seconds.
1623
+ # Its default value is 0.
1624
+ #
1625
+ # require 'time'
1626
+ #
1627
+ # t = Time.now
1628
+ # t.iso8601 # => "2011-10-05T22:26:12-04:00"
1629
+ #
1630
+ # You must require 'time' to use this method.
1631
+ #
1632
+ def xmlschema: () -> String
1633
+
1553
1634
  # <!--
1554
1635
  # rdoc-file=time.c
1555
1636
  # - yday -> integer