rbs-relaxed 3.9.0.1

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 (484) hide show
  1. checksums.yaml +7 -0
  2. data/.github/dependabot.yml +22 -0
  3. data/.github/workflows/comments.yml +35 -0
  4. data/.github/workflows/dependabot.yml +30 -0
  5. data/.github/workflows/ruby.yml +82 -0
  6. data/.github/workflows/typecheck.yml +38 -0
  7. data/.github/workflows/windows.yml +43 -0
  8. data/.gitignore +23 -0
  9. data/.rubocop.yml +68 -0
  10. data/BSDL +22 -0
  11. data/CHANGELOG.md +1868 -0
  12. data/COPYING +56 -0
  13. data/README.md +203 -0
  14. data/Rakefile +417 -0
  15. data/Steepfile +44 -0
  16. data/config.yml +313 -0
  17. data/core/array.rbs +4062 -0
  18. data/core/basic_object.rbs +375 -0
  19. data/core/binding.rbs +150 -0
  20. data/core/builtin.rbs +277 -0
  21. data/core/class.rbs +220 -0
  22. data/core/comparable.rbs +171 -0
  23. data/core/complex.rbs +786 -0
  24. data/core/constants.rbs +96 -0
  25. data/core/data.rbs +415 -0
  26. data/core/dir.rbs +981 -0
  27. data/core/encoding.rbs +1371 -0
  28. data/core/enumerable.rbs +2405 -0
  29. data/core/enumerator/product.rbs +92 -0
  30. data/core/enumerator.rbs +630 -0
  31. data/core/env.rbs +6 -0
  32. data/core/errno.rbs +673 -0
  33. data/core/errors.rbs +760 -0
  34. data/core/exception.rbs +485 -0
  35. data/core/false_class.rbs +82 -0
  36. data/core/fiber.rbs +550 -0
  37. data/core/fiber_error.rbs +11 -0
  38. data/core/file.rbs +2936 -0
  39. data/core/file_test.rbs +331 -0
  40. data/core/float.rbs +1151 -0
  41. data/core/gc.rbs +644 -0
  42. data/core/global_variables.rbs +184 -0
  43. data/core/hash.rbs +1861 -0
  44. data/core/integer.rbs +1413 -0
  45. data/core/io/buffer.rbs +984 -0
  46. data/core/io/wait.rbs +70 -0
  47. data/core/io.rbs +3406 -0
  48. data/core/kernel.rbs +3096 -0
  49. data/core/marshal.rbs +207 -0
  50. data/core/match_data.rbs +635 -0
  51. data/core/math.rbs +729 -0
  52. data/core/method.rbs +386 -0
  53. data/core/module.rbs +1704 -0
  54. data/core/nil_class.rbs +209 -0
  55. data/core/numeric.rbs +818 -0
  56. data/core/object.rbs +110 -0
  57. data/core/object_space/weak_key_map.rbs +166 -0
  58. data/core/object_space.rbs +190 -0
  59. data/core/proc.rbs +868 -0
  60. data/core/process.rbs +2296 -0
  61. data/core/ractor.rbs +1068 -0
  62. data/core/random.rbs +237 -0
  63. data/core/range.rbs +1107 -0
  64. data/core/rational.rbs +531 -0
  65. data/core/rb_config.rbs +88 -0
  66. data/core/rbs/unnamed/argf.rbs +1229 -0
  67. data/core/rbs/unnamed/env_class.rbs +1209 -0
  68. data/core/rbs/unnamed/random.rbs +293 -0
  69. data/core/refinement.rbs +59 -0
  70. data/core/regexp.rbs +1930 -0
  71. data/core/ruby_vm.rbs +765 -0
  72. data/core/rubygems/basic_specification.rbs +6 -0
  73. data/core/rubygems/config_file.rbs +38 -0
  74. data/core/rubygems/dependency_installer.rbs +6 -0
  75. data/core/rubygems/errors.rbs +176 -0
  76. data/core/rubygems/installer.rbs +15 -0
  77. data/core/rubygems/path_support.rbs +6 -0
  78. data/core/rubygems/platform.rbs +7 -0
  79. data/core/rubygems/request_set.rbs +49 -0
  80. data/core/rubygems/requirement.rbs +148 -0
  81. data/core/rubygems/rubygems.rbs +1171 -0
  82. data/core/rubygems/source_list.rbs +15 -0
  83. data/core/rubygems/specification.rbs +23 -0
  84. data/core/rubygems/stream_ui.rbs +5 -0
  85. data/core/rubygems/uninstaller.rbs +10 -0
  86. data/core/rubygems/version.rbs +294 -0
  87. data/core/set.rbs +621 -0
  88. data/core/signal.rbs +100 -0
  89. data/core/string.rbs +3583 -0
  90. data/core/struct.rbs +667 -0
  91. data/core/symbol.rbs +475 -0
  92. data/core/thread.rbs +1765 -0
  93. data/core/thread_group.rbs +79 -0
  94. data/core/time.rbs +1762 -0
  95. data/core/trace_point.rbs +477 -0
  96. data/core/true_class.rbs +98 -0
  97. data/core/unbound_method.rbs +329 -0
  98. data/core/warning.rbs +87 -0
  99. data/docs/CONTRIBUTING.md +106 -0
  100. data/docs/architecture.md +110 -0
  101. data/docs/collection.md +192 -0
  102. data/docs/data_and_struct.md +86 -0
  103. data/docs/gem.md +57 -0
  104. data/docs/rbs_by_example.md +309 -0
  105. data/docs/repo.md +125 -0
  106. data/docs/sigs.md +167 -0
  107. data/docs/stdlib.md +147 -0
  108. data/docs/syntax.md +910 -0
  109. data/docs/tools.md +17 -0
  110. data/exe/rbs +7 -0
  111. data/ext/rbs_extension/extconf.rb +15 -0
  112. data/ext/rbs_extension/lexer.c +2728 -0
  113. data/ext/rbs_extension/lexer.h +179 -0
  114. data/ext/rbs_extension/lexer.re +147 -0
  115. data/ext/rbs_extension/lexstate.c +175 -0
  116. data/ext/rbs_extension/location.c +325 -0
  117. data/ext/rbs_extension/location.h +85 -0
  118. data/ext/rbs_extension/main.c +33 -0
  119. data/ext/rbs_extension/parser.c +2973 -0
  120. data/ext/rbs_extension/parser.h +18 -0
  121. data/ext/rbs_extension/parserstate.c +397 -0
  122. data/ext/rbs_extension/parserstate.h +163 -0
  123. data/ext/rbs_extension/rbs_extension.h +31 -0
  124. data/ext/rbs_extension/unescape.c +32 -0
  125. data/goodcheck.yml +91 -0
  126. data/include/rbs/constants.h +82 -0
  127. data/include/rbs/ruby_objs.h +72 -0
  128. data/include/rbs/util/rbs_constant_pool.h +219 -0
  129. data/include/rbs.h +7 -0
  130. data/lib/rbs/ancestor_graph.rb +92 -0
  131. data/lib/rbs/annotate/annotations.rb +199 -0
  132. data/lib/rbs/annotate/formatter.rb +92 -0
  133. data/lib/rbs/annotate/rdoc_annotator.rb +400 -0
  134. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  135. data/lib/rbs/annotate.rb +8 -0
  136. data/lib/rbs/ast/annotation.rb +29 -0
  137. data/lib/rbs/ast/comment.rb +29 -0
  138. data/lib/rbs/ast/declarations.rb +467 -0
  139. data/lib/rbs/ast/directives.rb +49 -0
  140. data/lib/rbs/ast/members.rb +451 -0
  141. data/lib/rbs/ast/type_param.rb +225 -0
  142. data/lib/rbs/ast/visitor.rb +137 -0
  143. data/lib/rbs/buffer.rb +67 -0
  144. data/lib/rbs/builtin_names.rb +58 -0
  145. data/lib/rbs/cli/colored_io.rb +48 -0
  146. data/lib/rbs/cli/diff.rb +83 -0
  147. data/lib/rbs/cli/validate.rb +357 -0
  148. data/lib/rbs/cli.rb +1223 -0
  149. data/lib/rbs/collection/cleaner.rb +38 -0
  150. data/lib/rbs/collection/config/lockfile.rb +92 -0
  151. data/lib/rbs/collection/config/lockfile_generator.rb +218 -0
  152. data/lib/rbs/collection/config.rb +81 -0
  153. data/lib/rbs/collection/installer.rb +32 -0
  154. data/lib/rbs/collection/sources/base.rb +14 -0
  155. data/lib/rbs/collection/sources/git.rb +258 -0
  156. data/lib/rbs/collection/sources/local.rb +81 -0
  157. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  158. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  159. data/lib/rbs/collection/sources.rb +38 -0
  160. data/lib/rbs/collection.rb +16 -0
  161. data/lib/rbs/constant.rb +28 -0
  162. data/lib/rbs/definition.rb +401 -0
  163. data/lib/rbs/definition_builder/ancestor_builder.rb +620 -0
  164. data/lib/rbs/definition_builder/method_builder.rb +254 -0
  165. data/lib/rbs/definition_builder.rb +845 -0
  166. data/lib/rbs/diff.rb +125 -0
  167. data/lib/rbs/environment/use_map.rb +77 -0
  168. data/lib/rbs/environment.rb +829 -0
  169. data/lib/rbs/environment_loader.rb +173 -0
  170. data/lib/rbs/environment_walker.rb +155 -0
  171. data/lib/rbs/errors.rb +645 -0
  172. data/lib/rbs/factory.rb +18 -0
  173. data/lib/rbs/file_finder.rb +28 -0
  174. data/lib/rbs/location_aux.rb +138 -0
  175. data/lib/rbs/locator.rb +243 -0
  176. data/lib/rbs/method_type.rb +143 -0
  177. data/lib/rbs/namespace.rb +125 -0
  178. data/lib/rbs/parser/lex_result.rb +15 -0
  179. data/lib/rbs/parser/token.rb +23 -0
  180. data/lib/rbs/parser_aux.rb +114 -0
  181. data/lib/rbs/prototype/helpers.rb +140 -0
  182. data/lib/rbs/prototype/node_usage.rb +99 -0
  183. data/lib/rbs/prototype/rb.rb +840 -0
  184. data/lib/rbs/prototype/rbi.rb +641 -0
  185. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  186. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  187. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  188. data/lib/rbs/prototype/runtime.rb +667 -0
  189. data/lib/rbs/repository.rb +127 -0
  190. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  191. data/lib/rbs/resolver/type_name_resolver.rb +91 -0
  192. data/lib/rbs/sorter.rb +198 -0
  193. data/lib/rbs/substitution.rb +83 -0
  194. data/lib/rbs/subtractor.rb +201 -0
  195. data/lib/rbs/test/errors.rb +80 -0
  196. data/lib/rbs/test/guaranteed.rb +30 -0
  197. data/lib/rbs/test/hook.rb +212 -0
  198. data/lib/rbs/test/observer.rb +19 -0
  199. data/lib/rbs/test/setup.rb +84 -0
  200. data/lib/rbs/test/setup_helper.rb +50 -0
  201. data/lib/rbs/test/tester.rb +167 -0
  202. data/lib/rbs/test/type_check.rb +435 -0
  203. data/lib/rbs/test.rb +112 -0
  204. data/lib/rbs/type_alias_dependency.rb +100 -0
  205. data/lib/rbs/type_alias_regularity.rb +126 -0
  206. data/lib/rbs/type_name.rb +109 -0
  207. data/lib/rbs/types.rb +1596 -0
  208. data/lib/rbs/unit_test/convertibles.rb +176 -0
  209. data/lib/rbs/unit_test/spy.rb +138 -0
  210. data/lib/rbs/unit_test/type_assertions.rb +347 -0
  211. data/lib/rbs/unit_test/with_aliases.rb +143 -0
  212. data/lib/rbs/unit_test.rb +6 -0
  213. data/lib/rbs/validator.rb +186 -0
  214. data/lib/rbs/variance_calculator.rb +189 -0
  215. data/lib/rbs/vendorer.rb +71 -0
  216. data/lib/rbs/version.rb +5 -0
  217. data/lib/rbs/writer.rb +424 -0
  218. data/lib/rbs.rb +94 -0
  219. data/lib/rdoc/discover.rb +20 -0
  220. data/lib/rdoc_plugin/parser.rb +163 -0
  221. data/rbs-relaxed.gemspec +48 -0
  222. data/schema/annotation.json +14 -0
  223. data/schema/comment.json +26 -0
  224. data/schema/decls.json +326 -0
  225. data/schema/function.json +87 -0
  226. data/schema/location.json +56 -0
  227. data/schema/members.json +266 -0
  228. data/schema/methodType.json +50 -0
  229. data/schema/typeParam.json +36 -0
  230. data/schema/types.json +317 -0
  231. data/sig/ancestor_builder.rbs +163 -0
  232. data/sig/ancestor_graph.rbs +60 -0
  233. data/sig/annotate/annotations.rbs +102 -0
  234. data/sig/annotate/formatter.rbs +24 -0
  235. data/sig/annotate/rdoc_annotater.rbs +82 -0
  236. data/sig/annotate/rdoc_source.rbs +30 -0
  237. data/sig/annotation.rbs +27 -0
  238. data/sig/buffer.rbs +32 -0
  239. data/sig/builtin_names.rbs +44 -0
  240. data/sig/cli/colored_io.rbs +15 -0
  241. data/sig/cli/diff.rbs +21 -0
  242. data/sig/cli/validate.rbs +43 -0
  243. data/sig/cli.rbs +87 -0
  244. data/sig/collection/cleaner.rbs +13 -0
  245. data/sig/collection/config/lockfile.rbs +74 -0
  246. data/sig/collection/config/lockfile_generator.rbs +66 -0
  247. data/sig/collection/config.rbs +46 -0
  248. data/sig/collection/installer.rbs +17 -0
  249. data/sig/collection/sources.rbs +214 -0
  250. data/sig/collection.rbs +4 -0
  251. data/sig/comment.rbs +26 -0
  252. data/sig/constant.rbs +21 -0
  253. data/sig/declarations.rbs +267 -0
  254. data/sig/definition.rbs +173 -0
  255. data/sig/definition_builder.rbs +165 -0
  256. data/sig/diff.rbs +28 -0
  257. data/sig/directives.rbs +77 -0
  258. data/sig/environment.rbs +279 -0
  259. data/sig/environment_loader.rbs +111 -0
  260. data/sig/environment_walker.rbs +65 -0
  261. data/sig/errors.rbs +405 -0
  262. data/sig/factory.rbs +5 -0
  263. data/sig/file_finder.rbs +28 -0
  264. data/sig/location.rbs +110 -0
  265. data/sig/locator.rbs +58 -0
  266. data/sig/manifest.yaml +7 -0
  267. data/sig/members.rbs +258 -0
  268. data/sig/method_builder.rbs +84 -0
  269. data/sig/method_types.rbs +58 -0
  270. data/sig/namespace.rbs +146 -0
  271. data/sig/parser.rbs +100 -0
  272. data/sig/prototype/helpers.rbs +27 -0
  273. data/sig/prototype/node_usage.rbs +20 -0
  274. data/sig/prototype/rb.rbs +96 -0
  275. data/sig/prototype/rbi.rbs +75 -0
  276. data/sig/prototype/runtime.rbs +182 -0
  277. data/sig/rbs.rbs +21 -0
  278. data/sig/rdoc/rbs.rbs +67 -0
  279. data/sig/repository.rbs +85 -0
  280. data/sig/resolver/constant_resolver.rbs +92 -0
  281. data/sig/resolver/context.rbs +34 -0
  282. data/sig/resolver/type_name_resolver.rbs +35 -0
  283. data/sig/shims/bundler.rbs +38 -0
  284. data/sig/shims/enumerable.rbs +5 -0
  285. data/sig/shims/rubygems.rbs +19 -0
  286. data/sig/sorter.rbs +41 -0
  287. data/sig/substitution.rbs +48 -0
  288. data/sig/subtractor.rbs +37 -0
  289. data/sig/test/errors.rbs +52 -0
  290. data/sig/test/guranteed.rbs +9 -0
  291. data/sig/test/type_check.rbs +19 -0
  292. data/sig/test.rbs +82 -0
  293. data/sig/type_alias_dependency.rbs +53 -0
  294. data/sig/type_alias_regularity.rbs +98 -0
  295. data/sig/type_param.rbs +110 -0
  296. data/sig/typename.rbs +79 -0
  297. data/sig/types.rbs +579 -0
  298. data/sig/unit_test/convertibles.rbs +154 -0
  299. data/sig/unit_test/spy.rbs +30 -0
  300. data/sig/unit_test/type_assertions.rbs +196 -0
  301. data/sig/unit_test/with_aliases.rbs +136 -0
  302. data/sig/use_map.rbs +35 -0
  303. data/sig/util.rbs +9 -0
  304. data/sig/validator.rbs +63 -0
  305. data/sig/variance_calculator.rbs +87 -0
  306. data/sig/vendorer.rbs +51 -0
  307. data/sig/version.rbs +3 -0
  308. data/sig/visitor.rbs +47 -0
  309. data/sig/writer.rbs +127 -0
  310. data/src/constants.c +153 -0
  311. data/src/ruby_objs.c +795 -0
  312. data/src/util/rbs_constant_pool.c +342 -0
  313. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  314. data/stdlib/abbrev/0/array.rbs +26 -0
  315. data/stdlib/base64/0/base64.rbs +355 -0
  316. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  317. data/stdlib/bigdecimal/0/big_decimal.rbs +1629 -0
  318. data/stdlib/bigdecimal-math/0/big_math.rbs +119 -0
  319. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  320. data/stdlib/cgi/0/core.rbs +1285 -0
  321. data/stdlib/cgi/0/manifest.yaml +3 -0
  322. data/stdlib/coverage/0/coverage.rbs +263 -0
  323. data/stdlib/csv/0/csv.rbs +3776 -0
  324. data/stdlib/csv/0/manifest.yaml +3 -0
  325. data/stdlib/date/0/date.rbs +1585 -0
  326. data/stdlib/date/0/date_time.rbs +616 -0
  327. data/stdlib/date/0/time.rbs +26 -0
  328. data/stdlib/dbm/0/dbm.rbs +421 -0
  329. data/stdlib/delegate/0/delegator.rbs +184 -0
  330. data/stdlib/delegate/0/kernel.rbs +47 -0
  331. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  332. data/stdlib/did_you_mean/0/did_you_mean.rbs +343 -0
  333. data/stdlib/digest/0/digest.rbs +577 -0
  334. data/stdlib/erb/0/erb.rbs +532 -0
  335. data/stdlib/etc/0/etc.rbs +865 -0
  336. data/stdlib/fileutils/0/fileutils.rbs +1734 -0
  337. data/stdlib/find/0/find.rbs +49 -0
  338. data/stdlib/forwardable/0/forwardable.rbs +268 -0
  339. data/stdlib/io-console/0/io-console.rbs +414 -0
  340. data/stdlib/ipaddr/0/ipaddr.rbs +428 -0
  341. data/stdlib/json/0/json.rbs +1916 -0
  342. data/stdlib/kconv/0/kconv.rbs +166 -0
  343. data/stdlib/logger/0/formatter.rbs +45 -0
  344. data/stdlib/logger/0/log_device.rbs +100 -0
  345. data/stdlib/logger/0/logger.rbs +796 -0
  346. data/stdlib/logger/0/manifest.yaml +2 -0
  347. data/stdlib/logger/0/period.rbs +17 -0
  348. data/stdlib/logger/0/severity.rbs +34 -0
  349. data/stdlib/minitest/0/kernel.rbs +42 -0
  350. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  351. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  352. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  353. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  354. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  355. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  356. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  357. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  358. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  359. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  360. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  361. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  362. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  363. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  364. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  365. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  366. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  367. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  368. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  369. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  370. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  371. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  372. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  373. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  374. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  375. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  376. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  377. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  378. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  379. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  380. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  381. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  382. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  383. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  384. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  385. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  386. data/stdlib/minitest/0/minitest.rbs +115 -0
  387. data/stdlib/monitor/0/monitor.rbs +363 -0
  388. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  389. data/stdlib/net-http/0/manifest.yaml +3 -0
  390. data/stdlib/net-http/0/net-http.rbs +5552 -0
  391. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  392. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  393. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  394. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  395. data/stdlib/nkf/0/nkf.rbs +402 -0
  396. data/stdlib/objspace/0/objspace.rbs +487 -0
  397. data/stdlib/observable/0/observable.rbs +217 -0
  398. data/stdlib/open-uri/0/manifest.yaml +4 -0
  399. data/stdlib/open-uri/0/open-uri.rbs +393 -0
  400. data/stdlib/open3/0/open3.rbs +147 -0
  401. data/stdlib/openssl/0/manifest.yaml +3 -0
  402. data/stdlib/openssl/0/openssl.rbs +12113 -0
  403. data/stdlib/optparse/0/optparse.rbs +1725 -0
  404. data/stdlib/pathname/0/pathname.rbs +1406 -0
  405. data/stdlib/pp/0/manifest.yaml +2 -0
  406. data/stdlib/pp/0/pp.rbs +300 -0
  407. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  408. data/stdlib/pstore/0/pstore.rbs +603 -0
  409. data/stdlib/psych/0/core_ext.rbs +12 -0
  410. data/stdlib/psych/0/dbm.rbs +237 -0
  411. data/stdlib/psych/0/manifest.yaml +3 -0
  412. data/stdlib/psych/0/psych.rbs +402 -0
  413. data/stdlib/psych/0/store.rbs +59 -0
  414. data/stdlib/pty/0/pty.rbs +237 -0
  415. data/stdlib/rdoc/0/code_object.rbs +51 -0
  416. data/stdlib/rdoc/0/comment.rbs +59 -0
  417. data/stdlib/rdoc/0/context.rbs +153 -0
  418. data/stdlib/rdoc/0/markup.rbs +117 -0
  419. data/stdlib/rdoc/0/parser.rbs +56 -0
  420. data/stdlib/rdoc/0/rdoc.rbs +391 -0
  421. data/stdlib/rdoc/0/ri.rbs +17 -0
  422. data/stdlib/rdoc/0/store.rbs +48 -0
  423. data/stdlib/rdoc/0/top_level.rbs +97 -0
  424. data/stdlib/resolv/0/manifest.yaml +3 -0
  425. data/stdlib/resolv/0/resolv.rbs +1830 -0
  426. data/stdlib/ripper/0/ripper.rbs +1648 -0
  427. data/stdlib/securerandom/0/securerandom.rbs +62 -0
  428. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  429. data/stdlib/singleton/0/singleton.rbs +131 -0
  430. data/stdlib/socket/0/addrinfo.rbs +666 -0
  431. data/stdlib/socket/0/basic_socket.rbs +590 -0
  432. data/stdlib/socket/0/constants.rbs +2295 -0
  433. data/stdlib/socket/0/ip_socket.rbs +92 -0
  434. data/stdlib/socket/0/socket.rbs +4157 -0
  435. data/stdlib/socket/0/socket_error.rbs +5 -0
  436. data/stdlib/socket/0/tcp_server.rbs +192 -0
  437. data/stdlib/socket/0/tcp_socket.rbs +79 -0
  438. data/stdlib/socket/0/udp_socket.rbs +133 -0
  439. data/stdlib/socket/0/unix_server.rbs +169 -0
  440. data/stdlib/socket/0/unix_socket.rbs +172 -0
  441. data/stdlib/stringio/0/stringio.rbs +567 -0
  442. data/stdlib/strscan/0/string_scanner.rbs +1627 -0
  443. data/stdlib/tempfile/0/tempfile.rbs +479 -0
  444. data/stdlib/time/0/time.rbs +432 -0
  445. data/stdlib/timeout/0/timeout.rbs +81 -0
  446. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  447. data/stdlib/tsort/0/cyclic.rbs +5 -0
  448. data/stdlib/tsort/0/interfaces.rbs +20 -0
  449. data/stdlib/tsort/0/tsort.rbs +409 -0
  450. data/stdlib/uri/0/common.rbs +582 -0
  451. data/stdlib/uri/0/file.rbs +118 -0
  452. data/stdlib/uri/0/ftp.rbs +13 -0
  453. data/stdlib/uri/0/generic.rbs +1108 -0
  454. data/stdlib/uri/0/http.rbs +104 -0
  455. data/stdlib/uri/0/https.rbs +14 -0
  456. data/stdlib/uri/0/ldap.rbs +230 -0
  457. data/stdlib/uri/0/ldaps.rbs +14 -0
  458. data/stdlib/uri/0/mailto.rbs +92 -0
  459. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  460. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  461. data/stdlib/uri/0/ws.rbs +13 -0
  462. data/stdlib/uri/0/wss.rbs +9 -0
  463. data/stdlib/yaml/0/manifest.yaml +2 -0
  464. data/stdlib/yaml/0/yaml.rbs +1 -0
  465. data/stdlib/zlib/0/buf_error.rbs +10 -0
  466. data/stdlib/zlib/0/data_error.rbs +10 -0
  467. data/stdlib/zlib/0/deflate.rbs +210 -0
  468. data/stdlib/zlib/0/error.rbs +20 -0
  469. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  470. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  471. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  472. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  473. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  474. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  475. data/stdlib/zlib/0/gzip_writer.rbs +166 -0
  476. data/stdlib/zlib/0/inflate.rbs +180 -0
  477. data/stdlib/zlib/0/mem_error.rbs +10 -0
  478. data/stdlib/zlib/0/need_dict.rbs +13 -0
  479. data/stdlib/zlib/0/stream_end.rbs +11 -0
  480. data/stdlib/zlib/0/stream_error.rbs +11 -0
  481. data/stdlib/zlib/0/version_error.rbs +11 -0
  482. data/stdlib/zlib/0/zlib.rbs +449 -0
  483. data/stdlib/zlib/0/zstream.rbs +200 -0
  484. metadata +532 -0
@@ -0,0 +1,630 @@
1
+ # <!-- rdoc-file=enumerator.c -->
2
+ # A class which allows both internal and external iteration.
3
+ #
4
+ # An Enumerator can be created by the following methods.
5
+ # * Object#to_enum
6
+ # * Object#enum_for
7
+ # * Enumerator.new
8
+ #
9
+ # Most methods have two forms: a block form where the contents are evaluated for
10
+ # each item in the enumeration, and a non-block form which returns a new
11
+ # Enumerator wrapping the iteration.
12
+ #
13
+ # enumerator = %w(one two three).each
14
+ # puts enumerator.class # => Enumerator
15
+ #
16
+ # enumerator.each_with_object("foo") do |item, obj|
17
+ # puts "#{obj}: #{item}"
18
+ # end
19
+ #
20
+ # # foo: one
21
+ # # foo: two
22
+ # # foo: three
23
+ #
24
+ # enum_with_obj = enumerator.each_with_object("foo")
25
+ # puts enum_with_obj.class # => Enumerator
26
+ #
27
+ # enum_with_obj.each do |item, obj|
28
+ # puts "#{obj}: #{item}"
29
+ # end
30
+ #
31
+ # # foo: one
32
+ # # foo: two
33
+ # # foo: three
34
+ #
35
+ # This allows you to chain Enumerators together. For example, you can map a
36
+ # list's elements to strings containing the index and the element as a string
37
+ # via:
38
+ #
39
+ # puts %w[foo bar baz].map.with_index { |w, i| "#{i}:#{w}" }
40
+ # # => ["0:foo", "1:bar", "2:baz"]
41
+ #
42
+ # ## External Iteration
43
+ #
44
+ # An Enumerator can also be used as an external iterator. For example,
45
+ # Enumerator#next returns the next value of the iterator or raises StopIteration
46
+ # if the Enumerator is at the end.
47
+ #
48
+ # e = [1,2,3].each # returns an enumerator object.
49
+ # puts e.next # => 1
50
+ # puts e.next # => 2
51
+ # puts e.next # => 3
52
+ # puts e.next # raises StopIteration
53
+ #
54
+ # `next`, `next_values`, `peek`, and `peek_values` are the only methods which
55
+ # use external iteration (and Array#zip(Enumerable-not-Array) which uses `next`
56
+ # internally).
57
+ #
58
+ # These methods do not affect other internal enumeration methods, unless the
59
+ # underlying iteration method itself has side-effect, e.g. IO#each_line.
60
+ #
61
+ # FrozenError will be raised if these methods are called against a frozen
62
+ # enumerator. Since `rewind` and `feed` also change state for external
63
+ # iteration, these methods may raise FrozenError too.
64
+ #
65
+ # External iteration differs **significantly** from internal iteration due to
66
+ # using a Fiber:
67
+ # * The Fiber adds some overhead compared to internal enumeration.
68
+ # * The stacktrace will only include the stack from the Enumerator, not above.
69
+ # * Fiber-local variables are **not** inherited inside the Enumerator Fiber,
70
+ # which instead starts with no Fiber-local variables.
71
+ # * Fiber storage variables **are** inherited and are designed to handle
72
+ # Enumerator Fibers. Assigning to a Fiber storage variable only affects the
73
+ # current Fiber, so if you want to change state in the caller Fiber of the
74
+ # Enumerator Fiber, you need to use an extra indirection (e.g., use some
75
+ # object in the Fiber storage variable and mutate some ivar of it).
76
+ #
77
+ # Concretely:
78
+ #
79
+ # Thread.current[:fiber_local] = 1
80
+ # Fiber[:storage_var] = 1
81
+ # e = Enumerator.new do |y|
82
+ # p Thread.current[:fiber_local] # for external iteration: nil, for internal iteration: 1
83
+ # p Fiber[:storage_var] # => 1, inherited
84
+ # Fiber[:storage_var] += 1
85
+ # y << 42
86
+ # end
87
+ #
88
+ # p e.next # => 42
89
+ # p Fiber[:storage_var] # => 1 (it ran in a different Fiber)
90
+ #
91
+ # e.each { p _1 }
92
+ # p Fiber[:storage_var] # => 2 (it ran in the same Fiber/"stack" as the current Fiber)
93
+ #
94
+ # ## Convert External Iteration to Internal Iteration
95
+ #
96
+ # You can use an external iterator to implement an internal iterator as follows:
97
+ #
98
+ # def ext_each(e)
99
+ # while true
100
+ # begin
101
+ # vs = e.next_values
102
+ # rescue StopIteration
103
+ # return $!.result
104
+ # end
105
+ # y = yield(*vs)
106
+ # e.feed y
107
+ # end
108
+ # end
109
+ #
110
+ # o = Object.new
111
+ #
112
+ # def o.each
113
+ # puts yield
114
+ # puts yield(1)
115
+ # puts yield(1, 2)
116
+ # 3
117
+ # end
118
+ #
119
+ # # use o.each as an internal iterator directly.
120
+ # puts o.each {|*x| puts x; [:b, *x] }
121
+ # # => [], [:b], [1], [:b, 1], [1, 2], [:b, 1, 2], 3
122
+ #
123
+ # # convert o.each to an external iterator for
124
+ # # implementing an internal iterator.
125
+ # puts ext_each(o.to_enum) {|*x| puts x; [:b, *x] }
126
+ # # => [], [:b], [1], [:b, 1], [1, 2], [:b, 1, 2], 3
127
+ #
128
+ class Enumerator[unchecked out Elem, out Return = void] < Object
129
+ include Enumerable[Elem]
130
+
131
+ # A convenience interface for `each` with optional block
132
+ #
133
+ interface _Each[out E, out R]
134
+ def each: () { (E) -> void } -> R
135
+ | () -> Enumerator[E, R]
136
+ end
137
+
138
+ # <!--
139
+ # rdoc-file=enumerator.c
140
+ # - Enumerator.produce(initial = nil) { |prev| block } -> enumerator
141
+ # -->
142
+ # Creates an infinite enumerator from any block, just called over and over. The
143
+ # result of the previous iteration is passed to the next one. If `initial` is
144
+ # provided, it is passed to the first iteration, and becomes the first element
145
+ # of the enumerator; if it is not provided, the first iteration receives `nil`,
146
+ # and its result becomes the first element of the iterator.
147
+ #
148
+ # Raising StopIteration from the block stops an iteration.
149
+ #
150
+ # Enumerator.produce(1, &:succ) # => enumerator of 1, 2, 3, 4, ....
151
+ #
152
+ # Enumerator.produce { rand(10) } # => infinite random number sequence
153
+ #
154
+ # ancestors = Enumerator.produce(node) { |prev| node = prev.parent or raise StopIteration }
155
+ # enclosing_section = ancestors.find { |n| n.type == :section }
156
+ #
157
+ # Using ::produce together with Enumerable methods like Enumerable#detect,
158
+ # Enumerable#slice_after, Enumerable#take_while can provide Enumerator-based
159
+ # alternatives for `while` and `until` cycles:
160
+ #
161
+ # # Find next Tuesday
162
+ # require "date"
163
+ # Enumerator.produce(Date.today, &:succ).detect(&:tuesday?)
164
+ #
165
+ # # Simple lexer:
166
+ # require "strscan"
167
+ # scanner = StringScanner.new("7+38/6")
168
+ # PATTERN = %r{\d+|[-/+*]}
169
+ # Enumerator.produce { scanner.scan(PATTERN) }.slice_after { scanner.eos? }.first
170
+ # # => ["7", "+", "38", "/", "6"]
171
+ #
172
+ def self.produce: [T] () { (T? prev) -> T } -> Enumerator[T, bot]
173
+ | [T] (T initial) { (T prev) -> T } -> Enumerator[T, bot]
174
+
175
+ # <!--
176
+ # rdoc-file=enumerator.c
177
+ # - Enumerator.product(*enums) -> enumerator
178
+ # - Enumerator.product(*enums) { |elts| ... } -> enumerator
179
+ # -->
180
+ # Generates a new enumerator object that generates a Cartesian product of given
181
+ # enumerable objects. This is equivalent to Enumerator::Product.new.
182
+ #
183
+ # e = Enumerator.product(1..3, [4, 5])
184
+ # e.to_a #=> [[1, 4], [1, 5], [2, 4], [2, 5], [3, 4], [3, 5]]
185
+ # e.size #=> 6
186
+ #
187
+ # When a block is given, calls the block with each N-element array generated and
188
+ # returns `nil`.
189
+ #
190
+ def self.product: [Elem] (*_EachEntry[Elem]) -> Product[Elem]
191
+
192
+ # <!--
193
+ # rdoc-file=enumerator.c
194
+ # - enum.each { |elm| block } -> obj
195
+ # - enum.each -> enum
196
+ # - enum.each(*appending_args) { |elm| block } -> obj
197
+ # - enum.each(*appending_args) -> an_enumerator
198
+ # -->
199
+ # Iterates over the block according to how this Enumerator was constructed. If
200
+ # no block and no arguments are given, returns self.
201
+ #
202
+ # ### Examples
203
+ #
204
+ # "Hello, world!".scan(/\w+/) #=> ["Hello", "world"]
205
+ # "Hello, world!".to_enum(:scan, /\w+/).to_a #=> ["Hello", "world"]
206
+ # "Hello, world!".to_enum(:scan).each(/\w+/).to_a #=> ["Hello", "world"]
207
+ #
208
+ # obj = Object.new
209
+ #
210
+ # def obj.each_arg(a, b=:b, *rest)
211
+ # yield a
212
+ # yield b
213
+ # yield rest
214
+ # :method_returned
215
+ # end
216
+ #
217
+ # enum = obj.to_enum :each_arg, :a, :x
218
+ #
219
+ # enum.each.to_a #=> [:a, :x, []]
220
+ # enum.each.equal?(enum) #=> true
221
+ # enum.each { |elm| elm } #=> :method_returned
222
+ #
223
+ # enum.each(:y, :z).to_a #=> [:a, :x, [:y, :z]]
224
+ # enum.each(:y, :z).equal?(enum) #=> false
225
+ # enum.each(:y, :z) { |elm| elm } #=> :method_returned
226
+ #
227
+ def each: () { (Elem arg0) -> untyped } -> Return
228
+ | () -> self
229
+
230
+ # <!--
231
+ # rdoc-file=enumerator.c
232
+ # - e.feed obj -> nil
233
+ # -->
234
+ # Sets the value to be returned by the next yield inside `e`.
235
+ #
236
+ # If the value is not set, the yield returns nil.
237
+ #
238
+ # This value is cleared after being yielded.
239
+ #
240
+ # # Array#map passes the array's elements to "yield" and collects the
241
+ # # results of "yield" as an array.
242
+ # # Following example shows that "next" returns the passed elements and
243
+ # # values passed to "feed" are collected as an array which can be
244
+ # # obtained by StopIteration#result.
245
+ # e = [1,2,3].map
246
+ # p e.next #=> 1
247
+ # e.feed "a"
248
+ # p e.next #=> 2
249
+ # e.feed "b"
250
+ # p e.next #=> 3
251
+ # e.feed "c"
252
+ # begin
253
+ # e.next
254
+ # rescue StopIteration
255
+ # p $!.result #=> ["a", "b", "c"]
256
+ # end
257
+ #
258
+ # o = Object.new
259
+ # def o.each
260
+ # x = yield # (2) blocks
261
+ # p x # (5) => "foo"
262
+ # x = yield # (6) blocks
263
+ # p x # (8) => nil
264
+ # x = yield # (9) blocks
265
+ # p x # not reached w/o another e.next
266
+ # end
267
+ #
268
+ # e = o.to_enum
269
+ # e.next # (1)
270
+ # e.feed "foo" # (3)
271
+ # e.next # (4)
272
+ # e.next # (7)
273
+ # # (10)
274
+ #
275
+ def feed: (Elem arg0) -> NilClass
276
+
277
+ # <!--
278
+ # rdoc-file=enumerator.c
279
+ # - Enumerator.new(size = nil) { |yielder| ... }
280
+ # -->
281
+ # Creates a new Enumerator object, which can be used as an Enumerable.
282
+ #
283
+ # Iteration is defined by the given block, in which a "yielder" object, given as
284
+ # block parameter, can be used to yield a value by calling the `yield` method
285
+ # (aliased as `<<`):
286
+ #
287
+ # fib = Enumerator.new do |y|
288
+ # a = b = 1
289
+ # loop do
290
+ # y << a
291
+ # a, b = b, a + b
292
+ # end
293
+ # end
294
+ #
295
+ # fib.take(10) # => [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
296
+ #
297
+ # The optional parameter can be used to specify how to calculate the size in a
298
+ # lazy fashion (see Enumerator#size). It can either be a value or a callable
299
+ # object.
300
+ #
301
+ def initialize: (?Integer arg0) { (Enumerator::Yielder arg0) -> Return } -> void
302
+
303
+ # <!--
304
+ # rdoc-file=enumerator.c
305
+ # - e.inspect -> string
306
+ # -->
307
+ # Creates a printable version of *e*.
308
+ #
309
+ def inspect: () -> String
310
+
311
+ # <!--
312
+ # rdoc-file=enumerator.c
313
+ # - e.next -> object
314
+ # -->
315
+ # Returns the next object in the enumerator, and move the internal position
316
+ # forward. When the position reached at the end, StopIteration is raised.
317
+ #
318
+ # ### Example
319
+ #
320
+ # a = [1,2,3]
321
+ # e = a.to_enum
322
+ # p e.next #=> 1
323
+ # p e.next #=> 2
324
+ # p e.next #=> 3
325
+ # p e.next #raises StopIteration
326
+ #
327
+ # See class-level notes about external iterators.
328
+ #
329
+ def next: () -> Elem
330
+
331
+ # <!--
332
+ # rdoc-file=enumerator.c
333
+ # - e.next_values -> array
334
+ # -->
335
+ # Returns the next object as an array in the enumerator, and move the internal
336
+ # position forward. When the position reached at the end, StopIteration is
337
+ # raised.
338
+ #
339
+ # See class-level notes about external iterators.
340
+ #
341
+ # This method can be used to distinguish `yield` and `yield nil`.
342
+ #
343
+ # ### Example
344
+ #
345
+ # o = Object.new
346
+ # def o.each
347
+ # yield
348
+ # yield 1
349
+ # yield 1, 2
350
+ # yield nil
351
+ # yield [1, 2]
352
+ # end
353
+ # e = o.to_enum
354
+ # p e.next_values
355
+ # p e.next_values
356
+ # p e.next_values
357
+ # p e.next_values
358
+ # p e.next_values
359
+ # e = o.to_enum
360
+ # p e.next
361
+ # p e.next
362
+ # p e.next
363
+ # p e.next
364
+ # p e.next
365
+ #
366
+ # ## yield args next_values next
367
+ # # yield [] nil
368
+ # # yield 1 [1] 1
369
+ # # yield 1, 2 [1, 2] [1, 2]
370
+ # # yield nil [nil] nil
371
+ # # yield [1, 2] [[1, 2]] [1, 2]
372
+ #
373
+ def next_values: () -> ::Array[Elem]
374
+
375
+ # <!--
376
+ # rdoc-file=enumerator.c
377
+ # - e.peek -> object
378
+ # -->
379
+ # Returns the next object in the enumerator, but doesn't move the internal
380
+ # position forward. If the position is already at the end, StopIteration is
381
+ # raised.
382
+ #
383
+ # See class-level notes about external iterators.
384
+ #
385
+ # ### Example
386
+ #
387
+ # a = [1,2,3]
388
+ # e = a.to_enum
389
+ # p e.next #=> 1
390
+ # p e.peek #=> 2
391
+ # p e.peek #=> 2
392
+ # p e.peek #=> 2
393
+ # p e.next #=> 2
394
+ # p e.next #=> 3
395
+ # p e.peek #raises StopIteration
396
+ #
397
+ def peek: () -> Elem
398
+
399
+ # <!--
400
+ # rdoc-file=enumerator.c
401
+ # - e.peek_values -> array
402
+ # -->
403
+ # Returns the next object as an array, similar to Enumerator#next_values, but
404
+ # doesn't move the internal position forward. If the position is already at the
405
+ # end, StopIteration is raised.
406
+ #
407
+ # See class-level notes about external iterators.
408
+ #
409
+ # ### Example
410
+ #
411
+ # o = Object.new
412
+ # def o.each
413
+ # yield
414
+ # yield 1
415
+ # yield 1, 2
416
+ # end
417
+ # e = o.to_enum
418
+ # p e.peek_values #=> []
419
+ # e.next
420
+ # p e.peek_values #=> [1]
421
+ # p e.peek_values #=> [1]
422
+ # e.next
423
+ # p e.peek_values #=> [1, 2]
424
+ # e.next
425
+ # p e.peek_values # raises StopIteration
426
+ #
427
+ def peek_values: () -> ::Array[Elem]
428
+
429
+ # <!--
430
+ # rdoc-file=enumerator.c
431
+ # - e.rewind -> e
432
+ # -->
433
+ # Rewinds the enumeration sequence to the beginning.
434
+ #
435
+ # If the enclosed object responds to a "rewind" method, it is called.
436
+ #
437
+ def rewind: () -> self
438
+
439
+ # <!--
440
+ # rdoc-file=enumerator.c
441
+ # - e.size -> int, Float::INFINITY or nil
442
+ # -->
443
+ # Returns the size of the enumerator, or `nil` if it can't be calculated lazily.
444
+ #
445
+ # (1..100).to_a.permutation(4).size # => 94109400
446
+ # loop.size # => Float::INFINITY
447
+ # (1..100).drop_while.size # => nil
448
+ #
449
+ def size: () -> (Integer | Float)?
450
+
451
+ # <!--
452
+ # rdoc-file=enumerator.c
453
+ # - e.with_index(offset = 0) {|(*args), idx| ... }
454
+ # - e.with_index(offset = 0)
455
+ # -->
456
+ # Iterates the given block for each element with an index, which starts from
457
+ # `offset`. If no block is given, returns a new Enumerator that includes the
458
+ # index, starting from `offset`
459
+ #
460
+ # `offset`
461
+ # : the starting index to use
462
+ #
463
+ def with_index: (?Integer offset) { (Elem arg0, Integer arg1) -> untyped } -> Return
464
+ | (?Integer offset) -> ::Enumerator[[ Elem, Integer ], Return]
465
+
466
+ # <!-- rdoc-file=enumerator.c -->
467
+ # Iterates the given block for each element with an arbitrary object, `obj`, and
468
+ # returns `obj`
469
+ #
470
+ # If no block is given, returns a new Enumerator.
471
+ #
472
+ # ### Example
473
+ #
474
+ # to_three = Enumerator.new do |y|
475
+ # 3.times do |x|
476
+ # y << x
477
+ # end
478
+ # end
479
+ #
480
+ # to_three_with_string = to_three.with_object("foo")
481
+ # to_three_with_string.each do |x,string|
482
+ # puts "#{string}: #{x}"
483
+ # end
484
+ #
485
+ # # => foo: 0
486
+ # # => foo: 1
487
+ # # => foo: 2
488
+ #
489
+ def with_object: [U] (U obj) { (Elem, U obj) -> untyped } -> U
490
+ | [U] (U obj) -> ::Enumerator[[ Elem, U ], U]
491
+ end
492
+
493
+ # <!-- rdoc-file=enumerator.c -->
494
+ # Generator
495
+ #
496
+ class Enumerator::Generator[out Elem] < Object
497
+ include Enumerable[Elem]
498
+
499
+ def each: () { (Elem) -> void } -> void
500
+ end
501
+
502
+ # <!-- rdoc-file=enumerator.c -->
503
+ # Enumerator::Lazy is a special type of Enumerator, that allows constructing
504
+ # chains of operations without evaluating them immediately, and evaluating
505
+ # values on as-needed basis. In order to do so it redefines most of Enumerable
506
+ # methods so that they just construct another lazy enumerator.
507
+ #
508
+ # Enumerator::Lazy can be constructed from any Enumerable with the
509
+ # Enumerable#lazy method.
510
+ #
511
+ # lazy = (1..Float::INFINITY).lazy.select(&:odd?).drop(10).take_while { |i| i < 30 }
512
+ # # => #<Enumerator::Lazy: #<Enumerator::Lazy: #<Enumerator::Lazy: #<Enumerator::Lazy: 1..Infinity>:select>:drop(10)>:take_while>
513
+ #
514
+ # The real enumeration is performed when any non-redefined Enumerable method is
515
+ # called, like Enumerable#first or Enumerable#to_a (the latter is aliased as
516
+ # #force for more semantic code):
517
+ #
518
+ # lazy.first(2)
519
+ # #=> [21, 23]
520
+ #
521
+ # lazy.force
522
+ # #=> [21, 23, 25, 27, 29]
523
+ #
524
+ # Note that most Enumerable methods that could be called with or without a
525
+ # block, on Enumerator::Lazy will always require a block:
526
+ #
527
+ # [1, 2, 3].map #=> #<Enumerator: [1, 2, 3]:map>
528
+ # [1, 2, 3].lazy.map # ArgumentError: tried to call lazy map without a block
529
+ #
530
+ # This class allows idiomatic calculations on long or infinite sequences, as
531
+ # well as chaining of calculations without constructing intermediate arrays.
532
+ #
533
+ # Example for working with a slowly calculated sequence:
534
+ #
535
+ # require 'open-uri'
536
+ #
537
+ # # This will fetch all URLs before selecting
538
+ # # necessary data
539
+ # URLS.map { |u| JSON.parse(URI.open(u).read) }
540
+ # .select { |data| data.key?('stats') }
541
+ # .first(5)
542
+ #
543
+ # # This will fetch URLs one-by-one, only till
544
+ # # there is enough data to satisfy the condition
545
+ # URLS.lazy.map { |u| JSON.parse(URI.open(u).read) }
546
+ # .select { |data| data.key?('stats') }
547
+ # .first(5)
548
+ #
549
+ # Ending a chain with ".eager" generates a non-lazy enumerator, which is
550
+ # suitable for returning or passing to another method that expects a normal
551
+ # enumerator.
552
+ #
553
+ # def active_items
554
+ # groups
555
+ # .lazy
556
+ # .flat_map(&:items)
557
+ # .reject(&:disabled)
558
+ # .eager
559
+ # end
560
+ #
561
+ # # This works lazily; if a checked item is found, it stops
562
+ # # iteration and does not look into remaining groups.
563
+ # first_checked = active_items.find(&:checked)
564
+ #
565
+ # # This returns an array of items like a normal enumerator does.
566
+ # all_checked = active_items.select(&:checked)
567
+ #
568
+ class Enumerator::Lazy[out Elem, out Return = void] < Enumerator[Elem, Return]
569
+ # <!-- rdoc-file=enumerator.c -->
570
+ # Expands `lazy` enumerator to an array. See Enumerable#to_a.
571
+ #
572
+ alias force to_a
573
+
574
+ # <!--
575
+ # rdoc-file=enumerator.c
576
+ # - lazy.compact -> lazy_enumerator
577
+ # -->
578
+ # Like Enumerable#compact, but chains operation to be lazy-evaluated.
579
+ #
580
+ def compact: () -> Enumerator::Lazy[Elem, Return]
581
+ end
582
+
583
+ # <!-- rdoc-file=enumerator.c -->
584
+ # Yielder
585
+ #
586
+ class Enumerator::Yielder < Object
587
+ def <<: (untyped arg0) -> void
588
+
589
+ def yield: (*untyped arg0) -> void
590
+
591
+ # <!--
592
+ # rdoc-file=enumerator.c
593
+ # - to_proc()
594
+ # -->
595
+ # Returns a Proc object that takes arguments and yields them.
596
+ #
597
+ # This method is implemented so that a Yielder object can be directly passed to
598
+ # another method as a block argument.
599
+ #
600
+ # enum = Enumerator.new { |y|
601
+ # Dir.glob("*.rb") { |file|
602
+ # File.open(file) { |f| f.each_line(&y) }
603
+ # }
604
+ # }
605
+ #
606
+ def to_proc: () -> Proc
607
+ end
608
+
609
+ # <!-- rdoc-file=enumerator.c -->
610
+ # Enumerator::Chain is a subclass of Enumerator, which represents a chain of
611
+ # enumerables that works as a single enumerator.
612
+ #
613
+ # This type of objects can be created by Enumerable#chain and Enumerator#+.
614
+ #
615
+ class Enumerator::Chain[out Elem] < Enumerator[Elem, void]
616
+ include Enumerable[Elem]
617
+
618
+ # <!--
619
+ # rdoc-file=enumerator.c
620
+ # - obj.each(*args) { |...| ... } -> obj
621
+ # - obj.each(*args) -> enumerator
622
+ # -->
623
+ # Iterates over the elements of the first enumerable by calling the "each"
624
+ # method on it with the given arguments, then proceeds to the following
625
+ # enumerables in sequence until all of the enumerables are exhausted.
626
+ #
627
+ # If no block is given, returns an enumerator.
628
+ #
629
+ def each: () { (Elem) -> void } -> void
630
+ end
data/core/env.rbs ADDED
@@ -0,0 +1,6 @@
1
+ # <!-- rdoc-file=hash.c -->
2
+ # `ENV` is a Hash-like accessor for environment variables.
3
+ #
4
+ # See ENV (the class) for more details.
5
+ #
6
+ ENV: RBS::Unnamed::ENVClass