rbs 3.7.0.pre.1 → 3.8.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +3 -3
  3. data/.github/workflows/ruby.yml +7 -7
  4. data/CHANGELOG.md +58 -0
  5. data/core/array.rbs +1743 -1580
  6. data/core/basic_object.rbs +38 -35
  7. data/core/comparable.rbs +1 -1
  8. data/core/complex.rbs +165 -93
  9. data/core/data.rbs +1 -1
  10. data/core/dir.rbs +1 -17
  11. data/core/encoding.rbs +12 -6
  12. data/core/enumerable.rbs +270 -266
  13. data/core/enumerator.rbs +0 -2
  14. data/core/env.rbs +1 -1
  15. data/core/errno.rbs +33 -16
  16. data/core/errors.rbs +2 -2
  17. data/core/exception.rbs +236 -170
  18. data/core/fiber.rbs +3 -2
  19. data/core/file.rbs +32 -74
  20. data/core/float.rbs +125 -72
  21. data/core/gc.rbs +138 -40
  22. data/core/hash.rbs +120 -141
  23. data/core/integer.rbs +79 -50
  24. data/core/io/buffer.rbs +49 -43
  25. data/core/io.rbs +97 -144
  26. data/core/kernel.rbs +290 -200
  27. data/core/match_data.rbs +76 -2
  28. data/core/math.rbs +0 -36
  29. data/core/module.rbs +28 -23
  30. data/core/nil_class.rbs +0 -3
  31. data/core/numeric.rbs +100 -103
  32. data/core/object.rbs +0 -4
  33. data/core/object_space/weak_key_map.rbs +3 -4
  34. data/core/object_space.rbs +3 -3
  35. data/core/proc.rbs +0 -2
  36. data/core/process.rbs +109 -57
  37. data/core/ractor.rbs +37 -4
  38. data/core/range.rbs +114 -87
  39. data/core/rational.rbs +0 -2
  40. data/core/rbs/unnamed/argf.rbs +234 -33
  41. data/core/rbs/unnamed/env_class.rbs +35 -53
  42. data/core/rbs/unnamed/random.rbs +1 -2
  43. data/core/regexp.rbs +4 -52
  44. data/core/ruby_vm.rbs +88 -9
  45. data/core/rubygems/config_file.rbs +3 -0
  46. data/core/rubygems/errors.rbs +0 -5
  47. data/core/rubygems/platform.rbs +0 -9
  48. data/core/rubygems/rubygems.rbs +0 -5
  49. data/core/rubygems/version.rbs +6 -6
  50. data/core/set.rbs +3 -15
  51. data/core/string.rbs +130 -136
  52. data/core/struct.rbs +6 -18
  53. data/core/symbol.rbs +14 -21
  54. data/core/thread.rbs +32 -35
  55. data/core/time.rbs +127 -50
  56. data/core/trace_point.rbs +16 -0
  57. data/core/true_class.rbs +0 -1
  58. data/core/warning.rbs +9 -2
  59. data/docs/architecture.md +1 -1
  60. data/docs/syntax.md +1 -1
  61. data/ext/rbs_extension/location.c +29 -19
  62. data/ext/rbs_extension/parser.c +267 -292
  63. data/ext/rbs_extension/parserstate.c +56 -22
  64. data/lib/rbs/annotate/annotations.rb +3 -3
  65. data/lib/rbs/annotate/rdoc_source.rb +2 -2
  66. data/lib/rbs/cli/diff.rb +3 -3
  67. data/lib/rbs/cli/validate.rb +1 -1
  68. data/lib/rbs/cli.rb +13 -13
  69. data/lib/rbs/collection/config.rb +3 -1
  70. data/lib/rbs/definition_builder/ancestor_builder.rb +3 -3
  71. data/lib/rbs/environment_loader.rb +1 -1
  72. data/lib/rbs/namespace.rb +1 -0
  73. data/lib/rbs/parser_aux.rb +2 -2
  74. data/lib/rbs/prototype/rb.rb +11 -8
  75. data/lib/rbs/prototype/rbi.rb +9 -5
  76. data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
  77. data/lib/rbs/prototype/runtime.rb +4 -5
  78. data/lib/rbs/type_name.rb +14 -9
  79. data/lib/rbs/unit_test/type_assertions.rb +2 -2
  80. data/lib/rbs/validator.rb +3 -1
  81. data/lib/rbs/version.rb +1 -1
  82. data/lib/rdoc_plugin/parser.rb +2 -2
  83. data/rbs.gemspec +4 -0
  84. data/sig/ancestor_graph.rbs +4 -4
  85. data/sig/namespace.rbs +2 -3
  86. data/sig/resolver/constant_resolver.rbs +2 -2
  87. data/sig/resolver/context.rbs +1 -1
  88. data/sig/type_alias_regularity.rbs +5 -5
  89. data/sig/typename.rbs +8 -5
  90. data/sig/use_map.rbs +1 -1
  91. data/sig/validator.rbs +2 -2
  92. data/stdlib/base64/0/base64.rbs +0 -9
  93. data/stdlib/benchmark/0/benchmark.rbs +11 -2
  94. data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
  95. data/stdlib/cgi/0/core.rbs +47 -0
  96. data/stdlib/coverage/0/coverage.rbs +0 -3
  97. data/stdlib/csv/0/csv.rbs +18 -58
  98. data/stdlib/date/0/date.rbs +4 -19
  99. data/stdlib/did_you_mean/0/did_you_mean.rbs +0 -5
  100. data/stdlib/digest/0/digest.rbs +25 -2
  101. data/stdlib/erb/0/erb.rbs +0 -1
  102. data/stdlib/etc/0/etc.rbs +51 -34
  103. data/stdlib/fileutils/0/fileutils.rbs +3 -44
  104. data/stdlib/io-console/0/io-console.rbs +69 -15
  105. data/stdlib/ipaddr/0/ipaddr.rbs +8 -4
  106. data/stdlib/json/0/json.rbs +56 -71
  107. data/stdlib/logger/0/log_device.rbs +1 -1
  108. data/stdlib/logger/0/logger.rbs +3 -18
  109. data/stdlib/net-http/0/net-http.rbs +19 -77
  110. data/stdlib/nkf/0/nkf.rbs +30 -0
  111. data/stdlib/objspace/0/objspace.rbs +1 -2
  112. data/stdlib/observable/0/observable.rbs +1 -1
  113. data/stdlib/open-uri/0/open-uri.rbs +52 -0
  114. data/stdlib/open3/0/open3.rbs +0 -8
  115. data/stdlib/openssl/0/openssl.rbs +136 -69
  116. data/stdlib/optparse/0/optparse.rbs +58 -18
  117. data/stdlib/pathname/0/pathname.rbs +2 -8
  118. data/stdlib/pp/0/pp.rbs +3 -1
  119. data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
  120. data/stdlib/pstore/0/pstore.rbs +0 -6
  121. data/stdlib/psych/0/psych.rbs +15 -4
  122. data/stdlib/pty/0/pty.rbs +46 -4
  123. data/stdlib/rdoc/0/code_object.rbs +0 -4
  124. data/stdlib/rdoc/0/markup.rbs +10 -12
  125. data/stdlib/rdoc/0/rdoc.rbs +1 -2
  126. data/stdlib/resolv/0/resolv.rbs +8 -3
  127. data/stdlib/ripper/0/ripper.rbs +0 -2
  128. data/stdlib/securerandom/0/securerandom.rbs +0 -2
  129. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  130. data/stdlib/singleton/0/singleton.rbs +0 -1
  131. data/stdlib/socket/0/addrinfo.rbs +0 -1
  132. data/stdlib/socket/0/basic_socket.rbs +0 -5
  133. data/stdlib/socket/0/socket.rbs +49 -25
  134. data/stdlib/socket/0/tcp_server.rbs +0 -3
  135. data/stdlib/socket/0/tcp_socket.rbs +58 -3
  136. data/stdlib/socket/0/udp_socket.rbs +0 -1
  137. data/stdlib/socket/0/unix_server.rbs +0 -3
  138. data/stdlib/strscan/0/string_scanner.rbs +1265 -422
  139. data/stdlib/tempfile/0/tempfile.rbs +135 -28
  140. data/stdlib/time/0/time.rbs +48 -35
  141. data/stdlib/timeout/0/timeout.rbs +11 -8
  142. data/stdlib/tmpdir/0/tmpdir.rbs +8 -1
  143. data/stdlib/tsort/0/tsort.rbs +0 -4
  144. data/stdlib/uri/0/common.rbs +11 -30
  145. data/stdlib/uri/0/ftp.rbs +1 -1
  146. data/stdlib/uri/0/generic.rbs +22 -18
  147. data/stdlib/uri/0/http.rbs +2 -2
  148. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  149. data/stdlib/zlib/0/buf_error.rbs +1 -70
  150. data/stdlib/zlib/0/data_error.rbs +1 -70
  151. data/stdlib/zlib/0/deflate.rbs +8 -72
  152. data/stdlib/zlib/0/error.rbs +1 -70
  153. data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
  154. data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
  155. data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
  156. data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
  157. data/stdlib/zlib/0/gzip_file.rbs +1 -71
  158. data/stdlib/zlib/0/gzip_reader.rbs +3 -74
  159. data/stdlib/zlib/0/gzip_writer.rbs +1 -70
  160. data/stdlib/zlib/0/inflate.rbs +4 -71
  161. data/stdlib/zlib/0/mem_error.rbs +1 -70
  162. data/stdlib/zlib/0/need_dict.rbs +1 -70
  163. data/stdlib/zlib/0/stream_end.rbs +1 -70
  164. data/stdlib/zlib/0/stream_error.rbs +1 -70
  165. data/stdlib/zlib/0/version_error.rbs +1 -70
  166. data/stdlib/zlib/0/zlib.rbs +0 -2
  167. data/stdlib/zlib/0/zstream.rbs +4 -72
  168. metadata +4 -6
@@ -1,16 +1,58 @@
1
1
  # <!-- rdoc-file=lib/tempfile.rb -->
2
- # A utility class for managing temporary files. When you create a Tempfile
3
- # object, it will create a temporary file with a unique filename. A Tempfile
4
- # objects behaves just like a File object, and you can perform all the usual
5
- # file operations on it: reading data, writing data, changing its permissions,
6
- # etc. So although this class does not explicitly document all instance methods
7
- # supported by File, you can in fact call any File instance method on a Tempfile
8
- # object.
2
+ # A utility class for managing temporary files.
3
+ #
4
+ # There are two kind of methods of creating a temporary file:
5
+ #
6
+ # * Tempfile.create (recommended)
7
+ # * Tempfile.new and Tempfile.open (mostly for backward compatibility, not
8
+ # recommended)
9
+ #
10
+ # Tempfile.create creates a usual File object. The timing of file deletion is
11
+ # predictable. Also, it supports open-and-unlink technique which removes the
12
+ # temporary file immediately after creation.
13
+ #
14
+ # Tempfile.new and Tempfile.open creates a Tempfile object. The created file is
15
+ # removed by the GC (finalizer). The timing of file deletion is not predictable.
9
16
  #
10
17
  # ## Synopsis
11
18
  #
12
19
  # require 'tempfile'
13
20
  #
21
+ # # Tempfile.create with a block
22
+ # # The filename are choosen automatically.
23
+ # # (You can specify the prefix and suffix of the filename by an optional argument.)
24
+ # Tempfile.create {|f|
25
+ # f.puts "foo"
26
+ # f.rewind
27
+ # f.read # => "foo\n"
28
+ # } # The file is removed at block exit.
29
+ #
30
+ # # Tempfile.create without a block
31
+ # # You need to unlink the file in non-block form.
32
+ # f = Tempfile.create
33
+ # f.puts "foo"
34
+ # f.close
35
+ # File.unlink(f.path) # You need to unlink the file.
36
+ #
37
+ # # Tempfile.create(anonymous: true) without a block
38
+ # f = Tempfile.create(anonymous: true)
39
+ # # The file is already removed because anonymous.
40
+ # f.path # => "/tmp/" (no filename since no file)
41
+ # f.puts "foo"
42
+ # f.rewind
43
+ # f.read # => "foo\n"
44
+ # f.close
45
+ #
46
+ # # Tempfile.create(anonymous: true) with a block
47
+ # Tempfile.create(anonymous: true) {|f|
48
+ # # The file is already removed because anonymous.
49
+ # f.path # => "/tmp/" (no filename since no file)
50
+ # f.puts "foo"
51
+ # f.rewind
52
+ # f.read # => "foo\n"
53
+ # }
54
+ #
55
+ # # Not recommended: Tempfile.new without a block
14
56
  # file = Tempfile.new('foo')
15
57
  # file.path # => A unique filename in the OS's temp directory,
16
58
  # # e.g.: "/tmp/foo.24722.0"
@@ -21,7 +63,27 @@
21
63
  # file.close
22
64
  # file.unlink # deletes the temp file
23
65
  #
24
- # ## Good practices
66
+ # ## About Tempfile.new and Tempfile.open
67
+ #
68
+ # This section does not apply to Tempfile.create because it returns a File
69
+ # object (not a Tempfile object).
70
+ #
71
+ # When you create a Tempfile object, it will create a temporary file with a
72
+ # unique filename. A Tempfile objects behaves just like a File object, and you
73
+ # can perform all the usual file operations on it: reading data, writing data,
74
+ # changing its permissions, etc. So although this class does not explicitly
75
+ # document all instance methods supported by File, you can in fact call any File
76
+ # instance method on a Tempfile object.
77
+ #
78
+ # A Tempfile object has a finalizer to remove the temporary file. This means
79
+ # that the temporary file is removed via GC. This can cause several problems:
80
+ #
81
+ # * Long GC intervals and conservative GC can accumulate temporary files that
82
+ # are not removed.
83
+ # * Temporary files are not removed if Ruby exits abnormally (such as SIGKILL,
84
+ # SEGV).
85
+ #
86
+ # There are legacy good practices for Tempfile.new and Tempfile.open as follows.
25
87
  #
26
88
  # ### Explicit close
27
89
  #
@@ -61,12 +123,17 @@
61
123
  # this if you do not want any other processes to be able to read from or write
62
124
  # to the Tempfile, and you do not need to know the Tempfile's filename either.
63
125
  #
126
+ # Also, this guarantees the temporary file is removed even if Ruby exits
127
+ # abnormally. The OS reclaims the storage for the temporary file when the file
128
+ # is closed or the Ruby process exits (normally or abnormally).
129
+ #
64
130
  # For example, a practical use case for unlink-after-creation would be this: you
65
131
  # need a large byte buffer that's too large to comfortably fit in RAM, e.g. when
66
132
  # you're writing a web server and you want to buffer the client's file upload
67
133
  # data.
68
134
  #
69
- # Please refer to #unlink for more information and a code example.
135
+ # `Tempfile.create(anonymous: true)` supports this behavior. It also works on
136
+ # Windows.
70
137
  #
71
138
  # ## Minor notes
72
139
  #
@@ -80,7 +147,7 @@
80
147
  class Tempfile < File
81
148
  # <!--
82
149
  # rdoc-file=lib/tempfile.rb
83
- # - create(basename="", tmpdir=nil, mode: 0, **options) { |tmpfile| ... }
150
+ # - create(basename="", tmpdir=nil, mode: 0, anonymous: false, **options, &block)
84
151
  # -->
85
152
  # Creates a file in the underlying file system; returns a new File object based
86
153
  # on that file.
@@ -94,9 +161,9 @@ class Tempfile < File
94
161
  # Permissions](rdoc-ref:File@File+Permissions).
95
162
  # * Mode is `'w+'` (read/write mode, positioned at the end).
96
163
  #
97
- #
98
- # With no block, the file is not removed automatically, and so should be
99
- # explicitly removed.
164
+ # The temporary file removal depends on the keyword argument `anonymous` and
165
+ # whether a block is given or not. See the description about the `anonymous`
166
+ # keyword argument later.
100
167
  #
101
168
  # Example:
102
169
  #
@@ -104,11 +171,36 @@ class Tempfile < File
104
171
  # f.class # => File
105
172
  # f.path # => "/tmp/20220505-9795-17ky6f6"
106
173
  # f.stat.mode.to_s(8) # => "100600"
174
+ # f.close
107
175
  # File.exist?(f.path) # => true
108
176
  # File.unlink(f.path)
109
177
  # File.exist?(f.path) # => false
110
178
  #
111
- # Argument `basename`, if given, may be one of:
179
+ # Tempfile.create {|f|
180
+ # f.puts "foo"
181
+ # f.rewind
182
+ # f.read # => "foo\n"
183
+ # f.path # => "/tmp/20240524-380207-oma0ny"
184
+ # File.exist?(f.path) # => true
185
+ # } # The file is removed at block exit.
186
+ #
187
+ # f = Tempfile.create(anonymous: true)
188
+ # # The file is already removed because anonymous
189
+ # f.path # => "/tmp/" (no filename since no file)
190
+ # f.puts "foo"
191
+ # f.rewind
192
+ # f.read # => "foo\n"
193
+ # f.close
194
+ #
195
+ # Tempfile.create(anonymous: true) {|f|
196
+ # # The file is already removed because anonymous
197
+ # f.path # => "/tmp/" (no filename since no file)
198
+ # f.puts "foo"
199
+ # f.rewind
200
+ # f.read # => "foo\n"
201
+ # }
202
+ #
203
+ # The argument `basename`, if given, may be one of the following:
112
204
  #
113
205
  # * A string: the generated filename begins with `basename`:
114
206
  #
@@ -119,31 +211,50 @@ class Tempfile < File
119
211
  #
120
212
  # Tempfile.create(%w/foo .jpg/) # => #<File:/tmp/foo20220505-17839-tnjchh.jpg>
121
213
  #
122
- #
123
- # With arguments `basename` and `tmpdir`, the file is created in directory
214
+ # With arguments `basename` and `tmpdir`, the file is created in the directory
124
215
  # `tmpdir`:
125
216
  #
126
217
  # Tempfile.create('foo', '.') # => #<File:./foo20220505-9795-1emu6g8>
127
218
  #
128
- # Keyword arguments `mode` and `options` are passed directly to method
219
+ # Keyword arguments `mode` and `options` are passed directly to the method
129
220
  # [File.open](rdoc-ref:File.open):
130
221
  #
131
- # * The value given with `mode` must be an integer, and may be expressed as
132
- # the logical OR of constants defined in
222
+ # * The value given for `mode` must be an integer and may be expressed as the
223
+ # logical OR of constants defined in
133
224
  # [File::Constants](rdoc-ref:File::Constants).
134
225
  # * For `options`, see [Open Options](rdoc-ref:IO@Open+Options).
135
226
  #
227
+ # The keyword argument `anonymous` specifies when the file is removed.
228
+ #
229
+ # * `anonymous=false` (default) without a block: the file is not removed.
230
+ # * `anonymous=false` (default) with a block: the file is removed after the
231
+ # block exits.
232
+ # * `anonymous=true` without a block: the file is removed before returning.
233
+ # * `anonymous=true` with a block: the file is removed before the block is
234
+ # called.
235
+ #
236
+ # In the first case (`anonymous=false` without a block), the file is not removed
237
+ # automatically. It should be explicitly closed. It can be used to rename to the
238
+ # desired filename. If the file is not needed, it should be explicitly removed.
136
239
  #
137
- # With a block given, creates the file as above, passes it to the block, and
138
- # returns the block's value; before the return, the file object is closed and
139
- # the underlying file is removed:
240
+ # The File#path method of the created file object returns the temporary
241
+ # directory with a trailing slash when `anonymous` is true.
242
+ #
243
+ # When a block is given, it creates the file as described above, passes it to
244
+ # the block, and returns the block's value. Before the returning, the file
245
+ # object is closed and the underlying file is removed:
140
246
  #
141
247
  # Tempfile.create {|file| file.path } # => "/tmp/20220505-9795-rkists"
142
248
  #
249
+ # Implementation note:
250
+ #
251
+ # The keyword argument +anonymous=true+ is implemented using FILE_SHARE_DELETE
252
+ # on Windows. O_TMPFILE is used on Linux.
253
+ #
143
254
  # Related: Tempfile.new.
144
255
  #
145
- def self.create: (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, **untyped) -> File
146
- | [A] (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, **untyped) { (File) -> A } -> A
256
+ def self.create: (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, ?anonymous: bool, **untyped) -> File
257
+ | [A] (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, ?anonymous: bool, **untyped) { (File) -> A } -> A
147
258
 
148
259
  # <!--
149
260
  # rdoc-file=lib/tempfile.rb
@@ -315,7 +426,6 @@ class Tempfile < File
315
426
  # * Does not rely on a finalizer to close and unlink the file, which can be
316
427
  # unreliable.
317
428
  #
318
- #
319
429
  # Creates and returns file whose:
320
430
  #
321
431
  # * Class is Tempfile (not File, as in Tempfile.create).
@@ -325,7 +435,6 @@ class Tempfile < File
325
435
  # Permissions](rdoc-ref:File@File+Permissions).
326
436
  # * Mode is `'w+'` (read/write mode, positioned at the end).
327
437
  #
328
- #
329
438
  # The underlying file is removed when the Tempfile object dies and is reclaimed
330
439
  # by the garbage collector.
331
440
  #
@@ -350,7 +459,6 @@ class Tempfile < File
350
459
  #
351
460
  # Tempfile.new(%w/foo .jpg/) # => #<Tempfile:/tmp/foo20220505-17839-58xtfi.jpg>
352
461
  #
353
- #
354
462
  # With arguments `basename` and `tmpdir`, the file is created in directory
355
463
  # `tmpdir`:
356
464
  #
@@ -364,7 +472,6 @@ class Tempfile < File
364
472
  # [File::Constants](rdoc-ref:File::Constants).
365
473
  # * For `options`, see [Open Options](rdoc-ref:IO@Open+Options).
366
474
  #
367
- #
368
475
  # Related: Tempfile.create.
369
476
  #
370
477
  def self.new: (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, **untyped) -> instance
@@ -43,7 +43,7 @@ class Time
43
43
  #
44
44
  # This method **does not** function as a validator. If the input string does
45
45
  # not match valid formats strictly, you may get a cryptic result. Should
46
- # consider to use `Time.strptime` instead of this method as possible.
46
+ # consider to use Time.strptime instead of this method as possible.
47
47
  #
48
48
  # require 'time'
49
49
  #
@@ -147,6 +147,8 @@ class Time
147
147
  # the format of the input string, you provide a second argument that describes
148
148
  # the format of the string.
149
149
  #
150
+ # Raises ArgumentError if the date or format is invalid.
151
+ #
150
152
  # If a block is given, the year described in `date` is converted by the block.
151
153
  # For example:
152
154
  #
@@ -156,95 +158,139 @@ class Time
156
158
  #
157
159
  # %a
158
160
  # : The abbreviated weekday name ("Sun")
161
+ #
159
162
  # %A
160
163
  # : The full weekday name ("Sunday")
164
+ #
161
165
  # %b
162
166
  # : The abbreviated month name ("Jan")
167
+ #
163
168
  # %B
164
169
  # : The full month name ("January")
170
+ #
165
171
  # %c
166
172
  # : The preferred local date and time representation
173
+ #
167
174
  # %C
168
175
  # : Century (20 in 2009)
176
+ #
169
177
  # %d
170
178
  # : Day of the month (01..31)
179
+ #
171
180
  # %D
172
181
  # : Date (%m/%d/%y)
182
+ #
173
183
  # %e
174
184
  # : Day of the month, blank-padded ( 1..31)
185
+ #
175
186
  # %F
176
187
  # : Equivalent to %Y-%m-%d (the ISO 8601 date format)
188
+ #
177
189
  # %g
178
190
  # : The last two digits of the commercial year
191
+ #
179
192
  # %G
180
193
  # : The week-based year according to ISO-8601 (week 1 starts on Monday and
181
194
  # includes January 4)
195
+ #
182
196
  # %h
183
197
  # : Equivalent to %b
198
+ #
184
199
  # %H
185
200
  # : Hour of the day, 24-hour clock (00..23)
201
+ #
186
202
  # %I
187
203
  # : Hour of the day, 12-hour clock (01..12)
204
+ #
188
205
  # %j
189
206
  # : Day of the year (001..366)
207
+ #
190
208
  # %k
191
209
  # : hour, 24-hour clock, blank-padded ( 0..23)
210
+ #
192
211
  # %l
193
212
  # : hour, 12-hour clock, blank-padded ( 0..12)
213
+ #
194
214
  # %L
195
215
  # : Millisecond of the second (000..999)
216
+ #
196
217
  # %m
197
218
  # : Month of the year (01..12)
219
+ #
198
220
  # %M
199
221
  # : Minute of the hour (00..59)
222
+ #
200
223
  # %n
201
224
  # : Newline (n)
225
+ #
202
226
  # %N
203
227
  # : Fractional seconds digits
228
+ #
204
229
  # %p
205
230
  # : Meridian indicator ("AM" or "PM")
231
+ #
206
232
  # %P
207
233
  # : Meridian indicator ("am" or "pm")
234
+ #
208
235
  # %r
209
236
  # : time, 12-hour (same as %I:%M:%S %p)
237
+ #
210
238
  # %R
211
239
  # : time, 24-hour (%H:%M)
240
+ #
212
241
  # %s
213
242
  # : Number of seconds since 1970-01-01 00:00:00 UTC.
243
+ #
214
244
  # %S
215
245
  # : Second of the minute (00..60)
246
+ #
216
247
  # %t
217
248
  # : Tab character (t)
249
+ #
218
250
  # %T
219
251
  # : time, 24-hour (%H:%M:%S)
252
+ #
220
253
  # %u
221
254
  # : Day of the week as a decimal, Monday being 1. (1..7)
255
+ #
222
256
  # %U
223
257
  # : Week number of the current year, starting with the first Sunday as the
224
258
  # first day of the first week (00..53)
259
+ #
225
260
  # %v
226
261
  # : VMS date (%e-%b-%Y)
262
+ #
227
263
  # %V
228
264
  # : Week number of year according to ISO 8601 (01..53)
265
+ #
229
266
  # %W
230
267
  # : Week number of the current year, starting with the first Monday as the
231
268
  # first day of the first week (00..53)
269
+ #
232
270
  # %w
233
271
  # : Day of the week (Sunday is 0, 0..6)
272
+ #
234
273
  # %x
235
274
  # : Preferred representation for the date alone, no time
275
+ #
236
276
  # %X
237
277
  # : Preferred representation for the time alone, no date
278
+ #
238
279
  # %y
239
280
  # : Year without a century (00..99)
281
+ #
240
282
  # %Y
241
283
  # : Year which may include century, if provided
284
+ #
242
285
  # %z
243
- # : Time zone as hour offset from UTC (e.g. +0900)
286
+ # : Time zone as hour offset from UTC (e.g. +0900)
287
+ #
244
288
  # %Z
245
289
  # : Time zone name
290
+ #
246
291
  # %%
247
292
  # : Literal "%" character
293
+ #
248
294
  # %+
249
295
  # : date(1) (%a %b %e %H:%M:%S %Z %Y)
250
296
  #
@@ -383,37 +429,4 @@ class Time
383
429
  # You must require 'time' to use this method.
384
430
  #
385
431
  def httpdate: () -> String
386
-
387
- # <!--
388
- # rdoc-file=lib/time.rb
389
- # - xmlschema(fraction_digits=0)
390
- # -->
391
- # Returns a string which represents the time as a dateTime defined by XML
392
- # Schema:
393
- #
394
- # CCYY-MM-DDThh:mm:ssTZD
395
- # CCYY-MM-DDThh:mm:ss.sssTZD
396
- #
397
- # where TZD is Z or [+-]hh:mm.
398
- #
399
- # If self is a UTC time, Z is used as TZD. [+-]hh:mm is used otherwise.
400
- #
401
- # `fraction_digits` specifies a number of digits to use for fractional seconds.
402
- # Its default value is 0.
403
- #
404
- # require 'time'
405
- #
406
- # t = Time.now
407
- # t.iso8601 # => "2011-10-05T22:26:12-04:00"
408
- #
409
- # You must require 'time' to use this method.
410
- #
411
- def xmlschema: (?Integer fraction_digits) -> String
412
-
413
- # <!--
414
- # rdoc-file=lib/time.rb
415
- # - iso8601(fraction_digits=0)
416
- # -->
417
- #
418
- alias iso8601 xmlschema
419
432
  end
@@ -4,7 +4,7 @@
4
4
  # ## Synopsis
5
5
  #
6
6
  # require 'timeout'
7
- # status = Timeout::timeout(5) {
7
+ # status = Timeout.timeout(5) {
8
8
  # # Something that should be interrupted if it takes more than 5 seconds...
9
9
  # }
10
10
  #
@@ -13,14 +13,11 @@
13
13
  # Timeout provides a way to auto-terminate a potentially long-running operation
14
14
  # if it hasn't finished in a fixed amount of time.
15
15
  #
16
- # Previous versions didn't use a module for namespacing, however #timeout is
17
- # provided for backwards compatibility. You should prefer Timeout.timeout
18
- # instead.
19
- #
20
16
  # ## Copyright
21
17
  #
22
18
  # Copyright
23
19
  # : (C) 2000 Network Applied Communication Laboratory, Inc.
20
+ #
24
21
  # Copyright
25
22
  # : (C) 2000 Information-technology Promotion Agency, Japan
26
23
  #
@@ -33,12 +30,15 @@ module Timeout
33
30
  # `sec` seconds to complete.
34
31
  #
35
32
  # `sec`
36
- # : Number of seconds to wait for the block to terminate. Any number may be
37
- # used, including Floats to specify fractional seconds. A value of 0 or
38
- # `nil` will execute the block without any timeout.
33
+ # : Number of seconds to wait for the block to terminate. Any non-negative
34
+ # number or nil may be used, including Floats to specify fractional seconds.
35
+ # A value of 0 or `nil` will execute the block without any timeout. Any
36
+ # negative number will raise an ArgumentError.
37
+ #
39
38
  # `klass`
40
39
  # : Exception Class to raise if the block fails to terminate in `sec` seconds.
41
40
  # Omitting will use the default, Timeout::Error
41
+ #
42
42
  # `message`
43
43
  # : Error message to raise with Exception Class. Omitting will use the
44
44
  # default, "execution expired"
@@ -75,4 +75,7 @@ class Timeout::Error < RuntimeError
75
75
  attr_reader thread: Thread?
76
76
  end
77
77
 
78
+ # <!-- rdoc-file=lib/timeout.rb -->
79
+ # The version
80
+ #
78
81
  Timeout::VERSION: String
@@ -6,6 +6,9 @@ class Dir
6
6
  # -->
7
7
  # Returns the operating system's temporary file path.
8
8
  #
9
+ # require 'tmpdir'
10
+ # Dir.tmpdir # => "/tmp"
11
+ #
9
12
  def self.tmpdir: () -> String
10
13
 
11
14
  # <!--
@@ -14,6 +17,11 @@ class Dir
14
17
  # -->
15
18
  # Dir.mktmpdir creates a temporary directory.
16
19
  #
20
+ # require 'tmpdir'
21
+ # Dir.mktmpdir {|dir|
22
+ # # use the directory
23
+ # }
24
+ #
17
25
  # The directory is created with 0700 permission. Application should not change
18
26
  # the permission to make the temporary directory accessible from other users.
19
27
  #
@@ -25,7 +33,6 @@ class Dir
25
33
  # * If it is an array, first element is used as the prefix and second element
26
34
  # is used as a suffix.
27
35
  #
28
- #
29
36
  # Dir.mktmpdir {|dir| dir is ".../d..." }
30
37
  # Dir.mktmpdir("foo") {|dir| dir is ".../foo..." }
31
38
  # Dir.mktmpdir(["foo", "bar"]) {|dir| dir is ".../foo...bar" }
@@ -11,7 +11,6 @@
11
11
  # * tsort_each_node is used to iterate for all nodes over a graph.
12
12
  # * tsort_each_child is used to iterate for child nodes of a given node.
13
13
  #
14
- #
15
14
  # The equality of nodes are defined by eql? and hash since TSort uses Hash
16
15
  # internally.
17
16
  #
@@ -109,12 +108,9 @@
109
108
  # strongly connected components. Although 'strongly_connected_components.rb'
110
109
  # is correct but too long.
111
110
  #
112
- #
113
111
  # ## References
114
112
  #
115
113
  # 1. Tarjan, "Depth First Search and Linear Graph Algorithms",
116
- #
117
- #
118
114
  # *SIAM Journal on Computing*, Vol. 1, No. 2, pp. 146-160, June 1972.
119
115
  #
120
116
  module TSort[Node] : TSort::_Sortable[Node]