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.
- checksums.yaml +7 -0
- data/.github/dependabot.yml +22 -0
- data/.github/workflows/comments.yml +35 -0
- data/.github/workflows/dependabot.yml +30 -0
- data/.github/workflows/ruby.yml +82 -0
- data/.github/workflows/typecheck.yml +38 -0
- data/.github/workflows/windows.yml +43 -0
- data/.gitignore +23 -0
- data/.rubocop.yml +68 -0
- data/BSDL +22 -0
- data/CHANGELOG.md +1868 -0
- data/COPYING +56 -0
- data/README.md +203 -0
- data/Rakefile +417 -0
- data/Steepfile +44 -0
- data/config.yml +313 -0
- data/core/array.rbs +4062 -0
- data/core/basic_object.rbs +375 -0
- data/core/binding.rbs +150 -0
- data/core/builtin.rbs +277 -0
- data/core/class.rbs +220 -0
- data/core/comparable.rbs +171 -0
- data/core/complex.rbs +786 -0
- data/core/constants.rbs +96 -0
- data/core/data.rbs +415 -0
- data/core/dir.rbs +981 -0
- data/core/encoding.rbs +1371 -0
- data/core/enumerable.rbs +2405 -0
- data/core/enumerator/product.rbs +92 -0
- data/core/enumerator.rbs +630 -0
- data/core/env.rbs +6 -0
- data/core/errno.rbs +673 -0
- data/core/errors.rbs +760 -0
- data/core/exception.rbs +485 -0
- data/core/false_class.rbs +82 -0
- data/core/fiber.rbs +550 -0
- data/core/fiber_error.rbs +11 -0
- data/core/file.rbs +2936 -0
- data/core/file_test.rbs +331 -0
- data/core/float.rbs +1151 -0
- data/core/gc.rbs +644 -0
- data/core/global_variables.rbs +184 -0
- data/core/hash.rbs +1861 -0
- data/core/integer.rbs +1413 -0
- data/core/io/buffer.rbs +984 -0
- data/core/io/wait.rbs +70 -0
- data/core/io.rbs +3406 -0
- data/core/kernel.rbs +3096 -0
- data/core/marshal.rbs +207 -0
- data/core/match_data.rbs +635 -0
- data/core/math.rbs +729 -0
- data/core/method.rbs +386 -0
- data/core/module.rbs +1704 -0
- data/core/nil_class.rbs +209 -0
- data/core/numeric.rbs +818 -0
- data/core/object.rbs +110 -0
- data/core/object_space/weak_key_map.rbs +166 -0
- data/core/object_space.rbs +190 -0
- data/core/proc.rbs +868 -0
- data/core/process.rbs +2296 -0
- data/core/ractor.rbs +1068 -0
- data/core/random.rbs +237 -0
- data/core/range.rbs +1107 -0
- data/core/rational.rbs +531 -0
- data/core/rb_config.rbs +88 -0
- data/core/rbs/unnamed/argf.rbs +1229 -0
- data/core/rbs/unnamed/env_class.rbs +1209 -0
- data/core/rbs/unnamed/random.rbs +293 -0
- data/core/refinement.rbs +59 -0
- data/core/regexp.rbs +1930 -0
- data/core/ruby_vm.rbs +765 -0
- data/core/rubygems/basic_specification.rbs +6 -0
- data/core/rubygems/config_file.rbs +38 -0
- data/core/rubygems/dependency_installer.rbs +6 -0
- data/core/rubygems/errors.rbs +176 -0
- data/core/rubygems/installer.rbs +15 -0
- data/core/rubygems/path_support.rbs +6 -0
- data/core/rubygems/platform.rbs +7 -0
- data/core/rubygems/request_set.rbs +49 -0
- data/core/rubygems/requirement.rbs +148 -0
- data/core/rubygems/rubygems.rbs +1171 -0
- data/core/rubygems/source_list.rbs +15 -0
- data/core/rubygems/specification.rbs +23 -0
- data/core/rubygems/stream_ui.rbs +5 -0
- data/core/rubygems/uninstaller.rbs +10 -0
- data/core/rubygems/version.rbs +294 -0
- data/core/set.rbs +621 -0
- data/core/signal.rbs +100 -0
- data/core/string.rbs +3583 -0
- data/core/struct.rbs +667 -0
- data/core/symbol.rbs +475 -0
- data/core/thread.rbs +1765 -0
- data/core/thread_group.rbs +79 -0
- data/core/time.rbs +1762 -0
- data/core/trace_point.rbs +477 -0
- data/core/true_class.rbs +98 -0
- data/core/unbound_method.rbs +329 -0
- data/core/warning.rbs +87 -0
- data/docs/CONTRIBUTING.md +106 -0
- data/docs/architecture.md +110 -0
- data/docs/collection.md +192 -0
- data/docs/data_and_struct.md +86 -0
- data/docs/gem.md +57 -0
- data/docs/rbs_by_example.md +309 -0
- data/docs/repo.md +125 -0
- data/docs/sigs.md +167 -0
- data/docs/stdlib.md +147 -0
- data/docs/syntax.md +910 -0
- data/docs/tools.md +17 -0
- data/exe/rbs +7 -0
- data/ext/rbs_extension/extconf.rb +15 -0
- data/ext/rbs_extension/lexer.c +2728 -0
- data/ext/rbs_extension/lexer.h +179 -0
- data/ext/rbs_extension/lexer.re +147 -0
- data/ext/rbs_extension/lexstate.c +175 -0
- data/ext/rbs_extension/location.c +325 -0
- data/ext/rbs_extension/location.h +85 -0
- data/ext/rbs_extension/main.c +33 -0
- data/ext/rbs_extension/parser.c +2973 -0
- data/ext/rbs_extension/parser.h +18 -0
- data/ext/rbs_extension/parserstate.c +397 -0
- data/ext/rbs_extension/parserstate.h +163 -0
- data/ext/rbs_extension/rbs_extension.h +31 -0
- data/ext/rbs_extension/unescape.c +32 -0
- data/goodcheck.yml +91 -0
- data/include/rbs/constants.h +82 -0
- data/include/rbs/ruby_objs.h +72 -0
- data/include/rbs/util/rbs_constant_pool.h +219 -0
- data/include/rbs.h +7 -0
- data/lib/rbs/ancestor_graph.rb +92 -0
- data/lib/rbs/annotate/annotations.rb +199 -0
- data/lib/rbs/annotate/formatter.rb +92 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +400 -0
- data/lib/rbs/annotate/rdoc_source.rb +131 -0
- data/lib/rbs/annotate.rb +8 -0
- data/lib/rbs/ast/annotation.rb +29 -0
- data/lib/rbs/ast/comment.rb +29 -0
- data/lib/rbs/ast/declarations.rb +467 -0
- data/lib/rbs/ast/directives.rb +49 -0
- data/lib/rbs/ast/members.rb +451 -0
- data/lib/rbs/ast/type_param.rb +225 -0
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/buffer.rb +67 -0
- data/lib/rbs/builtin_names.rb +58 -0
- data/lib/rbs/cli/colored_io.rb +48 -0
- data/lib/rbs/cli/diff.rb +83 -0
- data/lib/rbs/cli/validate.rb +357 -0
- data/lib/rbs/cli.rb +1223 -0
- data/lib/rbs/collection/cleaner.rb +38 -0
- data/lib/rbs/collection/config/lockfile.rb +92 -0
- data/lib/rbs/collection/config/lockfile_generator.rb +218 -0
- data/lib/rbs/collection/config.rb +81 -0
- data/lib/rbs/collection/installer.rb +32 -0
- data/lib/rbs/collection/sources/base.rb +14 -0
- data/lib/rbs/collection/sources/git.rb +258 -0
- data/lib/rbs/collection/sources/local.rb +81 -0
- data/lib/rbs/collection/sources/rubygems.rb +48 -0
- data/lib/rbs/collection/sources/stdlib.rb +50 -0
- data/lib/rbs/collection/sources.rb +38 -0
- data/lib/rbs/collection.rb +16 -0
- data/lib/rbs/constant.rb +28 -0
- data/lib/rbs/definition.rb +401 -0
- data/lib/rbs/definition_builder/ancestor_builder.rb +620 -0
- data/lib/rbs/definition_builder/method_builder.rb +254 -0
- data/lib/rbs/definition_builder.rb +845 -0
- data/lib/rbs/diff.rb +125 -0
- data/lib/rbs/environment/use_map.rb +77 -0
- data/lib/rbs/environment.rb +829 -0
- data/lib/rbs/environment_loader.rb +173 -0
- data/lib/rbs/environment_walker.rb +155 -0
- data/lib/rbs/errors.rb +645 -0
- data/lib/rbs/factory.rb +18 -0
- data/lib/rbs/file_finder.rb +28 -0
- data/lib/rbs/location_aux.rb +138 -0
- data/lib/rbs/locator.rb +243 -0
- data/lib/rbs/method_type.rb +143 -0
- data/lib/rbs/namespace.rb +125 -0
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +114 -0
- data/lib/rbs/prototype/helpers.rb +140 -0
- data/lib/rbs/prototype/node_usage.rb +99 -0
- data/lib/rbs/prototype/rb.rb +840 -0
- data/lib/rbs/prototype/rbi.rb +641 -0
- data/lib/rbs/prototype/runtime/helpers.rb +59 -0
- data/lib/rbs/prototype/runtime/reflection.rb +19 -0
- data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
- data/lib/rbs/prototype/runtime.rb +667 -0
- data/lib/rbs/repository.rb +127 -0
- data/lib/rbs/resolver/constant_resolver.rb +219 -0
- data/lib/rbs/resolver/type_name_resolver.rb +91 -0
- data/lib/rbs/sorter.rb +198 -0
- data/lib/rbs/substitution.rb +83 -0
- data/lib/rbs/subtractor.rb +201 -0
- data/lib/rbs/test/errors.rb +80 -0
- data/lib/rbs/test/guaranteed.rb +30 -0
- data/lib/rbs/test/hook.rb +212 -0
- data/lib/rbs/test/observer.rb +19 -0
- data/lib/rbs/test/setup.rb +84 -0
- data/lib/rbs/test/setup_helper.rb +50 -0
- data/lib/rbs/test/tester.rb +167 -0
- data/lib/rbs/test/type_check.rb +435 -0
- data/lib/rbs/test.rb +112 -0
- data/lib/rbs/type_alias_dependency.rb +100 -0
- data/lib/rbs/type_alias_regularity.rb +126 -0
- data/lib/rbs/type_name.rb +109 -0
- data/lib/rbs/types.rb +1596 -0
- data/lib/rbs/unit_test/convertibles.rb +176 -0
- data/lib/rbs/unit_test/spy.rb +138 -0
- data/lib/rbs/unit_test/type_assertions.rb +347 -0
- data/lib/rbs/unit_test/with_aliases.rb +143 -0
- data/lib/rbs/unit_test.rb +6 -0
- data/lib/rbs/validator.rb +186 -0
- data/lib/rbs/variance_calculator.rb +189 -0
- data/lib/rbs/vendorer.rb +71 -0
- data/lib/rbs/version.rb +5 -0
- data/lib/rbs/writer.rb +424 -0
- data/lib/rbs.rb +94 -0
- data/lib/rdoc/discover.rb +20 -0
- data/lib/rdoc_plugin/parser.rb +163 -0
- data/rbs-relaxed.gemspec +48 -0
- data/schema/annotation.json +14 -0
- data/schema/comment.json +26 -0
- data/schema/decls.json +326 -0
- data/schema/function.json +87 -0
- data/schema/location.json +56 -0
- data/schema/members.json +266 -0
- data/schema/methodType.json +50 -0
- data/schema/typeParam.json +36 -0
- data/schema/types.json +317 -0
- data/sig/ancestor_builder.rbs +163 -0
- data/sig/ancestor_graph.rbs +60 -0
- data/sig/annotate/annotations.rbs +102 -0
- data/sig/annotate/formatter.rbs +24 -0
- data/sig/annotate/rdoc_annotater.rbs +82 -0
- data/sig/annotate/rdoc_source.rbs +30 -0
- data/sig/annotation.rbs +27 -0
- data/sig/buffer.rbs +32 -0
- data/sig/builtin_names.rbs +44 -0
- data/sig/cli/colored_io.rbs +15 -0
- data/sig/cli/diff.rbs +21 -0
- data/sig/cli/validate.rbs +43 -0
- data/sig/cli.rbs +87 -0
- data/sig/collection/cleaner.rbs +13 -0
- data/sig/collection/config/lockfile.rbs +74 -0
- data/sig/collection/config/lockfile_generator.rbs +66 -0
- data/sig/collection/config.rbs +46 -0
- data/sig/collection/installer.rbs +17 -0
- data/sig/collection/sources.rbs +214 -0
- data/sig/collection.rbs +4 -0
- data/sig/comment.rbs +26 -0
- data/sig/constant.rbs +21 -0
- data/sig/declarations.rbs +267 -0
- data/sig/definition.rbs +173 -0
- data/sig/definition_builder.rbs +165 -0
- data/sig/diff.rbs +28 -0
- data/sig/directives.rbs +77 -0
- data/sig/environment.rbs +279 -0
- data/sig/environment_loader.rbs +111 -0
- data/sig/environment_walker.rbs +65 -0
- data/sig/errors.rbs +405 -0
- data/sig/factory.rbs +5 -0
- data/sig/file_finder.rbs +28 -0
- data/sig/location.rbs +110 -0
- data/sig/locator.rbs +58 -0
- data/sig/manifest.yaml +7 -0
- data/sig/members.rbs +258 -0
- data/sig/method_builder.rbs +84 -0
- data/sig/method_types.rbs +58 -0
- data/sig/namespace.rbs +146 -0
- data/sig/parser.rbs +100 -0
- data/sig/prototype/helpers.rbs +27 -0
- data/sig/prototype/node_usage.rbs +20 -0
- data/sig/prototype/rb.rbs +96 -0
- data/sig/prototype/rbi.rbs +75 -0
- data/sig/prototype/runtime.rbs +182 -0
- data/sig/rbs.rbs +21 -0
- data/sig/rdoc/rbs.rbs +67 -0
- data/sig/repository.rbs +85 -0
- data/sig/resolver/constant_resolver.rbs +92 -0
- data/sig/resolver/context.rbs +34 -0
- data/sig/resolver/type_name_resolver.rbs +35 -0
- data/sig/shims/bundler.rbs +38 -0
- data/sig/shims/enumerable.rbs +5 -0
- data/sig/shims/rubygems.rbs +19 -0
- data/sig/sorter.rbs +41 -0
- data/sig/substitution.rbs +48 -0
- data/sig/subtractor.rbs +37 -0
- data/sig/test/errors.rbs +52 -0
- data/sig/test/guranteed.rbs +9 -0
- data/sig/test/type_check.rbs +19 -0
- data/sig/test.rbs +82 -0
- data/sig/type_alias_dependency.rbs +53 -0
- data/sig/type_alias_regularity.rbs +98 -0
- data/sig/type_param.rbs +110 -0
- data/sig/typename.rbs +79 -0
- data/sig/types.rbs +579 -0
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +30 -0
- data/sig/unit_test/type_assertions.rbs +196 -0
- data/sig/unit_test/with_aliases.rbs +136 -0
- data/sig/use_map.rbs +35 -0
- data/sig/util.rbs +9 -0
- data/sig/validator.rbs +63 -0
- data/sig/variance_calculator.rbs +87 -0
- data/sig/vendorer.rbs +51 -0
- data/sig/version.rbs +3 -0
- data/sig/visitor.rbs +47 -0
- data/sig/writer.rbs +127 -0
- data/src/constants.c +153 -0
- data/src/ruby_objs.c +795 -0
- data/src/util/rbs_constant_pool.c +342 -0
- data/stdlib/abbrev/0/abbrev.rbs +66 -0
- data/stdlib/abbrev/0/array.rbs +26 -0
- data/stdlib/base64/0/base64.rbs +355 -0
- data/stdlib/benchmark/0/benchmark.rbs +452 -0
- data/stdlib/bigdecimal/0/big_decimal.rbs +1629 -0
- data/stdlib/bigdecimal-math/0/big_math.rbs +119 -0
- data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
- data/stdlib/cgi/0/core.rbs +1285 -0
- data/stdlib/cgi/0/manifest.yaml +3 -0
- data/stdlib/coverage/0/coverage.rbs +263 -0
- data/stdlib/csv/0/csv.rbs +3776 -0
- data/stdlib/csv/0/manifest.yaml +3 -0
- data/stdlib/date/0/date.rbs +1585 -0
- data/stdlib/date/0/date_time.rbs +616 -0
- data/stdlib/date/0/time.rbs +26 -0
- data/stdlib/dbm/0/dbm.rbs +421 -0
- data/stdlib/delegate/0/delegator.rbs +184 -0
- data/stdlib/delegate/0/kernel.rbs +47 -0
- data/stdlib/delegate/0/simple_delegator.rbs +96 -0
- data/stdlib/did_you_mean/0/did_you_mean.rbs +343 -0
- data/stdlib/digest/0/digest.rbs +577 -0
- data/stdlib/erb/0/erb.rbs +532 -0
- data/stdlib/etc/0/etc.rbs +865 -0
- data/stdlib/fileutils/0/fileutils.rbs +1734 -0
- data/stdlib/find/0/find.rbs +49 -0
- data/stdlib/forwardable/0/forwardable.rbs +268 -0
- data/stdlib/io-console/0/io-console.rbs +414 -0
- data/stdlib/ipaddr/0/ipaddr.rbs +428 -0
- data/stdlib/json/0/json.rbs +1916 -0
- data/stdlib/kconv/0/kconv.rbs +166 -0
- data/stdlib/logger/0/formatter.rbs +45 -0
- data/stdlib/logger/0/log_device.rbs +100 -0
- data/stdlib/logger/0/logger.rbs +796 -0
- data/stdlib/logger/0/manifest.yaml +2 -0
- data/stdlib/logger/0/period.rbs +17 -0
- data/stdlib/logger/0/severity.rbs +34 -0
- data/stdlib/minitest/0/kernel.rbs +42 -0
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
- data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
- data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
- data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
- data/stdlib/minitest/0/minitest/compress.rbs +13 -0
- data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
- data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
- data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
- data/stdlib/minitest/0/minitest/guard.rbs +64 -0
- data/stdlib/minitest/0/minitest/mock.rbs +64 -0
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
- data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
- data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
- data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
- data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
- data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/result.rbs +28 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
- data/stdlib/minitest/0/minitest/skip.rbs +6 -0
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
- data/stdlib/minitest/0/minitest/spec.rbs +11 -0
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
- data/stdlib/minitest/0/minitest/test.rbs +69 -0
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
- data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
- data/stdlib/minitest/0/minitest/unit.rbs +4 -0
- data/stdlib/minitest/0/minitest.rbs +115 -0
- data/stdlib/monitor/0/monitor.rbs +363 -0
- data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
- data/stdlib/net-http/0/manifest.yaml +3 -0
- data/stdlib/net-http/0/net-http.rbs +5552 -0
- data/stdlib/net-protocol/0/manifest.yaml +2 -0
- data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
- data/stdlib/net-smtp/0/manifest.yaml +2 -0
- data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
- data/stdlib/nkf/0/nkf.rbs +402 -0
- data/stdlib/objspace/0/objspace.rbs +487 -0
- data/stdlib/observable/0/observable.rbs +217 -0
- data/stdlib/open-uri/0/manifest.yaml +4 -0
- data/stdlib/open-uri/0/open-uri.rbs +393 -0
- data/stdlib/open3/0/open3.rbs +147 -0
- data/stdlib/openssl/0/manifest.yaml +3 -0
- data/stdlib/openssl/0/openssl.rbs +12113 -0
- data/stdlib/optparse/0/optparse.rbs +1725 -0
- data/stdlib/pathname/0/pathname.rbs +1406 -0
- data/stdlib/pp/0/manifest.yaml +2 -0
- data/stdlib/pp/0/pp.rbs +300 -0
- data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
- data/stdlib/pstore/0/pstore.rbs +603 -0
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/psych/0/dbm.rbs +237 -0
- data/stdlib/psych/0/manifest.yaml +3 -0
- data/stdlib/psych/0/psych.rbs +402 -0
- data/stdlib/psych/0/store.rbs +59 -0
- data/stdlib/pty/0/pty.rbs +237 -0
- data/stdlib/rdoc/0/code_object.rbs +51 -0
- data/stdlib/rdoc/0/comment.rbs +59 -0
- data/stdlib/rdoc/0/context.rbs +153 -0
- data/stdlib/rdoc/0/markup.rbs +117 -0
- data/stdlib/rdoc/0/parser.rbs +56 -0
- data/stdlib/rdoc/0/rdoc.rbs +391 -0
- data/stdlib/rdoc/0/ri.rbs +17 -0
- data/stdlib/rdoc/0/store.rbs +48 -0
- data/stdlib/rdoc/0/top_level.rbs +97 -0
- data/stdlib/resolv/0/manifest.yaml +3 -0
- data/stdlib/resolv/0/resolv.rbs +1830 -0
- data/stdlib/ripper/0/ripper.rbs +1648 -0
- data/stdlib/securerandom/0/securerandom.rbs +62 -0
- data/stdlib/shellwords/0/shellwords.rbs +229 -0
- data/stdlib/singleton/0/singleton.rbs +131 -0
- data/stdlib/socket/0/addrinfo.rbs +666 -0
- data/stdlib/socket/0/basic_socket.rbs +590 -0
- data/stdlib/socket/0/constants.rbs +2295 -0
- data/stdlib/socket/0/ip_socket.rbs +92 -0
- data/stdlib/socket/0/socket.rbs +4157 -0
- data/stdlib/socket/0/socket_error.rbs +5 -0
- data/stdlib/socket/0/tcp_server.rbs +192 -0
- data/stdlib/socket/0/tcp_socket.rbs +79 -0
- data/stdlib/socket/0/udp_socket.rbs +133 -0
- data/stdlib/socket/0/unix_server.rbs +169 -0
- data/stdlib/socket/0/unix_socket.rbs +172 -0
- data/stdlib/stringio/0/stringio.rbs +567 -0
- data/stdlib/strscan/0/string_scanner.rbs +1627 -0
- data/stdlib/tempfile/0/tempfile.rbs +479 -0
- data/stdlib/time/0/time.rbs +432 -0
- data/stdlib/timeout/0/timeout.rbs +81 -0
- data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
- data/stdlib/tsort/0/cyclic.rbs +5 -0
- data/stdlib/tsort/0/interfaces.rbs +20 -0
- data/stdlib/tsort/0/tsort.rbs +409 -0
- data/stdlib/uri/0/common.rbs +582 -0
- data/stdlib/uri/0/file.rbs +118 -0
- data/stdlib/uri/0/ftp.rbs +13 -0
- data/stdlib/uri/0/generic.rbs +1108 -0
- data/stdlib/uri/0/http.rbs +104 -0
- data/stdlib/uri/0/https.rbs +14 -0
- data/stdlib/uri/0/ldap.rbs +230 -0
- data/stdlib/uri/0/ldaps.rbs +14 -0
- data/stdlib/uri/0/mailto.rbs +92 -0
- data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
- data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
- data/stdlib/uri/0/ws.rbs +13 -0
- data/stdlib/uri/0/wss.rbs +9 -0
- data/stdlib/yaml/0/manifest.yaml +2 -0
- data/stdlib/yaml/0/yaml.rbs +1 -0
- data/stdlib/zlib/0/buf_error.rbs +10 -0
- data/stdlib/zlib/0/data_error.rbs +10 -0
- data/stdlib/zlib/0/deflate.rbs +210 -0
- data/stdlib/zlib/0/error.rbs +20 -0
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
- data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
- data/stdlib/zlib/0/gzip_file.rbs +156 -0
- data/stdlib/zlib/0/gzip_reader.rbs +293 -0
- data/stdlib/zlib/0/gzip_writer.rbs +166 -0
- data/stdlib/zlib/0/inflate.rbs +180 -0
- data/stdlib/zlib/0/mem_error.rbs +10 -0
- data/stdlib/zlib/0/need_dict.rbs +13 -0
- data/stdlib/zlib/0/stream_end.rbs +11 -0
- data/stdlib/zlib/0/stream_error.rbs +11 -0
- data/stdlib/zlib/0/version_error.rbs +11 -0
- data/stdlib/zlib/0/zlib.rbs +449 -0
- data/stdlib/zlib/0/zstream.rbs +200 -0
- 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
|