rbs 3.6.1 → 3.9.5

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 (268) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +2 -2
  3. data/.github/workflows/dependabot.yml +1 -1
  4. data/.github/workflows/ruby.yml +34 -10
  5. data/.github/workflows/windows.yml +20 -3
  6. data/.gitignore +1 -0
  7. data/.rubocop.yml +26 -1
  8. data/CHANGELOG.md +241 -0
  9. data/Rakefile +54 -4
  10. data/config.yml +317 -0
  11. data/core/array.rbs +1756 -1591
  12. data/core/basic_object.rbs +38 -35
  13. data/core/comparable.rbs +1 -1
  14. data/core/complex.rbs +166 -94
  15. data/core/data.rbs +2 -2
  16. data/core/dir.rbs +2 -18
  17. data/core/encoding.rbs +12 -32
  18. data/core/enumerable.rbs +270 -266
  19. data/core/enumerator.rbs +14 -4
  20. data/core/env.rbs +1 -1
  21. data/core/errno.rbs +33 -16
  22. data/core/errors.rbs +6 -2
  23. data/core/exception.rbs +342 -167
  24. data/core/fiber.rbs +3 -2
  25. data/core/file.rbs +26 -75
  26. data/core/float.rbs +125 -72
  27. data/core/gc.rbs +158 -42
  28. data/core/hash.rbs +122 -143
  29. data/core/integer.rbs +79 -50
  30. data/core/io/buffer.rbs +49 -43
  31. data/core/io.rbs +108 -151
  32. data/core/kernel.rbs +341 -209
  33. data/core/match_data.rbs +76 -2
  34. data/core/math.rbs +0 -36
  35. data/core/method.rbs +2 -2
  36. data/core/module.rbs +32 -27
  37. data/core/nil_class.rbs +2 -2
  38. data/core/numeric.rbs +101 -104
  39. data/core/object.rbs +1 -5
  40. data/core/object_space/weak_key_map.rbs +3 -4
  41. data/core/object_space.rbs +3 -3
  42. data/core/proc.rbs +82 -14
  43. data/core/process.rbs +110 -58
  44. data/core/ractor.rbs +57 -4
  45. data/core/range.rbs +114 -87
  46. data/core/rational.rbs +0 -2
  47. data/core/rbs/unnamed/argf.rbs +237 -36
  48. data/core/rbs/unnamed/env_class.rbs +35 -53
  49. data/core/rbs/unnamed/random.rbs +1 -2
  50. data/core/regexp.rbs +10 -56
  51. data/core/ruby_vm.rbs +88 -9
  52. data/core/rubygems/config_file.rbs +3 -0
  53. data/core/rubygems/errors.rbs +3 -6
  54. data/core/rubygems/platform.rbs +0 -9
  55. data/core/rubygems/rubygems.rbs +3 -6
  56. data/core/rubygems/version.rbs +8 -8
  57. data/core/set.rbs +4 -16
  58. data/core/string.rbs +271 -264
  59. data/core/struct.rbs +6 -18
  60. data/core/symbol.rbs +14 -21
  61. data/core/thread.rbs +32 -35
  62. data/core/time.rbs +131 -50
  63. data/core/trace_point.rbs +124 -113
  64. data/core/true_class.rbs +0 -1
  65. data/core/unbound_method.rbs +1 -1
  66. data/core/warning.rbs +9 -2
  67. data/docs/architecture.md +1 -1
  68. data/docs/syntax.md +17 -10
  69. data/ext/rbs_extension/extconf.rb +11 -0
  70. data/ext/rbs_extension/location.c +61 -29
  71. data/ext/rbs_extension/location.h +4 -3
  72. data/ext/rbs_extension/main.c +23 -1
  73. data/ext/rbs_extension/parser.c +506 -517
  74. data/ext/rbs_extension/parserstate.c +109 -30
  75. data/ext/rbs_extension/parserstate.h +6 -4
  76. data/ext/rbs_extension/rbs_extension.h +1 -10
  77. data/{ext/rbs_extension → include/rbs}/constants.h +21 -19
  78. data/include/rbs/ruby_objs.h +72 -0
  79. data/include/rbs/util/rbs_constant_pool.h +219 -0
  80. data/include/rbs.h +7 -0
  81. data/lib/rbs/annotate/annotations.rb +3 -3
  82. data/lib/rbs/annotate/rdoc_source.rb +2 -2
  83. data/lib/rbs/ast/declarations.rb +9 -4
  84. data/lib/rbs/ast/directives.rb +10 -0
  85. data/lib/rbs/ast/members.rb +2 -0
  86. data/lib/rbs/ast/type_param.rb +2 -12
  87. data/lib/rbs/cli/diff.rb +3 -3
  88. data/lib/rbs/cli/validate.rb +2 -1
  89. data/lib/rbs/cli.rb +16 -16
  90. data/lib/rbs/collection/config/lockfile_generator.rb +58 -8
  91. data/lib/rbs/collection/config.rb +5 -3
  92. data/lib/rbs/collection/sources/rubygems.rb +1 -1
  93. data/lib/rbs/collection.rb +1 -0
  94. data/lib/rbs/definition.rb +51 -34
  95. data/lib/rbs/definition_builder/ancestor_builder.rb +5 -3
  96. data/lib/rbs/definition_builder.rb +83 -24
  97. data/lib/rbs/environment.rb +33 -18
  98. data/lib/rbs/environment_loader.rb +6 -1
  99. data/lib/rbs/errors.rb +24 -0
  100. data/lib/rbs/locator.rb +2 -0
  101. data/lib/rbs/method_type.rb +2 -0
  102. data/lib/rbs/namespace.rb +1 -0
  103. data/lib/rbs/parser_aux.rb +40 -3
  104. data/lib/rbs/prototype/rb.rb +20 -12
  105. data/lib/rbs/prototype/rbi.rb +11 -6
  106. data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
  107. data/lib/rbs/prototype/runtime.rb +7 -5
  108. data/lib/rbs/subtractor.rb +3 -3
  109. data/lib/rbs/test/hook.rb +47 -42
  110. data/lib/rbs/test/type_check.rb +7 -5
  111. data/lib/rbs/type_name.rb +14 -9
  112. data/lib/rbs/types.rb +63 -14
  113. data/lib/rbs/unit_test/spy.rb +4 -2
  114. data/lib/rbs/unit_test/type_assertions.rb +19 -13
  115. data/lib/rbs/unit_test/with_aliases.rb +3 -1
  116. data/lib/rbs/validator.rb +7 -1
  117. data/lib/rbs/version.rb +1 -1
  118. data/lib/rbs/writer.rb +10 -5
  119. data/lib/rbs.rb +1 -0
  120. data/lib/rdoc_plugin/parser.rb +2 -2
  121. data/rbs.gemspec +6 -2
  122. data/sig/ancestor_graph.rbs +5 -5
  123. data/sig/annotate/rdoc_source.rbs +2 -0
  124. data/sig/cli.rbs +2 -0
  125. data/sig/collection/config/lockfile_generator.rbs +9 -1
  126. data/sig/declarations.rbs +10 -3
  127. data/sig/definition.rbs +80 -12
  128. data/sig/definition_builder.rbs +18 -4
  129. data/sig/directives.rbs +17 -1
  130. data/sig/environment.rbs +3 -1
  131. data/sig/errors.rbs +19 -0
  132. data/sig/namespace.rbs +2 -3
  133. data/sig/parser.rbs +5 -1
  134. data/sig/prototype/rb.rbs +1 -1
  135. data/sig/resolver/constant_resolver.rbs +2 -2
  136. data/sig/resolver/context.rbs +1 -1
  137. data/sig/subtractor.rbs +1 -1
  138. data/sig/test/type_check.rbs +2 -2
  139. data/sig/type_alias_dependency.rbs +2 -2
  140. data/sig/type_alias_regularity.rbs +6 -6
  141. data/sig/type_param.rbs +4 -4
  142. data/sig/typename.rbs +8 -5
  143. data/sig/types.rbs +1 -1
  144. data/sig/unit_test/spy.rbs +2 -0
  145. data/sig/unit_test/type_assertions.rbs +2 -0
  146. data/sig/use_map.rbs +1 -1
  147. data/sig/validator.rbs +6 -2
  148. data/sig/vendorer.rbs +1 -1
  149. data/sig/writer.rbs +1 -1
  150. data/{ext/rbs_extension → src}/constants.c +35 -36
  151. data/src/ruby_objs.c +799 -0
  152. data/src/util/rbs_constant_pool.c +342 -0
  153. data/stdlib/base64/0/base64.rbs +0 -9
  154. data/stdlib/benchmark/0/benchmark.rbs +11 -2
  155. data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
  156. data/stdlib/cgi/0/core.rbs +60 -3
  157. data/stdlib/cgi/0/manifest.yaml +1 -0
  158. data/stdlib/coverage/0/coverage.rbs +0 -3
  159. data/stdlib/csv/0/csv.rbs +18 -58
  160. data/stdlib/csv/0/manifest.yaml +1 -0
  161. data/stdlib/date/0/date.rbs +27 -42
  162. data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -6
  163. data/stdlib/digest/0/digest.rbs +25 -2
  164. data/stdlib/erb/0/erb.rbs +0 -1
  165. data/stdlib/etc/0/etc.rbs +51 -34
  166. data/stdlib/fileutils/0/fileutils.rbs +3 -44
  167. data/stdlib/io-console/0/io-console.rbs +69 -15
  168. data/stdlib/ipaddr/0/ipaddr.rbs +16 -4
  169. data/stdlib/json/0/json.rbs +107 -120
  170. data/stdlib/logger/0/log_device.rbs +1 -1
  171. data/stdlib/logger/0/logger.rbs +3 -18
  172. data/stdlib/minitest/0/kernel.rbs +2 -2
  173. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
  174. data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
  175. data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
  176. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
  177. data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
  178. data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
  179. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  180. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  181. data/stdlib/minitest/0/minitest/mock.rbs +9 -5
  182. data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
  183. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
  184. data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
  185. data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
  186. data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
  187. data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
  188. data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
  189. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
  190. data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
  191. data/stdlib/minitest/0/minitest/spec.rbs +1 -1
  192. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
  193. data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
  194. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +1 -1
  195. data/stdlib/minitest/0/minitest/test.rbs +7 -14
  196. data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
  197. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  198. data/stdlib/minitest/0/minitest/unit.rbs +1 -2
  199. data/stdlib/minitest/0/minitest.rbs +41 -892
  200. data/stdlib/monitor/0/monitor.rbs +13 -4
  201. data/stdlib/net-http/0/net-http.rbs +42 -109
  202. data/stdlib/nkf/0/nkf.rbs +30 -0
  203. data/stdlib/objspace/0/objspace.rbs +1 -2
  204. data/stdlib/observable/0/observable.rbs +1 -1
  205. data/stdlib/open-uri/0/manifest.yaml +1 -0
  206. data/stdlib/open-uri/0/open-uri.rbs +52 -0
  207. data/stdlib/open3/0/open3.rbs +0 -8
  208. data/stdlib/openssl/0/manifest.yaml +1 -0
  209. data/stdlib/openssl/0/openssl.rbs +235 -143
  210. data/stdlib/optparse/0/optparse.rbs +58 -18
  211. data/stdlib/pathname/0/pathname.rbs +2 -8
  212. data/stdlib/pp/0/pp.rbs +3 -1
  213. data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
  214. data/stdlib/pstore/0/pstore.rbs +0 -6
  215. data/stdlib/psych/0/core_ext.rbs +12 -0
  216. data/stdlib/psych/0/psych.rbs +15 -4
  217. data/stdlib/pty/0/pty.rbs +46 -4
  218. data/stdlib/rdoc/0/code_object.rbs +0 -4
  219. data/stdlib/rdoc/0/markup.rbs +10 -12
  220. data/stdlib/rdoc/0/rdoc.rbs +13 -8
  221. data/stdlib/resolv/0/resolv.rbs +21 -12
  222. data/stdlib/ripper/0/ripper.rbs +0 -2
  223. data/stdlib/securerandom/0/securerandom.rbs +7 -2
  224. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  225. data/stdlib/singleton/0/singleton.rbs +0 -1
  226. data/stdlib/socket/0/addrinfo.rbs +1 -2
  227. data/stdlib/socket/0/basic_socket.rbs +0 -5
  228. data/stdlib/socket/0/socket.rbs +32 -27
  229. data/stdlib/socket/0/tcp_server.rbs +0 -3
  230. data/stdlib/socket/0/tcp_socket.rbs +36 -3
  231. data/stdlib/socket/0/udp_socket.rbs +0 -1
  232. data/stdlib/socket/0/unix_server.rbs +0 -3
  233. data/stdlib/socket/0/unix_socket.rbs +4 -2
  234. data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +1 -1
  235. data/stdlib/strscan/0/string_scanner.rbs +1265 -422
  236. data/stdlib/tempfile/0/tempfile.rbs +135 -28
  237. data/stdlib/time/0/time.rbs +48 -35
  238. data/stdlib/timeout/0/timeout.rbs +11 -8
  239. data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
  240. data/stdlib/tsort/0/tsort.rbs +0 -4
  241. data/stdlib/uri/0/common.rbs +28 -30
  242. data/stdlib/uri/0/ftp.rbs +1 -1
  243. data/stdlib/uri/0/generic.rbs +22 -18
  244. data/stdlib/uri/0/http.rbs +2 -2
  245. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  246. data/stdlib/zlib/0/buf_error.rbs +1 -70
  247. data/stdlib/zlib/0/data_error.rbs +1 -70
  248. data/stdlib/zlib/0/deflate.rbs +8 -72
  249. data/stdlib/zlib/0/error.rbs +1 -70
  250. data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
  251. data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
  252. data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
  253. data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
  254. data/stdlib/zlib/0/gzip_file.rbs +1 -71
  255. data/stdlib/zlib/0/gzip_reader.rbs +3 -74
  256. data/stdlib/zlib/0/gzip_writer.rbs +1 -70
  257. data/stdlib/zlib/0/inflate.rbs +4 -71
  258. data/stdlib/zlib/0/mem_error.rbs +1 -70
  259. data/stdlib/zlib/0/need_dict.rbs +1 -70
  260. data/stdlib/zlib/0/stream_end.rbs +1 -70
  261. data/stdlib/zlib/0/stream_error.rbs +1 -70
  262. data/stdlib/zlib/0/version_error.rbs +1 -70
  263. data/stdlib/zlib/0/zlib.rbs +0 -2
  264. data/stdlib/zlib/0/zstream.rbs +4 -72
  265. metadata +17 -13
  266. data/ext/rbs_extension/ruby_objs.c +0 -602
  267. data/ext/rbs_extension/ruby_objs.h +0 -51
  268. data/stdlib/minitest/0/manifest.yaml +0 -2
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: (?Integer fraction_digits) -> String
1633
+
1553
1634
  # <!--
1554
1635
  # rdoc-file=time.c
1555
1636
  # - yday -> integer