rbs 2.8.4 → 3.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +12 -4
- data/.github/workflows/comments.yml +11 -11
- data/.github/workflows/dependabot.yml +30 -0
- data/.github/workflows/ruby.yml +40 -49
- data/.github/workflows/typecheck.yml +36 -0
- data/.github/workflows/windows.yml +28 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +42 -2
- data/CHANGELOG.md +845 -1
- data/README.md +64 -4
- data/Rakefile +198 -18
- data/Steepfile +11 -11
- data/config.yml +311 -0
- data/core/array.rbs +2189 -1914
- data/core/basic_object.rbs +59 -84
- data/core/binding.rbs +7 -69
- data/core/builtin.rbs +210 -11
- data/core/class.rbs +37 -0
- data/core/comparable.rbs +23 -25
- data/core/complex.rbs +449 -227
- data/core/constants.rbs +29 -21
- data/core/data.rbs +415 -0
- data/core/dir.rbs +698 -415
- data/core/encoding.rbs +468 -843
- data/core/enumerable.rbs +495 -455
- data/core/enumerator/product.rbs +92 -0
- data/core/enumerator.rbs +106 -9
- data/core/env.rbs +1 -1
- data/core/errno.rbs +506 -605
- data/core/errors.rbs +15 -17
- data/core/exception.rbs +361 -145
- data/core/false_class.rbs +39 -26
- data/core/fiber.rbs +121 -14
- data/core/file.rbs +1262 -320
- data/core/file_test.rbs +62 -45
- data/core/float.rbs +187 -208
- data/core/gc.rbs +446 -196
- data/core/global_variables.rbs +29 -29
- data/core/hash.rbs +242 -349
- data/core/integer.rbs +246 -308
- data/core/io/buffer.rbs +373 -122
- data/core/io/wait.rbs +29 -17
- data/core/io.rbs +1881 -1518
- data/core/kernel.rbs +2116 -1538
- data/core/marshal.rbs +24 -14
- data/core/match_data.rbs +413 -166
- data/core/math.rbs +531 -291
- data/core/method.rbs +101 -32
- data/core/module.rbs +228 -64
- data/core/nil_class.rbs +106 -47
- data/core/numeric.rbs +206 -292
- data/core/object.rbs +73 -1168
- data/core/object_space/weak_key_map.rbs +166 -0
- data/core/object_space.rbs +5 -3
- data/core/proc.rbs +280 -39
- data/core/process.rbs +1318 -658
- data/core/ractor.rbs +200 -134
- data/core/random.rbs +21 -4
- data/core/range.rbs +309 -153
- data/core/rational.rbs +4 -12
- data/core/rb_config.rbs +64 -43
- data/core/rbs/unnamed/argf.rbs +411 -147
- data/core/rbs/unnamed/env_class.rbs +137 -253
- data/core/rbs/unnamed/random.rbs +49 -26
- data/core/refinement.rbs +16 -1
- data/core/regexp.rbs +1568 -862
- data/core/ruby_vm.rbs +719 -7
- data/core/rubygems/config_file.rbs +3 -0
- data/core/rubygems/errors.rbs +69 -6
- data/core/rubygems/rubygems.rbs +71 -17
- data/core/rubygems/version.rbs +11 -7
- data/{stdlib/set/0 → core}/set.rbs +80 -91
- data/core/signal.rbs +14 -8
- data/core/string.rbs +1732 -1607
- data/core/struct.rbs +467 -95
- data/core/symbol.rbs +215 -245
- data/core/thread.rbs +133 -89
- data/core/thread_group.rbs +9 -9
- data/core/time.rbs +1141 -841
- data/core/trace_point.rbs +181 -121
- data/core/true_class.rbs +58 -32
- data/core/unbound_method.rbs +103 -30
- data/core/warning.rbs +50 -5
- data/docs/CONTRIBUTING.md +1 -1
- data/docs/architecture.md +110 -0
- data/docs/collection.md +59 -5
- data/docs/data_and_struct.md +86 -0
- data/docs/gem.md +57 -0
- data/docs/rbs_by_example.md +16 -35
- data/docs/repo.md +1 -1
- data/docs/sigs.md +7 -7
- data/docs/stdlib.md +63 -5
- data/docs/syntax.md +255 -61
- data/docs/tools.md +1 -0
- data/ext/rbs_extension/extconf.rb +10 -0
- data/ext/rbs_extension/lexer.c +1741 -1548
- data/ext/rbs_extension/lexer.h +11 -1
- data/ext/rbs_extension/lexer.re +12 -6
- data/ext/rbs_extension/lexstate.c +26 -3
- data/ext/rbs_extension/location.c +119 -111
- data/ext/rbs_extension/location.h +32 -7
- data/ext/rbs_extension/main.c +3 -0
- data/ext/rbs_extension/parser.c +883 -481
- data/ext/rbs_extension/parserstate.c +65 -25
- data/ext/rbs_extension/parserstate.h +13 -3
- data/ext/rbs_extension/rbs_extension.h +1 -10
- data/ext/rbs_extension/unescape.c +7 -47
- data/goodcheck.yml +2 -2
- data/{ext/rbs_extension → include/rbs}/constants.h +26 -15
- data/include/rbs/ruby_objs.h +72 -0
- data/include/rbs.h +7 -0
- data/lib/rbs/annotate/annotations.rb +3 -3
- data/lib/rbs/annotate/formatter.rb +13 -3
- data/lib/rbs/annotate/rdoc_annotator.rb +1 -1
- data/lib/rbs/annotate/rdoc_source.rb +12 -3
- data/lib/rbs/ast/declarations.rb +85 -2
- data/lib/rbs/ast/directives.rb +39 -0
- data/lib/rbs/ast/members.rb +49 -15
- data/lib/rbs/ast/type_param.rb +104 -15
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/buffer.rb +5 -0
- data/lib/rbs/cli/colored_io.rb +48 -0
- data/lib/rbs/cli/diff.rb +83 -0
- data/lib/rbs/cli/validate.rb +356 -0
- data/lib/rbs/cli.rb +253 -143
- data/lib/rbs/collection/cleaner.rb +8 -1
- data/lib/rbs/collection/config/lockfile.rb +92 -0
- data/lib/rbs/collection/config/lockfile_generator.rb +154 -65
- data/lib/rbs/collection/config.rb +19 -46
- data/lib/rbs/collection/installer.rb +12 -13
- data/lib/rbs/collection/sources/base.rb +2 -2
- data/lib/rbs/collection/sources/git.rb +146 -69
- data/lib/rbs/collection/sources/local.rb +81 -0
- data/lib/rbs/collection/sources/rubygems.rb +10 -12
- data/lib/rbs/collection/sources/stdlib.rb +14 -13
- data/lib/rbs/collection/sources.rb +15 -2
- data/lib/rbs/collection.rb +2 -1
- data/lib/rbs/definition.rb +13 -16
- data/lib/rbs/definition_builder/ancestor_builder.rb +100 -24
- data/lib/rbs/definition_builder/method_builder.rb +4 -4
- data/lib/rbs/definition_builder.rb +489 -584
- data/lib/rbs/diff.rb +125 -0
- data/lib/rbs/environment/use_map.rb +77 -0
- data/lib/rbs/environment.rb +406 -105
- data/lib/rbs/environment_loader.rb +48 -44
- data/lib/rbs/environment_walker.rb +1 -1
- data/lib/rbs/errors.rb +175 -56
- data/lib/rbs/file_finder.rb +28 -0
- data/lib/rbs/location_aux.rb +8 -7
- data/lib/rbs/locator.rb +37 -15
- data/lib/rbs/method_type.rb +23 -0
- data/lib/rbs/namespace.rb +1 -0
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +22 -13
- data/lib/rbs/prototype/helpers.rb +48 -22
- data/lib/rbs/prototype/node_usage.rb +99 -0
- data/lib/rbs/prototype/rb.rb +125 -31
- data/lib/rbs/prototype/rbi.rb +49 -36
- 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 +273 -159
- data/lib/rbs/resolver/constant_resolver.rb +24 -8
- data/lib/rbs/resolver/type_name_resolver.rb +41 -7
- data/lib/rbs/sorter.rb +153 -123
- data/lib/rbs/substitution.rb +19 -0
- data/lib/rbs/subtractor.rb +201 -0
- data/lib/rbs/test/errors.rb +24 -11
- data/lib/rbs/test/guaranteed.rb +30 -0
- data/lib/rbs/test/hook.rb +45 -40
- data/lib/rbs/test/setup.rb +1 -1
- data/lib/rbs/test/tester.rb +1 -1
- data/lib/rbs/test/type_check.rb +120 -23
- data/lib/rbs/test.rb +6 -3
- data/lib/rbs/type_alias_dependency.rb +13 -3
- data/lib/rbs/type_alias_regularity.rb +21 -14
- data/lib/rbs/type_name.rb +18 -13
- data/lib/rbs/types.rb +352 -18
- data/lib/rbs/unit_test/convertibles.rb +176 -0
- data/lib/rbs/unit_test/spy.rb +136 -0
- data/lib/rbs/unit_test/type_assertions.rb +341 -0
- data/lib/rbs/unit_test/with_aliases.rb +143 -0
- data/lib/rbs/unit_test.rb +6 -0
- data/lib/rbs/validator.rb +55 -30
- data/lib/rbs/variance_calculator.rb +26 -23
- data/lib/rbs/vendorer.rb +3 -3
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/writer.rb +69 -22
- data/lib/rbs.rb +7 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +5 -5
- data/rbs.gemspec +12 -2
- data/schema/decls.json +1 -1
- data/schema/members.json +15 -10
- data/sig/ancestor_builder.rbs +4 -0
- data/sig/ancestor_graph.rbs +22 -2
- data/sig/annotate/formatter.rbs +2 -2
- data/sig/annotate/rdoc_annotater.rbs +1 -1
- 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 +4 -0
- data/sig/collection/config/lockfile.rbs +74 -0
- data/sig/collection/config/lockfile_generator.rbs +66 -0
- data/sig/collection/config.rbs +5 -48
- data/sig/collection/installer.rbs +1 -1
- data/sig/collection/sources.rbs +105 -33
- data/sig/constant.rbs +1 -1
- data/sig/declarations.rbs +42 -3
- data/sig/definition.rbs +26 -10
- data/sig/definition_builder.rbs +103 -81
- data/sig/diff.rbs +28 -0
- data/sig/directives.rbs +61 -0
- data/sig/environment.rbs +175 -29
- data/sig/environment_loader.rbs +20 -18
- data/sig/errors.rbs +123 -2
- data/sig/file_finder.rbs +28 -0
- data/sig/location.rbs +0 -3
- data/sig/locator.rbs +14 -2
- data/sig/manifest.yaml +0 -1
- data/sig/members.rbs +32 -9
- data/sig/method_types.rbs +10 -4
- data/sig/namespace.rbs +2 -3
- data/sig/parser.rbs +55 -16
- data/sig/prototype/helpers.rbs +4 -0
- data/sig/prototype/node_usage.rbs +20 -0
- data/sig/prototype/rb.rbs +10 -2
- data/sig/prototype/rbi.rbs +2 -0
- data/sig/prototype/runtime.rbs +182 -0
- data/sig/rbs.rbs +1 -1
- data/sig/rdoc/rbs.rbs +4 -0
- data/sig/repository.rbs +7 -5
- data/sig/resolver/constant_resolver.rbs +3 -4
- data/sig/resolver/context.rbs +1 -1
- data/sig/resolver/type_name_resolver.rbs +5 -1
- data/sig/shims/bundler.rbs +38 -0
- data/sig/shims/rubygems.rbs +19 -0
- data/sig/sorter.rbs +23 -5
- data/sig/substitution.rbs +6 -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 +31 -0
- data/sig/type_alias_regularity.rbs +12 -6
- data/sig/type_param.rbs +45 -9
- data/sig/typename.rbs +8 -5
- data/sig/types.rbs +119 -12
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +28 -0
- data/sig/unit_test/type_assertions.rbs +194 -0
- data/sig/unit_test/with_aliases.rbs +136 -0
- data/sig/use_map.rbs +35 -0
- data/sig/validator.rbs +12 -5
- data/sig/variance_calculator.rbs +3 -1
- data/sig/vendorer.rbs +1 -1
- data/sig/visitor.rbs +47 -0
- data/sig/writer.rbs +6 -2
- data/src/constants.c +153 -0
- data/src/ruby_objs.c +793 -0
- data/stdlib/base64/0/base64.rbs +298 -45
- data/stdlib/benchmark/0/benchmark.rbs +12 -3
- data/stdlib/bigdecimal/0/big_decimal.rbs +62 -198
- data/stdlib/cgi/0/core.rbs +68 -15
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/coverage/0/coverage.rbs +50 -11
- data/stdlib/csv/0/csv.rbs +90 -119
- data/stdlib/csv/0/manifest.yaml +1 -0
- data/stdlib/date/0/date.rbs +806 -735
- data/stdlib/date/0/date_time.rbs +70 -211
- data/stdlib/dbm/0/dbm.rbs +0 -2
- 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 +3 -8
- data/stdlib/digest/0/digest.rbs +48 -35
- data/stdlib/erb/0/erb.rbs +15 -39
- data/stdlib/etc/0/etc.rbs +174 -54
- data/stdlib/fileutils/0/fileutils.rbs +1234 -385
- data/stdlib/forwardable/0/forwardable.rbs +4 -4
- data/stdlib/io-console/0/io-console.rbs +82 -17
- data/stdlib/ipaddr/0/ipaddr.rbs +11 -6
- data/stdlib/json/0/json.rbs +434 -151
- data/stdlib/kconv/0/kconv.rbs +166 -0
- data/stdlib/logger/0/formatter.rbs +0 -2
- data/stdlib/logger/0/log_device.rbs +1 -3
- data/stdlib/logger/0/logger.rbs +465 -328
- data/stdlib/minitest/0/kernel.rbs +2 -2
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
- data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
- data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
- 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/mock.rbs +9 -5
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
- data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
- data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
- data/stdlib/minitest/0/minitest/spec.rbs +1 -1
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +7 -7
- data/stdlib/minitest/0/minitest/test.rbs +7 -14
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
- data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/stdlib/minitest/0/minitest/unit.rbs +1 -2
- data/stdlib/minitest/0/minitest.rbs +41 -892
- data/stdlib/monitor/0/monitor.rbs +91 -10
- data/stdlib/mutex_m/0/mutex_m.rbs +0 -2
- data/stdlib/net-http/0/manifest.yaml +1 -1
- data/stdlib/net-http/0/net-http.rbs +3858 -964
- 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 +35 -5
- data/stdlib/objspace/0/objspace.rbs +40 -18
- 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 +1 -0
- data/stdlib/openssl/0/openssl.rbs +681 -316
- data/stdlib/optparse/0/optparse.rbs +100 -65
- data/stdlib/pathname/0/pathname.rbs +24 -15
- data/stdlib/pp/0/manifest.yaml +2 -0
- data/stdlib/pp/0/pp.rbs +300 -0
- data/stdlib/prettyprint/0/prettyprint.rbs +2 -6
- data/stdlib/pstore/0/pstore.rbs +370 -156
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/{yaml → psych}/0/dbm.rbs +3 -3
- data/stdlib/psych/0/manifest.yaml +3 -0
- data/stdlib/psych/0/psych.rbs +402 -0
- data/stdlib/{yaml → psych}/0/store.rbs +2 -2
- data/stdlib/pty/0/pty.rbs +63 -11
- 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 +13 -380
- 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/resolv.rbs +16 -79
- data/stdlib/ripper/0/ripper.rbs +1648 -0
- data/stdlib/securerandom/0/securerandom.rbs +7 -2
- data/stdlib/shellwords/0/shellwords.rbs +11 -12
- data/stdlib/singleton/0/singleton.rbs +0 -3
- data/stdlib/socket/0/addrinfo.rbs +13 -18
- data/stdlib/socket/0/basic_socket.rbs +5 -10
- data/stdlib/socket/0/ip_socket.rbs +0 -2
- data/stdlib/socket/0/socket.rbs +77 -46
- data/stdlib/socket/0/tcp_server.rbs +0 -5
- data/stdlib/socket/0/tcp_socket.rbs +36 -3
- data/stdlib/socket/0/udp_socket.rbs +4 -5
- data/stdlib/socket/0/unix_server.rbs +0 -5
- data/stdlib/socket/0/unix_socket.rbs +2 -4
- data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +188 -107
- data/stdlib/strscan/0/string_scanner.rbs +1269 -425
- data/stdlib/tempfile/0/tempfile.rbs +224 -61
- data/stdlib/time/0/time.rbs +48 -35
- data/stdlib/timeout/0/timeout.rbs +17 -8
- data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
- data/stdlib/tsort/0/tsort.rbs +0 -4
- data/stdlib/uri/0/common.rbs +271 -144
- data/stdlib/uri/0/file.rbs +5 -0
- data/stdlib/uri/0/ftp.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +26 -22
- data/stdlib/uri/0/http.rbs +4 -4
- data/stdlib/uri/0/ldap.rbs +1 -1
- data/stdlib/uri/0/mailto.rbs +84 -0
- data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
- data/stdlib/yaml/0/manifest.yaml +1 -2
- data/stdlib/yaml/0/yaml.rbs +1 -199
- 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 +1 -3
- data/stdlib/zlib/0/zstream.rbs +200 -0
- data/templates/include/rbs/constants.h.erb +20 -0
- data/templates/include/rbs/ruby_objs.h.erb +10 -0
- data/templates/src/constants.c.erb +36 -0
- data/templates/src/ruby_objs.c.erb +27 -0
- data/templates/template.rb +122 -0
- metadata +136 -36
- data/Gemfile +0 -33
- data/Gemfile.lock +0 -118
- data/core/deprecated.rbs +0 -9
- data/ext/rbs_extension/constants.c +0 -135
- data/ext/rbs_extension/ruby_objs.c +0 -525
- data/ext/rbs_extension/ruby_objs.h +0 -43
- data/lib/rbs/constant_table.rb +0 -167
- data/lib/rbs/parser_compat/lexer_error.rb +0 -6
- data/lib/rbs/parser_compat/located_value.rb +0 -7
- data/lib/rbs/parser_compat/semantics_error.rb +0 -6
- data/lib/rbs/parser_compat/syntax_error.rb +0 -6
- data/lib/rbs/test/spy.rb +0 -6
- data/lib/rbs/type_name_resolver.rb +0 -67
- data/sig/constant_table.rbs +0 -30
- data/sig/shims/abstract_syntax_tree.rbs +0 -25
- data/sig/shims/pp.rbs +0 -3
- data/sig/shims/ripper.rbs +0 -8
- data/sig/shims.rbs +0 -69
- data/sig/type_name_resolver.rbs +0 -26
- data/stdlib/minitest/0/manifest.yaml +0 -2
- data/stdlib/prime/0/integer-extension.rbs +0 -41
- data/stdlib/prime/0/manifest.yaml +0 -2
- data/stdlib/prime/0/prime.rbs +0 -372
data/stdlib/csv/0/csv.rbs
CHANGED
@@ -1,15 +1,6 @@
|
|
1
1
|
# <!-- rdoc-file=lib/csv.rb -->
|
2
2
|
# ## CSV
|
3
3
|
#
|
4
|
-
# ### In a Hurry?
|
5
|
-
#
|
6
|
-
# If you are familiar with CSV data and have a particular task in mind, you may
|
7
|
-
# want to go directly to the:
|
8
|
-
# * [Recipes for CSV](doc/csv/recipes/recipes_rdoc.html).
|
9
|
-
#
|
10
|
-
#
|
11
|
-
# Otherwise, read on here, about the API: classes, methods, and constants.
|
12
|
-
#
|
13
4
|
# ### CSV Data
|
14
5
|
#
|
15
6
|
# CSV (comma-separated values) data is a text representation of a table:
|
@@ -18,7 +9,6 @@
|
|
18
9
|
# * A *column* *separator* delimits fields in a row. A common column separator
|
19
10
|
# is the comma character `","`.
|
20
11
|
#
|
21
|
-
#
|
22
12
|
# This CSV String, with row separator `"\n"` and column separator `","`, has
|
23
13
|
# three rows and two columns:
|
24
14
|
# "foo,0\nbar,1\nbaz,2\n"
|
@@ -37,7 +27,6 @@
|
|
37
27
|
# IO object.
|
38
28
|
# * Generating CSV data to a String object.
|
39
29
|
#
|
40
|
-
#
|
41
30
|
# To make CSV available:
|
42
31
|
# require 'csv'
|
43
32
|
#
|
@@ -60,11 +49,9 @@
|
|
60
49
|
# * The outer Array is the entire "table".
|
61
50
|
# * Each inner Array is a row.
|
62
51
|
# * Each String is a field.
|
63
|
-
#
|
64
52
|
# * A CSV::Table object. For details, see [\CSV with
|
65
53
|
# Headers](#class-CSV-label-CSV+with+Headers).
|
66
54
|
#
|
67
|
-
#
|
68
55
|
# #### Parsing a String
|
69
56
|
#
|
70
57
|
# The input to be parsed can be a string:
|
@@ -177,7 +164,6 @@
|
|
177
164
|
# * Method CSV.instance returns a new or cached CSV object.
|
178
165
|
# * Method CSV() also returns a new or cached CSV object.
|
179
166
|
#
|
180
|
-
#
|
181
167
|
# ### Instance Methods
|
182
168
|
#
|
183
169
|
# CSV has three groups of instance methods:
|
@@ -185,7 +171,6 @@
|
|
185
171
|
# * Methods included by module Enumerable.
|
186
172
|
# * Methods delegated to class IO. See below.
|
187
173
|
#
|
188
|
-
#
|
189
174
|
# #### Delegated Methods
|
190
175
|
#
|
191
176
|
# For convenience, a CSV object will delegate to many methods in class IO. (A
|
@@ -224,7 +209,6 @@
|
|
224
209
|
# * IO#truncate
|
225
210
|
# * IO#tty?
|
226
211
|
#
|
227
|
-
#
|
228
212
|
# ### Options
|
229
213
|
#
|
230
214
|
# The default values for options are:
|
@@ -283,7 +267,6 @@
|
|
283
267
|
# * `empty_value`: Specifies the object that is to be substituted for each
|
284
268
|
# empty field.
|
285
269
|
#
|
286
|
-
#
|
287
270
|
# ###### Option `row_sep`
|
288
271
|
#
|
289
272
|
# Specifies the row separator, a String or the Symbol `:auto` (see below), to be
|
@@ -374,21 +357,11 @@
|
|
374
357
|
# * Data is `ARGF`, `STDIN`, `STDOUT`, or `STDERR`.
|
375
358
|
# * The stream is only available for output.
|
376
359
|
#
|
377
|
-
#
|
378
360
|
# Obviously, discovery takes a little time. Set manually if speed is important.
|
379
361
|
# Also note that IO objects should be opened in binary mode on Windows if this
|
380
362
|
# feature will be used as the line-ending translation can cause problems with
|
381
363
|
# resetting the document position to where it was before the read ahead.
|
382
364
|
#
|
383
|
-
# ---
|
384
|
-
#
|
385
|
-
# Raises an exception if the given value is not String-convertible:
|
386
|
-
# row_sep = BasicObject.new
|
387
|
-
# # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
|
388
|
-
# CSV.generate(ary, row_sep: row_sep)
|
389
|
-
# # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
|
390
|
-
# CSV.parse(str, row_sep: row_sep)
|
391
|
-
#
|
392
365
|
# ###### Option `col_sep`
|
393
366
|
#
|
394
367
|
# Specifies the String field separator to be used for both parsing and
|
@@ -445,13 +418,6 @@
|
|
445
418
|
# # Raises ArgumentError (:col_sep must be 1 or more characters: "")
|
446
419
|
# CSV.parse("foo0\nbar1\nbaz2\n", col_sep: col_sep)
|
447
420
|
#
|
448
|
-
# Raises an exception if the given value is not String-convertible:
|
449
|
-
# col_sep = BasicObject.new
|
450
|
-
# # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
|
451
|
-
# CSV.generate(line, col_sep: col_sep)
|
452
|
-
# # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
|
453
|
-
# CSV.parse(str, col_sep: col_sep)
|
454
|
-
#
|
455
421
|
# ###### Option `quote_char`
|
456
422
|
#
|
457
423
|
# Specifies the character (String of length 1) used used to quote fields in both
|
@@ -709,7 +675,6 @@
|
|
709
675
|
# * The converters apply only to the header row.
|
710
676
|
# * The built-in header converters are `:downcase` and `:symbol`.
|
711
677
|
#
|
712
|
-
#
|
713
678
|
# This section assumes prior execution of:
|
714
679
|
# str = <<-EOT
|
715
680
|
# Name,Value
|
@@ -781,7 +746,6 @@
|
|
781
746
|
# * If a String, converts it to a Regexp, ignores lines that match it.
|
782
747
|
# * If `nil`, no lines are considered to be comments.
|
783
748
|
#
|
784
|
-
#
|
785
749
|
# Default value:
|
786
750
|
# CSV::DEFAULT_OPTIONS.fetch(:skip_lines) # => nil
|
787
751
|
#
|
@@ -832,13 +796,14 @@
|
|
832
796
|
#
|
833
797
|
# ###### Option `liberal_parsing`
|
834
798
|
#
|
835
|
-
# Specifies the boolean value that determines whether CSV will attempt
|
836
|
-
# input not conformant with RFC 4180, such as double quotes in unquoted
|
799
|
+
# Specifies the boolean or hash value that determines whether CSV will attempt
|
800
|
+
# to parse input not conformant with RFC 4180, such as double quotes in unquoted
|
801
|
+
# fields.
|
837
802
|
#
|
838
803
|
# Default value:
|
839
804
|
# CSV::DEFAULT_OPTIONS.fetch(:liberal_parsing) # => false
|
840
805
|
#
|
841
|
-
# For
|
806
|
+
# For the next two examples:
|
842
807
|
# str = 'is,this "three, or four",fields'
|
843
808
|
#
|
844
809
|
# Without `liberal_parsing`:
|
@@ -849,6 +814,24 @@
|
|
849
814
|
# ary = CSV.parse_line(str, liberal_parsing: true)
|
850
815
|
# ary # => ["is", "this \"three", " or four\"", "fields"]
|
851
816
|
#
|
817
|
+
# Use the `backslash_quote` sub-option to parse values that use a backslash to
|
818
|
+
# escape a double-quote character. This causes the parser to treat `\"` as if
|
819
|
+
# it were `""`.
|
820
|
+
#
|
821
|
+
# For the next two examples:
|
822
|
+
# str = 'Show,"Harry \"Handcuff\" Houdini, the one and only","Tampa Theater"'
|
823
|
+
#
|
824
|
+
# With `liberal_parsing`, but without the `backslash_quote` sub-option:
|
825
|
+
# # Incorrect interpretation of backslash; incorrectly interprets the quoted comma as a field separator.
|
826
|
+
# ary = CSV.parse_line(str, liberal_parsing: true)
|
827
|
+
# ary # => ["Show", "\"Harry \\\"Handcuff\\\" Houdini", " the one and only\"", "Tampa Theater"]
|
828
|
+
# puts ary[1] # => "Harry \"Handcuff\" Houdini
|
829
|
+
#
|
830
|
+
# With `liberal_parsing` and its `backslash_quote` sub-option:
|
831
|
+
# ary = CSV.parse_line(str, liberal_parsing: { backslash_quote: true })
|
832
|
+
# ary # => ["Show", "Harry \"Handcuff\" Houdini, the one and only", "Tampa Theater"]
|
833
|
+
# puts ary[1] # => Harry "Handcuff" Houdini, the one and only
|
834
|
+
#
|
852
835
|
# ###### Option `nil_value`
|
853
836
|
#
|
854
837
|
# Specifies the object that is to be substituted for each null (no-text) field.
|
@@ -891,7 +874,6 @@
|
|
891
874
|
# * `write_empty_value`: Specifies the object that is to be substituted for
|
892
875
|
# each empty field.
|
893
876
|
#
|
894
|
-
#
|
895
877
|
# ###### Option `row_sep`
|
896
878
|
#
|
897
879
|
# Specifies the row separator, a String or the Symbol `:auto` (see below), to be
|
@@ -982,21 +964,11 @@
|
|
982
964
|
# * Data is `ARGF`, `STDIN`, `STDOUT`, or `STDERR`.
|
983
965
|
# * The stream is only available for output.
|
984
966
|
#
|
985
|
-
#
|
986
967
|
# Obviously, discovery takes a little time. Set manually if speed is important.
|
987
968
|
# Also note that IO objects should be opened in binary mode on Windows if this
|
988
969
|
# feature will be used as the line-ending translation can cause problems with
|
989
970
|
# resetting the document position to where it was before the read ahead.
|
990
971
|
#
|
991
|
-
# ---
|
992
|
-
#
|
993
|
-
# Raises an exception if the given value is not String-convertible:
|
994
|
-
# row_sep = BasicObject.new
|
995
|
-
# # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
|
996
|
-
# CSV.generate(ary, row_sep: row_sep)
|
997
|
-
# # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
|
998
|
-
# CSV.parse(str, row_sep: row_sep)
|
999
|
-
#
|
1000
972
|
# ###### Option `col_sep`
|
1001
973
|
#
|
1002
974
|
# Specifies the String field separator to be used for both parsing and
|
@@ -1053,13 +1025,6 @@
|
|
1053
1025
|
# # Raises ArgumentError (:col_sep must be 1 or more characters: "")
|
1054
1026
|
# CSV.parse("foo0\nbar1\nbaz2\n", col_sep: col_sep)
|
1055
1027
|
#
|
1056
|
-
# Raises an exception if the given value is not String-convertible:
|
1057
|
-
# col_sep = BasicObject.new
|
1058
|
-
# # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
|
1059
|
-
# CSV.generate(line, col_sep: col_sep)
|
1060
|
-
# # Raises NoMethodError (undefined method `to_s' for #<BasicObject:>)
|
1061
|
-
# CSV.parse(str, col_sep: col_sep)
|
1062
|
-
#
|
1063
1028
|
# ###### Option `quote_char`
|
1064
1029
|
#
|
1065
1030
|
# Specifies the character (String of length 1) used used to quote fields in both
|
@@ -1124,7 +1089,7 @@
|
|
1124
1089
|
#
|
1125
1090
|
# With `write_headers`":
|
1126
1091
|
# CSV.open(file_path,'w',
|
1127
|
-
# :write_headers=> true,
|
1092
|
+
# :write_headers => true,
|
1128
1093
|
# :headers => ['Name','Value']
|
1129
1094
|
# ) do |csv|
|
1130
1095
|
# csv << ['foo', '0']
|
@@ -1192,14 +1157,6 @@
|
|
1192
1157
|
#
|
1193
1158
|
# See also [Write Converters](#class-CSV-label-Write+Converters)
|
1194
1159
|
#
|
1195
|
-
# ---
|
1196
|
-
#
|
1197
|
-
# Raises an exception if the converter returns a value that is neither `nil` nor
|
1198
|
-
# String-convertible:
|
1199
|
-
# bad_converter = proc {|field| BasicObject.new }
|
1200
|
-
# # Raises NoMethodError (undefined method `is_a?' for #<BasicObject:>)
|
1201
|
-
# CSV.generate_line(['a', 'b', 'c'], write_converters: bad_converter)#
|
1202
|
-
#
|
1203
1160
|
# ###### Option `write_nil_value`
|
1204
1161
|
#
|
1205
1162
|
# Specifies the object that is to be substituted for each `nil`-valued field.
|
@@ -1261,12 +1218,10 @@
|
|
1261
1218
|
# * See [Field Converters](#class-CSV-label-Field+Converters).
|
1262
1219
|
# * See [Header Converters](#class-CSV-label-Header+Converters).
|
1263
1220
|
#
|
1264
|
-
#
|
1265
1221
|
# Also by default, each value to be written during generation is written
|
1266
1222
|
# 'as-is'. You can use a *write* *converter* to modify values before writing.
|
1267
1223
|
# * See [Write Converters](#class-CSV-label-Write+Converters).
|
1268
1224
|
#
|
1269
|
-
#
|
1270
1225
|
# #### Specifying Converters
|
1271
1226
|
#
|
1272
1227
|
# You can specify converters for parsing or generating in the `options` argument
|
@@ -1275,14 +1230,12 @@
|
|
1275
1230
|
# * Option `header_converters` for converting parsed header values.
|
1276
1231
|
# * Option `write_converters` for converting values to be written (generated).
|
1277
1232
|
#
|
1278
|
-
#
|
1279
1233
|
# There are three forms for specifying converters:
|
1280
1234
|
# * A converter proc: executable code to be used for conversion.
|
1281
1235
|
# * A converter name: the name of a stored converter.
|
1282
1236
|
# * A converter list: an array of converter procs, converter names, and
|
1283
1237
|
# converter lists.
|
1284
1238
|
#
|
1285
|
-
#
|
1286
1239
|
# ##### Converter Procs
|
1287
1240
|
#
|
1288
1241
|
# This converter proc, `strip_converter`, accepts a value `field` and returns
|
@@ -1293,7 +1246,6 @@
|
|
1293
1246
|
# string_converter` specifies that:
|
1294
1247
|
# * Proc `string_converter` is to be called for each parsed field.
|
1295
1248
|
# * The converter's return value is to replace the `field` value.
|
1296
|
-
#
|
1297
1249
|
# Example:
|
1298
1250
|
# string = " foo , 0 \n bar , 1 \n baz , 2 \n"
|
1299
1251
|
# array = CSV.parse(string, converters: strip_converter)
|
@@ -1323,7 +1275,6 @@
|
|
1323
1275
|
# * The 1-based line index.
|
1324
1276
|
# * The field header, if any.
|
1325
1277
|
#
|
1326
|
-
#
|
1327
1278
|
# ##### Stored Converters
|
1328
1279
|
#
|
1329
1280
|
# A converter may be given a name and stored in a structure where the parsing
|
@@ -1335,7 +1286,6 @@
|
|
1335
1286
|
# * `:float`: converts each String-embedded float into a true Float.
|
1336
1287
|
# * `:date`: converts each String-embedded date into a true Date.
|
1337
1288
|
# * `:date_time`: converts each String-embedded date-time into a true DateTime
|
1338
|
-
#
|
1339
1289
|
# . This example creates a converter proc, then stores it:
|
1340
1290
|
# strip_converter = proc {|field| field.strip }
|
1341
1291
|
# CSV::Converters[:strip] = strip_converter
|
@@ -1350,7 +1300,6 @@
|
|
1350
1300
|
# * `:downcase`: Downcases each header.
|
1351
1301
|
# * `:symbol`: Converts each header to a Symbol.
|
1352
1302
|
#
|
1353
|
-
#
|
1354
1303
|
# There is no such storage structure for write headers.
|
1355
1304
|
#
|
1356
1305
|
# In order for the parsing methods to access stored converters in
|
@@ -1368,7 +1317,6 @@
|
|
1368
1317
|
# * Names of stored converters.
|
1369
1318
|
# * Nested converter lists.
|
1370
1319
|
#
|
1371
|
-
#
|
1372
1320
|
# Examples:
|
1373
1321
|
# numeric_converters = [:integer, :float]
|
1374
1322
|
# date_converters = [:date, :date_time]
|
@@ -1417,7 +1365,6 @@
|
|
1417
1365
|
# csv.converters # => [:integer]
|
1418
1366
|
# csv.read # => [["foo", 0], ["bar", 1], ["baz", 2]]
|
1419
1367
|
#
|
1420
|
-
#
|
1421
1368
|
# Installing a field converter does not affect already-read rows:
|
1422
1369
|
# csv = CSV.new(string)
|
1423
1370
|
# csv.shift # => ["foo", "0"]
|
@@ -1437,8 +1384,6 @@
|
|
1437
1384
|
# * A Proc field converter.
|
1438
1385
|
# * An Array of field converter names.
|
1439
1386
|
#
|
1440
|
-
#
|
1441
|
-
#
|
1442
1387
|
# Display:
|
1443
1388
|
# CSV::Converters.each_pair do |name, value|
|
1444
1389
|
# if value.kind_of?(Proc)
|
@@ -1552,7 +1497,6 @@
|
|
1552
1497
|
# tbl = CSV.parse(string, headers: true)
|
1553
1498
|
# tbl.headers # => ["Name", "Count"]
|
1554
1499
|
#
|
1555
|
-
#
|
1556
1500
|
# ##### Built-In Header Converters
|
1557
1501
|
#
|
1558
1502
|
# The built-in header converters are in Hash CSV::HeaderConverters. The keys
|
@@ -1577,7 +1521,6 @@
|
|
1577
1521
|
# * Removes non-word characters.
|
1578
1522
|
# * Makes the string into a Symbol.
|
1579
1523
|
#
|
1580
|
-
#
|
1581
1524
|
# ##### Custom Header Converters
|
1582
1525
|
#
|
1583
1526
|
# You can define a custom header converter:
|
@@ -1737,8 +1680,8 @@ class CSV < Object
|
|
1737
1680
|
#
|
1738
1681
|
# Arguments:
|
1739
1682
|
# * Argument `path_or_io` must be a file path or an IO stream.
|
1740
|
-
# * Argument `mode`, if given, must be a File mode See [
|
1741
|
-
#
|
1683
|
+
# * Argument `mode`, if given, must be a File mode. See [Access
|
1684
|
+
# Modes](rdoc-ref:File@Access+Modes).
|
1742
1685
|
# * Arguments `**options` must be keyword options. See [Options for
|
1743
1686
|
# Parsing](#class-CSV-label-Options+for+Parsing).
|
1744
1687
|
# * This method optionally accepts an additional `:encoding` option that you
|
@@ -1752,7 +1695,10 @@ class CSV < Object
|
|
1752
1695
|
# would read `UTF-32BE` data from the file but transcode it to `UTF-8`
|
1753
1696
|
# before parsing.
|
1754
1697
|
#
|
1755
|
-
def self.foreach:
|
1698
|
+
def self.foreach: (String | IO path, ?String mode, headers: true | :first_row | Array[untyped] | String, **untyped options) { (::CSV::Row arg0) -> void } -> void
|
1699
|
+
| (String | IO path, ?String mode, headers: true | :first_row | Array[untyped] | String, **untyped options) -> Enumerator[::CSV::Row, void]
|
1700
|
+
| (String | IO path, ?String mode, **untyped options) { (::Array[String?] arg0) -> void } -> void
|
1701
|
+
| (String | IO path, ?String mode, **untyped options) -> Enumerator[::Array[String?], void]
|
1756
1702
|
|
1757
1703
|
# <!--
|
1758
1704
|
# rdoc-file=lib/csv.rb
|
@@ -1771,15 +1717,12 @@ class CSV < Object
|
|
1771
1717
|
# * Positioned at the beginning. To position at the end, for appending,
|
1772
1718
|
# use method CSV.generate. For any other positioning, pass a preset
|
1773
1719
|
# StringIO object instead.
|
1774
|
-
#
|
1775
1720
|
# * Argument `options`: See:
|
1776
1721
|
# * [Options for Parsing](#class-CSV-label-Options+for+Parsing)
|
1777
1722
|
# * [Options for Generating](#class-CSV-label-Options+for+Generating)
|
1778
|
-
#
|
1779
1723
|
# For performance reasons, the options cannot be overridden in a CSV object,
|
1780
1724
|
# so those specified here will endure.
|
1781
1725
|
#
|
1782
|
-
#
|
1783
1726
|
# In addition to the CSV instance methods, several IO methods are delegated. See
|
1784
1727
|
# [Delegated Methods](#class-CSV-label-Delegated+Methods).
|
1785
1728
|
#
|
@@ -1820,11 +1763,9 @@ class CSV < Object
|
|
1820
1763
|
# * Positioned at the beginning. To position at the end, for appending,
|
1821
1764
|
# use method CSV.generate. For any other positioning, pass a preset
|
1822
1765
|
# StringIO object instead.
|
1823
|
-
#
|
1824
1766
|
# * Argument `options`: see [Options for
|
1825
1767
|
# Parsing](#class-CSV-label-Options+for+Parsing)
|
1826
1768
|
#
|
1827
|
-
#
|
1828
1769
|
# ###### Without Option `headers`
|
1829
1770
|
#
|
1830
1771
|
# Without {option `headers`[}](#class-CSV-label-Option+headers) case.
|
@@ -1943,11 +1884,9 @@ class CSV < Object
|
|
1943
1884
|
# * Positioned at the beginning. To position at the end, for appending,
|
1944
1885
|
# use method CSV.generate. For any other positioning, pass a preset
|
1945
1886
|
# StringIO object instead.
|
1946
|
-
#
|
1947
1887
|
# * Argument `options`: see [Options for
|
1948
1888
|
# Parsing](#class-CSV-label-Options+for+Parsing)
|
1949
1889
|
#
|
1950
|
-
#
|
1951
1890
|
# ###### Without Option `headers`
|
1952
1891
|
#
|
1953
1892
|
# Without option `headers`, returns the first row as a new Array.
|
@@ -2002,7 +1941,6 @@ class CSV < Object
|
|
2002
1941
|
# * A CSV::Table object, if headers are in use.
|
2003
1942
|
# * An Array of Arrays, otherwise.
|
2004
1943
|
#
|
2005
|
-
#
|
2006
1944
|
# The data source must be opened for reading.
|
2007
1945
|
#
|
2008
1946
|
# Without headers:
|
@@ -2058,7 +1996,8 @@ class CSV < Object
|
|
2058
1996
|
# File.write(path, string)
|
2059
1997
|
# CSV.read(path, headers: true) # => #<CSV::Table mode:col_or_row row_count:4>
|
2060
1998
|
#
|
2061
|
-
def self.read: (String path,
|
1999
|
+
def self.read: (String | IO path, headers: true | :first_row | Array[untyped] | String, **untyped options) -> ::CSV::Table[CSV::Row]
|
2000
|
+
| (String | IO path, ?::Hash[Symbol, untyped] options) -> ::Array[::Array[String?]]
|
2062
2001
|
|
2063
2002
|
# <!--
|
2064
2003
|
# rdoc-file=lib/csv.rb
|
@@ -2069,7 +2008,6 @@ class CSV < Object
|
|
2069
2008
|
# * Argument `row` must be an Array object or a CSV::Row object.
|
2070
2009
|
# * The output stream must be open for writing.
|
2071
2010
|
#
|
2072
|
-
#
|
2073
2011
|
# ---
|
2074
2012
|
#
|
2075
2013
|
# Append Arrays:
|
@@ -2125,7 +2063,6 @@ class CSV < Object
|
|
2125
2063
|
# * Arguments `options`, if given, should be generating options. See [Options
|
2126
2064
|
# for Generating](#class-CSV-label-Options+for+Generating).
|
2127
2065
|
#
|
2128
|
-
#
|
2129
2066
|
# ---
|
2130
2067
|
#
|
2131
2068
|
# Creates a new CSV object via `CSV.new(csv_string, **options)`; calls the block
|
@@ -2222,6 +2159,16 @@ class CSV < Object
|
|
2222
2159
|
#
|
2223
2160
|
def each: () -> Enumerator[untyped, Integer]
|
2224
2161
|
| () { (untyped) -> void } -> Integer
|
2162
|
+
|
2163
|
+
# <!--
|
2164
|
+
# rdoc-file=lib/csv.rb
|
2165
|
+
# - csv.headers -> object
|
2166
|
+
# -->
|
2167
|
+
# Returns the value that determines whether headers are used; used for parsing;
|
2168
|
+
# see {Option `headers`[}](#class-CSV-label-Option+headers):
|
2169
|
+
# CSV.new('').headers # => nil
|
2170
|
+
#
|
2171
|
+
def headers: () -> (Array[String] | true | nil)
|
2225
2172
|
end
|
2226
2173
|
|
2227
2174
|
# <!-- rdoc-file=lib/csv.rb -->
|
@@ -2243,7 +2190,6 @@ CSV::VERSION: String
|
|
2243
2190
|
# * Fields: each is an object, not necessarily a String.
|
2244
2191
|
# * Headers: each serves a key, and also need not be a String.
|
2245
2192
|
#
|
2246
|
-
#
|
2247
2193
|
# ### Instance Methods
|
2248
2194
|
#
|
2249
2195
|
# CSV::Row has three groups of instance methods:
|
@@ -2254,8 +2200,6 @@ CSV::VERSION: String
|
|
2254
2200
|
# * Array#length
|
2255
2201
|
# * Array#size
|
2256
2202
|
#
|
2257
|
-
#
|
2258
|
-
#
|
2259
2203
|
# ## Creating a CSV::Row Instance
|
2260
2204
|
#
|
2261
2205
|
# Commonly, a new CSV::Row instance is created by parsing CSV source that has
|
@@ -2314,6 +2258,33 @@ class CSV::Row < Object
|
|
2314
2258
|
include Enumerable[Array[String]]
|
2315
2259
|
extend Forwardable
|
2316
2260
|
|
2261
|
+
# <!--
|
2262
|
+
# rdoc-file=lib/csv/row.rb
|
2263
|
+
# - CSV::Row.new(headers, fields, header_row = false) -> csv_row
|
2264
|
+
# -->
|
2265
|
+
# Returns the new CSV::Row instance constructed from arguments `headers` and
|
2266
|
+
# `fields`; both should be Arrays; note that the fields need not be Strings:
|
2267
|
+
# row = CSV::Row.new(['Name', 'Value'], ['foo', 0])
|
2268
|
+
# row # => #<CSV::Row "Name":"foo" "Value":0>
|
2269
|
+
#
|
2270
|
+
# If the Array lengths are different, the shorter is `nil`-filled:
|
2271
|
+
# row = CSV::Row.new(['Name', 'Value', 'Date', 'Size'], ['foo', 0])
|
2272
|
+
# row # => #<CSV::Row "Name":"foo" "Value":0 "Date":nil "Size":nil>
|
2273
|
+
#
|
2274
|
+
# Each CSV::Row object is either a *field row* or a *header row*; by default, a
|
2275
|
+
# new row is a field row; for the row created above:
|
2276
|
+
# row.field_row? # => true
|
2277
|
+
# row.header_row? # => false
|
2278
|
+
#
|
2279
|
+
# If the optional argument `header_row` is given as `true`, the created row is a
|
2280
|
+
# header row:
|
2281
|
+
# row = CSV::Row.new(['Name', 'Value'], ['foo', 0], header_row = true)
|
2282
|
+
# row # => #<CSV::Row "Name":"foo" "Value":0>
|
2283
|
+
# row.field_row? # => false
|
2284
|
+
# row.header_row? # => true
|
2285
|
+
#
|
2286
|
+
def initialize: (Array[untyped] headers, Array[untyped] fields, ?header_row: bool) -> void
|
2287
|
+
|
2317
2288
|
# <!--
|
2318
2289
|
# rdoc-file=lib/csv/row.rb
|
2319
2290
|
# - row << [header, value] -> self
|
@@ -2488,7 +2459,7 @@ class CSV::Row < Object
|
|
2488
2459
|
# `index_or_header` and `specifiers`.
|
2489
2460
|
#
|
2490
2461
|
# The nested objects may be instances of various classes. See [Dig
|
2491
|
-
# Methods](
|
2462
|
+
# Methods](rdoc-ref:dig_methods.rdoc).
|
2492
2463
|
#
|
2493
2464
|
# Examples:
|
2494
2465
|
# source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
@@ -2647,7 +2618,6 @@ class CSV::Row < Object
|
|
2647
2618
|
# * Header.
|
2648
2619
|
# * Range of headers.
|
2649
2620
|
#
|
2650
|
-
#
|
2651
2621
|
# For `specifier` in one of the first four cases above, returns the result of
|
2652
2622
|
# `self.field(specifier)`; see #field.
|
2653
2623
|
#
|
@@ -2754,7 +2724,6 @@ class CSV::Row < Object
|
|
2754
2724
|
# Returns an ASCII-compatible String showing:
|
2755
2725
|
# * Class CSV::Row.
|
2756
2726
|
# * Header-value pairs.
|
2757
|
-
#
|
2758
2727
|
# Example:
|
2759
2728
|
# source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
2760
2729
|
# table = CSV.parse(source, headers: true)
|
@@ -2864,7 +2833,6 @@ end
|
|
2864
2833
|
# * Rows: each is a Table::Row object.
|
2865
2834
|
# * Headers: names for the columns.
|
2866
2835
|
#
|
2867
|
-
#
|
2868
2836
|
# ### Instance Methods
|
2869
2837
|
#
|
2870
2838
|
# CSV::Table has three groups of instance methods:
|
@@ -2875,8 +2843,6 @@ end
|
|
2875
2843
|
# * Array#length
|
2876
2844
|
# * Array#size
|
2877
2845
|
#
|
2878
|
-
#
|
2879
|
-
#
|
2880
2846
|
# ## Creating a CSV::Table Instance
|
2881
2847
|
#
|
2882
2848
|
# Commonly, a new CSV::Table instance is created by parsing CSV source using
|
@@ -2910,7 +2876,6 @@ end
|
|
2910
2876
|
# * Column mode.
|
2911
2877
|
# * Mixed mode (the default for a new table).
|
2912
2878
|
#
|
2913
|
-
#
|
2914
2879
|
# The access mode for aCSV::Table instance affects the behavior of some of its
|
2915
2880
|
# instance methods:
|
2916
2881
|
# * #[]
|
@@ -2920,7 +2885,6 @@ end
|
|
2920
2885
|
# * #each
|
2921
2886
|
# * #values_at
|
2922
2887
|
#
|
2923
|
-
#
|
2924
2888
|
# ### Row Mode
|
2925
2889
|
#
|
2926
2890
|
# Set a table to row mode with method #by_row!:
|
@@ -2973,7 +2937,6 @@ end
|
|
2973
2937
|
# * A Range index refers to multiple rows.
|
2974
2938
|
# * A String index refers to a column.
|
2975
2939
|
#
|
2976
|
-
#
|
2977
2940
|
# Set a table to mixed mode with method #by_col_or_row!:
|
2978
2941
|
# source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
2979
2942
|
# table = CSV.parse(source, headers: true)
|
@@ -3002,7 +2965,7 @@ end
|
|
3002
2965
|
# table['Name'] # => ["Foo", "Bar", "Baz"]
|
3003
2966
|
#
|
3004
2967
|
class CSV::Table[out Elem] < Object
|
3005
|
-
include Enumerable[
|
2968
|
+
include Enumerable[Elem]
|
3006
2969
|
extend Forwardable
|
3007
2970
|
|
3008
2971
|
# <!--
|
@@ -3014,7 +2977,6 @@ class CSV::Table[out Elem] < Object
|
|
3014
2977
|
# * Argument `array_of_rows` must be an Array of CSV::Row objects.
|
3015
2978
|
# * Argument `headers`, if given, may be an Array of Strings.
|
3016
2979
|
#
|
3017
|
-
#
|
3018
2980
|
# ---
|
3019
2981
|
#
|
3020
2982
|
# Create an empty CSV::Table object:
|
@@ -3124,7 +3086,6 @@ class CSV::Table[out Elem] < Object
|
|
3124
3086
|
# * Access mode: `:row` or `:col_or_row`.
|
3125
3087
|
# * Return value: *nth* row of the table, if that row exists; otherwise `nil`.
|
3126
3088
|
#
|
3127
|
-
#
|
3128
3089
|
# Returns the *nth* row of the table if that row exists:
|
3129
3090
|
# source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
3130
3091
|
# table = CSV.parse(source, headers: true)
|
@@ -3155,7 +3116,6 @@ class CSV::Table[out Elem] < Object
|
|
3155
3116
|
# * Return value: *nth* column of the table, if that column exists; otherwise
|
3156
3117
|
# an Array of `nil` fields of length `self.size`.
|
3157
3118
|
#
|
3158
|
-
#
|
3159
3119
|
# Returns the *nth* column of the table if that column exists:
|
3160
3120
|
# source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
3161
3121
|
# table = CSV.parse(source, headers: true)
|
@@ -3179,7 +3139,6 @@ class CSV::Table[out Elem] < Object
|
|
3179
3139
|
# * Return value: rows from the table, beginning at row `range.start`, if
|
3180
3140
|
# those rows exists.
|
3181
3141
|
#
|
3182
|
-
#
|
3183
3142
|
# Returns rows from the table, beginning at row `range.first`, if those rows
|
3184
3143
|
# exist:
|
3185
3144
|
# source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
@@ -3219,7 +3178,6 @@ class CSV::Table[out Elem] < Object
|
|
3219
3178
|
# * Return value: column data from the table, beginning at column
|
3220
3179
|
# `range.start`, if those columns exist.
|
3221
3180
|
#
|
3222
|
-
#
|
3223
3181
|
# Returns column values from the table, if the column exists; the values are
|
3224
3182
|
# arranged by row:
|
3225
3183
|
# source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
@@ -3250,7 +3208,6 @@ class CSV::Table[out Elem] < Object
|
|
3250
3208
|
# * Access mode: `:col` or `:col_or_row`
|
3251
3209
|
# * Return value: column data from the table, if that `header` exists.
|
3252
3210
|
#
|
3253
|
-
#
|
3254
3211
|
# Returns column values from the table, if the column exists:
|
3255
3212
|
# source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
3256
3213
|
# table = CSV.parse(source, headers: true)
|
@@ -3288,7 +3245,6 @@ class CSV::Table[out Elem] < Object
|
|
3288
3245
|
# * Access mode: `:row` or `:col_or_row`.
|
3289
3246
|
# * Return value: `row`.
|
3290
3247
|
#
|
3291
|
-
#
|
3292
3248
|
# If the row exists, it is replaced:
|
3293
3249
|
# source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
3294
3250
|
# table = CSV.parse(source, headers: true)
|
@@ -3330,7 +3286,6 @@ class CSV::Table[out Elem] < Object
|
|
3330
3286
|
# * Access mode: `:col`.
|
3331
3287
|
# * Return value: `array_of_fields`.
|
3332
3288
|
#
|
3333
|
-
#
|
3334
3289
|
# If the column exists, it is replaced:
|
3335
3290
|
# source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
3336
3291
|
# table = CSV.parse(source, headers: true)
|
@@ -3369,7 +3324,6 @@ class CSV::Table[out Elem] < Object
|
|
3369
3324
|
# * Access mode: `:col` or `:col_or_row`.
|
3370
3325
|
# * Return value: `field_or_array_of_fields`.
|
3371
3326
|
#
|
3372
|
-
#
|
3373
3327
|
# If the column exists, it is replaced:
|
3374
3328
|
# source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
3375
3329
|
# table = CSV.parse(source, headers: true)
|
@@ -3633,8 +3587,8 @@ class CSV::Table[out Elem] < Object
|
|
3633
3587
|
# Returns a new Enumerator if no block is given:
|
3634
3588
|
# table.each # => #<Enumerator: #<CSV::Table mode:col row_count:4>:each>
|
3635
3589
|
#
|
3636
|
-
def each: () -> Enumerator[
|
3637
|
-
| () { (
|
3590
|
+
def each: () -> Enumerator[Elem, self]
|
3591
|
+
| () { (Elem) -> void } -> self
|
3638
3592
|
| () { (*untyped) -> void } -> self
|
3639
3593
|
|
3640
3594
|
def empty?: (*untyped args) { (*untyped) -> untyped } -> untyped
|
@@ -3673,7 +3627,6 @@ class CSV::Table[out Elem] < Object
|
|
3673
3627
|
# * Access mode: `:row`, `:col`, or `:col_or_row`.
|
3674
3628
|
# * Size: Row count, including the header row.
|
3675
3629
|
#
|
3676
|
-
#
|
3677
3630
|
# Example:
|
3678
3631
|
# source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
3679
3632
|
# table = CSV.parse(source, headers: true)
|
@@ -3803,3 +3756,21 @@ class CSV::Table[out Elem] < Object
|
|
3803
3756
|
#
|
3804
3757
|
def values_at: (*untyped indices_or_headers) -> untyped
|
3805
3758
|
end
|
3759
|
+
|
3760
|
+
%a{annotate:rdoc:skip}
|
3761
|
+
class Array[unchecked out Elem] < Object
|
3762
|
+
# Equivalent to CSV::generate_line(self, options)
|
3763
|
+
#
|
3764
|
+
# ["CSV", "data"].to_csv
|
3765
|
+
# #=> "CSV,data\n"
|
3766
|
+
def to_csv: (**untyped options) -> String
|
3767
|
+
end
|
3768
|
+
|
3769
|
+
%a{annotate:rdoc:skip}
|
3770
|
+
class String
|
3771
|
+
# Equivalent to CSV::parse_line(self, options)
|
3772
|
+
#
|
3773
|
+
# "CSV,data".parse_csv
|
3774
|
+
# #=> ["CSV", "data"]
|
3775
|
+
def parse_csv: (**untyped options) -> ::Array[String?]?
|
3776
|
+
end
|
data/stdlib/csv/0/manifest.yaml
CHANGED