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
data/core/numeric.rbs ADDED
@@ -0,0 +1,818 @@
1
+ # <!-- rdoc-file=numeric.c -->
2
+ # Numeric is the class from which all higher-level numeric classes should
3
+ # inherit.
4
+ #
5
+ # Numeric allows instantiation of heap-allocated objects. Other core numeric
6
+ # classes such as Integer are implemented as immediates, which means that each
7
+ # Integer is a single immutable object which is always passed by value.
8
+ #
9
+ # a = 1
10
+ # 1.object_id == a.object_id #=> true
11
+ #
12
+ # There can only ever be one instance of the integer `1`, for example. Ruby
13
+ # ensures this by preventing instantiation. If duplication is attempted, the
14
+ # same instance is returned.
15
+ #
16
+ # Integer.new(1) #=> NoMethodError: undefined method `new' for Integer:Class
17
+ # 1.dup #=> 1
18
+ # 1.object_id == 1.dup.object_id #=> true
19
+ #
20
+ # For this reason, Numeric should be used when defining other numeric classes.
21
+ #
22
+ # Classes which inherit from Numeric must implement `coerce`, which returns a
23
+ # two-member Array containing an object that has been coerced into an instance
24
+ # of the new class and `self` (see #coerce).
25
+ #
26
+ # Inheriting classes should also implement arithmetic operator methods (`+`,
27
+ # `-`, `*` and `/`) and the `<=>` operator (see Comparable). These methods may
28
+ # rely on `coerce` to ensure interoperability with instances of other numeric
29
+ # classes.
30
+ #
31
+ # class Tally < Numeric
32
+ # def initialize(string)
33
+ # @string = string
34
+ # end
35
+ #
36
+ # def to_s
37
+ # @string
38
+ # end
39
+ #
40
+ # def to_i
41
+ # @string.size
42
+ # end
43
+ #
44
+ # def coerce(other)
45
+ # [self.class.new('|' * other.to_i), self]
46
+ # end
47
+ #
48
+ # def <=>(other)
49
+ # to_i <=> other.to_i
50
+ # end
51
+ #
52
+ # def +(other)
53
+ # self.class.new('|' * (to_i + other.to_i))
54
+ # end
55
+ #
56
+ # def -(other)
57
+ # self.class.new('|' * (to_i - other.to_i))
58
+ # end
59
+ #
60
+ # def *(other)
61
+ # self.class.new('|' * (to_i * other.to_i))
62
+ # end
63
+ #
64
+ # def /(other)
65
+ # self.class.new('|' * (to_i / other.to_i))
66
+ # end
67
+ # end
68
+ #
69
+ # tally = Tally.new('||')
70
+ # puts tally * 2 #=> "||||"
71
+ # puts tally > 1 #=> true
72
+ #
73
+ # ## What's Here
74
+ #
75
+ # First, what's elsewhere. Class Numeric:
76
+ #
77
+ # * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
78
+ # * Includes [module Comparable](rdoc-ref:Comparable@What-27s+Here).
79
+ #
80
+ # Here, class Numeric provides methods for:
81
+ #
82
+ # * [Querying](rdoc-ref:Numeric@Querying)
83
+ # * [Comparing](rdoc-ref:Numeric@Comparing)
84
+ # * [Converting](rdoc-ref:Numeric@Converting)
85
+ # * [Other](rdoc-ref:Numeric@Other)
86
+ #
87
+ # ### Querying
88
+ #
89
+ # * #finite?: Returns true unless `self` is infinite or not a number.
90
+ # * #infinite?: Returns -1, `nil` or +1, depending on whether `self` is
91
+ # `-Infinity<tt>, finite, or <tt>+Infinity`.
92
+ # * #integer?: Returns whether `self` is an integer.
93
+ # * #negative?: Returns whether `self` is negative.
94
+ # * #nonzero?: Returns whether `self` is not zero.
95
+ # * #positive?: Returns whether `self` is positive.
96
+ # * #real?: Returns whether `self` is a real value.
97
+ # * #zero?: Returns whether `self` is zero.
98
+ #
99
+ # ### Comparing
100
+ #
101
+ # * #<=>: Returns:
102
+ #
103
+ # * -1 if `self` is less than the given value.
104
+ # * 0 if `self` is equal to the given value.
105
+ # * 1 if `self` is greater than the given value.
106
+ # * `nil` if `self` and the given value are not comparable.
107
+ #
108
+ # * #eql?: Returns whether `self` and the given value have the same value and
109
+ # type.
110
+ #
111
+ # ### Converting
112
+ #
113
+ # * #% (aliased as #modulo): Returns the remainder of `self` divided by the
114
+ # given value.
115
+ # * #-@: Returns the value of `self`, negated.
116
+ # * #abs (aliased as #magnitude): Returns the absolute value of `self`.
117
+ # * #abs2: Returns the square of `self`.
118
+ # * #angle (aliased as #arg and #phase): Returns 0 if `self` is positive,
119
+ # Math::PI otherwise.
120
+ # * #ceil: Returns the smallest number greater than or equal to `self`, to a
121
+ # given precision.
122
+ # * #coerce: Returns array `[coerced_self, coerced_other]` for the given other
123
+ # value.
124
+ # * #conj (aliased as #conjugate): Returns the complex conjugate of `self`.
125
+ # * #denominator: Returns the denominator (always positive) of the Rational
126
+ # representation of `self`.
127
+ # * #div: Returns the value of `self` divided by the given value and converted
128
+ # to an integer.
129
+ # * #divmod: Returns array `[quotient, modulus]` resulting from dividing
130
+ # `self` the given divisor.
131
+ # * #fdiv: Returns the Float result of dividing `self` by the given divisor.
132
+ # * #floor: Returns the largest number less than or equal to `self`, to a
133
+ # given precision.
134
+ # * #i: Returns the Complex object `Complex(0, self)`. the given value.
135
+ # * #imaginary (aliased as #imag): Returns the imaginary part of the `self`.
136
+ # * #numerator: Returns the numerator of the Rational representation of
137
+ # `self`; has the same sign as `self`.
138
+ # * #polar: Returns the array `[self.abs, self.arg]`.
139
+ # * #quo: Returns the value of `self` divided by the given value.
140
+ # * #real: Returns the real part of `self`.
141
+ # * #rect (aliased as #rectangular): Returns the array `[self, 0]`.
142
+ # * #remainder: Returns `self-arg*(self/arg).truncate` for the given `arg`.
143
+ # * #round: Returns the value of `self` rounded to the nearest value for the
144
+ # given a precision.
145
+ # * #to_c: Returns the Complex representation of `self`.
146
+ # * #to_int: Returns the Integer representation of `self`, truncating if
147
+ # necessary.
148
+ # * #truncate: Returns `self` truncated (toward zero) to a given precision.
149
+ #
150
+ # ### Other
151
+ #
152
+ # * #clone: Returns `self`; does not allow freezing.
153
+ # * #dup (aliased as #+@): Returns `self`.
154
+ # * #step: Invokes the given block with the sequence of specified numbers.
155
+ #
156
+ class Numeric
157
+ include Comparable
158
+
159
+ # <!--
160
+ # rdoc-file=numeric.c
161
+ # - self % other -> real_numeric
162
+ # -->
163
+ # Returns `self` modulo `other` as a real number.
164
+ #
165
+ # Of the Core and Standard Library classes, only Rational uses this
166
+ # implementation.
167
+ #
168
+ # For Rational `r` and real number `n`, these expressions are equivalent:
169
+ #
170
+ # r % n
171
+ # r-n*(r/n).floor
172
+ # r.divmod(n)[1]
173
+ #
174
+ # See Numeric#divmod.
175
+ #
176
+ # Examples:
177
+ #
178
+ # r = Rational(1, 2) # => (1/2)
179
+ # r2 = Rational(2, 3) # => (2/3)
180
+ # r % r2 # => (1/2)
181
+ # r % 2 # => (1/2)
182
+ # r % 2.0 # => 0.5
183
+ #
184
+ # r = Rational(301,100) # => (301/100)
185
+ # r2 = Rational(7,5) # => (7/5)
186
+ # r % r2 # => (21/100)
187
+ # r % -r2 # => (-119/100)
188
+ # (-r) % r2 # => (119/100)
189
+ # (-r) %-r2 # => (-21/100)
190
+ #
191
+ def %: (Numeric) -> Numeric
192
+
193
+ # Performs addition: the class of the resulting object depends on the class of
194
+ # `numeric`.
195
+ #
196
+ def +: (Numeric) -> Numeric
197
+
198
+ # <!--
199
+ # rdoc-file=numeric.rb
200
+ # - +self -> self
201
+ # -->
202
+ # Returns `self`.
203
+ #
204
+ def +@: () -> Numeric
205
+
206
+ # Performs subtraction: the class of the resulting object depends on the class
207
+ # of `numeric`.
208
+ #
209
+ def -: (Numeric) -> Numeric
210
+
211
+ # <!--
212
+ # rdoc-file=numeric.c
213
+ # - -self -> numeric
214
+ # -->
215
+ # Unary Minus---Returns the receiver, negated.
216
+ #
217
+ def -@: () -> Numeric
218
+
219
+ # <!--
220
+ # rdoc-file=numeric.c
221
+ # - self <=> other -> zero or nil
222
+ # -->
223
+ # Returns zero if `self` is the same as `other`, `nil` otherwise.
224
+ #
225
+ # No subclass in the Ruby Core or Standard Library uses this implementation.
226
+ #
227
+ def <=>: (Numeric other) -> Integer
228
+
229
+ # <!--
230
+ # rdoc-file=numeric.c
231
+ # - abs -> numeric
232
+ # -->
233
+ # Returns the absolute value of `self`.
234
+ #
235
+ # 12.abs #=> 12
236
+ # (-34.56).abs #=> 34.56
237
+ # -34.56.abs #=> 34.56
238
+ #
239
+ def abs: () -> Numeric
240
+
241
+ # <!--
242
+ # rdoc-file=complex.c
243
+ # - abs2 -> real
244
+ # -->
245
+ # Returns the square of `self`.
246
+ #
247
+ def abs2: () -> Numeric
248
+
249
+ # <!-- rdoc-file=complex.c -->
250
+ # Returns zero if `self` is positive, Math::PI otherwise.
251
+ #
252
+ def angle: () -> Numeric
253
+
254
+ # <!--
255
+ # rdoc-file=complex.c
256
+ # - arg -> 0 or Math::PI
257
+ # -->
258
+ # Returns zero if `self` is positive, Math::PI otherwise.
259
+ #
260
+ alias arg angle
261
+
262
+ # <!--
263
+ # rdoc-file=numeric.c
264
+ # - ceil(ndigits = 0) -> float or integer
265
+ # -->
266
+ # Returns the smallest float or integer that is greater than or equal to `self`,
267
+ # as specified by the given `ndigits`, which must be an [integer-convertible
268
+ # object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
269
+ #
270
+ # Equivalent to `self.to_f.ceil(ndigits)`.
271
+ #
272
+ # Related: #floor, Float#ceil.
273
+ #
274
+ def ceil: () -> Integer
275
+ | (Integer digits) -> (Integer | Numeric)
276
+
277
+ # <!--
278
+ # rdoc-file=numeric.c
279
+ # - coerce(other) -> array
280
+ # -->
281
+ # Returns a 2-element array containing two numeric elements, formed from the two
282
+ # operands `self` and `other`, of a common compatible type.
283
+ #
284
+ # Of the Core and Standard Library classes, Integer, Rational, and Complex use
285
+ # this implementation.
286
+ #
287
+ # Examples:
288
+ #
289
+ # i = 2 # => 2
290
+ # i.coerce(3) # => [3, 2]
291
+ # i.coerce(3.0) # => [3.0, 2.0]
292
+ # i.coerce(Rational(1, 2)) # => [0.5, 2.0]
293
+ # i.coerce(Complex(3, 4)) # Raises RangeError.
294
+ #
295
+ # r = Rational(5, 2) # => (5/2)
296
+ # r.coerce(2) # => [(2/1), (5/2)]
297
+ # r.coerce(2.0) # => [2.0, 2.5]
298
+ # r.coerce(Rational(2, 3)) # => [(2/3), (5/2)]
299
+ # r.coerce(Complex(3, 4)) # => [(3+4i), ((5/2)+0i)]
300
+ #
301
+ # c = Complex(2, 3) # => (2+3i)
302
+ # c.coerce(2) # => [(2+0i), (2+3i)]
303
+ # c.coerce(2.0) # => [(2.0+0i), (2+3i)]
304
+ # c.coerce(Rational(1, 2)) # => [((1/2)+0i), (2+3i)]
305
+ # c.coerce(Complex(3, 4)) # => [(3+4i), (2+3i)]
306
+ #
307
+ # Raises an exception if any type conversion fails.
308
+ #
309
+ def coerce: (Numeric) -> [ Numeric, Numeric ]
310
+
311
+ # <!--
312
+ # rdoc-file=numeric.rb
313
+ # - conj()
314
+ # -->
315
+ #
316
+ def conj: () -> Numeric
317
+
318
+ # <!--
319
+ # rdoc-file=numeric.rb
320
+ # - conj -> self
321
+ # -->
322
+ # Returns `self`.
323
+ #
324
+ def conjugate: () -> Numeric
325
+
326
+ # <!--
327
+ # rdoc-file=rational.c
328
+ # - num.denominator -> integer
329
+ # -->
330
+ # Returns the denominator (always positive).
331
+ #
332
+ def denominator: () -> Integer
333
+
334
+ # <!--
335
+ # rdoc-file=numeric.c
336
+ # - div(other) -> integer
337
+ # -->
338
+ # Returns the quotient `self/other` as an integer (via `floor`), using method
339
+ # `/` in the derived class of `self`. (Numeric itself does not define method
340
+ # `/`.)
341
+ #
342
+ # Of the Core and Standard Library classes, Only Float and Rational use this
343
+ # implementation.
344
+ #
345
+ def div: (Numeric) -> Integer
346
+
347
+ # <!--
348
+ # rdoc-file=numeric.c
349
+ # - divmod(other) -> array
350
+ # -->
351
+ # Returns a 2-element array `[q, r]`, where
352
+ #
353
+ # q = (self/other).floor # Quotient
354
+ # r = self % other # Remainder
355
+ #
356
+ # Of the Core and Standard Library classes, only Rational uses this
357
+ # implementation.
358
+ #
359
+ # Examples:
360
+ #
361
+ # Rational(11, 1).divmod(4) # => [2, (3/1)]
362
+ # Rational(11, 1).divmod(-4) # => [-3, (-1/1)]
363
+ # Rational(-11, 1).divmod(4) # => [-3, (1/1)]
364
+ # Rational(-11, 1).divmod(-4) # => [2, (-3/1)]
365
+ #
366
+ # Rational(12, 1).divmod(4) # => [3, (0/1)]
367
+ # Rational(12, 1).divmod(-4) # => [-3, (0/1)]
368
+ # Rational(-12, 1).divmod(4) # => [-3, (0/1)]
369
+ # Rational(-12, 1).divmod(-4) # => [3, (0/1)]
370
+ #
371
+ # Rational(13, 1).divmod(4.0) # => [3, 1.0]
372
+ # Rational(13, 1).divmod(Rational(4, 11)) # => [35, (3/11)]
373
+ #
374
+ def divmod: (Numeric) -> [ Numeric, Numeric ]
375
+
376
+ # <!--
377
+ # rdoc-file=numeric.c
378
+ # - eql?(other) -> true or false
379
+ # -->
380
+ # Returns `true` if `self` and `other` are the same type and have equal values.
381
+ #
382
+ # Of the Core and Standard Library classes, only Integer, Rational, and Complex
383
+ # use this implementation.
384
+ #
385
+ # Examples:
386
+ #
387
+ # 1.eql?(1) # => true
388
+ # 1.eql?(1.0) # => false
389
+ # 1.eql?(Rational(1, 1)) # => false
390
+ # 1.eql?(Complex(1, 0)) # => false
391
+ #
392
+ # Method `eql?` is different from `==` in that `eql?` requires matching types,
393
+ # while `==` does not.
394
+ #
395
+ def eql?: (untyped) -> bool
396
+
397
+ # <!--
398
+ # rdoc-file=numeric.c
399
+ # - fdiv(other) -> float
400
+ # -->
401
+ # Returns the quotient `self/other` as a float, using method `/` in the derived
402
+ # class of `self`. (Numeric itself does not define method `/`.)
403
+ #
404
+ # Of the Core and Standard Library classes, only BigDecimal uses this
405
+ # implementation.
406
+ #
407
+ def fdiv: (Numeric) -> Numeric
408
+
409
+ # <!--
410
+ # rdoc-file=numeric.rb
411
+ # - finite? -> true or false
412
+ # -->
413
+ # Returns `true` if `self` is a finite number, `false` otherwise.
414
+ #
415
+ def finite?: () -> bool
416
+
417
+ # <!--
418
+ # rdoc-file=numeric.c
419
+ # - floor(ndigits = 0) -> float or integer
420
+ # -->
421
+ # Returns the largest float or integer that is less than or equal to `self`, as
422
+ # specified by the given `ndigits`, which must be an [integer-convertible
423
+ # object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
424
+ #
425
+ # Equivalent to `self.to_f.floor(ndigits)`.
426
+ #
427
+ # Related: #ceil, Float#floor.
428
+ #
429
+ def floor: () -> Integer
430
+ | (Integer digits) -> Numeric
431
+
432
+ # <!--
433
+ # rdoc-file=numeric.c
434
+ # - i -> complex
435
+ # -->
436
+ # Returns `Complex(0, self)`:
437
+ #
438
+ # 2.i # => (0+2i)
439
+ # -2.i # => (0-2i)
440
+ # 2.0.i # => (0+2.0i)
441
+ # Rational(1, 2).i # => (0+(1/2)*i)
442
+ # Complex(3, 4).i # Raises NoMethodError.
443
+ #
444
+ def i: () -> Complex
445
+
446
+ # <!--
447
+ # rdoc-file=numeric.rb
448
+ # - imag()
449
+ # -->
450
+ #
451
+ def imag: () -> Numeric
452
+
453
+ # <!--
454
+ # rdoc-file=numeric.rb
455
+ # - imag -> 0
456
+ # -->
457
+ # Returns zero.
458
+ #
459
+ def imaginary: () -> Numeric
460
+
461
+ # <!--
462
+ # rdoc-file=numeric.rb
463
+ # - infinite? -> -1, 1, or nil
464
+ # -->
465
+ # Returns `nil`, -1, or 1 depending on whether `self` is finite, `-Infinity`, or
466
+ # `+Infinity`.
467
+ #
468
+ def infinite?: () -> Integer?
469
+
470
+ # <!--
471
+ # rdoc-file=numeric.rb
472
+ # - integer? -> true or false
473
+ # -->
474
+ # Returns `true` if `self` is an Integer.
475
+ #
476
+ # 1.0.integer? # => false
477
+ # 1.integer? # => true
478
+ #
479
+ def integer?: () -> bool
480
+
481
+ # <!-- rdoc-file=numeric.c -->
482
+ # Returns the absolute value of `self`.
483
+ #
484
+ # 12.abs #=> 12
485
+ # (-34.56).abs #=> 34.56
486
+ # -34.56.abs #=> 34.56
487
+ #
488
+ alias magnitude abs
489
+
490
+ # <!-- rdoc-file=numeric.c -->
491
+ # Returns `self` modulo `other` as a real number.
492
+ #
493
+ # Of the Core and Standard Library classes, only Rational uses this
494
+ # implementation.
495
+ #
496
+ # For Rational `r` and real number `n`, these expressions are equivalent:
497
+ #
498
+ # r % n
499
+ # r-n*(r/n).floor
500
+ # r.divmod(n)[1]
501
+ #
502
+ # See Numeric#divmod.
503
+ #
504
+ # Examples:
505
+ #
506
+ # r = Rational(1, 2) # => (1/2)
507
+ # r2 = Rational(2, 3) # => (2/3)
508
+ # r % r2 # => (1/2)
509
+ # r % 2 # => (1/2)
510
+ # r % 2.0 # => 0.5
511
+ #
512
+ # r = Rational(301,100) # => (301/100)
513
+ # r2 = Rational(7,5) # => (7/5)
514
+ # r % r2 # => (21/100)
515
+ # r % -r2 # => (-119/100)
516
+ # (-r) % r2 # => (119/100)
517
+ # (-r) %-r2 # => (-21/100)
518
+ #
519
+ def modulo: (Numeric) -> Numeric
520
+
521
+ # <!--
522
+ # rdoc-file=numeric.c
523
+ # - negative? -> true or false
524
+ # -->
525
+ # Returns `true` if `self` is less than 0, `false` otherwise.
526
+ #
527
+ def negative?: () -> bool
528
+
529
+ # <!--
530
+ # rdoc-file=numeric.c
531
+ # - nonzero? -> self or nil
532
+ # -->
533
+ # Returns +self+ if +self+ is not a zero value, +nil+ otherwise;
534
+ # uses method <tt>zero?</tt> for the evaluation.
535
+ #
536
+ # The returned +self+ allows the method to be chained:
537
+ #
538
+ # a = %w[z Bb bB bb BB a aA Aa AA A]
539
+ # a.sort {|a, b| (a.downcase <=> b.downcase).nonzero? || a <=> b }
540
+ # # => ["A", "a", "AA", "Aa", "aA", "BB", "Bb", "bB", "bb", "z"]
541
+ #
542
+ # Of the Core and Standard Library classes,
543
+ # Integer, Float, Rational, and Complex use this implementation.
544
+ #
545
+ # Related: #zero?
546
+ #
547
+ def nonzero?: () -> self?
548
+
549
+ # <!--
550
+ # rdoc-file=rational.c
551
+ # - num.numerator -> integer
552
+ # -->
553
+ # Returns the numerator.
554
+ #
555
+ def numerator: () -> Numeric
556
+
557
+ # <!-- rdoc-file=complex.c -->
558
+ # Returns zero if `self` is positive, Math::PI otherwise.
559
+ #
560
+ alias phase angle
561
+
562
+ # <!--
563
+ # rdoc-file=complex.c
564
+ # - polar -> array
565
+ # -->
566
+ # Returns array `[self.abs, self.arg]`.
567
+ #
568
+ def polar: () -> [ Numeric, Numeric ]
569
+
570
+ # <!--
571
+ # rdoc-file=numeric.c
572
+ # - positive? -> true or false
573
+ # -->
574
+ # Returns `true` if `self` is greater than 0, `false` otherwise.
575
+ #
576
+ def positive?: () -> bool
577
+
578
+ # <!--
579
+ # rdoc-file=rational.c
580
+ # - num.quo(int_or_rat) -> rat
581
+ # - num.quo(flo) -> flo
582
+ # -->
583
+ # Returns the most exact division (rational for integers, float for floats).
584
+ #
585
+ def quo: (Numeric) -> Numeric
586
+
587
+ # <!--
588
+ # rdoc-file=numeric.rb
589
+ # - real -> self
590
+ # -->
591
+ # Returns `self`.
592
+ #
593
+ def real: () -> Numeric
594
+
595
+ # <!--
596
+ # rdoc-file=numeric.rb
597
+ # - real? -> true or false
598
+ # -->
599
+ # Returns `true` if `self` is a real number (i.e. not Complex).
600
+ #
601
+ def real?: () -> bool
602
+
603
+ # <!-- rdoc-file=complex.c -->
604
+ # Returns array `[self, 0]`.
605
+ #
606
+ def rect: () -> [ Numeric, Numeric ]
607
+
608
+ # <!--
609
+ # rdoc-file=complex.c
610
+ # - rect -> array
611
+ # -->
612
+ # Returns array `[self, 0]`.
613
+ #
614
+ alias rectangular rect
615
+
616
+ # <!--
617
+ # rdoc-file=numeric.c
618
+ # - remainder(other) -> real_number
619
+ # -->
620
+ # Returns the remainder after dividing `self` by `other`.
621
+ #
622
+ # Of the Core and Standard Library classes, only Float and Rational use this
623
+ # implementation.
624
+ #
625
+ # Examples:
626
+ #
627
+ # 11.0.remainder(4) # => 3.0
628
+ # 11.0.remainder(-4) # => 3.0
629
+ # -11.0.remainder(4) # => -3.0
630
+ # -11.0.remainder(-4) # => -3.0
631
+ #
632
+ # 12.0.remainder(4) # => 0.0
633
+ # 12.0.remainder(-4) # => 0.0
634
+ # -12.0.remainder(4) # => -0.0
635
+ # -12.0.remainder(-4) # => -0.0
636
+ #
637
+ # 13.0.remainder(4.0) # => 1.0
638
+ # 13.0.remainder(Rational(4, 1)) # => 1.0
639
+ #
640
+ # Rational(13, 1).remainder(4) # => (1/1)
641
+ # Rational(13, 1).remainder(-4) # => (1/1)
642
+ # Rational(-13, 1).remainder(4) # => (-1/1)
643
+ # Rational(-13, 1).remainder(-4) # => (-1/1)
644
+ #
645
+ def remainder: (Numeric) -> Numeric
646
+
647
+ # <!--
648
+ # rdoc-file=numeric.c
649
+ # - round(digits = 0) -> integer or float
650
+ # -->
651
+ # Returns `self` rounded to the nearest value with a precision of `digits`
652
+ # decimal digits.
653
+ #
654
+ # Numeric implements this by converting `self` to a Float and invoking
655
+ # Float#round.
656
+ #
657
+ def round: () -> Integer
658
+ | (Integer digits) -> Numeric
659
+
660
+ # <!--
661
+ # rdoc-file=numeric.c
662
+ # - step(to = nil, by = 1) {|n| ... } -> self
663
+ # - step(to = nil, by = 1) -> enumerator
664
+ # - step(to = nil, by: 1) {|n| ... } -> self
665
+ # - step(to = nil, by: 1) -> enumerator
666
+ # - step(by: 1, to: ) {|n| ... } -> self
667
+ # - step(by: 1, to: ) -> enumerator
668
+ # - step(by: , to: nil) {|n| ... } -> self
669
+ # - step(by: , to: nil) -> enumerator
670
+ # -->
671
+ # Generates a sequence of numbers; with a block given, traverses the sequence.
672
+ #
673
+ # Of the Core and Standard Library classes, Integer, Float, and Rational use
674
+ # this implementation.
675
+ #
676
+ # A quick example:
677
+ #
678
+ # squares = []
679
+ # 1.step(by: 2, to: 10) {|i| squares.push(i*i) }
680
+ # squares # => [1, 9, 25, 49, 81]
681
+ #
682
+ # The generated sequence:
683
+ #
684
+ # * Begins with `self`.
685
+ # * Continues at intervals of `by` (which may not be zero).
686
+ # * Ends with the last number that is within or equal to `to`; that is, less
687
+ # than or equal to `to` if `by` is positive, greater than or equal to `to`
688
+ # if `by` is negative. If `to` is `nil`, the sequence is of infinite length.
689
+ #
690
+ # If a block is given, calls the block with each number in the sequence; returns
691
+ # `self`. If no block is given, returns an Enumerator::ArithmeticSequence.
692
+ #
693
+ # **Keyword Arguments**
694
+ #
695
+ # With keyword arguments `by` and `to`, their values (or defaults) determine the
696
+ # step and limit:
697
+ #
698
+ # # Both keywords given.
699
+ # squares = []
700
+ # 4.step(by: 2, to: 10) {|i| squares.push(i*i) } # => 4
701
+ # squares # => [16, 36, 64, 100]
702
+ # cubes = []
703
+ # 3.step(by: -1.5, to: -3) {|i| cubes.push(i*i*i) } # => 3
704
+ # cubes # => [27.0, 3.375, 0.0, -3.375, -27.0]
705
+ # squares = []
706
+ # 1.2.step(by: 0.2, to: 2.0) {|f| squares.push(f*f) }
707
+ # squares # => [1.44, 1.9599999999999997, 2.5600000000000005, 3.24, 4.0]
708
+ #
709
+ # squares = []
710
+ # Rational(6/5).step(by: 0.2, to: 2.0) {|r| squares.push(r*r) }
711
+ # squares # => [1.0, 1.44, 1.9599999999999997, 2.5600000000000005, 3.24, 4.0]
712
+ #
713
+ # # Only keyword to given.
714
+ # squares = []
715
+ # 4.step(to: 10) {|i| squares.push(i*i) } # => 4
716
+ # squares # => [16, 25, 36, 49, 64, 81, 100]
717
+ # # Only by given.
718
+ #
719
+ # # Only keyword by given
720
+ # squares = []
721
+ # 4.step(by:2) {|i| squares.push(i*i); break if i > 10 }
722
+ # squares # => [16, 36, 64, 100, 144]
723
+ #
724
+ # # No block given.
725
+ # e = 3.step(by: -1.5, to: -3) # => (3.step(by: -1.5, to: -3))
726
+ # e.class # => Enumerator::ArithmeticSequence
727
+ #
728
+ # **Positional Arguments**
729
+ #
730
+ # With optional positional arguments `to` and `by`, their values (or defaults)
731
+ # determine the step and limit:
732
+ #
733
+ # squares = []
734
+ # 4.step(10, 2) {|i| squares.push(i*i) } # => 4
735
+ # squares # => [16, 36, 64, 100]
736
+ # squares = []
737
+ # 4.step(10) {|i| squares.push(i*i) }
738
+ # squares # => [16, 25, 36, 49, 64, 81, 100]
739
+ # squares = []
740
+ # 4.step {|i| squares.push(i*i); break if i > 10 } # => nil
741
+ # squares # => [16, 25, 36, 49, 64, 81, 100, 121]
742
+ #
743
+ # **Implementation Notes**
744
+ #
745
+ # If all the arguments are integers, the loop operates using an integer counter.
746
+ #
747
+ # If any of the arguments are floating point numbers, all are converted to
748
+ # floats, and the loop is executed *floor(n + n*Float::EPSILON) + 1* times,
749
+ # where *n = (limit - self)/step*.
750
+ #
751
+ def step: (?Numeric limit, ?Numeric step) { (Numeric) -> void } -> self
752
+ | (?Numeric limit, ?Numeric step) -> Enumerator[Numeric, self]
753
+ | (?by: Numeric, ?to: Numeric) { (Numeric) -> void } -> self
754
+ | (?by: Numeric, ?to: Numeric) -> Enumerator[Numeric, self]
755
+
756
+ # <!--
757
+ # rdoc-file=complex.c
758
+ # - to_c -> complex
759
+ # -->
760
+ # Returns `self` as a Complex object.
761
+ #
762
+ def to_c: () -> Complex
763
+
764
+ # <!--
765
+ # rdoc-file=numeric.c
766
+ # - to_int -> integer
767
+ # -->
768
+ # Returns `self` as an integer; converts using method `to_i` in the derived
769
+ # class.
770
+ #
771
+ # Of the Core and Standard Library classes, only Rational and Complex use this
772
+ # implementation.
773
+ #
774
+ # Examples:
775
+ #
776
+ # Rational(1, 2).to_int # => 0
777
+ # Rational(2, 1).to_int # => 2
778
+ # Complex(2, 0).to_int # => 2
779
+ # Complex(2, 1).to_int # Raises RangeError (non-zero imaginary part)
780
+ #
781
+ def to_int: () -> Integer
782
+
783
+ # <!--
784
+ # rdoc-file=numeric.c
785
+ # - truncate(digits = 0) -> integer or float
786
+ # -->
787
+ # Returns `self` truncated (toward zero) to a precision of `digits` decimal
788
+ # digits.
789
+ #
790
+ # Numeric implements this by converting `self` to a Float and invoking
791
+ # Float#truncate.
792
+ #
793
+ def truncate: () -> Integer
794
+ | (Integer ndigits) -> (Integer | Numeric)
795
+
796
+ # <!--
797
+ # rdoc-file=numeric.c
798
+ # - zero? -> true or false
799
+ # -->
800
+ # Returns `true` if `zero` has a zero value, `false` otherwise.
801
+ #
802
+ # Of the Core and Standard Library classes, only Rational and Complex use this
803
+ # implementation.
804
+ #
805
+ def zero?: () -> bool
806
+
807
+ # <!--
808
+ # rdoc-file=numeric.c
809
+ # - clone(freeze: true) -> self
810
+ # -->
811
+ # Returns `self`.
812
+ #
813
+ # Raises an exception if the value for `freeze` is neither `true` nor `nil`.
814
+ #
815
+ # Related: Numeric#dup.
816
+ #
817
+ def clone: (?freeze: true?) -> self
818
+ end