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
@@ -0,0 +1,421 @@
|
|
1
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
2
|
+
# ## Introduction
|
3
|
+
#
|
4
|
+
# The DBM class provides a wrapper to a Unix-style
|
5
|
+
# [dbm](https://en.wikipedia.org/wiki/Dbm) or Database Manager library.
|
6
|
+
#
|
7
|
+
# Dbm databases do not have tables or columns; they are simple key-value data
|
8
|
+
# stores, like a Ruby Hash except not resident in RAM. Keys and values must be
|
9
|
+
# strings.
|
10
|
+
#
|
11
|
+
# The exact library used depends on how Ruby was compiled. It could be any of
|
12
|
+
# the following:
|
13
|
+
#
|
14
|
+
# * The original ndbm library is released in 4.3BSD. It is based on dbm
|
15
|
+
# library in Unix Version 7 but has different API to support multiple
|
16
|
+
# databases in a process.
|
17
|
+
# * [Berkeley DB](https://en.wikipedia.org/wiki/Berkeley_DB) versions 1 thru
|
18
|
+
# 6, also known as BDB and Sleepycat DB, now owned by Oracle Corporation.
|
19
|
+
# * Berkeley DB 1.x, still found in 4.4BSD derivatives (FreeBSD, OpenBSD,
|
20
|
+
# etc).
|
21
|
+
# * [gdbm](http://www.gnu.org/software/gdbm/), the GNU implementation of dbm.
|
22
|
+
# * [qdbm](http://fallabs.com/qdbm/index.html), another open source
|
23
|
+
# reimplementation of dbm.
|
24
|
+
#
|
25
|
+
#
|
26
|
+
# All of these dbm implementations have their own Ruby interfaces available,
|
27
|
+
# which provide richer (but varying) APIs.
|
28
|
+
#
|
29
|
+
# ## Cautions
|
30
|
+
#
|
31
|
+
# Before you decide to use DBM, there are some issues you should consider:
|
32
|
+
#
|
33
|
+
# * Each implementation of dbm has its own file format. Generally, dbm
|
34
|
+
# libraries will not read each other's files. This makes dbm files a bad
|
35
|
+
# choice for data exchange.
|
36
|
+
#
|
37
|
+
# * Even running the same OS and the same dbm implementation, the database
|
38
|
+
# file format may depend on the CPU architecture. For example, files may not
|
39
|
+
# be portable between PowerPC and 386, or between 32 and 64 bit Linux.
|
40
|
+
#
|
41
|
+
# * Different versions of Berkeley DB use different file formats. A change to
|
42
|
+
# the OS may therefore break DBM access to existing files.
|
43
|
+
#
|
44
|
+
# * Data size limits vary between implementations. Original Berkeley DB was
|
45
|
+
# limited to 2GB of data. Dbm libraries also sometimes limit the total size
|
46
|
+
# of a key/value pair, and the total size of all the keys that hash to the
|
47
|
+
# same value. These limits can be as little as 512 bytes. That said, gdbm
|
48
|
+
# and recent versions of Berkeley DB do away with these limits.
|
49
|
+
#
|
50
|
+
#
|
51
|
+
# Given the above cautions, DBM is not a good choice for long term storage of
|
52
|
+
# important data. It is probably best used as a fast and easy alternative to a
|
53
|
+
# Hash for processing large amounts of data.
|
54
|
+
#
|
55
|
+
# ## Example
|
56
|
+
#
|
57
|
+
# require 'dbm'
|
58
|
+
# db = DBM.open('rfcs', 0666, DBM::WRCREAT)
|
59
|
+
# db['822'] = 'Standard for the Format of ARPA Internet Text Messages'
|
60
|
+
# db['1123'] = 'Requirements for Internet Hosts - Application and Support'
|
61
|
+
# db['3068'] = 'An Anycast Prefix for 6to4 Relay Routers'
|
62
|
+
# puts db['822']
|
63
|
+
#
|
64
|
+
class DBM
|
65
|
+
include Enumerable[[ String, String ]]
|
66
|
+
|
67
|
+
# <!--
|
68
|
+
# rdoc-file=ext/dbm/dbm.c
|
69
|
+
# - DBM.open(filename[, mode[, flags]]) -> dbm
|
70
|
+
# - DBM.open(filename[, mode[, flags]]) {|dbm| block}
|
71
|
+
# -->
|
72
|
+
# Open a dbm database and yields it if a block is given. See also `DBM.new`.
|
73
|
+
#
|
74
|
+
def self.open: (String filename, ?Integer mode, ?Integer flags) -> DBM
|
75
|
+
| [T] (String filename, ?Integer mode, ?Integer flags) { (DBM) -> T } -> T
|
76
|
+
|
77
|
+
# <!--
|
78
|
+
# rdoc-file=ext/dbm/dbm.c
|
79
|
+
# - dbm[key] -> string value or nil
|
80
|
+
# -->
|
81
|
+
# Return a value from the database by locating the key string provided. If the
|
82
|
+
# key is not found, returns nil.
|
83
|
+
#
|
84
|
+
def []: (String) -> String?
|
85
|
+
|
86
|
+
# <!--
|
87
|
+
# rdoc-file=ext/dbm/dbm.c
|
88
|
+
# - dbm.store(key, value) -> value
|
89
|
+
# - dbm[key] = value
|
90
|
+
# -->
|
91
|
+
# Stores the specified string value in the database, indexed via the string key
|
92
|
+
# provided.
|
93
|
+
#
|
94
|
+
def []=: (String, String) -> String
|
95
|
+
|
96
|
+
# <!--
|
97
|
+
# rdoc-file=ext/dbm/dbm.c
|
98
|
+
# - dbm.clear
|
99
|
+
# -->
|
100
|
+
# Deletes all data from the database.
|
101
|
+
#
|
102
|
+
def clear: () -> self
|
103
|
+
|
104
|
+
# <!--
|
105
|
+
# rdoc-file=ext/dbm/dbm.c
|
106
|
+
# - dbm.close
|
107
|
+
# -->
|
108
|
+
# Closes the database.
|
109
|
+
#
|
110
|
+
def close: () -> void
|
111
|
+
|
112
|
+
# <!--
|
113
|
+
# rdoc-file=ext/dbm/dbm.c
|
114
|
+
# - dbm.closed? -> true or false
|
115
|
+
# -->
|
116
|
+
# Returns true if the database is closed, false otherwise.
|
117
|
+
#
|
118
|
+
def closed?: () -> bool
|
119
|
+
|
120
|
+
# <!--
|
121
|
+
# rdoc-file=ext/dbm/dbm.c
|
122
|
+
# - dbm.delete(key)
|
123
|
+
# -->
|
124
|
+
# Deletes an entry from the database.
|
125
|
+
#
|
126
|
+
def delete: (String) -> void
|
127
|
+
|
128
|
+
# <!--
|
129
|
+
# rdoc-file=ext/dbm/dbm.c
|
130
|
+
# - dbm.reject! {|key, value| block} -> self
|
131
|
+
# - dbm.delete_if {|key, value| block} -> self
|
132
|
+
# -->
|
133
|
+
# Deletes all entries for which the code block returns true. Returns self.
|
134
|
+
#
|
135
|
+
def delete_if: () { (String) -> boolish } -> self
|
136
|
+
|
137
|
+
# <!--
|
138
|
+
# rdoc-file=ext/dbm/dbm.c
|
139
|
+
# - dbm.each_pair {|key,value| block} -> self
|
140
|
+
# -->
|
141
|
+
# Calls the block once for each [key, value] pair in the database. Returns self.
|
142
|
+
#
|
143
|
+
def each: () { ([ String, String ]) -> void } -> self
|
144
|
+
| () -> Enumerator[[ String, String ], self]
|
145
|
+
|
146
|
+
# <!--
|
147
|
+
# rdoc-file=ext/dbm/dbm.c
|
148
|
+
# - dbm.each_key {|key| block} -> self
|
149
|
+
# -->
|
150
|
+
# Calls the block once for each key string in the database. Returns self.
|
151
|
+
#
|
152
|
+
def each_key: () { (String) -> void } -> self
|
153
|
+
| () -> Enumerator[String, self]
|
154
|
+
|
155
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
156
|
+
# Calls the block once for each [key, value] pair in the database. Returns self.
|
157
|
+
#
|
158
|
+
def each_pair: () { ([ String, String ]) -> void } -> self
|
159
|
+
| () -> Enumerator[[ String, String ], self]
|
160
|
+
|
161
|
+
# <!--
|
162
|
+
# rdoc-file=ext/dbm/dbm.c
|
163
|
+
# - dbm.each_value {|value| block} -> self
|
164
|
+
# -->
|
165
|
+
# Calls the block once for each value string in the database. Returns self.
|
166
|
+
#
|
167
|
+
def each_value: () { (String) -> void } -> self
|
168
|
+
| () -> Enumerator[String, self]
|
169
|
+
|
170
|
+
# <!--
|
171
|
+
# rdoc-file=ext/dbm/dbm.c
|
172
|
+
# - dbm.empty?
|
173
|
+
# -->
|
174
|
+
# Returns true if the database is empty, false otherwise.
|
175
|
+
#
|
176
|
+
def empty?: () -> bool
|
177
|
+
|
178
|
+
# <!--
|
179
|
+
# rdoc-file=ext/dbm/dbm.c
|
180
|
+
# - dbm.fetch(key[, ifnone]) -> value
|
181
|
+
# -->
|
182
|
+
# Return a value from the database by locating the key string provided. If the
|
183
|
+
# key is not found, returns `ifnone`. If `ifnone` is not given, raises
|
184
|
+
# IndexError.
|
185
|
+
#
|
186
|
+
def fetch: (String key, ?String ifnone) -> String
|
187
|
+
|
188
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
189
|
+
# Returns true if the database contains the specified key, false otherwise.
|
190
|
+
#
|
191
|
+
def has_key?: (String) -> bool
|
192
|
+
|
193
|
+
# <!--
|
194
|
+
# rdoc-file=ext/dbm/dbm.c
|
195
|
+
# - dbm.has_value?(value) -> boolean
|
196
|
+
# - dbm.value?(value) -> boolean
|
197
|
+
# -->
|
198
|
+
# Returns true if the database contains the specified string value, false
|
199
|
+
# otherwise.
|
200
|
+
#
|
201
|
+
def has_value?: () -> bool
|
202
|
+
|
203
|
+
# <!--
|
204
|
+
# rdoc-file=ext/dbm/dbm.c
|
205
|
+
# - dbm.include?(key) -> boolean
|
206
|
+
# - dbm.has_key?(key) -> boolean
|
207
|
+
# - dbm.member?(key) -> boolean
|
208
|
+
# - dbm.key?(key) -> boolean
|
209
|
+
# -->
|
210
|
+
# Returns true if the database contains the specified key, false otherwise.
|
211
|
+
#
|
212
|
+
def include?: (String) -> bool
|
213
|
+
|
214
|
+
# <!--
|
215
|
+
# rdoc-file=ext/dbm/dbm.c
|
216
|
+
# - dbm.invert -> hash
|
217
|
+
# -->
|
218
|
+
# Returns a Hash (not a DBM database) created by using each value in the
|
219
|
+
# database as a key, with the corresponding key as its value.
|
220
|
+
#
|
221
|
+
def invert: () -> Hash[String, String]
|
222
|
+
|
223
|
+
# <!--
|
224
|
+
# rdoc-file=ext/dbm/dbm.c
|
225
|
+
# - dbm.key(value) -> string
|
226
|
+
# -->
|
227
|
+
# Returns the key for the specified value.
|
228
|
+
#
|
229
|
+
def key: (String) -> String?
|
230
|
+
|
231
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
232
|
+
# Returns true if the database contains the specified key, false otherwise.
|
233
|
+
#
|
234
|
+
def key?: (String) -> bool
|
235
|
+
|
236
|
+
# <!--
|
237
|
+
# rdoc-file=ext/dbm/dbm.c
|
238
|
+
# - dbm.keys -> array
|
239
|
+
# -->
|
240
|
+
# Returns an array of all the string keys in the database.
|
241
|
+
#
|
242
|
+
def keys: () -> Array[String]
|
243
|
+
|
244
|
+
# <!--
|
245
|
+
# rdoc-file=ext/dbm/dbm.c
|
246
|
+
# - dbm.length -> integer
|
247
|
+
# - dbm.size -> integer
|
248
|
+
# -->
|
249
|
+
# Returns the number of entries in the database.
|
250
|
+
#
|
251
|
+
def length: () -> Integer
|
252
|
+
|
253
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
254
|
+
# Returns true if the database contains the specified key, false otherwise.
|
255
|
+
#
|
256
|
+
def member?: (String) -> bool
|
257
|
+
|
258
|
+
# <!--
|
259
|
+
# rdoc-file=ext/dbm/dbm.c
|
260
|
+
# - dbm.reject {|key,value| block} -> Hash
|
261
|
+
# -->
|
262
|
+
# Converts the contents of the database to an in-memory Hash, then calls
|
263
|
+
# Hash#reject with the specified code block, returning a new Hash.
|
264
|
+
#
|
265
|
+
def reject: () { (String, String) -> boolish } -> Hash[String, String]
|
266
|
+
|
267
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
268
|
+
# Deletes all entries for which the code block returns true. Returns self.
|
269
|
+
#
|
270
|
+
def reject!: () { (String, String) -> boolish } -> self
|
271
|
+
|
272
|
+
# <!--
|
273
|
+
# rdoc-file=ext/dbm/dbm.c
|
274
|
+
# - dbm.replace(obj)
|
275
|
+
# -->
|
276
|
+
# Replaces the contents of the database with the contents of the specified
|
277
|
+
# object. Takes any object which implements the each_pair method, including Hash
|
278
|
+
# and DBM objects.
|
279
|
+
#
|
280
|
+
def replace: (_ReplaceSource) -> ::DBM
|
281
|
+
|
282
|
+
interface _ReplaceSource
|
283
|
+
def each_pair: () { ([ String, String ]) -> void } -> void
|
284
|
+
end
|
285
|
+
|
286
|
+
# <!--
|
287
|
+
# rdoc-file=ext/dbm/dbm.c
|
288
|
+
# - dbm.select {|key, value| block} -> array
|
289
|
+
# -->
|
290
|
+
# Returns a new array consisting of the [key, value] pairs for which the code
|
291
|
+
# block returns true.
|
292
|
+
#
|
293
|
+
def select: () { ([ String, String ]) -> boolish } -> Array[[ String, String ]]
|
294
|
+
|
295
|
+
# <!--
|
296
|
+
# rdoc-file=ext/dbm/dbm.c
|
297
|
+
# - dbm.shift() -> [key, value]
|
298
|
+
# -->
|
299
|
+
# Removes a [key, value] pair from the database, and returns it. If the database
|
300
|
+
# is empty, returns nil. The order in which values are removed/returned is not
|
301
|
+
# guaranteed.
|
302
|
+
#
|
303
|
+
def shift: () -> [ String, String ]?
|
304
|
+
|
305
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
306
|
+
# Returns the number of entries in the database.
|
307
|
+
#
|
308
|
+
def size: () -> Integer
|
309
|
+
|
310
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
311
|
+
# Stores the specified string value in the database, indexed via the string key
|
312
|
+
# provided.
|
313
|
+
#
|
314
|
+
def store: (String, String) -> String
|
315
|
+
|
316
|
+
# <!--
|
317
|
+
# rdoc-file=ext/dbm/dbm.c
|
318
|
+
# - dbm.to_a -> array
|
319
|
+
# -->
|
320
|
+
# Converts the contents of the database to an array of [key, value] arrays, and
|
321
|
+
# returns it.
|
322
|
+
#
|
323
|
+
def to_a: () -> Array[[ String, String ]]
|
324
|
+
|
325
|
+
# <!--
|
326
|
+
# rdoc-file=ext/dbm/dbm.c
|
327
|
+
# - dbm.to_hash -> hash
|
328
|
+
# -->
|
329
|
+
# Converts the contents of the database to an in-memory Hash object, and returns
|
330
|
+
# it.
|
331
|
+
#
|
332
|
+
def to_hash: () -> Hash[String, String]
|
333
|
+
|
334
|
+
# <!--
|
335
|
+
# rdoc-file=ext/dbm/dbm.c
|
336
|
+
# - dbm.update(obj)
|
337
|
+
# -->
|
338
|
+
# Updates the database with multiple values from the specified object. Takes any
|
339
|
+
# object which implements the each_pair method, including Hash and DBM objects.
|
340
|
+
#
|
341
|
+
def update: (_UpdateSource) -> ::DBM
|
342
|
+
|
343
|
+
interface _UpdateSource
|
344
|
+
def each_pair: () { ([ String, String ]) -> void } -> void
|
345
|
+
end
|
346
|
+
|
347
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
348
|
+
# Returns true if the database contains the specified string value, false
|
349
|
+
# otherwise.
|
350
|
+
#
|
351
|
+
def value?: (String) -> bool
|
352
|
+
|
353
|
+
# <!--
|
354
|
+
# rdoc-file=ext/dbm/dbm.c
|
355
|
+
# - dbm.values -> array
|
356
|
+
# -->
|
357
|
+
# Returns an array of all the string values in the database.
|
358
|
+
#
|
359
|
+
def values: () -> Array[String]
|
360
|
+
|
361
|
+
# <!--
|
362
|
+
# rdoc-file=ext/dbm/dbm.c
|
363
|
+
# - dbm.values_at(key, ...) -> Array
|
364
|
+
# -->
|
365
|
+
# Returns an array containing the values associated with the given keys.
|
366
|
+
#
|
367
|
+
def values_at: (*String) -> Array[String]
|
368
|
+
|
369
|
+
private
|
370
|
+
|
371
|
+
# <!--
|
372
|
+
# rdoc-file=ext/dbm/dbm.c
|
373
|
+
# - DBM.new(filename[, mode[, flags]]) -> dbm
|
374
|
+
# -->
|
375
|
+
# Open a dbm database with the specified name, which can include a directory
|
376
|
+
# path. Any file extensions needed will be supplied automatically by the dbm
|
377
|
+
# library. For example, Berkeley DB appends '.db', and GNU gdbm uses two
|
378
|
+
# physical files with extensions '.dir' and '.pag'.
|
379
|
+
#
|
380
|
+
# The mode should be an integer, as for Unix chmod.
|
381
|
+
#
|
382
|
+
# Flags should be one of READER, WRITER, WRCREAT or NEWDB.
|
383
|
+
#
|
384
|
+
def initialize: (String filename, ?Integer mode, ?Integer flags) -> void
|
385
|
+
end
|
386
|
+
|
387
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
388
|
+
# Indicates that dbm_open() should open the database in read/write mode, create
|
389
|
+
# it if it does not already exist, and delete all contents if it does already
|
390
|
+
# exist.
|
391
|
+
#
|
392
|
+
DBM::NEWDB: Integer
|
393
|
+
|
394
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
395
|
+
# Indicates that dbm_open() should open the database in read-only mode
|
396
|
+
#
|
397
|
+
DBM::READER: Integer
|
398
|
+
|
399
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
400
|
+
# Identifies ndbm library version.
|
401
|
+
#
|
402
|
+
# Examples:
|
403
|
+
#
|
404
|
+
# * "ndbm (4.3BSD)"
|
405
|
+
# * "Berkeley DB 4.8.30: (April 9, 2010)"
|
406
|
+
# * "Berkeley DB (unknown)" (4.4BSD, maybe)
|
407
|
+
# * "GDBM version 1.8.3. 10/15/2002 (built Jul 1 2011 12:32:45)"
|
408
|
+
# * "QDBM 1.8.78"
|
409
|
+
#
|
410
|
+
DBM::VERSION: String
|
411
|
+
|
412
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
413
|
+
# Indicates that dbm_open() should open the database in read/write mode, and
|
414
|
+
# create it if it does not already exist
|
415
|
+
#
|
416
|
+
DBM::WRCREAT: Integer
|
417
|
+
|
418
|
+
# <!-- rdoc-file=ext/dbm/dbm.c -->
|
419
|
+
# Indicates that dbm_open() should open the database in read/write mode
|
420
|
+
#
|
421
|
+
DBM::WRITER: Integer
|
@@ -0,0 +1,184 @@
|
|
1
|
+
# <!-- rdoc-file=lib/delegate.rb -->
|
2
|
+
# This library provides three different ways to delegate method calls to an
|
3
|
+
# object. The easiest to use is SimpleDelegator. Pass an object to the
|
4
|
+
# constructor and all methods supported by the object will be delegated. This
|
5
|
+
# object can be changed later.
|
6
|
+
#
|
7
|
+
# Going a step further, the top level DelegateClass method allows you to easily
|
8
|
+
# setup delegation through class inheritance. This is considerably more
|
9
|
+
# flexible and thus probably the most common use for this library.
|
10
|
+
#
|
11
|
+
# Finally, if you need full control over the delegation scheme, you can inherit
|
12
|
+
# from the abstract class Delegator and customize as needed. (If you find
|
13
|
+
# yourself needing this control, have a look at Forwardable which is also in the
|
14
|
+
# standard library. It may suit your needs better.)
|
15
|
+
#
|
16
|
+
# SimpleDelegator's implementation serves as a nice example of the use of
|
17
|
+
# Delegator:
|
18
|
+
#
|
19
|
+
# require 'delegate'
|
20
|
+
#
|
21
|
+
# class SimpleDelegator < Delegator
|
22
|
+
# def __getobj__
|
23
|
+
# @delegate_sd_obj # return object we are delegating to, required
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
# def __setobj__(obj)
|
27
|
+
# @delegate_sd_obj = obj # change delegation object,
|
28
|
+
# # a feature we're providing
|
29
|
+
# end
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
# ## Notes
|
33
|
+
#
|
34
|
+
# Be advised, RDoc will not detect delegated methods.
|
35
|
+
#
|
36
|
+
class Delegator < BasicObject
|
37
|
+
def self.const_missing: (Symbol n) -> untyped
|
38
|
+
|
39
|
+
def self.delegating_block: (Symbol mid) -> Proc
|
40
|
+
|
41
|
+
def self.public_api: () -> untyped
|
42
|
+
|
43
|
+
# <!--
|
44
|
+
# rdoc-file=lib/delegate.rb
|
45
|
+
# - !()
|
46
|
+
# -->
|
47
|
+
# Delegates ! to the _*getobj*_
|
48
|
+
#
|
49
|
+
def !: () -> untyped
|
50
|
+
|
51
|
+
# <!--
|
52
|
+
# rdoc-file=lib/delegate.rb
|
53
|
+
# - !=(obj)
|
54
|
+
# -->
|
55
|
+
# Returns true if two objects are not considered of equal value.
|
56
|
+
#
|
57
|
+
def !=: (untyped obj) -> bool
|
58
|
+
|
59
|
+
# <!--
|
60
|
+
# rdoc-file=lib/delegate.rb
|
61
|
+
# - ==(obj)
|
62
|
+
# -->
|
63
|
+
# Returns true if two objects are considered of equal value.
|
64
|
+
#
|
65
|
+
def ==: (untyped obj) -> bool
|
66
|
+
|
67
|
+
# <!--
|
68
|
+
# rdoc-file=lib/delegate.rb
|
69
|
+
# - __getobj__()
|
70
|
+
# -->
|
71
|
+
# This method must be overridden by subclasses and should return the object
|
72
|
+
# method calls are being delegated to.
|
73
|
+
#
|
74
|
+
def __getobj__: () -> untyped
|
75
|
+
|
76
|
+
# <!--
|
77
|
+
# rdoc-file=lib/delegate.rb
|
78
|
+
# - __setobj__(obj)
|
79
|
+
# -->
|
80
|
+
# This method must be overridden by subclasses and change the object delegate to
|
81
|
+
# *obj*.
|
82
|
+
#
|
83
|
+
def __setobj__: (untyped obj) -> untyped
|
84
|
+
|
85
|
+
# <!--
|
86
|
+
# rdoc-file=lib/delegate.rb
|
87
|
+
# - eql?(obj)
|
88
|
+
# -->
|
89
|
+
# Returns true if two objects are considered of equal value.
|
90
|
+
#
|
91
|
+
def eql?: (untyped obj) -> bool
|
92
|
+
|
93
|
+
# <!--
|
94
|
+
# rdoc-file=lib/delegate.rb
|
95
|
+
# - freeze()
|
96
|
+
# -->
|
97
|
+
# :method: freeze Freeze both the object returned by _*getobj*_ and self.
|
98
|
+
#
|
99
|
+
def freeze: () -> self
|
100
|
+
|
101
|
+
# <!--
|
102
|
+
# rdoc-file=lib/delegate.rb
|
103
|
+
# - marshal_dump()
|
104
|
+
# -->
|
105
|
+
# Serialization support for the object returned by _*getobj*_.
|
106
|
+
#
|
107
|
+
def marshal_dump: () -> untyped
|
108
|
+
|
109
|
+
# <!--
|
110
|
+
# rdoc-file=lib/delegate.rb
|
111
|
+
# - marshal_load(data)
|
112
|
+
# -->
|
113
|
+
# Reinitializes delegation from a serialized object.
|
114
|
+
#
|
115
|
+
def marshal_load: (untyped data) -> void
|
116
|
+
|
117
|
+
# <!--
|
118
|
+
# rdoc-file=lib/delegate.rb
|
119
|
+
# - method_missing(m, *args, &block)
|
120
|
+
# -->
|
121
|
+
#
|
122
|
+
def method_missing: (Symbol m, *untyped args, **untyped) { (*untyped, **untyped) -> untyped } -> untyped
|
123
|
+
|
124
|
+
# <!--
|
125
|
+
# rdoc-file=lib/delegate.rb
|
126
|
+
# - methods(all=true)
|
127
|
+
# -->
|
128
|
+
# Returns the methods available to this delegate object as the union of this
|
129
|
+
# object's and _*getobj*_ methods.
|
130
|
+
#
|
131
|
+
def methods: (?boolish all) -> Array[Symbol]
|
132
|
+
|
133
|
+
# <!--
|
134
|
+
# rdoc-file=lib/delegate.rb
|
135
|
+
# - protected_methods(all=true)
|
136
|
+
# -->
|
137
|
+
# Returns the methods available to this delegate object as the union of this
|
138
|
+
# object's and _*getobj*_ protected methods.
|
139
|
+
#
|
140
|
+
def protected_methods: (?boolish all) -> Array[Symbol]
|
141
|
+
|
142
|
+
# <!--
|
143
|
+
# rdoc-file=lib/delegate.rb
|
144
|
+
# - public_methods(all=true)
|
145
|
+
# -->
|
146
|
+
# Returns the methods available to this delegate object as the union of this
|
147
|
+
# object's and _*getobj*_ public methods.
|
148
|
+
#
|
149
|
+
def public_methods: (?untyped all) -> Array[Symbol]
|
150
|
+
|
151
|
+
private
|
152
|
+
|
153
|
+
# <!--
|
154
|
+
# rdoc-file=lib/delegate.rb
|
155
|
+
# - new(obj)
|
156
|
+
# -->
|
157
|
+
# Pass in the *obj* to delegate method calls to. All methods supported by *obj*
|
158
|
+
# will be delegated to.
|
159
|
+
#
|
160
|
+
def initialize: (untyped obj) -> void
|
161
|
+
|
162
|
+
def initialize_clone: (self obj, ?freeze: bool?) -> self
|
163
|
+
|
164
|
+
def initialize_dup: (self obj) -> self
|
165
|
+
|
166
|
+
# <!--
|
167
|
+
# rdoc-file=lib/delegate.rb
|
168
|
+
# - respond_to_missing?(m, include_private)
|
169
|
+
# -->
|
170
|
+
# Checks for a method provided by this the delegate object by forwarding the
|
171
|
+
# call through _*getobj*_.
|
172
|
+
#
|
173
|
+
def respond_to_missing?: (Symbol m, bool include_private) -> bool
|
174
|
+
|
175
|
+
# <!--
|
176
|
+
# rdoc-file=lib/delegate.rb
|
177
|
+
# - target_respond_to?(target, m, include_private)
|
178
|
+
# -->
|
179
|
+
# Handle BasicObject instances
|
180
|
+
#
|
181
|
+
def target_respond_to?: (untyped target, Symbol m, bool include_private) -> bool
|
182
|
+
|
183
|
+
VERSION: String
|
184
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
%a{annotate:rdoc:skip}
|
2
|
+
class Object
|
3
|
+
# <!--
|
4
|
+
# rdoc-file=lib/delegate.rb
|
5
|
+
# - DelegateClass(superclass, &block)
|
6
|
+
# -->
|
7
|
+
# The primary interface to this library. Use to setup delegation when defining
|
8
|
+
# your class.
|
9
|
+
#
|
10
|
+
# class MyClass < DelegateClass(ClassToDelegateTo) # Step 1
|
11
|
+
# def initialize
|
12
|
+
# super(obj_of_ClassToDelegateTo) # Step 2
|
13
|
+
# end
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
# or:
|
17
|
+
#
|
18
|
+
# MyClass = DelegateClass(ClassToDelegateTo) do # Step 1
|
19
|
+
# def initialize
|
20
|
+
# super(obj_of_ClassToDelegateTo) # Step 2
|
21
|
+
# end
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# Here's a sample of use from Tempfile which is really a File object with a few
|
25
|
+
# special rules about storage location and when the File should be deleted.
|
26
|
+
# That makes for an almost textbook perfect example of how to use delegation.
|
27
|
+
#
|
28
|
+
# class Tempfile < DelegateClass(File)
|
29
|
+
# # constant and class member data initialization...
|
30
|
+
#
|
31
|
+
# def initialize(basename, tmpdir=Dir::tmpdir)
|
32
|
+
# # build up file path/name in var tmpname...
|
33
|
+
#
|
34
|
+
# @tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0600)
|
35
|
+
#
|
36
|
+
# # ...
|
37
|
+
#
|
38
|
+
# super(@tmpfile)
|
39
|
+
#
|
40
|
+
# # below this point, all methods of File are supported...
|
41
|
+
# end
|
42
|
+
#
|
43
|
+
# # ...
|
44
|
+
# end
|
45
|
+
#
|
46
|
+
def DelegateClass: (Class) -> Class
|
47
|
+
end
|