rbs 3.6.1 → 3.9.5
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 +4 -4
- data/.github/workflows/comments.yml +2 -2
- data/.github/workflows/dependabot.yml +1 -1
- data/.github/workflows/ruby.yml +34 -10
- data/.github/workflows/windows.yml +20 -3
- data/.gitignore +1 -0
- data/.rubocop.yml +26 -1
- data/CHANGELOG.md +241 -0
- data/Rakefile +54 -4
- data/config.yml +317 -0
- data/core/array.rbs +1756 -1591
- data/core/basic_object.rbs +38 -35
- data/core/comparable.rbs +1 -1
- data/core/complex.rbs +166 -94
- data/core/data.rbs +2 -2
- data/core/dir.rbs +2 -18
- data/core/encoding.rbs +12 -32
- data/core/enumerable.rbs +270 -266
- data/core/enumerator.rbs +14 -4
- data/core/env.rbs +1 -1
- data/core/errno.rbs +33 -16
- data/core/errors.rbs +6 -2
- data/core/exception.rbs +342 -167
- data/core/fiber.rbs +3 -2
- data/core/file.rbs +26 -75
- data/core/float.rbs +125 -72
- data/core/gc.rbs +158 -42
- data/core/hash.rbs +122 -143
- data/core/integer.rbs +79 -50
- data/core/io/buffer.rbs +49 -43
- data/core/io.rbs +108 -151
- data/core/kernel.rbs +341 -209
- data/core/match_data.rbs +76 -2
- data/core/math.rbs +0 -36
- data/core/method.rbs +2 -2
- data/core/module.rbs +32 -27
- data/core/nil_class.rbs +2 -2
- data/core/numeric.rbs +101 -104
- data/core/object.rbs +1 -5
- data/core/object_space/weak_key_map.rbs +3 -4
- data/core/object_space.rbs +3 -3
- data/core/proc.rbs +82 -14
- data/core/process.rbs +110 -58
- data/core/ractor.rbs +57 -4
- data/core/range.rbs +114 -87
- data/core/rational.rbs +0 -2
- data/core/rbs/unnamed/argf.rbs +237 -36
- data/core/rbs/unnamed/env_class.rbs +35 -53
- data/core/rbs/unnamed/random.rbs +1 -2
- data/core/regexp.rbs +10 -56
- data/core/ruby_vm.rbs +88 -9
- data/core/rubygems/config_file.rbs +3 -0
- data/core/rubygems/errors.rbs +3 -6
- data/core/rubygems/platform.rbs +0 -9
- data/core/rubygems/rubygems.rbs +3 -6
- data/core/rubygems/version.rbs +8 -8
- data/core/set.rbs +4 -16
- data/core/string.rbs +271 -264
- data/core/struct.rbs +6 -18
- data/core/symbol.rbs +14 -21
- data/core/thread.rbs +32 -35
- data/core/time.rbs +131 -50
- data/core/trace_point.rbs +124 -113
- data/core/true_class.rbs +0 -1
- data/core/unbound_method.rbs +1 -1
- data/core/warning.rbs +9 -2
- data/docs/architecture.md +1 -1
- data/docs/syntax.md +17 -10
- data/ext/rbs_extension/extconf.rb +11 -0
- data/ext/rbs_extension/location.c +61 -29
- data/ext/rbs_extension/location.h +4 -3
- data/ext/rbs_extension/main.c +23 -1
- data/ext/rbs_extension/parser.c +506 -517
- data/ext/rbs_extension/parserstate.c +109 -30
- data/ext/rbs_extension/parserstate.h +6 -4
- data/ext/rbs_extension/rbs_extension.h +1 -10
- data/{ext/rbs_extension → include/rbs}/constants.h +21 -19
- 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/annotate/annotations.rb +3 -3
- data/lib/rbs/annotate/rdoc_source.rb +2 -2
- data/lib/rbs/ast/declarations.rb +9 -4
- data/lib/rbs/ast/directives.rb +10 -0
- data/lib/rbs/ast/members.rb +2 -0
- data/lib/rbs/ast/type_param.rb +2 -12
- data/lib/rbs/cli/diff.rb +3 -3
- data/lib/rbs/cli/validate.rb +2 -1
- data/lib/rbs/cli.rb +16 -16
- data/lib/rbs/collection/config/lockfile_generator.rb +58 -8
- data/lib/rbs/collection/config.rb +5 -3
- data/lib/rbs/collection/sources/rubygems.rb +1 -1
- data/lib/rbs/collection.rb +1 -0
- data/lib/rbs/definition.rb +51 -34
- data/lib/rbs/definition_builder/ancestor_builder.rb +5 -3
- data/lib/rbs/definition_builder.rb +83 -24
- data/lib/rbs/environment.rb +33 -18
- data/lib/rbs/environment_loader.rb +6 -1
- data/lib/rbs/errors.rb +24 -0
- data/lib/rbs/locator.rb +2 -0
- data/lib/rbs/method_type.rb +2 -0
- data/lib/rbs/namespace.rb +1 -0
- data/lib/rbs/parser_aux.rb +40 -3
- data/lib/rbs/prototype/rb.rb +20 -12
- data/lib/rbs/prototype/rbi.rb +11 -6
- data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
- data/lib/rbs/prototype/runtime.rb +7 -5
- data/lib/rbs/subtractor.rb +3 -3
- data/lib/rbs/test/hook.rb +47 -42
- data/lib/rbs/test/type_check.rb +7 -5
- data/lib/rbs/type_name.rb +14 -9
- data/lib/rbs/types.rb +63 -14
- data/lib/rbs/unit_test/spy.rb +4 -2
- data/lib/rbs/unit_test/type_assertions.rb +19 -13
- data/lib/rbs/unit_test/with_aliases.rb +3 -1
- data/lib/rbs/validator.rb +7 -1
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/writer.rb +10 -5
- data/lib/rbs.rb +1 -0
- data/lib/rdoc_plugin/parser.rb +2 -2
- data/rbs.gemspec +6 -2
- data/sig/ancestor_graph.rbs +5 -5
- data/sig/annotate/rdoc_source.rbs +2 -0
- data/sig/cli.rbs +2 -0
- data/sig/collection/config/lockfile_generator.rbs +9 -1
- data/sig/declarations.rbs +10 -3
- data/sig/definition.rbs +80 -12
- data/sig/definition_builder.rbs +18 -4
- data/sig/directives.rbs +17 -1
- data/sig/environment.rbs +3 -1
- data/sig/errors.rbs +19 -0
- data/sig/namespace.rbs +2 -3
- data/sig/parser.rbs +5 -1
- data/sig/prototype/rb.rbs +1 -1
- data/sig/resolver/constant_resolver.rbs +2 -2
- data/sig/resolver/context.rbs +1 -1
- data/sig/subtractor.rbs +1 -1
- data/sig/test/type_check.rbs +2 -2
- data/sig/type_alias_dependency.rbs +2 -2
- data/sig/type_alias_regularity.rbs +6 -6
- data/sig/type_param.rbs +4 -4
- data/sig/typename.rbs +8 -5
- data/sig/types.rbs +1 -1
- data/sig/unit_test/spy.rbs +2 -0
- data/sig/unit_test/type_assertions.rbs +2 -0
- data/sig/use_map.rbs +1 -1
- data/sig/validator.rbs +6 -2
- data/sig/vendorer.rbs +1 -1
- data/sig/writer.rbs +1 -1
- data/{ext/rbs_extension → src}/constants.c +35 -36
- data/src/ruby_objs.c +799 -0
- data/src/util/rbs_constant_pool.c +342 -0
- data/stdlib/base64/0/base64.rbs +0 -9
- data/stdlib/benchmark/0/benchmark.rbs +11 -2
- data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
- data/stdlib/cgi/0/core.rbs +60 -3
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/coverage/0/coverage.rbs +0 -3
- data/stdlib/csv/0/csv.rbs +18 -58
- data/stdlib/csv/0/manifest.yaml +1 -0
- data/stdlib/date/0/date.rbs +27 -42
- data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -6
- data/stdlib/digest/0/digest.rbs +25 -2
- data/stdlib/erb/0/erb.rbs +0 -1
- data/stdlib/etc/0/etc.rbs +51 -34
- data/stdlib/fileutils/0/fileutils.rbs +3 -44
- data/stdlib/io-console/0/io-console.rbs +69 -15
- data/stdlib/ipaddr/0/ipaddr.rbs +16 -4
- data/stdlib/json/0/json.rbs +107 -120
- data/stdlib/logger/0/log_device.rbs +1 -1
- data/stdlib/logger/0/logger.rbs +3 -18
- 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 +1 -1
- 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 +13 -4
- data/stdlib/net-http/0/net-http.rbs +42 -109
- data/stdlib/nkf/0/nkf.rbs +30 -0
- data/stdlib/objspace/0/objspace.rbs +1 -2
- data/stdlib/observable/0/observable.rbs +1 -1
- data/stdlib/open-uri/0/manifest.yaml +1 -0
- data/stdlib/open-uri/0/open-uri.rbs +52 -0
- data/stdlib/open3/0/open3.rbs +0 -8
- data/stdlib/openssl/0/manifest.yaml +1 -0
- data/stdlib/openssl/0/openssl.rbs +235 -143
- data/stdlib/optparse/0/optparse.rbs +58 -18
- data/stdlib/pathname/0/pathname.rbs +2 -8
- data/stdlib/pp/0/pp.rbs +3 -1
- data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
- data/stdlib/pstore/0/pstore.rbs +0 -6
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/psych/0/psych.rbs +15 -4
- data/stdlib/pty/0/pty.rbs +46 -4
- data/stdlib/rdoc/0/code_object.rbs +0 -4
- data/stdlib/rdoc/0/markup.rbs +10 -12
- data/stdlib/rdoc/0/rdoc.rbs +13 -8
- data/stdlib/resolv/0/resolv.rbs +21 -12
- data/stdlib/ripper/0/ripper.rbs +0 -2
- data/stdlib/securerandom/0/securerandom.rbs +7 -2
- data/stdlib/shellwords/0/shellwords.rbs +11 -12
- data/stdlib/singleton/0/singleton.rbs +0 -1
- data/stdlib/socket/0/addrinfo.rbs +1 -2
- data/stdlib/socket/0/basic_socket.rbs +0 -5
- data/stdlib/socket/0/socket.rbs +32 -27
- data/stdlib/socket/0/tcp_server.rbs +0 -3
- data/stdlib/socket/0/tcp_socket.rbs +36 -3
- data/stdlib/socket/0/udp_socket.rbs +0 -1
- data/stdlib/socket/0/unix_server.rbs +0 -3
- data/stdlib/socket/0/unix_socket.rbs +4 -2
- data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +1 -1
- data/stdlib/strscan/0/string_scanner.rbs +1265 -422
- data/stdlib/tempfile/0/tempfile.rbs +135 -28
- data/stdlib/time/0/time.rbs +48 -35
- data/stdlib/timeout/0/timeout.rbs +11 -8
- data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
- data/stdlib/tsort/0/tsort.rbs +0 -4
- data/stdlib/uri/0/common.rbs +28 -30
- data/stdlib/uri/0/ftp.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +22 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
- data/stdlib/zlib/0/buf_error.rbs +1 -70
- data/stdlib/zlib/0/data_error.rbs +1 -70
- data/stdlib/zlib/0/deflate.rbs +8 -72
- data/stdlib/zlib/0/error.rbs +1 -70
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
- data/stdlib/zlib/0/gzip_file.rbs +1 -71
- data/stdlib/zlib/0/gzip_reader.rbs +3 -74
- data/stdlib/zlib/0/gzip_writer.rbs +1 -70
- data/stdlib/zlib/0/inflate.rbs +4 -71
- data/stdlib/zlib/0/mem_error.rbs +1 -70
- data/stdlib/zlib/0/need_dict.rbs +1 -70
- data/stdlib/zlib/0/stream_end.rbs +1 -70
- data/stdlib/zlib/0/stream_error.rbs +1 -70
- data/stdlib/zlib/0/version_error.rbs +1 -70
- data/stdlib/zlib/0/zlib.rbs +0 -2
- data/stdlib/zlib/0/zstream.rbs +4 -72
- metadata +17 -13
- data/ext/rbs_extension/ruby_objs.c +0 -602
- data/ext/rbs_extension/ruby_objs.h +0 -51
- data/stdlib/minitest/0/manifest.yaml +0 -2
data/core/integer.rbs
CHANGED
@@ -5,12 +5,10 @@
|
|
5
5
|
#
|
6
6
|
# * An [integer literal](rdoc-ref:syntax/literals.rdoc@Integer+Literals).
|
7
7
|
#
|
8
|
-
#
|
9
8
|
# You can convert certain objects to Integers with:
|
10
9
|
#
|
11
10
|
# * Method #Integer.
|
12
11
|
#
|
13
|
-
#
|
14
12
|
# An attempt to add a singleton method to an instance of this class causes an
|
15
13
|
# exception to be raised.
|
16
14
|
#
|
@@ -18,8 +16,9 @@
|
|
18
16
|
#
|
19
17
|
# First, what's elsewhere. Class Integer:
|
20
18
|
#
|
21
|
-
# * Inherits from [class Numeric](rdoc-ref:Numeric@What-27s+Here)
|
22
|
-
#
|
19
|
+
# * Inherits from [class Numeric](rdoc-ref:Numeric@What-27s+Here) and [class
|
20
|
+
# Object](rdoc-ref:Object@What-27s+Here).
|
21
|
+
# * Includes [module Comparable](rdoc-ref:Comparable@What-27s+Here).
|
23
22
|
#
|
24
23
|
# Here, class Integer provides methods for:
|
25
24
|
#
|
@@ -28,14 +27,12 @@
|
|
28
27
|
# * [Converting](rdoc-ref:Integer@Converting)
|
29
28
|
# * [Other](rdoc-ref:Integer@Other)
|
30
29
|
#
|
31
|
-
#
|
32
30
|
# ### Querying
|
33
31
|
#
|
34
32
|
# * #allbits?: Returns whether all bits in `self` are set.
|
35
33
|
# * #anybits?: Returns whether any bits in `self` are set.
|
36
34
|
# * #nobits?: Returns whether no bits in `self` are set.
|
37
35
|
#
|
38
|
-
#
|
39
36
|
# ### Comparing
|
40
37
|
#
|
41
38
|
# * #<: Returns whether `self` is less than the given value.
|
@@ -48,7 +45,6 @@
|
|
48
45
|
# * #>: Returns whether `self` is greater than the given value.
|
49
46
|
# * #>=: Returns whether `self` is greater than or equal to the given value.
|
50
47
|
#
|
51
|
-
#
|
52
48
|
# ### Converting
|
53
49
|
#
|
54
50
|
# * ::sqrt: Returns the integer square root of the given value.
|
@@ -64,6 +60,7 @@
|
|
64
60
|
# * #>>: Returns the value of `self` after a rightward bit-shift.
|
65
61
|
# * #[]: Returns a slice of bits from `self`.
|
66
62
|
# * #^: Returns the bitwise EXCLUSIVE OR of `self` and the given value.
|
63
|
+
# * #|: Returns the bitwise OR of `self` and the given value.
|
67
64
|
# * #ceil: Returns the smallest number greater than or equal to `self`.
|
68
65
|
# * #chr: Returns a 1-character string containing the character represented by
|
69
66
|
# the value of `self`.
|
@@ -85,8 +82,6 @@
|
|
85
82
|
# * #to_s (aliased as #inspect): Returns a string containing the place-value
|
86
83
|
# representation of `self` in the given radix.
|
87
84
|
# * #truncate: Returns `self` truncated to the given precision.
|
88
|
-
# * #|: Returns the bitwise OR of `self` and the given value.
|
89
|
-
#
|
90
85
|
#
|
91
86
|
# ### Other
|
92
87
|
#
|
@@ -362,7 +357,6 @@ class Integer < Numeric
|
|
362
357
|
# * 1, if `self` is greater then `other`.
|
363
358
|
# * `nil`, if `self` and `other` are incomparable.
|
364
359
|
#
|
365
|
-
#
|
366
360
|
# Examples:
|
367
361
|
#
|
368
362
|
# 1 <=> 2 # => -1
|
@@ -620,22 +614,40 @@ class Integer < Numeric
|
|
620
614
|
# rdoc-file=numeric.c
|
621
615
|
# - ceil(ndigits = 0) -> integer
|
622
616
|
# -->
|
623
|
-
# Returns
|
624
|
-
#
|
625
|
-
#
|
626
|
-
#
|
627
|
-
#
|
628
|
-
#
|
629
|
-
#
|
630
|
-
#
|
631
|
-
#
|
632
|
-
#
|
633
|
-
#
|
634
|
-
#
|
635
|
-
#
|
636
|
-
#
|
637
|
-
#
|
638
|
-
#
|
617
|
+
# Returns an integer that is a "ceiling" value for `self`,
|
618
|
+
# as specified by the given `ndigits`,
|
619
|
+
# which must be an
|
620
|
+
# [integer-convertible
|
621
|
+
# object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
|
622
|
+
# * When `self` is zero, returns zero (regardless of the value of `ndigits`):
|
623
|
+
# 0.ceil(2) # => 0
|
624
|
+
# 0.ceil(-2) # => 0
|
625
|
+
#
|
626
|
+
# * When `self` is non-zero and `ndigits` is non-negative, returns `self`:
|
627
|
+
# 555.ceil # => 555
|
628
|
+
# 555.ceil(50) # => 555
|
629
|
+
#
|
630
|
+
# * When `self` is non-zero and `ndigits` is negative,
|
631
|
+
# returns a value based on a computed granularity:
|
632
|
+
# * The granularity is `10 ** ndigits.abs`.
|
633
|
+
# * The returned value is the smallest multiple of the granularity
|
634
|
+
# that is greater than or equal to `self`.
|
635
|
+
# Examples with positive `self`:
|
636
|
+
# ndigits|Granularity|1234.ceil(ndigits)
|
637
|
+
# -------|-----------|------------------
|
638
|
+
# -1| 10| 1240
|
639
|
+
# -2| 100| 1300
|
640
|
+
# -3| 1000| 2000
|
641
|
+
# -4| 10000| 10000
|
642
|
+
# -5| 100000| 100000
|
643
|
+
# Examples with negative `self`:
|
644
|
+
# ndigits|Granularity|-1234.ceil(ndigits)
|
645
|
+
# -------|-----------|-------------------
|
646
|
+
# -1| 10| -1230
|
647
|
+
# -2| 100| -1200
|
648
|
+
# -3| 1000| -1000
|
649
|
+
# -4| 10000| 0
|
650
|
+
# -5| 100000| 0
|
639
651
|
# Related: Integer#floor.
|
640
652
|
#
|
641
653
|
def ceil: () -> Integer
|
@@ -728,14 +740,14 @@ class Integer < Numeric
|
|
728
740
|
# Performs integer division; returns the integer result of dividing `self` by
|
729
741
|
# `numeric`:
|
730
742
|
#
|
731
|
-
#
|
732
|
-
#
|
733
|
-
#
|
734
|
-
#
|
735
|
-
#
|
736
|
-
#
|
743
|
+
# 4.div(3) # => 1
|
744
|
+
# 4.div(-3) # => -2
|
745
|
+
# -4.div(3) # => -2
|
746
|
+
# -4.div(-3) # => 1
|
747
|
+
# 4.div(3.0) # => 1
|
748
|
+
# 4.div(Rational(3, 1)) # => 1
|
737
749
|
#
|
738
|
-
#
|
750
|
+
# Raises an exception if `numeric` does not have method `div`.
|
739
751
|
#
|
740
752
|
def div: (Numeric) -> Integer
|
741
753
|
|
@@ -823,22 +835,40 @@ class Integer < Numeric
|
|
823
835
|
# rdoc-file=numeric.c
|
824
836
|
# - floor(ndigits = 0) -> integer
|
825
837
|
# -->
|
826
|
-
# Returns
|
827
|
-
# `ndigits
|
828
|
-
#
|
829
|
-
#
|
830
|
-
#
|
831
|
-
#
|
832
|
-
#
|
833
|
-
#
|
834
|
-
#
|
835
|
-
#
|
836
|
-
#
|
837
|
-
#
|
838
|
-
#
|
839
|
-
#
|
840
|
-
#
|
841
|
-
#
|
838
|
+
# Returns an integer that is a "floor" value for `self`,
|
839
|
+
# as specified by the given `ndigits`,
|
840
|
+
# which must be an
|
841
|
+
# [integer-convertible
|
842
|
+
# object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
|
843
|
+
# * When `self` is zero, returns zero (regardless of the value of `ndigits`):
|
844
|
+
# 0.floor(2) # => 0
|
845
|
+
# 0.floor(-2) # => 0
|
846
|
+
#
|
847
|
+
# * When `self` is non-zero and `ndigits` is non-negative, returns `self`:
|
848
|
+
# 555.floor # => 555
|
849
|
+
# 555.floor(50) # => 555
|
850
|
+
#
|
851
|
+
# * When `self` is non-zero and `ndigits` is negative,
|
852
|
+
# returns a value based on a computed granularity:
|
853
|
+
# * The granularity is `10 ** ndigits.abs`.
|
854
|
+
# * The returned value is the largest multiple of the granularity
|
855
|
+
# that is less than or equal to `self`.
|
856
|
+
# Examples with positive `self`:
|
857
|
+
# ndigits|Granularity|1234.floor(ndigits)
|
858
|
+
# -------|-----------|-------------------
|
859
|
+
# -1| 10| 1230
|
860
|
+
# -2| 100| 1200
|
861
|
+
# -3| 1000| 1000
|
862
|
+
# -4| 10000| 0
|
863
|
+
# -5| 100000| 0
|
864
|
+
# Examples with negative `self`:
|
865
|
+
# ndigits|Granularity|-1234.floor(ndigits)
|
866
|
+
# -------|-----------|--------------------
|
867
|
+
# -1| 10| -1240
|
868
|
+
# -2| 100| -1300
|
869
|
+
# -3| 1000| -2000
|
870
|
+
# -4| 10000| -10000
|
871
|
+
# -5| 100000| -100000
|
842
872
|
# Related: Integer#ceil.
|
843
873
|
#
|
844
874
|
def floor: (?int digits) -> Integer
|
@@ -1136,7 +1166,6 @@ class Integer < Numeric
|
|
1136
1166
|
# 15.round(-1, half: :even) # => 20
|
1137
1167
|
# (-25).round(-1, half: :even) # => -20
|
1138
1168
|
#
|
1139
|
-
#
|
1140
1169
|
# Raises and exception if the value for `half` is invalid.
|
1141
1170
|
#
|
1142
1171
|
# Related: Integer#truncate.
|
data/core/io/buffer.rbs
CHANGED
@@ -15,7 +15,6 @@ class IO
|
|
15
15
|
# * Create a string of a fixed size with ::string, then #read into it, or
|
16
16
|
# modify it using #set_value.
|
17
17
|
#
|
18
|
-
#
|
19
18
|
# Interaction with string and file memory is performed by efficient low-level C
|
20
19
|
# mechanisms like `memcpy`.
|
21
20
|
#
|
@@ -42,30 +41,28 @@ class IO
|
|
42
41
|
#
|
43
42
|
# Buffer from string:
|
44
43
|
#
|
45
|
-
# string = '
|
46
|
-
#
|
47
|
-
#
|
48
|
-
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
# # =>
|
52
|
-
# # #<IO::Buffer 0x00007f3f02be9b18+4 SLICE>
|
53
|
-
# # 0x00000000 64 61 74 61 buffer
|
44
|
+
# string = 'data'
|
45
|
+
# IO::Buffer.for(string) do |buffer|
|
46
|
+
# buffer
|
47
|
+
# # =>
|
48
|
+
# # #<IO::Buffer 0x00007f3f02be9b18+4 SLICE>
|
49
|
+
# # 0x00000000 64 61 74 61 data
|
54
50
|
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
60
|
-
#
|
61
|
-
#
|
62
|
-
#
|
63
|
-
#
|
64
|
-
#
|
51
|
+
# buffer.get_string(2) # read content starting from offset 2
|
52
|
+
# # => "ta"
|
53
|
+
# buffer.set_string('---', 1) # write content, starting from offset 1
|
54
|
+
# # => 3
|
55
|
+
# buffer
|
56
|
+
# # =>
|
57
|
+
# # #<IO::Buffer 0x00007f3f02be9b18+4 SLICE>
|
58
|
+
# # 0x00000000 64 2d 2d 2d d---
|
59
|
+
# string # original string changed, too
|
60
|
+
# # => "d---"
|
61
|
+
# end
|
65
62
|
#
|
66
63
|
# Buffer from file:
|
67
64
|
#
|
68
|
-
# File.write('test.txt', 'test
|
65
|
+
# File.write('test.txt', 'test data')
|
69
66
|
# # => 9
|
70
67
|
# buffer = IO::Buffer.map(File.open('test.txt'))
|
71
68
|
# # =>
|
@@ -82,7 +79,7 @@ class IO
|
|
82
79
|
# buffer.set_string('---', 1)
|
83
80
|
# # => 3 -- bytes written
|
84
81
|
# File.read('test.txt')
|
85
|
-
# # => "t---
|
82
|
+
# # => "t--- data"
|
86
83
|
#
|
87
84
|
# **The class is experimental and the interface is subject to change, this is
|
88
85
|
# especially true of file mappings which may be removed entirely in the
|
@@ -199,29 +196,29 @@ class IO
|
|
199
196
|
# -->
|
200
197
|
# Fill buffer with `value`, starting with `offset` and going for `length` bytes.
|
201
198
|
#
|
202
|
-
# buffer = IO::Buffer.for('test')
|
199
|
+
# buffer = IO::Buffer.for('test').dup
|
203
200
|
# # =>
|
204
|
-
# # <IO::Buffer 0x00007fca40087c38+4
|
201
|
+
# # <IO::Buffer 0x00007fca40087c38+4 INTERNAL>
|
205
202
|
# # 0x00000000 74 65 73 74 test
|
206
203
|
#
|
207
204
|
# buffer.clear
|
208
205
|
# # =>
|
209
|
-
# # <IO::Buffer 0x00007fca40087c38+4
|
206
|
+
# # <IO::Buffer 0x00007fca40087c38+4 INTERNAL>
|
210
207
|
# # 0x00000000 00 00 00 00 ....
|
211
208
|
#
|
212
209
|
# buf.clear(1) # fill with 1
|
213
210
|
# # =>
|
214
|
-
# # <IO::Buffer 0x00007fca40087c38+4
|
211
|
+
# # <IO::Buffer 0x00007fca40087c38+4 INTERNAL>
|
215
212
|
# # 0x00000000 01 01 01 01 ....
|
216
213
|
#
|
217
214
|
# buffer.clear(2, 1, 2) # fill with 2, starting from offset 1, for 2 bytes
|
218
215
|
# # =>
|
219
|
-
# # <IO::Buffer 0x00007fca40087c38+4
|
216
|
+
# # <IO::Buffer 0x00007fca40087c38+4 INTERNAL>
|
220
217
|
# # 0x00000000 01 02 02 01 ....
|
221
218
|
#
|
222
219
|
# buffer.clear(2, 1) # fill with 2, starting from offset 1
|
223
220
|
# # =>
|
224
|
-
# # <IO::Buffer 0x00007fca40087c38+4
|
221
|
+
# # <IO::Buffer 0x00007fca40087c38+4 INTERNAL>
|
225
222
|
# # 0x00000000 01 02 02 02 ....
|
226
223
|
#
|
227
224
|
def clear: (?Integer value, ?Integer offset, ?Integer length) -> self
|
@@ -231,7 +228,7 @@ class IO
|
|
231
228
|
# - copy(source, [offset, [length, [source_offset]]]) -> size
|
232
229
|
# -->
|
233
230
|
# Efficiently copy from a source IO::Buffer into the buffer, at `offset` using
|
234
|
-
# `
|
231
|
+
# `memmove`. For copying String instances, see #set_string.
|
235
232
|
#
|
236
233
|
# buffer = IO::Buffer.new(32)
|
237
234
|
# # =>
|
@@ -249,13 +246,14 @@ class IO
|
|
249
246
|
#
|
250
247
|
# #copy can be used to put buffer into strings associated with buffer:
|
251
248
|
#
|
252
|
-
# string= "
|
253
|
-
# # => "
|
254
|
-
# buffer = IO::Buffer.for(string)
|
255
|
-
#
|
249
|
+
# string = "data: "
|
250
|
+
# # => "data: "
|
251
|
+
# buffer = IO::Buffer.for(string) do |buffer|
|
252
|
+
# buffer.copy(IO::Buffer.for("test"), 5)
|
253
|
+
# end
|
256
254
|
# # => 4
|
257
255
|
# string
|
258
|
-
# # => "
|
256
|
+
# # => "data:test"
|
259
257
|
#
|
260
258
|
# Attempt to copy into a read-only buffer will fail:
|
261
259
|
#
|
@@ -279,6 +277,20 @@ class IO
|
|
279
277
|
# buffer.copy(IO::Buffer.for('test'), 0)
|
280
278
|
# # in `copy': Specified offset+length is bigger than the buffer size! (ArgumentError)
|
281
279
|
#
|
280
|
+
# It is safe to copy between memory regions that overlaps each other. In such
|
281
|
+
# case, the data is copied as if the data was first copied from the source
|
282
|
+
# buffer to a temporary buffer, and then copied from the temporary buffer to the
|
283
|
+
# destination buffer.
|
284
|
+
#
|
285
|
+
# buffer = IO::Buffer.new(10)
|
286
|
+
# buffer.set_string("0123456789")
|
287
|
+
# buffer.copy(buffer, 3, 7)
|
288
|
+
# # => 7
|
289
|
+
# buffer
|
290
|
+
# # =>
|
291
|
+
# # #<IO::Buffer 0x000056494f8ce440+10 INTERNAL>
|
292
|
+
# # 0x00000000 30 31 32 30 31 32 33 34 35 36 0120123456
|
293
|
+
#
|
282
294
|
def copy: (Buffer source, ?Integer offset, ?Integer length, ?Integer source_offset) -> Integer
|
283
295
|
|
284
296
|
# <!--
|
@@ -313,7 +325,6 @@ class IO
|
|
313
325
|
# * for a buffer created from scratch: free memory.
|
314
326
|
# * for a buffer created from string: undo the association.
|
315
327
|
#
|
316
|
-
#
|
317
328
|
# After the buffer is freed, no further operations can't be performed on it.
|
318
329
|
#
|
319
330
|
# You can resize a freed buffer to re-allocate it.
|
@@ -376,7 +387,6 @@ class IO
|
|
376
387
|
# * `:f64`: double, 8 bytes, little-endian
|
377
388
|
# * `:F64`: double, 8 bytes, big-endian
|
378
389
|
#
|
379
|
-
#
|
380
390
|
# A buffer type refers specifically to the type of binary buffer that is stored
|
381
391
|
# in the buffer. For example, a `:u32` buffer type is a 32-bit unsigned integer
|
382
392
|
# in little-endian format.
|
@@ -654,7 +664,7 @@ class IO
|
|
654
664
|
# - set_string(string, [offset, [length, [source_offset]]]) -> size
|
655
665
|
# -->
|
656
666
|
# Efficiently copy from a source String into the buffer, at `offset` using
|
657
|
-
# `
|
667
|
+
# `memmove`.
|
658
668
|
#
|
659
669
|
# buf = IO::Buffer.new(8)
|
660
670
|
# # =>
|
@@ -739,7 +749,7 @@ class IO
|
|
739
749
|
# bounds.
|
740
750
|
#
|
741
751
|
# string = 'test'
|
742
|
-
# buffer = IO::Buffer.for(string)
|
752
|
+
# buffer = IO::Buffer.for(string).dup
|
743
753
|
#
|
744
754
|
# slice = buffer.slice
|
745
755
|
# # =>
|
@@ -766,13 +776,9 @@ class IO
|
|
766
776
|
# # it is also visible at position 1 of the original buffer
|
767
777
|
# buffer
|
768
778
|
# # =>
|
769
|
-
# # #<IO::Buffer 0x00007fc3d31e2d80+4
|
779
|
+
# # #<IO::Buffer 0x00007fc3d31e2d80+4 INTERNAL>
|
770
780
|
# # 0x00000000 74 6f 73 74 tost
|
771
781
|
#
|
772
|
-
# # ...and original string
|
773
|
-
# string
|
774
|
-
# # => tost
|
775
|
-
#
|
776
782
|
def slice: (Integer offset, Integer length) -> Buffer
|
777
783
|
|
778
784
|
# <!--
|