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/constants.rbs
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
# <!-- rdoc-file=io.c -->
|
2
|
+
# ARGF is a stream designed for use in scripts that process files given as
|
3
|
+
# command-line arguments or passed in via STDIN.
|
4
|
+
#
|
5
|
+
# See ARGF (the class) for more details.
|
6
|
+
#
|
7
|
+
ARGF: RBS::Unnamed::ARGFClass
|
8
|
+
|
9
|
+
# <!-- rdoc-file=ruby.c -->
|
10
|
+
# ARGV contains the command line arguments used to run ruby.
|
11
|
+
#
|
12
|
+
# A library like OptionParser can be used to process command-line arguments.
|
13
|
+
#
|
14
|
+
ARGV: Array[String]
|
15
|
+
|
16
|
+
CROSS_COMPILING: true?
|
17
|
+
|
18
|
+
# <!-- rdoc-file=ruby.c -->
|
19
|
+
# DATA is a File that contains the data section of the executed file. To create
|
20
|
+
# a data section use `__END__`:
|
21
|
+
#
|
22
|
+
# $ cat t.rb
|
23
|
+
# puts DATA.gets
|
24
|
+
# __END__
|
25
|
+
# hello world!
|
26
|
+
#
|
27
|
+
# $ ruby t.rb
|
28
|
+
# hello world!
|
29
|
+
#
|
30
|
+
DATA: File
|
31
|
+
|
32
|
+
# <!-- rdoc-file=version.c -->
|
33
|
+
# The copyright string for ruby
|
34
|
+
#
|
35
|
+
RUBY_COPYRIGHT: String
|
36
|
+
|
37
|
+
# <!-- rdoc-file=version.c -->
|
38
|
+
# The full ruby version string, like `ruby -v` prints
|
39
|
+
#
|
40
|
+
RUBY_DESCRIPTION: String
|
41
|
+
|
42
|
+
# <!-- rdoc-file=version.c -->
|
43
|
+
# The engine or interpreter this ruby uses.
|
44
|
+
#
|
45
|
+
RUBY_ENGINE: String
|
46
|
+
|
47
|
+
# <!-- rdoc-file=version.c -->
|
48
|
+
# The version of the engine or interpreter this ruby uses.
|
49
|
+
#
|
50
|
+
RUBY_ENGINE_VERSION: String
|
51
|
+
|
52
|
+
# <!-- rdoc-file=version.c -->
|
53
|
+
# The patchlevel for this ruby. If this is a development build of ruby the
|
54
|
+
# patchlevel will be -1
|
55
|
+
#
|
56
|
+
RUBY_PATCHLEVEL: Integer
|
57
|
+
|
58
|
+
# <!-- rdoc-file=version.c -->
|
59
|
+
# The platform for this ruby
|
60
|
+
#
|
61
|
+
RUBY_PLATFORM: String
|
62
|
+
|
63
|
+
# <!-- rdoc-file=version.c -->
|
64
|
+
# The date this ruby was released
|
65
|
+
#
|
66
|
+
RUBY_RELEASE_DATE: String
|
67
|
+
|
68
|
+
# <!-- rdoc-file=version.c -->
|
69
|
+
# The GIT commit hash for this ruby.
|
70
|
+
#
|
71
|
+
RUBY_REVISION: String
|
72
|
+
|
73
|
+
# <!-- rdoc-file=version.c -->
|
74
|
+
# The running version of ruby
|
75
|
+
#
|
76
|
+
RUBY_VERSION: String
|
77
|
+
|
78
|
+
# <!-- rdoc-file=io.c -->
|
79
|
+
# Holds the original stderr
|
80
|
+
#
|
81
|
+
STDERR: IO
|
82
|
+
|
83
|
+
# <!-- rdoc-file=io.c -->
|
84
|
+
# Holds the original stdin
|
85
|
+
#
|
86
|
+
STDIN: IO
|
87
|
+
|
88
|
+
# <!-- rdoc-file=io.c -->
|
89
|
+
# Holds the original stdout
|
90
|
+
#
|
91
|
+
STDOUT: IO
|
92
|
+
|
93
|
+
# <!-- rdoc-file=vm.c -->
|
94
|
+
# The Binding of the top level scope
|
95
|
+
#
|
96
|
+
TOPLEVEL_BINDING: Binding
|
data/core/data.rbs
ADDED
@@ -0,0 +1,415 @@
|
|
1
|
+
# <!-- rdoc-file=struct.c -->
|
2
|
+
# Class Data provides a convenient way to define simple classes for value-alike
|
3
|
+
# objects.
|
4
|
+
#
|
5
|
+
# The simplest example of usage:
|
6
|
+
#
|
7
|
+
# Measure = Data.define(:amount, :unit)
|
8
|
+
#
|
9
|
+
# # Positional arguments constructor is provided
|
10
|
+
# distance = Measure.new(100, 'km')
|
11
|
+
# #=> #<data Measure amount=100, unit="km">
|
12
|
+
#
|
13
|
+
# # Keyword arguments constructor is provided
|
14
|
+
# weight = Measure.new(amount: 50, unit: 'kg')
|
15
|
+
# #=> #<data Measure amount=50, unit="kg">
|
16
|
+
#
|
17
|
+
# # Alternative form to construct an object:
|
18
|
+
# speed = Measure[10, 'mPh']
|
19
|
+
# #=> #<data Measure amount=10, unit="mPh">
|
20
|
+
#
|
21
|
+
# # Works with keyword arguments, too:
|
22
|
+
# area = Measure[amount: 1.5, unit: 'm^2']
|
23
|
+
# #=> #<data Measure amount=1.5, unit="m^2">
|
24
|
+
#
|
25
|
+
# # Argument accessors are provided:
|
26
|
+
# distance.amount #=> 100
|
27
|
+
# distance.unit #=> "km"
|
28
|
+
#
|
29
|
+
# Constructed object also has a reasonable definitions of #== operator, #to_h
|
30
|
+
# hash conversion, and #deconstruct / #deconstruct_keys to be used in pattern
|
31
|
+
# matching.
|
32
|
+
#
|
33
|
+
# ::define method accepts an optional block and evaluates it in the context of
|
34
|
+
# the newly defined class. That allows to define additional methods:
|
35
|
+
#
|
36
|
+
# Measure = Data.define(:amount, :unit) do
|
37
|
+
# def <=>(other)
|
38
|
+
# return unless other.is_a?(self.class) && other.unit == unit
|
39
|
+
# amount <=> other.amount
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# include Comparable
|
43
|
+
# end
|
44
|
+
#
|
45
|
+
# Measure[3, 'm'] < Measure[5, 'm'] #=> true
|
46
|
+
# Measure[3, 'm'] < Measure[5, 'kg']
|
47
|
+
# # comparison of Measure with Measure failed (ArgumentError)
|
48
|
+
#
|
49
|
+
# Data provides no member writers, or enumerators: it is meant to be a storage
|
50
|
+
# for immutable atomic values. But note that if some of data members is of a
|
51
|
+
# mutable class, Data does no additional immutability enforcement:
|
52
|
+
#
|
53
|
+
# Event = Data.define(:time, :weekdays)
|
54
|
+
# event = Event.new('18:00', %w[Tue Wed Fri])
|
55
|
+
# #=> #<data Event time="18:00", weekdays=["Tue", "Wed", "Fri"]>
|
56
|
+
#
|
57
|
+
# # There is no #time= or #weekdays= accessors, but changes are
|
58
|
+
# # still possible:
|
59
|
+
# event.weekdays << 'Sat'
|
60
|
+
# event
|
61
|
+
# #=> #<data Event time="18:00", weekdays=["Tue", "Wed", "Fri", "Sat"]>
|
62
|
+
#
|
63
|
+
# See also Struct, which is a similar concept, but has more container-alike API,
|
64
|
+
# allowing to change contents of the object and enumerate it.
|
65
|
+
#
|
66
|
+
class Data
|
67
|
+
# <!--
|
68
|
+
# rdoc-file=struct.c
|
69
|
+
# - define(*symbols) -> class
|
70
|
+
# -->
|
71
|
+
# Defines a new Data class.
|
72
|
+
#
|
73
|
+
# measure = Data.define(:amount, :unit)
|
74
|
+
# #=> #<Class:0x00007f70c6868498>
|
75
|
+
# measure.new(1, 'km')
|
76
|
+
# #=> #<data amount=1, unit="km">
|
77
|
+
#
|
78
|
+
# # It you store the new class in the constant, it will
|
79
|
+
# # affect #inspect and will be more natural to use:
|
80
|
+
# Measure = Data.define(:amount, :unit)
|
81
|
+
# #=> Measure
|
82
|
+
# Measure.new(1, 'km')
|
83
|
+
# #=> #<data Measure amount=1, unit="km">
|
84
|
+
#
|
85
|
+
# Note that member-less Data is acceptable and might be a useful technique for
|
86
|
+
# defining several homogeneous data classes, like
|
87
|
+
#
|
88
|
+
# class HTTPFetcher
|
89
|
+
# Response = Data.define(:body)
|
90
|
+
# NotFound = Data.define
|
91
|
+
# # ... implementation
|
92
|
+
# end
|
93
|
+
#
|
94
|
+
# Now, different kinds of responses from `HTTPFetcher` would have consistent
|
95
|
+
# representation:
|
96
|
+
#
|
97
|
+
# #<data HTTPFetcher::Response body="<html...">
|
98
|
+
# #<data HTTPFetcher::NotFound>
|
99
|
+
#
|
100
|
+
# And are convenient to use in pattern matching:
|
101
|
+
#
|
102
|
+
# case fetcher.get(url)
|
103
|
+
# in HTTPFetcher::Response(body)
|
104
|
+
# # process body variable
|
105
|
+
# in HTTPFetcher::NotFound
|
106
|
+
# # handle not found case
|
107
|
+
# end
|
108
|
+
#
|
109
|
+
def self.define: [KLASS < _DataClass] (*Symbol) ?{ (KLASS) [self: KLASS] -> void } -> KLASS
|
110
|
+
|
111
|
+
interface _DataClass
|
112
|
+
# <!--
|
113
|
+
# rdoc-file=struct.c
|
114
|
+
# - new(*args) -> instance
|
115
|
+
# - new(**kwargs) -> instance
|
116
|
+
# - ::[](*args) -> instance
|
117
|
+
# - ::[](**kwargs) -> instance
|
118
|
+
# -->
|
119
|
+
# Constructors for classes defined with ::define accept both positional and
|
120
|
+
# keyword arguments.
|
121
|
+
#
|
122
|
+
# Measure = Data.define(:amount, :unit)
|
123
|
+
#
|
124
|
+
# Measure.new(1, 'km')
|
125
|
+
# #=> #<data Measure amount=1, unit="km">
|
126
|
+
# Measure.new(amount: 1, unit: 'km')
|
127
|
+
# #=> #<data Measure amount=1, unit="km">
|
128
|
+
#
|
129
|
+
# # Alternative shorter intialization with []
|
130
|
+
# Measure[1, 'km']
|
131
|
+
# #=> #<data Measure amount=1, unit="km">
|
132
|
+
# Measure[amount: 1, unit: 'km']
|
133
|
+
# #=> #<data Measure amount=1, unit="km">
|
134
|
+
#
|
135
|
+
# All arguments are mandatory (unlike Struct), and converted to keyword
|
136
|
+
# arguments:
|
137
|
+
#
|
138
|
+
# Measure.new(amount: 1)
|
139
|
+
# # in `initialize': missing keyword: :unit (ArgumentError)
|
140
|
+
#
|
141
|
+
# Measure.new(1)
|
142
|
+
# # in `initialize': missing keyword: :unit (ArgumentError)
|
143
|
+
#
|
144
|
+
# Note that `Measure#initialize` always receives keyword arguments, and that
|
145
|
+
# mandatory arguments are checked in `initialize`, not in `new`. This can be
|
146
|
+
# important for redefining initialize in order to convert arguments or provide
|
147
|
+
# defaults:
|
148
|
+
#
|
149
|
+
# Measure = Data.define(:amount, :unit) do
|
150
|
+
# NONE = Data.define
|
151
|
+
#
|
152
|
+
# def initialize(amount:, unit: NONE.new)
|
153
|
+
# super(amount: Float(amount), unit:)
|
154
|
+
# end
|
155
|
+
# end
|
156
|
+
#
|
157
|
+
# Measure.new('10', 'km') # => #<data Measure amount=10.0, unit="km">
|
158
|
+
# Measure.new(10_000) # => #<data Measure amount=10000.0, unit=#<data NONE>>
|
159
|
+
#
|
160
|
+
%a{annotate:rdoc:copy:Data.new}
|
161
|
+
def new: (*untyped) -> Data
|
162
|
+
| (**untyped) -> Data
|
163
|
+
|
164
|
+
%a{annotate:rdoc:copy:Data.[]}
|
165
|
+
def []: (*untyped) -> Data
|
166
|
+
| (**untyped) -> Data
|
167
|
+
|
168
|
+
# <!--
|
169
|
+
# rdoc-file=struct.c
|
170
|
+
# - DataClass::members -> array_of_symbols
|
171
|
+
# -->
|
172
|
+
# Returns an array of member names of the data class:
|
173
|
+
#
|
174
|
+
# Measure = Data.define(:amount, :unit)
|
175
|
+
# Measure.members # => [:amount, :unit]
|
176
|
+
#
|
177
|
+
%a{annotate:rdoc:copy:Data.members}
|
178
|
+
def members: () -> Array[Symbol]
|
179
|
+
end
|
180
|
+
|
181
|
+
%a{annotate:rdoc:skip}
|
182
|
+
def self.new: () -> bot
|
183
|
+
|
184
|
+
def self.allocate: () -> bot
|
185
|
+
|
186
|
+
# <!--
|
187
|
+
# rdoc-file=struct.c
|
188
|
+
# - self == other -> true or false
|
189
|
+
# -->
|
190
|
+
# Returns `true` if `other` is the same class as `self`, and all members are
|
191
|
+
# equal.
|
192
|
+
#
|
193
|
+
# Examples:
|
194
|
+
#
|
195
|
+
# Measure = Data.define(:amount, :unit)
|
196
|
+
#
|
197
|
+
# Measure[1, 'km'] == Measure[1, 'km'] #=> true
|
198
|
+
# Measure[1, 'km'] == Measure[2, 'km'] #=> false
|
199
|
+
# Measure[1, 'km'] == Measure[1, 'm'] #=> false
|
200
|
+
#
|
201
|
+
# Measurement = Data.define(:amount, :unit)
|
202
|
+
# # Even though Measurement and Measure have the same "shape"
|
203
|
+
# # their instances are never equal
|
204
|
+
# Measure[1, 'km'] == Measurement[1, 'km'] #=> false
|
205
|
+
#
|
206
|
+
def ==: (untyped) -> bool
|
207
|
+
|
208
|
+
# <!--
|
209
|
+
# rdoc-file=struct.c
|
210
|
+
# - deconstruct -> array
|
211
|
+
# -->
|
212
|
+
# Returns the values in `self` as an array, to use in pattern matching:
|
213
|
+
#
|
214
|
+
# Measure = Data.define(:amount, :unit)
|
215
|
+
#
|
216
|
+
# distance = Measure[10, 'km']
|
217
|
+
# distance.deconstruct #=> [10, "km"]
|
218
|
+
#
|
219
|
+
# # usage
|
220
|
+
# case distance
|
221
|
+
# in n, 'km' # calls #deconstruct underneath
|
222
|
+
# puts "It is #{n} kilometers away"
|
223
|
+
# else
|
224
|
+
# puts "Don't know how to handle it"
|
225
|
+
# end
|
226
|
+
# # prints "It is 10 kilometers away"
|
227
|
+
#
|
228
|
+
# Or, with checking the class, too:
|
229
|
+
#
|
230
|
+
# case distance
|
231
|
+
# in Measure(n, 'km')
|
232
|
+
# puts "It is #{n} kilometers away"
|
233
|
+
# # ...
|
234
|
+
# end
|
235
|
+
#
|
236
|
+
def deconstruct: () -> Array[untyped]
|
237
|
+
|
238
|
+
# <!--
|
239
|
+
# rdoc-file=struct.c
|
240
|
+
# - deconstruct_keys(array_of_names_or_nil) -> hash
|
241
|
+
# -->
|
242
|
+
# Returns a hash of the name/value pairs, to use in pattern matching.
|
243
|
+
#
|
244
|
+
# Measure = Data.define(:amount, :unit)
|
245
|
+
#
|
246
|
+
# distance = Measure[10, 'km']
|
247
|
+
# distance.deconstruct_keys(nil) #=> {:amount=>10, :unit=>"km"}
|
248
|
+
# distance.deconstruct_keys([:amount]) #=> {:amount=>10}
|
249
|
+
#
|
250
|
+
# # usage
|
251
|
+
# case distance
|
252
|
+
# in amount:, unit: 'km' # calls #deconstruct_keys underneath
|
253
|
+
# puts "It is #{amount} kilometers away"
|
254
|
+
# else
|
255
|
+
# puts "Don't know how to handle it"
|
256
|
+
# end
|
257
|
+
# # prints "It is 10 kilometers away"
|
258
|
+
#
|
259
|
+
# Or, with checking the class, too:
|
260
|
+
#
|
261
|
+
# case distance
|
262
|
+
# in Measure(amount:, unit: 'km')
|
263
|
+
# puts "It is #{amount} kilometers away"
|
264
|
+
# # ...
|
265
|
+
# end
|
266
|
+
#
|
267
|
+
def deconstruct_keys: (?Array[Symbol]?) -> Hash[Symbol, untyped]
|
268
|
+
|
269
|
+
# <!--
|
270
|
+
# rdoc-file=struct.c
|
271
|
+
# - self.eql?(other) -> true or false
|
272
|
+
# -->
|
273
|
+
# Equality check that is used when two items of data are keys of a Hash.
|
274
|
+
#
|
275
|
+
# The subtle difference with #== is that members are also compared with their
|
276
|
+
# #eql? method, which might be important in some cases:
|
277
|
+
#
|
278
|
+
# Measure = Data.define(:amount, :unit)
|
279
|
+
#
|
280
|
+
# Measure[1, 'km'] == Measure[1.0, 'km'] #=> true, they are equal as values
|
281
|
+
# # ...but...
|
282
|
+
# Measure[1, 'km'].eql? Measure[1.0, 'km'] #=> false, they represent different hash keys
|
283
|
+
#
|
284
|
+
# See also Object#eql? for further explanations of the method usage.
|
285
|
+
#
|
286
|
+
def eql?: (untyped) -> bool
|
287
|
+
|
288
|
+
# <!--
|
289
|
+
# rdoc-file=struct.c
|
290
|
+
# - hash -> integer
|
291
|
+
# -->
|
292
|
+
# Redefines Object#hash (used to distinguish objects as Hash keys) so that data
|
293
|
+
# objects of the same class with same content would have the same `hash` value,
|
294
|
+
# and represented the same Hash key.
|
295
|
+
#
|
296
|
+
# Measure = Data.define(:amount, :unit)
|
297
|
+
#
|
298
|
+
# Measure[1, 'km'].hash == Measure[1, 'km'].hash #=> true
|
299
|
+
# Measure[1, 'km'].hash == Measure[10, 'km'].hash #=> false
|
300
|
+
# Measure[1, 'km'].hash == Measure[1, 'm'].hash #=> false
|
301
|
+
# Measure[1, 'km'].hash == Measure[1.0, 'km'].hash #=> false
|
302
|
+
#
|
303
|
+
# # Structurally similar data class, but shouldn't be considered
|
304
|
+
# # the same hash key
|
305
|
+
# Measurement = Data.define(:amount, :unit)
|
306
|
+
#
|
307
|
+
# Measure[1, 'km'].hash == Measurement[1, 'km'].hash #=> false
|
308
|
+
#
|
309
|
+
def hash: () -> Integer
|
310
|
+
|
311
|
+
# <!--
|
312
|
+
# rdoc-file=struct.c
|
313
|
+
# - inspect -> string
|
314
|
+
# - to_s -> string
|
315
|
+
# -->
|
316
|
+
# Returns a string representation of `self`:
|
317
|
+
#
|
318
|
+
# Measure = Data.define(:amount, :unit)
|
319
|
+
#
|
320
|
+
# distance = Measure[10, 'km']
|
321
|
+
#
|
322
|
+
# p distance # uses #inspect underneath
|
323
|
+
# #<data Measure amount=10, unit="km">
|
324
|
+
#
|
325
|
+
# puts distance # uses #to_s underneath, same representation
|
326
|
+
# #<data Measure amount=10, unit="km">
|
327
|
+
#
|
328
|
+
def inspect: () -> String
|
329
|
+
|
330
|
+
# <!--
|
331
|
+
# rdoc-file=struct.c
|
332
|
+
# - members -> array_of_symbols
|
333
|
+
# -->
|
334
|
+
# Returns the member names from `self` as an array:
|
335
|
+
#
|
336
|
+
# Measure = Data.define(:amount, :unit)
|
337
|
+
# distance = Measure[10, 'km']
|
338
|
+
#
|
339
|
+
# distance.members #=> [:amount, :unit]
|
340
|
+
#
|
341
|
+
def members: () -> Array[Symbol]
|
342
|
+
|
343
|
+
# <!--
|
344
|
+
# rdoc-file=struct.c
|
345
|
+
# - to_h -> hash
|
346
|
+
# - to_h {|name, value| ... } -> hash
|
347
|
+
# -->
|
348
|
+
# Returns Hash representation of the data object.
|
349
|
+
#
|
350
|
+
# Measure = Data.define(:amount, :unit)
|
351
|
+
# distance = Measure[10, 'km']
|
352
|
+
#
|
353
|
+
# distance.to_h
|
354
|
+
# #=> {:amount=>10, :unit=>"km"}
|
355
|
+
#
|
356
|
+
# Like Enumerable#to_h, if the block is provided, it is expected to produce
|
357
|
+
# key-value pairs to construct a hash:
|
358
|
+
#
|
359
|
+
# distance.to_h { |name, val| [name.to_s, val.to_s] }
|
360
|
+
# #=> {"amount"=>"10", "unit"=>"km"}
|
361
|
+
#
|
362
|
+
# Note that there is a useful symmetry between #to_h and #initialize:
|
363
|
+
#
|
364
|
+
# distance2 = Measure.new(**distance.to_h)
|
365
|
+
# #=> #<data Measure amount=10, unit="km">
|
366
|
+
# distance2 == distance
|
367
|
+
# #=> true
|
368
|
+
#
|
369
|
+
def to_h: () -> Hash[Symbol, untyped]
|
370
|
+
|
371
|
+
# <!-- rdoc-file=struct.c -->
|
372
|
+
# Returns a string representation of `self`:
|
373
|
+
#
|
374
|
+
# Measure = Data.define(:amount, :unit)
|
375
|
+
#
|
376
|
+
# distance = Measure[10, 'km']
|
377
|
+
#
|
378
|
+
# p distance # uses #inspect underneath
|
379
|
+
# #<data Measure amount=10, unit="km">
|
380
|
+
#
|
381
|
+
# puts distance # uses #to_s underneath, same representation
|
382
|
+
# #<data Measure amount=10, unit="km">
|
383
|
+
#
|
384
|
+
alias to_s inspect
|
385
|
+
|
386
|
+
# <!--
|
387
|
+
# rdoc-file=struct.c
|
388
|
+
# - with(**kwargs) -> instance
|
389
|
+
# -->
|
390
|
+
# Returns a shallow copy of `self` --- the instance variables of `self` are
|
391
|
+
# copied, but not the objects they reference.
|
392
|
+
#
|
393
|
+
# If the method is supplied any keyword arguments, the copy will be created with
|
394
|
+
# the respective field values updated to use the supplied keyword argument
|
395
|
+
# values. Note that it is an error to supply a keyword that the Data class does
|
396
|
+
# not have as a member.
|
397
|
+
#
|
398
|
+
# Point = Data.define(:x, :y)
|
399
|
+
#
|
400
|
+
# origin = Point.new(x: 0, y: 0)
|
401
|
+
#
|
402
|
+
# up = origin.with(x: 1)
|
403
|
+
# right = origin.with(y: 1)
|
404
|
+
# up_and_right = up.with(y: 1)
|
405
|
+
#
|
406
|
+
# p origin # #<data Point x=0, y=0>
|
407
|
+
# p up # #<data Point x=1, y=0>
|
408
|
+
# p right # #<data Point x=0, y=1>
|
409
|
+
# p up_and_right # #<data Point x=1, y=1>
|
410
|
+
#
|
411
|
+
# out = origin.with(z: 1) # ArgumentError: unknown keyword: :z
|
412
|
+
# some_point = origin.with(1, 2) # ArgumentError: expected keyword arguments, got positional arguments
|
413
|
+
#
|
414
|
+
def with: (**untyped) -> instance
|
415
|
+
end
|