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/struct.rbs
ADDED
@@ -0,0 +1,667 @@
|
|
1
|
+
# <!-- rdoc-file=struct.c -->
|
2
|
+
# Class Struct provides a convenient way to create a simple class that can store
|
3
|
+
# and fetch values.
|
4
|
+
#
|
5
|
+
# This example creates a subclass of `Struct`, `Struct::Customer`; the first
|
6
|
+
# argument, a string, is the name of the subclass; the other arguments, symbols,
|
7
|
+
# determine the *members* of the new subclass.
|
8
|
+
#
|
9
|
+
# Customer = Struct.new('Customer', :name, :address, :zip)
|
10
|
+
# Customer.name # => "Struct::Customer"
|
11
|
+
# Customer.class # => Class
|
12
|
+
# Customer.superclass # => Struct
|
13
|
+
#
|
14
|
+
# Corresponding to each member are two methods, a writer and a reader, that
|
15
|
+
# store and fetch values:
|
16
|
+
#
|
17
|
+
# methods = Customer.instance_methods false
|
18
|
+
# methods # => [:zip, :address=, :zip=, :address, :name, :name=]
|
19
|
+
#
|
20
|
+
# An instance of the subclass may be created, and its members assigned values,
|
21
|
+
# via method `::new`:
|
22
|
+
#
|
23
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
24
|
+
# joe # => #<struct Struct::Customer name="Joe Smith", address="123 Maple, Anytown NC", zip=12345>
|
25
|
+
#
|
26
|
+
# The member values may be managed thus:
|
27
|
+
#
|
28
|
+
# joe.name # => "Joe Smith"
|
29
|
+
# joe.name = 'Joseph Smith'
|
30
|
+
# joe.name # => "Joseph Smith"
|
31
|
+
#
|
32
|
+
# And thus; note that member name may be expressed as either a string or a
|
33
|
+
# symbol:
|
34
|
+
#
|
35
|
+
# joe[:name] # => "Joseph Smith"
|
36
|
+
# joe[:name] = 'Joseph Smith, Jr.'
|
37
|
+
# joe['name'] # => "Joseph Smith, Jr."
|
38
|
+
#
|
39
|
+
# See Struct::new.
|
40
|
+
#
|
41
|
+
# ## What's Here
|
42
|
+
#
|
43
|
+
# First, what's elsewhere. Class Struct:
|
44
|
+
#
|
45
|
+
# * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
|
46
|
+
# * Includes [module Enumerable](rdoc-ref:Enumerable@What-27s+Here), which
|
47
|
+
# provides dozens of additional methods.
|
48
|
+
#
|
49
|
+
# See also Data, which is a somewhat similar, but stricter concept for defining
|
50
|
+
# immutable value objects.
|
51
|
+
#
|
52
|
+
# Here, class Struct provides methods that are useful for:
|
53
|
+
#
|
54
|
+
# * [Creating a Struct
|
55
|
+
# Subclass](rdoc-ref:Struct@Methods+for+Creating+a+Struct+Subclass)
|
56
|
+
# * [Querying](rdoc-ref:Struct@Methods+for+Querying)
|
57
|
+
# * [Comparing](rdoc-ref:Struct@Methods+for+Comparing)
|
58
|
+
# * [Fetching](rdoc-ref:Struct@Methods+for+Fetching)
|
59
|
+
# * [Assigning](rdoc-ref:Struct@Methods+for+Assigning)
|
60
|
+
# * [Iterating](rdoc-ref:Struct@Methods+for+Iterating)
|
61
|
+
# * [Converting](rdoc-ref:Struct@Methods+for+Converting)
|
62
|
+
#
|
63
|
+
# ### Methods for Creating a Struct Subclass
|
64
|
+
#
|
65
|
+
# * ::new: Returns a new subclass of Struct.
|
66
|
+
#
|
67
|
+
# ### Methods for Querying
|
68
|
+
#
|
69
|
+
# * #hash: Returns the integer hash code.
|
70
|
+
# * #size (aliased as #length): Returns the number of members.
|
71
|
+
#
|
72
|
+
# ### Methods for Comparing
|
73
|
+
#
|
74
|
+
# * #==: Returns whether a given object is equal to `self`, using `==` to
|
75
|
+
# compare member values.
|
76
|
+
# * #eql?: Returns whether a given object is equal to `self`, using `eql?` to
|
77
|
+
# compare member values.
|
78
|
+
#
|
79
|
+
# ### Methods for Fetching
|
80
|
+
#
|
81
|
+
# * #[]: Returns the value associated with a given member name.
|
82
|
+
# * #to_a (aliased as #values, #deconstruct): Returns the member values in
|
83
|
+
# `self` as an array.
|
84
|
+
# * #deconstruct_keys: Returns a hash of the name/value pairs for given member
|
85
|
+
# names.
|
86
|
+
# * #dig: Returns the object in nested objects that is specified by a given
|
87
|
+
# member name and additional arguments.
|
88
|
+
# * #members: Returns an array of the member names.
|
89
|
+
# * #select (aliased as #filter): Returns an array of member values from
|
90
|
+
# `self`, as selected by the given block.
|
91
|
+
# * #values_at: Returns an array containing values for given member names.
|
92
|
+
#
|
93
|
+
# ### Methods for Assigning
|
94
|
+
#
|
95
|
+
# * #[]=: Assigns a given value to a given member name.
|
96
|
+
#
|
97
|
+
# ### Methods for Iterating
|
98
|
+
#
|
99
|
+
# * #each: Calls a given block with each member name.
|
100
|
+
# * #each_pair: Calls a given block with each member name/value pair.
|
101
|
+
#
|
102
|
+
# ### Methods for Converting
|
103
|
+
#
|
104
|
+
# * #inspect (aliased as #to_s): Returns a string representation of `self`.
|
105
|
+
# * #to_h: Returns a hash of the member name/value pairs in `self`.
|
106
|
+
#
|
107
|
+
class Struct[Elem]
|
108
|
+
include Enumerable[Elem]
|
109
|
+
|
110
|
+
# The types that can be used when "indexing" into a `Struct` via `[]`, `[]=`, `dig`, and
|
111
|
+
# `deconstruct_keys`.
|
112
|
+
#
|
113
|
+
type index = String | Symbol | int
|
114
|
+
|
115
|
+
# <!--
|
116
|
+
# rdoc-file=struct.c
|
117
|
+
# - Struct.new(*member_names, keyword_init: nil){|Struct_subclass| ... } -> Struct_subclass
|
118
|
+
# - Struct.new(class_name, *member_names, keyword_init: nil){|Struct_subclass| ... } -> Struct_subclass
|
119
|
+
# - Struct_subclass.new(*member_names) -> Struct_subclass_instance
|
120
|
+
# - Struct_subclass.new(**member_names) -> Struct_subclass_instance
|
121
|
+
# -->
|
122
|
+
# `Struct.new` returns a new subclass of `Struct`. The new subclass:
|
123
|
+
#
|
124
|
+
# * May be anonymous, or may have the name given by `class_name`.
|
125
|
+
# * May have members as given by `member_names`.
|
126
|
+
# * May have initialization via ordinary arguments, or via keyword arguments
|
127
|
+
#
|
128
|
+
# The new subclass has its own method `::new`; thus:
|
129
|
+
#
|
130
|
+
# Foo = Struct.new('Foo', :foo, :bar) # => Struct::Foo
|
131
|
+
# f = Foo.new(0, 1) # => #<struct Struct::Foo foo=0, bar=1>
|
132
|
+
#
|
133
|
+
# **\Class Name**
|
134
|
+
#
|
135
|
+
# With string argument `class_name`, returns a new subclass of `Struct` named
|
136
|
+
# `Struct::*class_name`*:
|
137
|
+
#
|
138
|
+
# Foo = Struct.new('Foo', :foo, :bar) # => Struct::Foo
|
139
|
+
# Foo.name # => "Struct::Foo"
|
140
|
+
# Foo.superclass # => Struct
|
141
|
+
#
|
142
|
+
# Without string argument `class_name`, returns a new anonymous subclass of
|
143
|
+
# `Struct`:
|
144
|
+
#
|
145
|
+
# Struct.new(:foo, :bar).name # => nil
|
146
|
+
#
|
147
|
+
# **Block**
|
148
|
+
#
|
149
|
+
# With a block given, the created subclass is yielded to the block:
|
150
|
+
#
|
151
|
+
# Customer = Struct.new('Customer', :name, :address) do |new_class|
|
152
|
+
# p "The new subclass is #{new_class}"
|
153
|
+
# def greeting
|
154
|
+
# "Hello #{name} at #{address}"
|
155
|
+
# end
|
156
|
+
# end # => Struct::Customer
|
157
|
+
# dave = Customer.new('Dave', '123 Main')
|
158
|
+
# dave # => #<struct Struct::Customer name="Dave", address="123 Main">
|
159
|
+
# dave.greeting # => "Hello Dave at 123 Main"
|
160
|
+
#
|
161
|
+
# Output, from `Struct.new`:
|
162
|
+
#
|
163
|
+
# "The new subclass is Struct::Customer"
|
164
|
+
#
|
165
|
+
# **Member Names**
|
166
|
+
#
|
167
|
+
# Symbol arguments `member_names` determines the members of the new subclass:
|
168
|
+
#
|
169
|
+
# Struct.new(:foo, :bar).members # => [:foo, :bar]
|
170
|
+
# Struct.new('Foo', :foo, :bar).members # => [:foo, :bar]
|
171
|
+
#
|
172
|
+
# The new subclass has instance methods corresponding to `member_names`:
|
173
|
+
#
|
174
|
+
# Foo = Struct.new('Foo', :foo, :bar)
|
175
|
+
# Foo.instance_methods(false) # => [:foo, :bar, :foo=, :bar=]
|
176
|
+
# f = Foo.new # => #<struct Struct::Foo foo=nil, bar=nil>
|
177
|
+
# f.foo # => nil
|
178
|
+
# f.foo = 0 # => 0
|
179
|
+
# f.bar # => nil
|
180
|
+
# f.bar = 1 # => 1
|
181
|
+
# f # => #<struct Struct::Foo foo=0, bar=1>
|
182
|
+
#
|
183
|
+
# **Singleton Methods**
|
184
|
+
#
|
185
|
+
# A subclass returned by Struct.new has these singleton methods:
|
186
|
+
#
|
187
|
+
# * Method `::new ` creates an instance of the subclass:
|
188
|
+
#
|
189
|
+
# Foo.new # => #<struct Struct::Foo foo=nil, bar=nil>
|
190
|
+
# Foo.new(0) # => #<struct Struct::Foo foo=0, bar=nil>
|
191
|
+
# Foo.new(0, 1) # => #<struct Struct::Foo foo=0, bar=1>
|
192
|
+
# Foo.new(0, 1, 2) # Raises ArgumentError: struct size differs
|
193
|
+
#
|
194
|
+
# # Initialization with keyword arguments:
|
195
|
+
# Foo.new(foo: 0) # => #<struct Struct::Foo foo=0, bar=nil>
|
196
|
+
# Foo.new(foo: 0, bar: 1) # => #<struct Struct::Foo foo=0, bar=1>
|
197
|
+
# Foo.new(foo: 0, bar: 1, baz: 2)
|
198
|
+
# # Raises ArgumentError: unknown keywords: baz
|
199
|
+
#
|
200
|
+
# * Method `:inspect` returns a string representation of the subclass:
|
201
|
+
#
|
202
|
+
# Foo.inspect
|
203
|
+
# # => "Struct::Foo"
|
204
|
+
#
|
205
|
+
# * Method `::members` returns an array of the member names:
|
206
|
+
#
|
207
|
+
# Foo.members # => [:foo, :bar]
|
208
|
+
#
|
209
|
+
# **Keyword Argument**
|
210
|
+
#
|
211
|
+
# By default, the arguments for initializing an instance of the new subclass can
|
212
|
+
# be both positional and keyword arguments.
|
213
|
+
#
|
214
|
+
# Optional keyword argument `keyword_init:` allows to force only one type of
|
215
|
+
# arguments to be accepted:
|
216
|
+
#
|
217
|
+
# KeywordsOnly = Struct.new(:foo, :bar, keyword_init: true)
|
218
|
+
# KeywordsOnly.new(bar: 1, foo: 0)
|
219
|
+
# # => #<struct KeywordsOnly foo=0, bar=1>
|
220
|
+
# KeywordsOnly.new(0, 1)
|
221
|
+
# # Raises ArgumentError: wrong number of arguments
|
222
|
+
#
|
223
|
+
# PositionalOnly = Struct.new(:foo, :bar, keyword_init: false)
|
224
|
+
# PositionalOnly.new(0, 1)
|
225
|
+
# # => #<struct PositionalOnly foo=0, bar=1>
|
226
|
+
# PositionalOnly.new(bar: 1, foo: 0)
|
227
|
+
# # => #<struct PositionalOnly foo={:foo=>1, :bar=>2}, bar=nil>
|
228
|
+
# # Note that no error is raised, but arguments treated as one hash value
|
229
|
+
#
|
230
|
+
# # Same as not providing keyword_init:
|
231
|
+
# Any = Struct.new(:foo, :bar, keyword_init: nil)
|
232
|
+
# Any.new(foo: 1, bar: 2)
|
233
|
+
# # => #<struct Any foo=1, bar=2>
|
234
|
+
# Any.new(1, 2)
|
235
|
+
# # => #<struct Any foo=1, bar=2>
|
236
|
+
#
|
237
|
+
def self.new: (string? classname, *interned fields, ?keyword_init: boolish?) ?{ (singleton(Struct)) [self: singleton(Struct)] -> void } -> untyped
|
238
|
+
| (Symbol field1, *interned fields, ?keyword_init: boolish?) ?{ (singleton(Struct)) [self: singleton(Struct)] -> void } -> untyped
|
239
|
+
|
240
|
+
# <!--
|
241
|
+
# rdoc-file=struct.c
|
242
|
+
# - StructClass::members -> array_of_symbols
|
243
|
+
# -->
|
244
|
+
# Returns the member names of the Struct descendant as an array:
|
245
|
+
#
|
246
|
+
# Customer = Struct.new(:name, :address, :zip)
|
247
|
+
# Customer.members # => [:name, :address, :zip]
|
248
|
+
#
|
249
|
+
def self.members: () -> Array[Symbol]
|
250
|
+
|
251
|
+
# <!--
|
252
|
+
# rdoc-file=struct.c
|
253
|
+
# - StructClass::keyword_init? -> true or falsy value
|
254
|
+
# -->
|
255
|
+
# Returns `true` if the class was initialized with `keyword_init: true`.
|
256
|
+
# Otherwise returns `nil` or `false`.
|
257
|
+
#
|
258
|
+
# Examples:
|
259
|
+
# Foo = Struct.new(:a)
|
260
|
+
# Foo.keyword_init? # => nil
|
261
|
+
# Bar = Struct.new(:a, keyword_init: true)
|
262
|
+
# Bar.keyword_init? # => true
|
263
|
+
# Baz = Struct.new(:a, keyword_init: false)
|
264
|
+
# Baz.keyword_init? # => false
|
265
|
+
#
|
266
|
+
def self.keyword_init?: () -> bool?
|
267
|
+
|
268
|
+
# <!--
|
269
|
+
# rdoc-file=struct.c
|
270
|
+
# - self == other -> true or false
|
271
|
+
# -->
|
272
|
+
# Returns `true` if and only if the following are true; otherwise returns
|
273
|
+
# `false`:
|
274
|
+
#
|
275
|
+
# * `other.class == self.class`.
|
276
|
+
# * For each member name `name`, `other.name == self.name`.
|
277
|
+
#
|
278
|
+
# Examples:
|
279
|
+
#
|
280
|
+
# Customer = Struct.new(:name, :address, :zip)
|
281
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
282
|
+
# joe_jr = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
283
|
+
# joe_jr == joe # => true
|
284
|
+
# joe_jr[:name] = 'Joe Smith, Jr.'
|
285
|
+
# # => "Joe Smith, Jr."
|
286
|
+
# joe_jr == joe # => false
|
287
|
+
#
|
288
|
+
def ==: (untyped other) -> bool
|
289
|
+
|
290
|
+
# <!--
|
291
|
+
# rdoc-file=struct.c
|
292
|
+
# - eql?(other) -> true or false
|
293
|
+
# -->
|
294
|
+
# Returns `true` if and only if the following are true; otherwise returns
|
295
|
+
# `false`:
|
296
|
+
#
|
297
|
+
# * `other.class == self.class`.
|
298
|
+
# * For each member name `name`, `other.name.eql?(self.name)`.
|
299
|
+
#
|
300
|
+
# Customer = Struct.new(:name, :address, :zip)
|
301
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
302
|
+
# joe_jr = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
303
|
+
# joe_jr.eql?(joe) # => true
|
304
|
+
# joe_jr[:name] = 'Joe Smith, Jr.'
|
305
|
+
# joe_jr.eql?(joe) # => false
|
306
|
+
#
|
307
|
+
# Related: Object#==.
|
308
|
+
#
|
309
|
+
def eql?: (untyped other) -> bool
|
310
|
+
|
311
|
+
# <!--
|
312
|
+
# rdoc-file=struct.c
|
313
|
+
# - hash -> integer
|
314
|
+
# -->
|
315
|
+
# Returns the integer hash value for `self`.
|
316
|
+
#
|
317
|
+
# Two structs of the same class and with the same content will have the same
|
318
|
+
# hash code (and will compare using Struct#eql?):
|
319
|
+
#
|
320
|
+
# Customer = Struct.new(:name, :address, :zip)
|
321
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
322
|
+
# joe_jr = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
323
|
+
# joe.hash == joe_jr.hash # => true
|
324
|
+
# joe_jr[:name] = 'Joe Smith, Jr.'
|
325
|
+
# joe.hash == joe_jr.hash # => false
|
326
|
+
#
|
327
|
+
# Related: Object#hash.
|
328
|
+
#
|
329
|
+
def hash: () -> Integer
|
330
|
+
|
331
|
+
# <!--
|
332
|
+
# rdoc-file=struct.c
|
333
|
+
# - inspect -> string
|
334
|
+
# -->
|
335
|
+
# Returns a string representation of `self`:
|
336
|
+
#
|
337
|
+
# Customer = Struct.new(:name, :address, :zip) # => Customer
|
338
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
339
|
+
# joe.inspect # => "#<struct Customer name=\"Joe Smith\", address=\"123 Maple, Anytown NC\", zip=12345>"
|
340
|
+
#
|
341
|
+
def inspect: () -> String
|
342
|
+
|
343
|
+
# <!-- rdoc-file=struct.c -->
|
344
|
+
# Returns a string representation of `self`:
|
345
|
+
#
|
346
|
+
# Customer = Struct.new(:name, :address, :zip) # => Customer
|
347
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
348
|
+
# joe.inspect # => "#<struct Customer name=\"Joe Smith\", address=\"123 Maple, Anytown NC\", zip=12345>"
|
349
|
+
#
|
350
|
+
alias to_s inspect
|
351
|
+
|
352
|
+
# <!--
|
353
|
+
# rdoc-file=struct.c
|
354
|
+
# - to_a -> array
|
355
|
+
# -->
|
356
|
+
# Returns the values in `self` as an array:
|
357
|
+
#
|
358
|
+
# Customer = Struct.new(:name, :address, :zip)
|
359
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
360
|
+
# joe.to_a # => ["Joe Smith", "123 Maple, Anytown NC", 12345]
|
361
|
+
#
|
362
|
+
# Related: #members.
|
363
|
+
#
|
364
|
+
def to_a: () -> Array[Elem]
|
365
|
+
|
366
|
+
# <!--
|
367
|
+
# rdoc-file=struct.c
|
368
|
+
# - to_h -> hash
|
369
|
+
# - to_h {|name, value| ... } -> hash
|
370
|
+
# -->
|
371
|
+
# Returns a hash containing the name and value for each member:
|
372
|
+
#
|
373
|
+
# Customer = Struct.new(:name, :address, :zip)
|
374
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
375
|
+
# h = joe.to_h
|
376
|
+
# h # => {:name=>"Joe Smith", :address=>"123 Maple, Anytown NC", :zip=>12345}
|
377
|
+
#
|
378
|
+
# If a block is given, it is called with each name/value pair; the block should
|
379
|
+
# return a 2-element array whose elements will become a key/value pair in the
|
380
|
+
# returned hash:
|
381
|
+
#
|
382
|
+
# h = joe.to_h{|name, value| [name.upcase, value.to_s.upcase]}
|
383
|
+
# h # => {:NAME=>"JOE SMITH", :ADDRESS=>"123 MAPLE, ANYTOWN NC", :ZIP=>"12345"}
|
384
|
+
#
|
385
|
+
# Raises ArgumentError if the block returns an inappropriate value.
|
386
|
+
#
|
387
|
+
def to_h: () -> Hash[Symbol, Elem]
|
388
|
+
| [K, V] () { (Symbol key, Elem value) -> [K, V] } -> Hash[K, V]
|
389
|
+
|
390
|
+
# <!-- rdoc-file=struct.c -->
|
391
|
+
# Returns the values in `self` as an array:
|
392
|
+
#
|
393
|
+
# Customer = Struct.new(:name, :address, :zip)
|
394
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
395
|
+
# joe.to_a # => ["Joe Smith", "123 Maple, Anytown NC", 12345]
|
396
|
+
#
|
397
|
+
# Related: #members.
|
398
|
+
#
|
399
|
+
alias values to_a
|
400
|
+
|
401
|
+
# <!--
|
402
|
+
# rdoc-file=struct.c
|
403
|
+
# - size -> integer
|
404
|
+
# -->
|
405
|
+
# Returns the number of members.
|
406
|
+
#
|
407
|
+
# Customer = Struct.new(:name, :address, :zip)
|
408
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
409
|
+
# joe.size #=> 3
|
410
|
+
#
|
411
|
+
def size: () -> Integer
|
412
|
+
|
413
|
+
# <!-- rdoc-file=struct.c -->
|
414
|
+
# Returns the number of members.
|
415
|
+
#
|
416
|
+
# Customer = Struct.new(:name, :address, :zip)
|
417
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
418
|
+
# joe.size #=> 3
|
419
|
+
#
|
420
|
+
alias length size
|
421
|
+
|
422
|
+
# <!--
|
423
|
+
# rdoc-file=struct.c
|
424
|
+
# - each {|value| ... } -> self
|
425
|
+
# - each -> enumerator
|
426
|
+
# -->
|
427
|
+
# Calls the given block with the value of each member; returns `self`:
|
428
|
+
#
|
429
|
+
# Customer = Struct.new(:name, :address, :zip)
|
430
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
431
|
+
# joe.each {|value| p value }
|
432
|
+
#
|
433
|
+
# Output:
|
434
|
+
#
|
435
|
+
# "Joe Smith"
|
436
|
+
# "123 Maple, Anytown NC"
|
437
|
+
# 12345
|
438
|
+
#
|
439
|
+
# Returns an Enumerator if no block is given.
|
440
|
+
#
|
441
|
+
# Related: #each_pair.
|
442
|
+
#
|
443
|
+
def each: () -> Enumerator[Elem, self]
|
444
|
+
| () { (Elem value) -> void } -> self
|
445
|
+
|
446
|
+
# <!--
|
447
|
+
# rdoc-file=struct.c
|
448
|
+
# - each_pair {|(name, value)| ... } -> self
|
449
|
+
# - each_pair -> enumerator
|
450
|
+
# -->
|
451
|
+
# Calls the given block with each member name/value pair; returns `self`:
|
452
|
+
#
|
453
|
+
# Customer = Struct.new(:name, :address, :zip) # => Customer
|
454
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
455
|
+
# joe.each_pair {|(name, value)| p "#{name} => #{value}" }
|
456
|
+
#
|
457
|
+
# Output:
|
458
|
+
#
|
459
|
+
# "name => Joe Smith"
|
460
|
+
# "address => 123 Maple, Anytown NC"
|
461
|
+
# "zip => 12345"
|
462
|
+
#
|
463
|
+
# Returns an Enumerator if no block is given.
|
464
|
+
#
|
465
|
+
# Related: #each.
|
466
|
+
#
|
467
|
+
def each_pair: () -> Enumerator[[Symbol, Elem], self]
|
468
|
+
| () { ([Symbol, Elem] key_value) -> void } -> self
|
469
|
+
|
470
|
+
# <!--
|
471
|
+
# rdoc-file=struct.c
|
472
|
+
# - struct[name] -> object
|
473
|
+
# - struct[n] -> object
|
474
|
+
# -->
|
475
|
+
# Returns a value from `self`.
|
476
|
+
#
|
477
|
+
# With symbol or string argument `name` given, returns the value for the named
|
478
|
+
# member:
|
479
|
+
#
|
480
|
+
# Customer = Struct.new(:name, :address, :zip)
|
481
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
482
|
+
# joe[:zip] # => 12345
|
483
|
+
#
|
484
|
+
# Raises NameError if `name` is not the name of a member.
|
485
|
+
#
|
486
|
+
# With integer argument `n` given, returns `self.values[n]` if `n` is in range;
|
487
|
+
# see Array@Array+Indexes:
|
488
|
+
#
|
489
|
+
# joe[2] # => 12345
|
490
|
+
# joe[-2] # => "123 Maple, Anytown NC"
|
491
|
+
#
|
492
|
+
# Raises IndexError if `n` is out of range.
|
493
|
+
#
|
494
|
+
def []: (index name_or_position) -> Elem
|
495
|
+
|
496
|
+
# <!--
|
497
|
+
# rdoc-file=struct.c
|
498
|
+
# - struct[name] = value -> value
|
499
|
+
# - struct[n] = value -> value
|
500
|
+
# -->
|
501
|
+
# Assigns a value to a member.
|
502
|
+
#
|
503
|
+
# With symbol or string argument `name` given, assigns the given `value` to the
|
504
|
+
# named member; returns `value`:
|
505
|
+
#
|
506
|
+
# Customer = Struct.new(:name, :address, :zip)
|
507
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
508
|
+
# joe[:zip] = 54321 # => 54321
|
509
|
+
# joe # => #<struct Customer name="Joe Smith", address="123 Maple, Anytown NC", zip=54321>
|
510
|
+
#
|
511
|
+
# Raises NameError if `name` is not the name of a member.
|
512
|
+
#
|
513
|
+
# With integer argument `n` given, assigns the given `value` to the `n`-th
|
514
|
+
# member if `n` is in range; see Array@Array+Indexes:
|
515
|
+
#
|
516
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
517
|
+
# joe[2] = 54321 # => 54321
|
518
|
+
# joe[-3] = 'Joseph Smith' # => "Joseph Smith"
|
519
|
+
# joe # => #<struct Customer name="Joseph Smith", address="123 Maple, Anytown NC", zip=54321>
|
520
|
+
#
|
521
|
+
# Raises IndexError if `n` is out of range.
|
522
|
+
#
|
523
|
+
def []=: (index name_or_position, Elem value) -> Elem
|
524
|
+
|
525
|
+
# <!--
|
526
|
+
# rdoc-file=struct.c
|
527
|
+
# - select {|value| ... } -> array
|
528
|
+
# - select -> enumerator
|
529
|
+
# -->
|
530
|
+
# With a block given, returns an array of values from `self` for which the block
|
531
|
+
# returns a truthy value:
|
532
|
+
#
|
533
|
+
# Customer = Struct.new(:name, :address, :zip)
|
534
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
535
|
+
# a = joe.select {|value| value.is_a?(String) }
|
536
|
+
# a # => ["Joe Smith", "123 Maple, Anytown NC"]
|
537
|
+
# a = joe.select {|value| value.is_a?(Integer) }
|
538
|
+
# a # => [12345]
|
539
|
+
#
|
540
|
+
# With no block given, returns an Enumerator.
|
541
|
+
#
|
542
|
+
def select: () -> Enumerator[Elem, Array[Elem]]
|
543
|
+
| () { (Elem value) -> boolish } -> Array[Elem]
|
544
|
+
|
545
|
+
# <!-- rdoc-file=struct.c -->
|
546
|
+
# With a block given, returns an array of values from `self` for which the block
|
547
|
+
# returns a truthy value:
|
548
|
+
#
|
549
|
+
# Customer = Struct.new(:name, :address, :zip)
|
550
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
551
|
+
# a = joe.select {|value| value.is_a?(String) }
|
552
|
+
# a # => ["Joe Smith", "123 Maple, Anytown NC"]
|
553
|
+
# a = joe.select {|value| value.is_a?(Integer) }
|
554
|
+
# a # => [12345]
|
555
|
+
#
|
556
|
+
# With no block given, returns an Enumerator.
|
557
|
+
#
|
558
|
+
alias filter select
|
559
|
+
|
560
|
+
# <!--
|
561
|
+
# rdoc-file=struct.c
|
562
|
+
# - values_at(*integers) -> array
|
563
|
+
# - values_at(integer_range) -> array
|
564
|
+
# -->
|
565
|
+
# Returns an array of values from `self`.
|
566
|
+
#
|
567
|
+
# With integer arguments `integers` given, returns an array containing each
|
568
|
+
# value given by one of `integers`:
|
569
|
+
#
|
570
|
+
# Customer = Struct.new(:name, :address, :zip)
|
571
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
572
|
+
# joe.values_at(0, 2) # => ["Joe Smith", 12345]
|
573
|
+
# joe.values_at(2, 0) # => [12345, "Joe Smith"]
|
574
|
+
# joe.values_at(2, 1, 0) # => [12345, "123 Maple, Anytown NC", "Joe Smith"]
|
575
|
+
# joe.values_at(0, -3) # => ["Joe Smith", "Joe Smith"]
|
576
|
+
#
|
577
|
+
# Raises IndexError if any of `integers` is out of range; see
|
578
|
+
# Array@Array+Indexes.
|
579
|
+
#
|
580
|
+
# With integer range argument `integer_range` given, returns an array containing
|
581
|
+
# each value given by the elements of the range; fills with `nil` values for
|
582
|
+
# range elements larger than the structure:
|
583
|
+
#
|
584
|
+
# joe.values_at(0..2)
|
585
|
+
# # => ["Joe Smith", "123 Maple, Anytown NC", 12345]
|
586
|
+
# joe.values_at(-3..-1)
|
587
|
+
# # => ["Joe Smith", "123 Maple, Anytown NC", 12345]
|
588
|
+
# joe.values_at(1..4) # => ["123 Maple, Anytown NC", 12345, nil, nil]
|
589
|
+
#
|
590
|
+
# Raises RangeError if any element of the range is negative and out of range;
|
591
|
+
# see Array@Array+Indexes.
|
592
|
+
#
|
593
|
+
def values_at: (*int | range[int?] positions) -> Array[Elem]
|
594
|
+
|
595
|
+
# <!--
|
596
|
+
# rdoc-file=struct.c
|
597
|
+
# - members -> array_of_symbols
|
598
|
+
# -->
|
599
|
+
# Returns the member names from `self` as an array:
|
600
|
+
#
|
601
|
+
# Customer = Struct.new(:name, :address, :zip)
|
602
|
+
# Customer.new.members # => [:name, :address, :zip]
|
603
|
+
#
|
604
|
+
# Related: #to_a.
|
605
|
+
#
|
606
|
+
def members: () -> Array[Symbol]
|
607
|
+
|
608
|
+
# <!--
|
609
|
+
# rdoc-file=struct.c
|
610
|
+
# - dig(name, *identifiers) -> object
|
611
|
+
# - dig(n, *identifiers) -> object
|
612
|
+
# -->
|
613
|
+
# Finds and returns an object among nested objects. The nested objects may be
|
614
|
+
# instances of various classes. See [Dig Methods](rdoc-ref:dig_methods.rdoc).
|
615
|
+
#
|
616
|
+
# Given symbol or string argument `name`, returns the object that is specified
|
617
|
+
# by `name` and `identifiers`:
|
618
|
+
#
|
619
|
+
# Foo = Struct.new(:a)
|
620
|
+
# f = Foo.new(Foo.new({b: [1, 2, 3]}))
|
621
|
+
# f.dig(:a) # => #<struct Foo a={:b=>[1, 2, 3]}>
|
622
|
+
# f.dig(:a, :a) # => {:b=>[1, 2, 3]}
|
623
|
+
# f.dig(:a, :a, :b) # => [1, 2, 3]
|
624
|
+
# f.dig(:a, :a, :b, 0) # => 1
|
625
|
+
# f.dig(:b, 0) # => nil
|
626
|
+
#
|
627
|
+
# Given integer argument `n`, returns the object that is specified by `n` and
|
628
|
+
# `identifiers`:
|
629
|
+
#
|
630
|
+
# f.dig(0) # => #<struct Foo a={:b=>[1, 2, 3]}>
|
631
|
+
# f.dig(0, 0) # => {:b=>[1, 2, 3]}
|
632
|
+
# f.dig(0, 0, :b) # => [1, 2, 3]
|
633
|
+
# f.dig(0, 0, :b, 0) # => 1
|
634
|
+
# f.dig(:b, 0) # => nil
|
635
|
+
#
|
636
|
+
def dig: (index name_or_position) -> Elem
|
637
|
+
| (index name_or_position, untyped, *untyped) -> untyped
|
638
|
+
|
639
|
+
# <!-- rdoc-file=struct.c -->
|
640
|
+
# Returns the values in `self` as an array:
|
641
|
+
#
|
642
|
+
# Customer = Struct.new(:name, :address, :zip)
|
643
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
644
|
+
# joe.to_a # => ["Joe Smith", "123 Maple, Anytown NC", 12345]
|
645
|
+
#
|
646
|
+
# Related: #members.
|
647
|
+
#
|
648
|
+
alias deconstruct to_a
|
649
|
+
|
650
|
+
# <!--
|
651
|
+
# rdoc-file=struct.c
|
652
|
+
# - deconstruct_keys(array_of_names) -> hash
|
653
|
+
# -->
|
654
|
+
# Returns a hash of the name/value pairs for the given member names.
|
655
|
+
#
|
656
|
+
# Customer = Struct.new(:name, :address, :zip)
|
657
|
+
# joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
658
|
+
# h = joe.deconstruct_keys([:zip, :address])
|
659
|
+
# h # => {:zip=>12345, :address=>"123 Maple, Anytown NC"}
|
660
|
+
#
|
661
|
+
# Returns all names and values if `array_of_names` is `nil`:
|
662
|
+
#
|
663
|
+
# h = joe.deconstruct_keys(nil)
|
664
|
+
# h # => {:name=>"Joseph Smith, Jr.", :address=>"123 Maple, Anytown NC", :zip=>12345}
|
665
|
+
#
|
666
|
+
def deconstruct_keys: (Array[index & Hash::_Key]? indices) -> Hash[index & Hash::_Key, Elem]
|
667
|
+
end
|