rbs 2.8.4 → 3.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (434) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +12 -4
  3. data/.github/workflows/comments.yml +11 -11
  4. data/.github/workflows/dependabot.yml +30 -0
  5. data/.github/workflows/ruby.yml +40 -49
  6. data/.github/workflows/typecheck.yml +36 -0
  7. data/.github/workflows/windows.yml +28 -0
  8. data/.gitignore +1 -0
  9. data/.rubocop.yml +42 -2
  10. data/CHANGELOG.md +845 -1
  11. data/README.md +64 -4
  12. data/Rakefile +198 -18
  13. data/Steepfile +11 -11
  14. data/config.yml +311 -0
  15. data/core/array.rbs +2189 -1914
  16. data/core/basic_object.rbs +59 -84
  17. data/core/binding.rbs +7 -69
  18. data/core/builtin.rbs +210 -11
  19. data/core/class.rbs +37 -0
  20. data/core/comparable.rbs +23 -25
  21. data/core/complex.rbs +449 -227
  22. data/core/constants.rbs +29 -21
  23. data/core/data.rbs +415 -0
  24. data/core/dir.rbs +698 -415
  25. data/core/encoding.rbs +468 -843
  26. data/core/enumerable.rbs +495 -455
  27. data/core/enumerator/product.rbs +92 -0
  28. data/core/enumerator.rbs +106 -9
  29. data/core/env.rbs +1 -1
  30. data/core/errno.rbs +506 -605
  31. data/core/errors.rbs +15 -17
  32. data/core/exception.rbs +361 -145
  33. data/core/false_class.rbs +39 -26
  34. data/core/fiber.rbs +121 -14
  35. data/core/file.rbs +1262 -320
  36. data/core/file_test.rbs +62 -45
  37. data/core/float.rbs +187 -208
  38. data/core/gc.rbs +446 -196
  39. data/core/global_variables.rbs +29 -29
  40. data/core/hash.rbs +242 -349
  41. data/core/integer.rbs +246 -308
  42. data/core/io/buffer.rbs +373 -122
  43. data/core/io/wait.rbs +29 -17
  44. data/core/io.rbs +1881 -1518
  45. data/core/kernel.rbs +2116 -1538
  46. data/core/marshal.rbs +24 -14
  47. data/core/match_data.rbs +413 -166
  48. data/core/math.rbs +531 -291
  49. data/core/method.rbs +101 -32
  50. data/core/module.rbs +228 -64
  51. data/core/nil_class.rbs +106 -47
  52. data/core/numeric.rbs +206 -292
  53. data/core/object.rbs +73 -1168
  54. data/core/object_space/weak_key_map.rbs +166 -0
  55. data/core/object_space.rbs +5 -3
  56. data/core/proc.rbs +280 -39
  57. data/core/process.rbs +1318 -658
  58. data/core/ractor.rbs +200 -134
  59. data/core/random.rbs +21 -4
  60. data/core/range.rbs +309 -153
  61. data/core/rational.rbs +4 -12
  62. data/core/rb_config.rbs +64 -43
  63. data/core/rbs/unnamed/argf.rbs +411 -147
  64. data/core/rbs/unnamed/env_class.rbs +137 -253
  65. data/core/rbs/unnamed/random.rbs +49 -26
  66. data/core/refinement.rbs +16 -1
  67. data/core/regexp.rbs +1568 -862
  68. data/core/ruby_vm.rbs +719 -7
  69. data/core/rubygems/config_file.rbs +3 -0
  70. data/core/rubygems/errors.rbs +69 -6
  71. data/core/rubygems/rubygems.rbs +71 -17
  72. data/core/rubygems/version.rbs +11 -7
  73. data/{stdlib/set/0 → core}/set.rbs +80 -91
  74. data/core/signal.rbs +14 -8
  75. data/core/string.rbs +1732 -1607
  76. data/core/struct.rbs +467 -95
  77. data/core/symbol.rbs +215 -245
  78. data/core/thread.rbs +133 -89
  79. data/core/thread_group.rbs +9 -9
  80. data/core/time.rbs +1141 -841
  81. data/core/trace_point.rbs +181 -121
  82. data/core/true_class.rbs +58 -32
  83. data/core/unbound_method.rbs +103 -30
  84. data/core/warning.rbs +50 -5
  85. data/docs/CONTRIBUTING.md +1 -1
  86. data/docs/architecture.md +110 -0
  87. data/docs/collection.md +59 -5
  88. data/docs/data_and_struct.md +86 -0
  89. data/docs/gem.md +57 -0
  90. data/docs/rbs_by_example.md +16 -35
  91. data/docs/repo.md +1 -1
  92. data/docs/sigs.md +7 -7
  93. data/docs/stdlib.md +63 -5
  94. data/docs/syntax.md +255 -61
  95. data/docs/tools.md +1 -0
  96. data/ext/rbs_extension/extconf.rb +10 -0
  97. data/ext/rbs_extension/lexer.c +1741 -1548
  98. data/ext/rbs_extension/lexer.h +11 -1
  99. data/ext/rbs_extension/lexer.re +12 -6
  100. data/ext/rbs_extension/lexstate.c +26 -3
  101. data/ext/rbs_extension/location.c +119 -111
  102. data/ext/rbs_extension/location.h +32 -7
  103. data/ext/rbs_extension/main.c +3 -0
  104. data/ext/rbs_extension/parser.c +883 -481
  105. data/ext/rbs_extension/parserstate.c +65 -25
  106. data/ext/rbs_extension/parserstate.h +13 -3
  107. data/ext/rbs_extension/rbs_extension.h +1 -10
  108. data/ext/rbs_extension/unescape.c +7 -47
  109. data/goodcheck.yml +2 -2
  110. data/{ext/rbs_extension → include/rbs}/constants.h +26 -15
  111. data/include/rbs/ruby_objs.h +72 -0
  112. data/include/rbs.h +7 -0
  113. data/lib/rbs/annotate/annotations.rb +3 -3
  114. data/lib/rbs/annotate/formatter.rb +13 -3
  115. data/lib/rbs/annotate/rdoc_annotator.rb +1 -1
  116. data/lib/rbs/annotate/rdoc_source.rb +12 -3
  117. data/lib/rbs/ast/declarations.rb +85 -2
  118. data/lib/rbs/ast/directives.rb +39 -0
  119. data/lib/rbs/ast/members.rb +49 -15
  120. data/lib/rbs/ast/type_param.rb +104 -15
  121. data/lib/rbs/ast/visitor.rb +137 -0
  122. data/lib/rbs/buffer.rb +5 -0
  123. data/lib/rbs/cli/colored_io.rb +48 -0
  124. data/lib/rbs/cli/diff.rb +83 -0
  125. data/lib/rbs/cli/validate.rb +356 -0
  126. data/lib/rbs/cli.rb +253 -143
  127. data/lib/rbs/collection/cleaner.rb +8 -1
  128. data/lib/rbs/collection/config/lockfile.rb +92 -0
  129. data/lib/rbs/collection/config/lockfile_generator.rb +154 -65
  130. data/lib/rbs/collection/config.rb +19 -46
  131. data/lib/rbs/collection/installer.rb +12 -13
  132. data/lib/rbs/collection/sources/base.rb +2 -2
  133. data/lib/rbs/collection/sources/git.rb +146 -69
  134. data/lib/rbs/collection/sources/local.rb +81 -0
  135. data/lib/rbs/collection/sources/rubygems.rb +10 -12
  136. data/lib/rbs/collection/sources/stdlib.rb +14 -13
  137. data/lib/rbs/collection/sources.rb +15 -2
  138. data/lib/rbs/collection.rb +2 -1
  139. data/lib/rbs/definition.rb +13 -16
  140. data/lib/rbs/definition_builder/ancestor_builder.rb +100 -24
  141. data/lib/rbs/definition_builder/method_builder.rb +4 -4
  142. data/lib/rbs/definition_builder.rb +489 -584
  143. data/lib/rbs/diff.rb +125 -0
  144. data/lib/rbs/environment/use_map.rb +77 -0
  145. data/lib/rbs/environment.rb +406 -105
  146. data/lib/rbs/environment_loader.rb +48 -44
  147. data/lib/rbs/environment_walker.rb +1 -1
  148. data/lib/rbs/errors.rb +175 -56
  149. data/lib/rbs/file_finder.rb +28 -0
  150. data/lib/rbs/location_aux.rb +8 -7
  151. data/lib/rbs/locator.rb +37 -15
  152. data/lib/rbs/method_type.rb +23 -0
  153. data/lib/rbs/namespace.rb +1 -0
  154. data/lib/rbs/parser/lex_result.rb +15 -0
  155. data/lib/rbs/parser/token.rb +23 -0
  156. data/lib/rbs/parser_aux.rb +22 -13
  157. data/lib/rbs/prototype/helpers.rb +48 -22
  158. data/lib/rbs/prototype/node_usage.rb +99 -0
  159. data/lib/rbs/prototype/rb.rb +125 -31
  160. data/lib/rbs/prototype/rbi.rb +49 -36
  161. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  162. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  163. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  164. data/lib/rbs/prototype/runtime.rb +273 -159
  165. data/lib/rbs/resolver/constant_resolver.rb +24 -8
  166. data/lib/rbs/resolver/type_name_resolver.rb +41 -7
  167. data/lib/rbs/sorter.rb +153 -123
  168. data/lib/rbs/substitution.rb +19 -0
  169. data/lib/rbs/subtractor.rb +201 -0
  170. data/lib/rbs/test/errors.rb +24 -11
  171. data/lib/rbs/test/guaranteed.rb +30 -0
  172. data/lib/rbs/test/hook.rb +45 -40
  173. data/lib/rbs/test/setup.rb +1 -1
  174. data/lib/rbs/test/tester.rb +1 -1
  175. data/lib/rbs/test/type_check.rb +120 -23
  176. data/lib/rbs/test.rb +6 -3
  177. data/lib/rbs/type_alias_dependency.rb +13 -3
  178. data/lib/rbs/type_alias_regularity.rb +21 -14
  179. data/lib/rbs/type_name.rb +18 -13
  180. data/lib/rbs/types.rb +352 -18
  181. data/lib/rbs/unit_test/convertibles.rb +176 -0
  182. data/lib/rbs/unit_test/spy.rb +136 -0
  183. data/lib/rbs/unit_test/type_assertions.rb +341 -0
  184. data/lib/rbs/unit_test/with_aliases.rb +143 -0
  185. data/lib/rbs/unit_test.rb +6 -0
  186. data/lib/rbs/validator.rb +55 -30
  187. data/lib/rbs/variance_calculator.rb +26 -23
  188. data/lib/rbs/vendorer.rb +3 -3
  189. data/lib/rbs/version.rb +1 -1
  190. data/lib/rbs/writer.rb +69 -22
  191. data/lib/rbs.rb +7 -2
  192. data/lib/rdoc/discover.rb +1 -1
  193. data/lib/rdoc_plugin/parser.rb +5 -5
  194. data/rbs.gemspec +12 -2
  195. data/schema/decls.json +1 -1
  196. data/schema/members.json +15 -10
  197. data/sig/ancestor_builder.rbs +4 -0
  198. data/sig/ancestor_graph.rbs +22 -2
  199. data/sig/annotate/formatter.rbs +2 -2
  200. data/sig/annotate/rdoc_annotater.rbs +1 -1
  201. data/sig/cli/colored_io.rbs +15 -0
  202. data/sig/cli/diff.rbs +21 -0
  203. data/sig/cli/validate.rbs +43 -0
  204. data/sig/cli.rbs +4 -0
  205. data/sig/collection/config/lockfile.rbs +74 -0
  206. data/sig/collection/config/lockfile_generator.rbs +66 -0
  207. data/sig/collection/config.rbs +5 -48
  208. data/sig/collection/installer.rbs +1 -1
  209. data/sig/collection/sources.rbs +105 -33
  210. data/sig/constant.rbs +1 -1
  211. data/sig/declarations.rbs +42 -3
  212. data/sig/definition.rbs +26 -10
  213. data/sig/definition_builder.rbs +103 -81
  214. data/sig/diff.rbs +28 -0
  215. data/sig/directives.rbs +61 -0
  216. data/sig/environment.rbs +175 -29
  217. data/sig/environment_loader.rbs +20 -18
  218. data/sig/errors.rbs +123 -2
  219. data/sig/file_finder.rbs +28 -0
  220. data/sig/location.rbs +0 -3
  221. data/sig/locator.rbs +14 -2
  222. data/sig/manifest.yaml +0 -1
  223. data/sig/members.rbs +32 -9
  224. data/sig/method_types.rbs +10 -4
  225. data/sig/namespace.rbs +2 -3
  226. data/sig/parser.rbs +55 -16
  227. data/sig/prototype/helpers.rbs +4 -0
  228. data/sig/prototype/node_usage.rbs +20 -0
  229. data/sig/prototype/rb.rbs +10 -2
  230. data/sig/prototype/rbi.rbs +2 -0
  231. data/sig/prototype/runtime.rbs +182 -0
  232. data/sig/rbs.rbs +1 -1
  233. data/sig/rdoc/rbs.rbs +4 -0
  234. data/sig/repository.rbs +7 -5
  235. data/sig/resolver/constant_resolver.rbs +3 -4
  236. data/sig/resolver/context.rbs +1 -1
  237. data/sig/resolver/type_name_resolver.rbs +5 -1
  238. data/sig/shims/bundler.rbs +38 -0
  239. data/sig/shims/rubygems.rbs +19 -0
  240. data/sig/sorter.rbs +23 -5
  241. data/sig/substitution.rbs +6 -0
  242. data/sig/subtractor.rbs +37 -0
  243. data/sig/test/errors.rbs +52 -0
  244. data/sig/test/guranteed.rbs +9 -0
  245. data/sig/test/type_check.rbs +19 -0
  246. data/sig/test.rbs +82 -0
  247. data/sig/type_alias_dependency.rbs +31 -0
  248. data/sig/type_alias_regularity.rbs +12 -6
  249. data/sig/type_param.rbs +45 -9
  250. data/sig/typename.rbs +8 -5
  251. data/sig/types.rbs +119 -12
  252. data/sig/unit_test/convertibles.rbs +154 -0
  253. data/sig/unit_test/spy.rbs +28 -0
  254. data/sig/unit_test/type_assertions.rbs +194 -0
  255. data/sig/unit_test/with_aliases.rbs +136 -0
  256. data/sig/use_map.rbs +35 -0
  257. data/sig/validator.rbs +12 -5
  258. data/sig/variance_calculator.rbs +3 -1
  259. data/sig/vendorer.rbs +1 -1
  260. data/sig/visitor.rbs +47 -0
  261. data/sig/writer.rbs +6 -2
  262. data/src/constants.c +153 -0
  263. data/src/ruby_objs.c +793 -0
  264. data/stdlib/base64/0/base64.rbs +298 -45
  265. data/stdlib/benchmark/0/benchmark.rbs +12 -3
  266. data/stdlib/bigdecimal/0/big_decimal.rbs +62 -198
  267. data/stdlib/cgi/0/core.rbs +68 -15
  268. data/stdlib/cgi/0/manifest.yaml +1 -0
  269. data/stdlib/coverage/0/coverage.rbs +50 -11
  270. data/stdlib/csv/0/csv.rbs +90 -119
  271. data/stdlib/csv/0/manifest.yaml +1 -0
  272. data/stdlib/date/0/date.rbs +806 -735
  273. data/stdlib/date/0/date_time.rbs +70 -211
  274. data/stdlib/dbm/0/dbm.rbs +0 -2
  275. data/stdlib/delegate/0/delegator.rbs +184 -0
  276. data/stdlib/delegate/0/kernel.rbs +47 -0
  277. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  278. data/stdlib/did_you_mean/0/did_you_mean.rbs +3 -8
  279. data/stdlib/digest/0/digest.rbs +48 -35
  280. data/stdlib/erb/0/erb.rbs +15 -39
  281. data/stdlib/etc/0/etc.rbs +174 -54
  282. data/stdlib/fileutils/0/fileutils.rbs +1234 -385
  283. data/stdlib/forwardable/0/forwardable.rbs +4 -4
  284. data/stdlib/io-console/0/io-console.rbs +82 -17
  285. data/stdlib/ipaddr/0/ipaddr.rbs +11 -6
  286. data/stdlib/json/0/json.rbs +434 -151
  287. data/stdlib/kconv/0/kconv.rbs +166 -0
  288. data/stdlib/logger/0/formatter.rbs +0 -2
  289. data/stdlib/logger/0/log_device.rbs +1 -3
  290. data/stdlib/logger/0/logger.rbs +465 -328
  291. data/stdlib/minitest/0/kernel.rbs +2 -2
  292. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
  293. data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
  294. data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
  295. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
  296. data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
  297. data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
  298. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  299. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  300. data/stdlib/minitest/0/minitest/mock.rbs +9 -5
  301. data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
  302. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
  303. data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
  304. data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
  305. data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
  306. data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
  307. data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
  308. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
  309. data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
  310. data/stdlib/minitest/0/minitest/spec.rbs +1 -1
  311. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
  312. data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
  313. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +7 -7
  314. data/stdlib/minitest/0/minitest/test.rbs +7 -14
  315. data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
  316. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  317. data/stdlib/minitest/0/minitest/unit.rbs +1 -2
  318. data/stdlib/minitest/0/minitest.rbs +41 -892
  319. data/stdlib/monitor/0/monitor.rbs +91 -10
  320. data/stdlib/mutex_m/0/mutex_m.rbs +0 -2
  321. data/stdlib/net-http/0/manifest.yaml +1 -1
  322. data/stdlib/net-http/0/net-http.rbs +3858 -964
  323. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  324. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  325. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  326. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  327. data/stdlib/nkf/0/nkf.rbs +35 -5
  328. data/stdlib/objspace/0/objspace.rbs +40 -18
  329. data/stdlib/observable/0/observable.rbs +217 -0
  330. data/stdlib/open-uri/0/manifest.yaml +4 -0
  331. data/stdlib/open-uri/0/open-uri.rbs +393 -0
  332. data/stdlib/open3/0/open3.rbs +147 -0
  333. data/stdlib/openssl/0/manifest.yaml +1 -0
  334. data/stdlib/openssl/0/openssl.rbs +681 -316
  335. data/stdlib/optparse/0/optparse.rbs +100 -65
  336. data/stdlib/pathname/0/pathname.rbs +24 -15
  337. data/stdlib/pp/0/manifest.yaml +2 -0
  338. data/stdlib/pp/0/pp.rbs +300 -0
  339. data/stdlib/prettyprint/0/prettyprint.rbs +2 -6
  340. data/stdlib/pstore/0/pstore.rbs +370 -156
  341. data/stdlib/psych/0/core_ext.rbs +12 -0
  342. data/stdlib/{yaml → psych}/0/dbm.rbs +3 -3
  343. data/stdlib/psych/0/manifest.yaml +3 -0
  344. data/stdlib/psych/0/psych.rbs +402 -0
  345. data/stdlib/{yaml → psych}/0/store.rbs +2 -2
  346. data/stdlib/pty/0/pty.rbs +63 -11
  347. data/stdlib/rdoc/0/code_object.rbs +51 -0
  348. data/stdlib/rdoc/0/comment.rbs +59 -0
  349. data/stdlib/rdoc/0/context.rbs +153 -0
  350. data/stdlib/rdoc/0/markup.rbs +117 -0
  351. data/stdlib/rdoc/0/parser.rbs +56 -0
  352. data/stdlib/rdoc/0/rdoc.rbs +13 -380
  353. data/stdlib/rdoc/0/ri.rbs +17 -0
  354. data/stdlib/rdoc/0/store.rbs +48 -0
  355. data/stdlib/rdoc/0/top_level.rbs +97 -0
  356. data/stdlib/resolv/0/resolv.rbs +16 -79
  357. data/stdlib/ripper/0/ripper.rbs +1648 -0
  358. data/stdlib/securerandom/0/securerandom.rbs +7 -2
  359. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  360. data/stdlib/singleton/0/singleton.rbs +0 -3
  361. data/stdlib/socket/0/addrinfo.rbs +13 -18
  362. data/stdlib/socket/0/basic_socket.rbs +5 -10
  363. data/stdlib/socket/0/ip_socket.rbs +0 -2
  364. data/stdlib/socket/0/socket.rbs +77 -46
  365. data/stdlib/socket/0/tcp_server.rbs +0 -5
  366. data/stdlib/socket/0/tcp_socket.rbs +36 -3
  367. data/stdlib/socket/0/udp_socket.rbs +4 -5
  368. data/stdlib/socket/0/unix_server.rbs +0 -5
  369. data/stdlib/socket/0/unix_socket.rbs +2 -4
  370. data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +188 -107
  371. data/stdlib/strscan/0/string_scanner.rbs +1269 -425
  372. data/stdlib/tempfile/0/tempfile.rbs +224 -61
  373. data/stdlib/time/0/time.rbs +48 -35
  374. data/stdlib/timeout/0/timeout.rbs +17 -8
  375. data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
  376. data/stdlib/tsort/0/tsort.rbs +0 -4
  377. data/stdlib/uri/0/common.rbs +271 -144
  378. data/stdlib/uri/0/file.rbs +5 -0
  379. data/stdlib/uri/0/ftp.rbs +1 -1
  380. data/stdlib/uri/0/generic.rbs +26 -22
  381. data/stdlib/uri/0/http.rbs +4 -4
  382. data/stdlib/uri/0/ldap.rbs +1 -1
  383. data/stdlib/uri/0/mailto.rbs +84 -0
  384. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  385. data/stdlib/yaml/0/manifest.yaml +1 -2
  386. data/stdlib/yaml/0/yaml.rbs +1 -199
  387. data/stdlib/zlib/0/buf_error.rbs +10 -0
  388. data/stdlib/zlib/0/data_error.rbs +10 -0
  389. data/stdlib/zlib/0/deflate.rbs +210 -0
  390. data/stdlib/zlib/0/error.rbs +20 -0
  391. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  392. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  393. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  394. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  395. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  396. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  397. data/stdlib/zlib/0/gzip_writer.rbs +166 -0
  398. data/stdlib/zlib/0/inflate.rbs +180 -0
  399. data/stdlib/zlib/0/mem_error.rbs +10 -0
  400. data/stdlib/zlib/0/need_dict.rbs +13 -0
  401. data/stdlib/zlib/0/stream_end.rbs +11 -0
  402. data/stdlib/zlib/0/stream_error.rbs +11 -0
  403. data/stdlib/zlib/0/version_error.rbs +11 -0
  404. data/stdlib/zlib/0/zlib.rbs +1 -3
  405. data/stdlib/zlib/0/zstream.rbs +200 -0
  406. data/templates/include/rbs/constants.h.erb +20 -0
  407. data/templates/include/rbs/ruby_objs.h.erb +10 -0
  408. data/templates/src/constants.c.erb +36 -0
  409. data/templates/src/ruby_objs.c.erb +27 -0
  410. data/templates/template.rb +122 -0
  411. metadata +136 -36
  412. data/Gemfile +0 -33
  413. data/Gemfile.lock +0 -118
  414. data/core/deprecated.rbs +0 -9
  415. data/ext/rbs_extension/constants.c +0 -135
  416. data/ext/rbs_extension/ruby_objs.c +0 -525
  417. data/ext/rbs_extension/ruby_objs.h +0 -43
  418. data/lib/rbs/constant_table.rb +0 -167
  419. data/lib/rbs/parser_compat/lexer_error.rb +0 -6
  420. data/lib/rbs/parser_compat/located_value.rb +0 -7
  421. data/lib/rbs/parser_compat/semantics_error.rb +0 -6
  422. data/lib/rbs/parser_compat/syntax_error.rb +0 -6
  423. data/lib/rbs/test/spy.rb +0 -6
  424. data/lib/rbs/type_name_resolver.rb +0 -67
  425. data/sig/constant_table.rbs +0 -30
  426. data/sig/shims/abstract_syntax_tree.rbs +0 -25
  427. data/sig/shims/pp.rbs +0 -3
  428. data/sig/shims/ripper.rbs +0 -8
  429. data/sig/shims.rbs +0 -69
  430. data/sig/type_name_resolver.rbs +0 -26
  431. data/stdlib/minitest/0/manifest.yaml +0 -2
  432. data/stdlib/prime/0/integer-extension.rbs +0 -41
  433. data/stdlib/prime/0/manifest.yaml +0 -2
  434. data/stdlib/prime/0/prime.rbs +0 -372
@@ -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
  #
@@ -48,7 +110,7 @@
48
110
  # Note that Tempfile.create returns a File instance instead of a Tempfile, which
49
111
  # also avoids the overhead and complications of delegation.
50
112
  #
51
- # Tempfile.open('foo') do |file|
113
+ # Tempfile.create('foo') do |file|
52
114
  # # ...do something with file...
53
115
  # end
54
116
  #
@@ -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,29 +147,114 @@
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
- # Creates a temporary file as a usual File object (not a Tempfile). It does not
86
- # use finalizer and delegation, which makes it more efficient and reliable.
152
+ # Creates a file in the underlying file system; returns a new File object based
153
+ # on that file.
87
154
  #
88
- # If no block is given, this is similar to Tempfile.new except creating File
89
- # instead of Tempfile. In that case, the created file is not removed
90
- # automatically. You should use File.unlink to remove it.
155
+ # With no block given and no arguments, creates and returns file whose:
91
156
  #
92
- # If a block is given, then a File object will be constructed, and the block is
93
- # invoked with the object as the argument. The File object will be automatically
94
- # closed and the temporary file is removed after the block terminates, releasing
95
- # all resources that the block created. The call returns the value of the block.
157
+ # * Class is [File](rdoc-ref:File) (not Tempfile).
158
+ # * Directory is the system temporary directory (system-dependent).
159
+ # * Generated filename is unique in that directory.
160
+ # * Permissions are `0600`; see [File
161
+ # Permissions](rdoc-ref:File@File+Permissions).
162
+ # * Mode is `'w+'` (read/write mode, positioned at the end).
96
163
  #
97
- # In any case, all arguments (`basename`, `tmpdir`, `mode`, and `**options`)
98
- # will be treated the same as for Tempfile.new.
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.
99
167
  #
100
- # Tempfile.create('foo', '/home/temp') do |f|
101
- # # ... do something with f ...
102
- # end
168
+ # Example:
169
+ #
170
+ # f = Tempfile.create # => #<File:/tmp/20220505-9795-17ky6f6>
171
+ # f.class # => File
172
+ # f.path # => "/tmp/20220505-9795-17ky6f6"
173
+ # f.stat.mode.to_s(8) # => "100600"
174
+ # f.close
175
+ # File.exist?(f.path) # => true
176
+ # File.unlink(f.path)
177
+ # File.exist?(f.path) # => false
178
+ #
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:
204
+ #
205
+ # * A string: the generated filename begins with `basename`:
206
+ #
207
+ # Tempfile.create('foo') # => #<File:/tmp/foo20220505-9795-1gok8l9>
103
208
  #
104
- def self.create: (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, **untyped) -> File
105
- | [A] (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, **untyped) { (File) -> A } -> A
209
+ # * An array of two strings `[prefix, suffix]`: the generated filename begins
210
+ # with `prefix` and ends with `suffix`:
211
+ #
212
+ # Tempfile.create(%w/foo .jpg/) # => #<File:/tmp/foo20220505-17839-tnjchh.jpg>
213
+ #
214
+ # With arguments `basename` and `tmpdir`, the file is created in the directory
215
+ # `tmpdir`:
216
+ #
217
+ # Tempfile.create('foo', '.') # => #<File:./foo20220505-9795-1emu6g8>
218
+ #
219
+ # Keyword arguments `mode` and `options` are passed directly to the method
220
+ # [File.open](rdoc-ref:File.open):
221
+ #
222
+ # * The value given for `mode` must be an integer and may be expressed as the
223
+ # logical OR of constants defined in
224
+ # [File::Constants](rdoc-ref:File::Constants).
225
+ # * For `options`, see [Open Options](rdoc-ref:IO@Open+Options).
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.
239
+ #
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:
246
+ #
247
+ # Tempfile.create {|file| file.path } # => "/tmp/20220505-9795-rkists"
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
+ #
254
+ # Related: Tempfile.new.
255
+ #
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
106
258
 
107
259
  # <!--
108
260
  # rdoc-file=lib/tempfile.rb
@@ -148,8 +300,6 @@ class Tempfile < File
148
300
  def self.open: (*untyped args, **untyped) -> Tempfile
149
301
  | [A] (*untyped args, **untyped) { (Tempfile) -> A } -> A
150
302
 
151
- public
152
-
153
303
  # <!--
154
304
  # rdoc-file=lib/tempfile.rb
155
305
  # - close(unlink_now=false)
@@ -255,8 +405,6 @@ class Tempfile < File
255
405
  def unlink: () -> void
256
406
 
257
407
  class Remover
258
- public
259
-
260
408
  def call: (*untyped args) -> void
261
409
 
262
410
  private
@@ -268,48 +416,63 @@ class Tempfile < File
268
416
  # rdoc-file=lib/tempfile.rb
269
417
  # - new(basename="", tmpdir=nil, mode: 0, **options)
270
418
  # -->
271
- # Creates a temporary file with permissions 0600 (= only readable and writable
272
- # by the owner) and opens it with mode "w+".
419
+ # Creates a file in the underlying file system; returns a new Tempfile object
420
+ # based on that file.
421
+ #
422
+ # If possible, consider instead using Tempfile.create, which:
423
+ #
424
+ # * Avoids the performance cost of delegation, incurred when Tempfile.new
425
+ # calls its superclass `DelegateClass(File)`.
426
+ # * Does not rely on a finalizer to close and unlink the file, which can be
427
+ # unreliable.
428
+ #
429
+ # Creates and returns file whose:
430
+ #
431
+ # * Class is Tempfile (not File, as in Tempfile.create).
432
+ # * Directory is the system temporary directory (system-dependent).
433
+ # * Generated filename is unique in that directory.
434
+ # * Permissions are `0600`; see [File
435
+ # Permissions](rdoc-ref:File@File+Permissions).
436
+ # * Mode is `'w+'` (read/write mode, positioned at the end).
437
+ #
438
+ # The underlying file is removed when the Tempfile object dies and is reclaimed
439
+ # by the garbage collector.
273
440
  #
274
- # It is recommended to use Tempfile.create { ... } instead when possible,
275
- # because that method avoids the cost of delegation and does not rely on a
276
- # finalizer to close and unlink the file, which is unreliable.
441
+ # Example:
277
442
  #
278
- # The `basename` parameter is used to determine the name of the temporary file.
279
- # You can either pass a String or an Array with 2 String elements. In the former
280
- # form, the temporary file's base name will begin with the given string. In the
281
- # latter form, the temporary file's base name will begin with the array's first
282
- # element, and end with the second element. For example:
443
+ # f = Tempfile.new # => #<Tempfile:/tmp/20220505-17839-1s0kt30>
444
+ # f.class # => Tempfile
445
+ # f.path # => "/tmp/20220505-17839-1s0kt30"
446
+ # f.stat.mode.to_s(8) # => "100600"
447
+ # File.exist?(f.path) # => true
448
+ # File.unlink(f.path) #
449
+ # File.exist?(f.path) # => false
283
450
  #
284
- # file = Tempfile.new('hello')
285
- # file.path # => something like: "/tmp/hello2843-8392-92849382--0"
451
+ # Argument `basename`, if given, may be one of:
286
452
  #
287
- # # Use the Array form to enforce an extension in the filename:
288
- # file = Tempfile.new(['hello', '.jpg'])
289
- # file.path # => something like: "/tmp/hello2843-8392-92849382--0.jpg"
453
+ # * A string: the generated filename begins with `basename`:
290
454
  #
291
- # The temporary file will be placed in the directory as specified by the
292
- # `tmpdir` parameter. By default, this is `Dir.tmpdir`.
455
+ # Tempfile.new('foo') # => #<Tempfile:/tmp/foo20220505-17839-1whk2f>
293
456
  #
294
- # file = Tempfile.new('hello', '/home/aisaka')
295
- # file.path # => something like: "/home/aisaka/hello2843-8392-92849382--0"
457
+ # * An array of two strings `[prefix, suffix]`: the generated filename begins
458
+ # with `prefix` and ends with `suffix`:
296
459
  #
297
- # You can also pass an options hash. Under the hood, Tempfile creates the
298
- # temporary file using `File.open`. These options will be passed to `File.open`.
299
- # This is mostly useful for specifying encoding options, e.g.:
460
+ # Tempfile.new(%w/foo .jpg/) # => #<Tempfile:/tmp/foo20220505-17839-58xtfi.jpg>
300
461
  #
301
- # Tempfile.new('hello', '/home/aisaka', encoding: 'ascii-8bit')
462
+ # With arguments `basename` and `tmpdir`, the file is created in directory
463
+ # `tmpdir`:
302
464
  #
303
- # # You can also omit the 'tmpdir' parameter:
304
- # Tempfile.new('hello', encoding: 'ascii-8bit')
465
+ # Tempfile.new('foo', '.') # => #<Tempfile:./foo20220505-17839-xfstr8>
305
466
  #
306
- # Note: `mode` keyword argument, as accepted by Tempfile, can only be numeric,
307
- # combination of the modes defined in File::Constants.
467
+ # Keyword arguments `mode` and `options` are passed directly to method
468
+ # [File.open](rdoc-ref:File.open):
308
469
  #
309
- # ### Exceptions
470
+ # * The value given with `mode` must be an integer, and may be expressed as
471
+ # the logical OR of constants defined in
472
+ # [File::Constants](rdoc-ref:File::Constants).
473
+ # * For `options`, see [Open Options](rdoc-ref:IO@Open+Options).
310
474
  #
311
- # If Tempfile.new cannot find a unique filename within a limited number of
312
- # tries, then it will raise an exception.
475
+ # Related: Tempfile.create.
313
476
  #
314
477
  def self.new: (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, **untyped) -> instance
315
478
  | [A] (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, **untyped) { (instance) -> A } -> A
@@ -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
- # `fractional_digits` specifies a number of digits to use for fractional
402
- # seconds. 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"
@@ -62,6 +62,12 @@ module Timeout
62
62
  def self?.timeout: [T] (Numeric? sec, ?singleton(Exception) klass, ?String message) { (Numeric sec) -> T } -> T
63
63
  end
64
64
 
65
+ # <!-- rdoc-file=lib/timeout.rb -->
66
+ # Internal error raised to when a timeout is triggered.
67
+ #
68
+ class Timeout::ExitException < Exception
69
+ end
70
+
65
71
  # <!-- rdoc-file=lib/timeout.rb -->
66
72
  # Raised by Timeout.timeout when the block times out.
67
73
  #
@@ -69,4 +75,7 @@ class Timeout::Error < RuntimeError
69
75
  attr_reader thread: Thread?
70
76
  end
71
77
 
78
+ # <!-- rdoc-file=lib/timeout.rb -->
79
+ # The version
80
+ #
72
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" }
@@ -57,6 +64,6 @@ class Dir
57
64
  # FileUtils.remove_entry dir
58
65
  # end
59
66
  #
60
- def self.mktmpdir: (?String | [ String, String ] | nil, ?String?, ?max_try: Integer?) -> String
61
- | [X] (?String | [ String, String ] | nil, ?String?, ?max_try: Integer?) { (String) -> X } -> X
67
+ def self.mktmpdir: (?string | [ string, string ] | nil, ?path?, ?max_try: Integer?) -> String
68
+ | [X] (?string | [string, string ] | nil, ?path?, ?max_try: Integer?) { (String) -> X } -> X
62
69
  end
@@ -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]