rbs 3.3.2 → 3.4.0
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 -5
- data/.github/workflows/ruby.yml +7 -8
- data/.github/workflows/typecheck.yml +37 -0
- data/CHANGELOG.md +65 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +11 -11
- data/README.md +1 -0
- data/Rakefile +2 -2
- data/Steepfile +2 -2
- data/core/array.rbs +19 -49
- data/core/basic_object.rbs +2 -2
- data/core/comparable.rbs +17 -8
- data/core/complex.rbs +82 -43
- data/core/data.rbs +2 -4
- data/core/dir.rbs +635 -295
- data/core/enumerable.rbs +11 -18
- data/core/enumerator.rbs +37 -31
- data/core/errors.rbs +4 -0
- data/core/false_class.rbs +34 -15
- data/core/fiber.rbs +23 -0
- data/core/file.rbs +329 -120
- data/core/float.rbs +17 -32
- data/core/gc.rbs +17 -11
- data/core/hash.rbs +22 -44
- data/core/integer.rbs +82 -113
- data/core/io/buffer.rbs +90 -47
- data/core/io.rbs +54 -121
- data/core/kernel.rbs +442 -489
- data/core/match_data.rbs +55 -56
- data/core/module.rbs +45 -1
- data/core/nil_class.rbs +98 -35
- data/core/numeric.rbs +22 -32
- data/core/object_space/weak_key_map.rbs +102 -0
- data/core/process.rbs +1242 -655
- data/core/ractor.rbs +139 -120
- data/core/range.rbs +100 -4
- data/core/rational.rbs +0 -4
- data/core/rbs/unnamed/argf.rbs +16 -8
- data/core/rbs/unnamed/env_class.rbs +0 -24
- data/core/refinement.rbs +8 -0
- data/core/regexp.rbs +1149 -598
- data/core/ruby_vm.rbs +126 -12
- data/core/rubygems/platform.rbs +9 -0
- data/core/rubygems/rubygems.rbs +1 -1
- data/core/rubygems/version.rbs +5 -1
- data/core/set.rbs +20 -22
- data/core/signal.rbs +4 -4
- data/core/string.rbs +283 -230
- data/core/string_io.rbs +2 -14
- data/core/struct.rbs +404 -24
- data/core/symbol.rbs +1 -19
- data/core/thread.rbs +29 -12
- data/core/time.rbs +227 -104
- data/core/trace_point.rbs +2 -5
- data/core/true_class.rbs +54 -21
- data/core/warning.rbs +14 -11
- data/docs/data_and_struct.md +29 -0
- data/docs/gem.md +58 -0
- data/docs/syntax.md +3 -5
- data/docs/tools.md +1 -0
- data/ext/rbs_extension/lexer.c +643 -559
- data/ext/rbs_extension/lexer.re +5 -1
- data/ext/rbs_extension/parser.c +12 -3
- data/ext/rbs_extension/unescape.c +7 -47
- data/lib/rbs/cli/diff.rb +4 -1
- data/lib/rbs/cli/validate.rb +280 -0
- data/lib/rbs/cli.rb +2 -194
- data/lib/rbs/collection/config.rb +5 -6
- data/lib/rbs/collection/sources/git.rb +1 -1
- data/lib/rbs/collection.rb +1 -0
- data/lib/rbs/diff.rb +7 -4
- data/lib/rbs/errors.rb +11 -0
- data/lib/rbs/test/errors.rb +10 -2
- data/lib/rbs/test/guaranteed.rb +2 -3
- data/lib/rbs/test/type_check.rb +15 -10
- data/lib/rbs/test.rb +3 -3
- data/lib/rbs/types.rb +29 -0
- 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/version.rb +1 -1
- data/sig/cli/validate.rbs +43 -0
- data/sig/diff.rbs +3 -1
- data/sig/errors.rbs +8 -0
- data/sig/rbs.rbs +1 -1
- 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/types.rbs +6 -1
- 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/stdlib/base64/0/base64.rbs +307 -45
- data/stdlib/bigdecimal/0/big_decimal.rbs +35 -15
- data/stdlib/coverage/0/coverage.rbs +2 -2
- data/stdlib/csv/0/csv.rbs +25 -55
- data/stdlib/date/0/date.rbs +1 -43
- data/stdlib/date/0/date_time.rbs +1 -13
- data/stdlib/delegate/0/delegator.rbs +186 -0
- data/stdlib/delegate/0/kernel.rbs +47 -0
- data/stdlib/delegate/0/simple_delegator.rbs +98 -0
- data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -1
- data/stdlib/erb/0/erb.rbs +2 -2
- data/stdlib/fileutils/0/fileutils.rbs +0 -19
- data/stdlib/io-console/0/io-console.rbs +12 -1
- data/stdlib/ipaddr/0/ipaddr.rbs +2 -1
- data/stdlib/json/0/json.rbs +320 -81
- data/stdlib/logger/0/logger.rbs +9 -5
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +6 -6
- data/stdlib/monitor/0/monitor.rbs +78 -0
- data/stdlib/net-http/0/net-http.rbs +1880 -543
- data/stdlib/objspace/0/objspace.rbs +19 -13
- data/stdlib/openssl/0/openssl.rbs +508 -127
- data/stdlib/optparse/0/optparse.rbs +25 -11
- data/stdlib/pathname/0/pathname.rbs +1 -1
- data/stdlib/pp/0/pp.rbs +2 -5
- data/stdlib/prettyprint/0/prettyprint.rbs +2 -2
- data/stdlib/pstore/0/pstore.rbs +2 -4
- data/stdlib/rdoc/0/comment.rbs +1 -2
- data/stdlib/resolv/0/resolv.rbs +4 -2
- data/stdlib/socket/0/socket.rbs +2 -2
- data/stdlib/socket/0/unix_socket.rbs +2 -2
- data/stdlib/strscan/0/string_scanner.rbs +3 -2
- data/stdlib/tempfile/0/tempfile.rbs +1 -1
- data/stdlib/uri/0/common.rbs +245 -123
- metadata +24 -4
- data/lib/rbs/test/spy.rb +0 -6
data/core/string.rbs
CHANGED
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
# * `\k<name>` refers to the named capture `name`.
|
|
82
82
|
#
|
|
83
83
|
#
|
|
84
|
-
# See
|
|
84
|
+
# See Regexp for details.
|
|
85
85
|
#
|
|
86
86
|
# Note that within the string `replacement`, a character combination such as
|
|
87
87
|
# `$&` is treated as ordinary text, and not as a special match variable.
|
|
@@ -92,10 +92,10 @@
|
|
|
92
92
|
# text.
|
|
93
93
|
# * `\'` corresponds to `$'`, which contains string after match.
|
|
94
94
|
# * `\`` corresponds to `$``, which contains string before match.
|
|
95
|
-
# *
|
|
95
|
+
# * `\+` corresponds to `$+`, which contains last capture group.
|
|
96
96
|
#
|
|
97
97
|
#
|
|
98
|
-
# See
|
|
98
|
+
# See Regexp for details.
|
|
99
99
|
#
|
|
100
100
|
# Note that `\\\` is interpreted as an escape, i.e., a single backslash.
|
|
101
101
|
#
|
|
@@ -279,7 +279,7 @@
|
|
|
279
279
|
#
|
|
280
280
|
# If argument `capture` is given and not `0`, it should be either an capture
|
|
281
281
|
# group index (integer) or a capture group name (string or symbol); the slice is
|
|
282
|
-
# the specified capture (see Regexp@
|
|
282
|
+
# the specified capture (see Regexp@Groups+and+Captures):
|
|
283
283
|
#
|
|
284
284
|
# s = 'hello there'
|
|
285
285
|
# s[/[aeiou](.)\1/, 1] # => "l"
|
|
@@ -629,6 +629,9 @@
|
|
|
629
629
|
class String
|
|
630
630
|
include Comparable
|
|
631
631
|
|
|
632
|
+
# A `selector` is a special type of string, used within methods like `String#tr`.
|
|
633
|
+
type selector = string
|
|
634
|
+
|
|
632
635
|
# <!--
|
|
633
636
|
# rdoc-file=string.c
|
|
634
637
|
# - String.try_convert(object) -> object, new_string, or nil
|
|
@@ -642,9 +645,76 @@ class String
|
|
|
642
645
|
#
|
|
643
646
|
# Raises an exception unless `object.to_str` returns a String object.
|
|
644
647
|
#
|
|
645
|
-
def self.try_convert: (
|
|
648
|
+
def self.try_convert: (String object) -> String # technically will return `object` unchanged.
|
|
649
|
+
| (_ToStr object) -> String
|
|
650
|
+
| (untyped object) -> String?
|
|
651
|
+
|
|
652
|
+
# <!--
|
|
653
|
+
# rdoc-file=string.c
|
|
654
|
+
# - String.new(string = '', **opts) -> new_string
|
|
655
|
+
# -->
|
|
656
|
+
# Returns a new String that is a copy of `string`.
|
|
657
|
+
#
|
|
658
|
+
# With no arguments, returns the empty string with the Encoding `ASCII-8BIT`:
|
|
659
|
+
#
|
|
660
|
+
# s = String.new
|
|
661
|
+
# s # => ""
|
|
662
|
+
# s.encoding # => #<Encoding:ASCII-8BIT>
|
|
663
|
+
#
|
|
664
|
+
# With optional argument `string` and no keyword arguments, returns a copy of
|
|
665
|
+
# `string` with the same encoding:
|
|
666
|
+
#
|
|
667
|
+
# String.new('foo') # => "foo"
|
|
668
|
+
# String.new('тест') # => "тест"
|
|
669
|
+
# String.new('こんにちは') # => "こんにちは"
|
|
670
|
+
#
|
|
671
|
+
# (Unlike String.new, a [string
|
|
672
|
+
# literal](rdoc-ref:syntax/literals.rdoc@String+Literals) like `''` or a [here
|
|
673
|
+
# document literal](rdoc-ref:syntax/literals.rdoc@Here+Document+Literals) always
|
|
674
|
+
# has [script encoding](rdoc-ref:encodings.rdoc@Script+Encoding).)
|
|
675
|
+
#
|
|
676
|
+
# With optional keyword argument `encoding`, returns a copy of `string` with the
|
|
677
|
+
# specified encoding; the `encoding` may be an Encoding object, an encoding
|
|
678
|
+
# name, or an encoding name alias:
|
|
679
|
+
#
|
|
680
|
+
# String.new('foo', encoding: Encoding::US_ASCII).encoding # => #<Encoding:US-ASCII>
|
|
681
|
+
# String.new('foo', encoding: 'US-ASCII').encoding # => #<Encoding:US-ASCII>
|
|
682
|
+
# String.new('foo', encoding: 'ASCII').encoding # => #<Encoding:US-ASCII>
|
|
683
|
+
#
|
|
684
|
+
# The given encoding need not be valid for the string's content, and that
|
|
685
|
+
# validity is not checked:
|
|
686
|
+
#
|
|
687
|
+
# s = String.new('こんにちは', encoding: 'ascii')
|
|
688
|
+
# s.valid_encoding? # => false
|
|
689
|
+
#
|
|
690
|
+
# But the given `encoding` itself is checked:
|
|
691
|
+
#
|
|
692
|
+
# String.new('foo', encoding: 'bar') # Raises ArgumentError.
|
|
693
|
+
#
|
|
694
|
+
# With optional keyword argument `capacity`, returns a copy of `string` (or an
|
|
695
|
+
# empty string, if `string` is not given); the given `capacity` is advisory
|
|
696
|
+
# only, and may or may not set the size of the internal buffer, which may in
|
|
697
|
+
# turn affect performance:
|
|
698
|
+
#
|
|
699
|
+
# String.new(capacity: 1)
|
|
700
|
+
# String.new('foo', capacity: 4096)
|
|
701
|
+
#
|
|
702
|
+
# The `string`, `encoding`, and `capacity` arguments may all be used together:
|
|
703
|
+
#
|
|
704
|
+
# String.new('hello', encoding: 'UTF-8', capacity: 25)
|
|
705
|
+
#
|
|
706
|
+
def initialize: (?string source, ?encoding: encoding?, ?capacity: int?) -> self
|
|
646
707
|
|
|
647
|
-
|
|
708
|
+
# <!--
|
|
709
|
+
# rdoc-file=string.c
|
|
710
|
+
# - replace(other_string) -> self
|
|
711
|
+
# -->
|
|
712
|
+
# Replaces the contents of `self` with the contents of `other_string`:
|
|
713
|
+
#
|
|
714
|
+
# s = 'foo' # => "foo"
|
|
715
|
+
# s.replace('bar') # => "bar"
|
|
716
|
+
#
|
|
717
|
+
alias initialize_copy replace
|
|
648
718
|
|
|
649
719
|
# <!--
|
|
650
720
|
# rdoc-file=string.c
|
|
@@ -662,8 +732,8 @@ class String
|
|
|
662
732
|
# "foo = %{foo}" % {foo: 'bar'} # => "foo = bar"
|
|
663
733
|
# "foo = %{foo}, baz = %{baz}" % {foo: 'bar', baz: 'bat'} # => "foo = bar, baz = bat"
|
|
664
734
|
#
|
|
665
|
-
def %: (
|
|
666
|
-
| (
|
|
735
|
+
def %: (array[untyped] positional_args) -> String
|
|
736
|
+
| (hash[Symbol, untyped] named_args) -> String
|
|
667
737
|
| (untyped arg) -> String
|
|
668
738
|
|
|
669
739
|
# <!--
|
|
@@ -675,7 +745,7 @@ class String
|
|
|
675
745
|
# "Ho! " * 3 # => "Ho! Ho! Ho! "
|
|
676
746
|
# "Ho! " * 0 # => ""
|
|
677
747
|
#
|
|
678
|
-
def *: (int
|
|
748
|
+
def *: (int amount) -> String
|
|
679
749
|
|
|
680
750
|
# <!--
|
|
681
751
|
# rdoc-file=string.c
|
|
@@ -685,7 +755,7 @@ class String
|
|
|
685
755
|
#
|
|
686
756
|
# "Hello from " + self.to_s # => "Hello from main"
|
|
687
757
|
#
|
|
688
|
-
def +: (string
|
|
758
|
+
def +: (string other_string) -> String
|
|
689
759
|
|
|
690
760
|
# <!--
|
|
691
761
|
# rdoc-file=string.c
|
|
@@ -695,20 +765,28 @@ class String
|
|
|
695
765
|
#
|
|
696
766
|
# Otherwise returns `self.dup`, which is not frozen.
|
|
697
767
|
#
|
|
698
|
-
def +@: () ->
|
|
768
|
+
def +@: () -> self
|
|
699
769
|
|
|
700
770
|
# <!--
|
|
701
771
|
# rdoc-file=string.c
|
|
702
772
|
# - -string -> frozen_string
|
|
773
|
+
# - dedup -> frozen_string
|
|
703
774
|
# -->
|
|
704
775
|
# Returns a frozen, possibly pre-existing copy of the string.
|
|
705
776
|
#
|
|
706
777
|
# The returned String will be deduplicated as long as it does not have any
|
|
707
778
|
# instance variables set on it and is not a String subclass.
|
|
708
779
|
#
|
|
709
|
-
#
|
|
780
|
+
# Note that `-string` variant is more convenient for defining constants:
|
|
781
|
+
#
|
|
782
|
+
# FILENAME = -'config/database.yml'
|
|
783
|
+
#
|
|
784
|
+
# while `dedup` is better suitable for using the method in chains of
|
|
785
|
+
# calculations:
|
|
786
|
+
#
|
|
787
|
+
# @url_list.concat(urls.map(&:dedup))
|
|
710
788
|
#
|
|
711
|
-
def -@: () ->
|
|
789
|
+
def -@: () -> self
|
|
712
790
|
|
|
713
791
|
# <!--
|
|
714
792
|
# rdoc-file=string.c
|
|
@@ -728,7 +806,7 @@ class String
|
|
|
728
806
|
#
|
|
729
807
|
# Related: String#concat, which takes multiple arguments.
|
|
730
808
|
#
|
|
731
|
-
def <<: (string | Integer str_or_codepoint) ->
|
|
809
|
+
def <<: (string | Integer str_or_codepoint) -> self
|
|
732
810
|
|
|
733
811
|
# <!--
|
|
734
812
|
# rdoc-file=string.c
|
|
@@ -751,8 +829,8 @@ class String
|
|
|
751
829
|
# 'foo' <=> 'FOO' # => 1
|
|
752
830
|
# 'foo' <=> 1 # => nil
|
|
753
831
|
#
|
|
754
|
-
def <=>: (string
|
|
755
|
-
| (untyped
|
|
832
|
+
def <=>: (string) -> (-1 | 0 | 1)
|
|
833
|
+
| (untyped) -> (-1 | 0 | 1)?
|
|
756
834
|
|
|
757
835
|
# <!--
|
|
758
836
|
# rdoc-file=string.c
|
|
@@ -773,7 +851,7 @@ class String
|
|
|
773
851
|
# If `object` is not an instance of String but responds to `to_str`, then the
|
|
774
852
|
# two strings are compared using `object.==`.
|
|
775
853
|
#
|
|
776
|
-
def ==: (untyped
|
|
854
|
+
def ==: (untyped other) -> bool
|
|
777
855
|
|
|
778
856
|
# <!-- rdoc-file=string.c -->
|
|
779
857
|
# Returns `true` if `object` has the same length and content; as `self`; `false`
|
|
@@ -790,7 +868,7 @@ class String
|
|
|
790
868
|
# If `object` is not an instance of String but responds to `to_str`, then the
|
|
791
869
|
# two strings are compared using `object.==`.
|
|
792
870
|
#
|
|
793
|
-
|
|
871
|
+
alias === ==
|
|
794
872
|
|
|
795
873
|
# <!--
|
|
796
874
|
# rdoc-file=string.c
|
|
@@ -804,7 +882,7 @@ class String
|
|
|
804
882
|
# 'foo' =~ /o/ # => 1
|
|
805
883
|
# 'foo' =~ /x/ # => nil
|
|
806
884
|
#
|
|
807
|
-
# Note: also updates Regexp@
|
|
885
|
+
# Note: also updates Regexp@Global+Variables.
|
|
808
886
|
#
|
|
809
887
|
# If the given `object` is not a Regexp, returns the value returned by `object
|
|
810
888
|
# =~ self`.
|
|
@@ -818,7 +896,12 @@ class String
|
|
|
818
896
|
# /(?<number>\d+)/ =~ "no. 9"
|
|
819
897
|
# number #=> "9"
|
|
820
898
|
#
|
|
821
|
-
def =~: (
|
|
899
|
+
def =~: (Regexp regex) -> Integer?
|
|
900
|
+
| [T] (_MatchAgainst[self, T] object) -> T
|
|
901
|
+
|
|
902
|
+
interface _MatchAgainst[O, T]
|
|
903
|
+
def =~: (O string) -> T
|
|
904
|
+
end
|
|
822
905
|
|
|
823
906
|
# <!--
|
|
824
907
|
# rdoc-file=string.c
|
|
@@ -831,12 +914,10 @@ class String
|
|
|
831
914
|
# Returns the substring of `self` specified by the arguments. See examples at
|
|
832
915
|
# [String Slices](rdoc-ref:String@String+Slices).
|
|
833
916
|
#
|
|
834
|
-
def []: (int
|
|
835
|
-
| (int
|
|
836
|
-
| (
|
|
837
|
-
| (
|
|
838
|
-
| (Regexp regexp, int | String capture) -> String?
|
|
839
|
-
| (String match_str) -> String?
|
|
917
|
+
def []: (int start, ?int length) -> String?
|
|
918
|
+
| (range[int?] range) -> String?
|
|
919
|
+
| (Regexp regexp, ?MatchData::capture backref) -> String?
|
|
920
|
+
| (String substring) -> String?
|
|
840
921
|
|
|
841
922
|
# <!--
|
|
842
923
|
# rdoc-file=string.c
|
|
@@ -863,15 +944,12 @@ class String
|
|
|
863
944
|
# s['lly'] = 'ncial' # => "ncial"
|
|
864
945
|
# s # => "financial"
|
|
865
946
|
#
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
|
870
|
-
|
|
|
871
|
-
| (
|
|
872
|
-
| (Regexp regexp, int capture, String new_str) -> String
|
|
873
|
-
| (Regexp regexp, String name, String new_str) -> String
|
|
874
|
-
| (String other_str, String new_str) -> String
|
|
947
|
+
def []=: [T < _ToStr] (int index, T replacement) -> T
|
|
948
|
+
| [T < _ToStr] (int start, int length, T replacement) -> T
|
|
949
|
+
| [T < _ToStr] (range[int?] range, T replacement) -> T
|
|
950
|
+
| [T < _ToStr] (Regexp regexp, T replacement) -> T
|
|
951
|
+
| [T < _ToStr] (Regexp regexp, MatchData::capture backref, T replacement) -> T
|
|
952
|
+
| [T < _ToStr] (String substring, T replacement) -> T
|
|
875
953
|
|
|
876
954
|
# <!--
|
|
877
955
|
# rdoc-file=string.c
|
|
@@ -945,7 +1023,7 @@ class String
|
|
|
945
1023
|
#
|
|
946
1024
|
# Related: String#index, String#byterindex.
|
|
947
1025
|
#
|
|
948
|
-
def byteindex: (Regexp | string
|
|
1026
|
+
def byteindex: (Regexp | string pattern, ?int offset) -> Integer?
|
|
949
1027
|
|
|
950
1028
|
# <!--
|
|
951
1029
|
# rdoc-file=string.c
|
|
@@ -1006,7 +1084,7 @@ class String
|
|
|
1006
1084
|
#
|
|
1007
1085
|
# Related: String#byteindex.
|
|
1008
1086
|
#
|
|
1009
|
-
def byterindex: (Regexp | string
|
|
1087
|
+
def byterindex: (Regexp | string pattern, ?int offset) -> Integer?
|
|
1010
1088
|
|
|
1011
1089
|
# <!--
|
|
1012
1090
|
# rdoc-file=string.c
|
|
@@ -1020,7 +1098,7 @@ class String
|
|
|
1020
1098
|
# # => [227, 129, 147, 227, 130, 147, 227, 129, 171, 227, 129, 161, 227, 129, 175]
|
|
1021
1099
|
#
|
|
1022
1100
|
def bytes: () -> Array[Integer]
|
|
1023
|
-
| () { (Integer byte) -> void } ->
|
|
1101
|
+
| () { (Integer byte) -> void } -> self
|
|
1024
1102
|
|
|
1025
1103
|
# <!--
|
|
1026
1104
|
# rdoc-file=string.c
|
|
@@ -1082,24 +1160,34 @@ class String
|
|
|
1082
1160
|
# s.byteslice(4).encoding # => #<Encoding:UTF-8>
|
|
1083
1161
|
#
|
|
1084
1162
|
def byteslice: (int start, ?int length) -> String?
|
|
1085
|
-
| (
|
|
1163
|
+
| (range[int?] range) -> String?
|
|
1086
1164
|
|
|
1087
1165
|
# <!--
|
|
1088
1166
|
# rdoc-file=string.c
|
|
1089
1167
|
# - bytesplice(index, length, str) -> string
|
|
1090
|
-
# - bytesplice(
|
|
1168
|
+
# - bytesplice(index, length, str, str_index, str_length) -> string
|
|
1169
|
+
# - bytesplice(range, str) -> string
|
|
1170
|
+
# - bytesplice(range, str, str_range) -> string
|
|
1091
1171
|
# -->
|
|
1092
1172
|
# Replaces some or all of the content of `self` with `str`, and returns `self`.
|
|
1093
1173
|
# The portion of the string affected is determined using the same criteria as
|
|
1094
1174
|
# String#byteslice, except that `length` cannot be omitted. If the replacement
|
|
1095
1175
|
# string is not the same length as the text it is replacing, the string will be
|
|
1096
|
-
# adjusted accordingly.
|
|
1097
|
-
#
|
|
1098
|
-
#
|
|
1099
|
-
#
|
|
1176
|
+
# adjusted accordingly.
|
|
1177
|
+
#
|
|
1178
|
+
# If `str_index` and `str_length`, or `str_range` are given, the content of
|
|
1179
|
+
# `self` is replaced by str.byteslice(str_index, str_length) or
|
|
1180
|
+
# str.byteslice(str_range); however the substring of `str` is not allocated as a
|
|
1181
|
+
# new string.
|
|
1182
|
+
#
|
|
1183
|
+
# The form that take an Integer will raise an IndexError if the value is out of
|
|
1184
|
+
# range; the Range form will raise a RangeError. If the beginning or ending
|
|
1185
|
+
# offset does not land on character (codepoint) boundary, an IndexError will be
|
|
1186
|
+
# raised.
|
|
1100
1187
|
#
|
|
1101
|
-
def bytesplice: (int
|
|
1102
|
-
| (
|
|
1188
|
+
def bytesplice: (int start, int length, string str) -> String
|
|
1189
|
+
| (int start, int length, string str, int str_start, int str_length) -> String
|
|
1190
|
+
| (range[int?] range, string str, ?range[int?] str_range) -> String
|
|
1103
1191
|
|
|
1104
1192
|
# <!--
|
|
1105
1193
|
# rdoc-file=string.c
|
|
@@ -1138,10 +1226,10 @@ class String
|
|
|
1138
1226
|
#
|
|
1139
1227
|
# Related: String#capitalize.
|
|
1140
1228
|
#
|
|
1141
|
-
def capitalize!: () ->
|
|
1142
|
-
| (:ascii | :lithuanian | :turkic) ->
|
|
1143
|
-
| (:lithuanian, :turkic) ->
|
|
1144
|
-
| (:turkic, :lithuanian) ->
|
|
1229
|
+
def capitalize!: () -> self?
|
|
1230
|
+
| (:ascii | :lithuanian | :turkic) -> self?
|
|
1231
|
+
| (:lithuanian, :turkic) -> self?
|
|
1232
|
+
| (:turkic, :lithuanian) -> self?
|
|
1145
1233
|
|
|
1146
1234
|
# <!--
|
|
1147
1235
|
# rdoc-file=string.c
|
|
@@ -1168,7 +1256,8 @@ class String
|
|
|
1168
1256
|
#
|
|
1169
1257
|
# Related: String#casecmp?.
|
|
1170
1258
|
#
|
|
1171
|
-
def casecmp: (
|
|
1259
|
+
def casecmp: (string other) -> (-1 | 0 | 1)
|
|
1260
|
+
| (untyped) -> (-1 | 0 | 1)?
|
|
1172
1261
|
|
|
1173
1262
|
# <!--
|
|
1174
1263
|
# rdoc-file=string.c
|
|
@@ -1191,7 +1280,8 @@ class String
|
|
|
1191
1280
|
#
|
|
1192
1281
|
# Related: String#casecmp.
|
|
1193
1282
|
#
|
|
1194
|
-
def casecmp?: (
|
|
1283
|
+
def casecmp?: (string other) -> bool
|
|
1284
|
+
| (untyped) -> bool?
|
|
1195
1285
|
|
|
1196
1286
|
# <!--
|
|
1197
1287
|
# rdoc-file=string.c
|
|
@@ -1216,7 +1306,7 @@ class String
|
|
|
1216
1306
|
#
|
|
1217
1307
|
# Related: String#ljust, String#rjust.
|
|
1218
1308
|
#
|
|
1219
|
-
def center: (int width, ?string
|
|
1309
|
+
def center: (int width, ?string pad_string) -> String
|
|
1220
1310
|
|
|
1221
1311
|
# <!--
|
|
1222
1312
|
# rdoc-file=string.c
|
|
@@ -1229,7 +1319,7 @@ class String
|
|
|
1229
1319
|
# 'こんにちは'.chars # => ["こ", "ん", "に", "ち", "は"]
|
|
1230
1320
|
#
|
|
1231
1321
|
def chars: () -> Array[String]
|
|
1232
|
-
| () { (String char) -> void } ->
|
|
1322
|
+
| () { (String char) -> void } -> self
|
|
1233
1323
|
|
|
1234
1324
|
# <!--
|
|
1235
1325
|
# rdoc-file=string.c
|
|
@@ -1264,7 +1354,7 @@ class String
|
|
|
1264
1354
|
# 'abcd'.chomp('d') # => "abc"
|
|
1265
1355
|
# 'abcdd'.chomp('d') # => "abcd"
|
|
1266
1356
|
#
|
|
1267
|
-
def chomp: (?string separator) -> String
|
|
1357
|
+
def chomp: (?string? separator) -> String
|
|
1268
1358
|
|
|
1269
1359
|
# <!--
|
|
1270
1360
|
# rdoc-file=string.c
|
|
@@ -1273,7 +1363,9 @@ class String
|
|
|
1273
1363
|
# Like String#chomp, but modifies `self` in place; returns `nil` if no
|
|
1274
1364
|
# modification made, `self` otherwise.
|
|
1275
1365
|
#
|
|
1276
|
-
def chomp!: (
|
|
1366
|
+
def chomp!: (nil) -> nil
|
|
1367
|
+
# | (?string separator) -> self? # https://github.com/ruby/rbs/pull/1672#discussion_r1423324796
|
|
1368
|
+
| (?string? separator) -> self?
|
|
1277
1369
|
|
|
1278
1370
|
# <!--
|
|
1279
1371
|
# rdoc-file=string.c
|
|
@@ -1309,7 +1401,7 @@ class String
|
|
|
1309
1401
|
#
|
|
1310
1402
|
# Related: String#chomp!.
|
|
1311
1403
|
#
|
|
1312
|
-
def chop!: () ->
|
|
1404
|
+
def chop!: () -> self?
|
|
1313
1405
|
|
|
1314
1406
|
# <!--
|
|
1315
1407
|
# rdoc-file=string.c
|
|
@@ -1331,7 +1423,7 @@ class String
|
|
|
1331
1423
|
# s = 'foo' # => "foo"
|
|
1332
1424
|
# s.clear # => ""
|
|
1333
1425
|
#
|
|
1334
|
-
def clear: () ->
|
|
1426
|
+
def clear: () -> self
|
|
1335
1427
|
|
|
1336
1428
|
# <!--
|
|
1337
1429
|
# rdoc-file=string.c
|
|
@@ -1344,8 +1436,8 @@ class String
|
|
|
1344
1436
|
# 'тест'.codepoints # => [1090, 1077, 1089, 1090]
|
|
1345
1437
|
# 'こんにちは'.codepoints # => [12371, 12435, 12395, 12385, 12399]
|
|
1346
1438
|
#
|
|
1347
|
-
def codepoints: () ->
|
|
1348
|
-
| () { (Integer codepoint) -> void } ->
|
|
1439
|
+
def codepoints: () -> Array[Integer]
|
|
1440
|
+
| () { (Integer codepoint) -> void } -> self
|
|
1349
1441
|
|
|
1350
1442
|
# <!--
|
|
1351
1443
|
# rdoc-file=string.c
|
|
@@ -1365,7 +1457,7 @@ class String
|
|
|
1365
1457
|
#
|
|
1366
1458
|
# Related: String#<<, which takes a single argument.
|
|
1367
1459
|
#
|
|
1368
|
-
def concat: (*string | Integer
|
|
1460
|
+
def concat: (*string | Integer string_or_codepoints) -> self
|
|
1369
1461
|
|
|
1370
1462
|
# <!--
|
|
1371
1463
|
# rdoc-file=string.c
|
|
@@ -1389,7 +1481,7 @@ class String
|
|
|
1389
1481
|
# c.count "\\A" #=> 0
|
|
1390
1482
|
# c.count "X-\\w" #=> 3
|
|
1391
1483
|
#
|
|
1392
|
-
def count: (
|
|
1484
|
+
def count: (selector selector_0, *selector more_selectors) -> Integer
|
|
1393
1485
|
|
|
1394
1486
|
# <!--
|
|
1395
1487
|
# rdoc-file=string.c
|
|
@@ -1453,7 +1545,14 @@ class String
|
|
|
1453
1545
|
# The returned String will be deduplicated as long as it does not have any
|
|
1454
1546
|
# instance variables set on it and is not a String subclass.
|
|
1455
1547
|
#
|
|
1456
|
-
#
|
|
1548
|
+
# Note that `-string` variant is more convenient for defining constants:
|
|
1549
|
+
#
|
|
1550
|
+
# FILENAME = -'config/database.yml'
|
|
1551
|
+
#
|
|
1552
|
+
# while `dedup` is better suitable for using the method in chains of
|
|
1553
|
+
# calculations:
|
|
1554
|
+
#
|
|
1555
|
+
# @url_list.concat(urls.map(&:dedup))
|
|
1457
1556
|
#
|
|
1458
1557
|
alias dedup -@
|
|
1459
1558
|
|
|
@@ -1470,7 +1569,7 @@ class String
|
|
|
1470
1569
|
# "hello".delete "aeiou", "^e" #=> "hell"
|
|
1471
1570
|
# "hello".delete "ej-m" #=> "ho"
|
|
1472
1571
|
#
|
|
1473
|
-
def delete: (
|
|
1572
|
+
def delete: (selector selector_0, *selector more_selectors) -> String
|
|
1474
1573
|
|
|
1475
1574
|
# <!--
|
|
1476
1575
|
# rdoc-file=string.c
|
|
@@ -1479,7 +1578,7 @@ class String
|
|
|
1479
1578
|
# Like String#delete, but modifies `self` in place. Returns `self` if any
|
|
1480
1579
|
# changes were made, `nil` otherwise.
|
|
1481
1580
|
#
|
|
1482
|
-
def delete!: (
|
|
1581
|
+
def delete!: (selector selector_0, *selector more_selectors) -> self?
|
|
1483
1582
|
|
|
1484
1583
|
# <!--
|
|
1485
1584
|
# rdoc-file=string.c
|
|
@@ -1503,7 +1602,7 @@ class String
|
|
|
1503
1602
|
# Like String#delete_prefix, except that `self` is modified in place. Returns
|
|
1504
1603
|
# `self` if the prefix is removed, `nil` otherwise.
|
|
1505
1604
|
#
|
|
1506
|
-
def delete_prefix!: (string prefix) ->
|
|
1605
|
+
def delete_prefix!: (string prefix) -> self?
|
|
1507
1606
|
|
|
1508
1607
|
# <!--
|
|
1509
1608
|
# rdoc-file=string.c
|
|
@@ -1527,7 +1626,7 @@ class String
|
|
|
1527
1626
|
# Like String#delete_suffix, except that `self` is modified in place. Returns
|
|
1528
1627
|
# `self` if the suffix is removed, `nil` otherwise.
|
|
1529
1628
|
#
|
|
1530
|
-
def delete_suffix!: (string suffix) ->
|
|
1629
|
+
def delete_suffix!: (string suffix) -> self?
|
|
1531
1630
|
|
|
1532
1631
|
# <!--
|
|
1533
1632
|
# rdoc-file=string.c
|
|
@@ -1565,10 +1664,10 @@ class String
|
|
|
1565
1664
|
#
|
|
1566
1665
|
# Related: String#downcase, String#upcase, String#upcase!.
|
|
1567
1666
|
#
|
|
1568
|
-
def downcase!: () ->
|
|
1569
|
-
| (:ascii | :fold | :lithuanian | :turkic) ->
|
|
1570
|
-
| (:lithuanian, :turkic) ->
|
|
1571
|
-
| (:turkic, :lithuanian) ->
|
|
1667
|
+
def downcase!: () -> self?
|
|
1668
|
+
| (:ascii | :fold | :lithuanian | :turkic) -> self?
|
|
1669
|
+
| (:lithuanian, :turkic) -> self?
|
|
1670
|
+
| (:turkic, :lithuanian) -> self?
|
|
1572
1671
|
|
|
1573
1672
|
# <!--
|
|
1574
1673
|
# rdoc-file=string.c
|
|
@@ -1607,8 +1706,8 @@ class String
|
|
|
1607
1706
|
#
|
|
1608
1707
|
# Returns an enumerator if no block is given.
|
|
1609
1708
|
#
|
|
1610
|
-
def each_byte: ()
|
|
1611
|
-
| ()
|
|
1709
|
+
def each_byte: () -> Enumerator[Integer, self]
|
|
1710
|
+
| () { (Integer byte) -> void } -> self
|
|
1612
1711
|
|
|
1613
1712
|
# <!--
|
|
1614
1713
|
# rdoc-file=string.c
|
|
@@ -1633,8 +1732,8 @@ class String
|
|
|
1633
1732
|
#
|
|
1634
1733
|
# Returns an enumerator if no block is given.
|
|
1635
1734
|
#
|
|
1636
|
-
def each_char: ()
|
|
1637
|
-
| ()
|
|
1735
|
+
def each_char: () -> Enumerator[String, self]
|
|
1736
|
+
| () { (String char) -> void } -> self
|
|
1638
1737
|
|
|
1639
1738
|
# <!--
|
|
1640
1739
|
# rdoc-file=string.c
|
|
@@ -1659,8 +1758,8 @@ class String
|
|
|
1659
1758
|
#
|
|
1660
1759
|
# Returns an enumerator if no block is given.
|
|
1661
1760
|
#
|
|
1662
|
-
def each_codepoint: ()
|
|
1663
|
-
| ()
|
|
1761
|
+
def each_codepoint: () -> Enumerator[Integer, self]
|
|
1762
|
+
| () { (Integer codepoint) -> void } -> self
|
|
1664
1763
|
|
|
1665
1764
|
# <!--
|
|
1666
1765
|
# rdoc-file=string.c
|
|
@@ -1681,8 +1780,8 @@ class String
|
|
|
1681
1780
|
#
|
|
1682
1781
|
# Returns an enumerator if no block is given.
|
|
1683
1782
|
#
|
|
1684
|
-
def each_grapheme_cluster: ()
|
|
1685
|
-
| ()
|
|
1783
|
+
def each_grapheme_cluster: () -> Enumerator[String, self]
|
|
1784
|
+
| () { (String grapheme_cluter) -> void } -> self
|
|
1686
1785
|
|
|
1687
1786
|
# <!--
|
|
1688
1787
|
# rdoc-file=string.c
|
|
@@ -1747,8 +1846,8 @@ class String
|
|
|
1747
1846
|
#
|
|
1748
1847
|
# With no block given, returns an enumerator.
|
|
1749
1848
|
#
|
|
1750
|
-
def each_line: (?string separator, ?chomp: boolish)
|
|
1751
|
-
| (?string separator, ?chomp: boolish)
|
|
1849
|
+
def each_line: (?string? separator, ?chomp: boolish) -> Enumerator[String, self]
|
|
1850
|
+
| (?string? separator, ?chomp: boolish) { (String line) -> void } -> self
|
|
1752
1851
|
|
|
1753
1852
|
# <!--
|
|
1754
1853
|
# rdoc-file=string.c
|
|
@@ -1763,7 +1862,7 @@ class String
|
|
|
1763
1862
|
def empty?: () -> bool
|
|
1764
1863
|
|
|
1765
1864
|
# <!--
|
|
1766
|
-
# rdoc-file=transcode.
|
|
1865
|
+
# rdoc-file=transcode.c
|
|
1767
1866
|
# - encode(dst_encoding = Encoding.default_internal, **enc_opts) -> string
|
|
1768
1867
|
# - encode(dst_encoding, src_encoding, **enc_opts) -> string
|
|
1769
1868
|
# -->
|
|
@@ -1809,7 +1908,30 @@ class String
|
|
|
1809
1908
|
# Optional keyword arguments `enc_opts` specify encoding options; see [Encoding
|
|
1810
1909
|
# Options](rdoc-ref:encodings.rdoc@Encoding+Options).
|
|
1811
1910
|
#
|
|
1812
|
-
|
|
1911
|
+
# Please note that, unless `invalid: :replace` option is given, conversion from
|
|
1912
|
+
# an encoding `enc` to the same encoding `enc` (independent of whether `enc` is
|
|
1913
|
+
# given explicitly or implicitly) is a no-op, i.e. the string is simply copied
|
|
1914
|
+
# without any changes, and no exceptions are raised, even if there are invalid
|
|
1915
|
+
# bytes.
|
|
1916
|
+
#
|
|
1917
|
+
def encode: (
|
|
1918
|
+
?encoding source_encoding,
|
|
1919
|
+
?encoding? from_encoding,
|
|
1920
|
+
?invalid: :replace ?,
|
|
1921
|
+
?undef: :replace ?,
|
|
1922
|
+
?replace: string?,
|
|
1923
|
+
?xml: (:text | :attr)?,
|
|
1924
|
+
?newline: (:universal | :crlf | :cr | :lf)?,
|
|
1925
|
+
?universal_newline: boolish,
|
|
1926
|
+
?cr_newline: boolish,
|
|
1927
|
+
?crlf_newline: boolish,
|
|
1928
|
+
?lf_newline: boolish,
|
|
1929
|
+
?fallback: ^(String) -> string? | Method | _EncodeFallbackAref
|
|
1930
|
+
) -> instance
|
|
1931
|
+
|
|
1932
|
+
interface _EncodeFallbackAref
|
|
1933
|
+
def []: (String) -> string?
|
|
1934
|
+
end
|
|
1813
1935
|
|
|
1814
1936
|
# <!--
|
|
1815
1937
|
# rdoc-file=transcode.c
|
|
@@ -1818,7 +1940,20 @@ class String
|
|
|
1818
1940
|
# -->
|
|
1819
1941
|
# Like #encode, but applies encoding changes to `self`; returns `self`.
|
|
1820
1942
|
#
|
|
1821
|
-
def encode!: (
|
|
1943
|
+
def encode!: (
|
|
1944
|
+
?encoding source_encoding,
|
|
1945
|
+
?encoding? from_encoding,
|
|
1946
|
+
?invalid: :replace ?,
|
|
1947
|
+
?undef: :replace ?,
|
|
1948
|
+
?replace: string?,
|
|
1949
|
+
?xml: (:text | :attr)?,
|
|
1950
|
+
?newline: (:universal | :crlf | :cr | :lf)?,
|
|
1951
|
+
?universal_newline: boolish,
|
|
1952
|
+
?cr_newline: boolish,
|
|
1953
|
+
?crlf_newline: boolish,
|
|
1954
|
+
?lf_newline: boolish,
|
|
1955
|
+
?fallback: ^(String) -> string? | Method | _EncodeFallbackAref
|
|
1956
|
+
) -> self
|
|
1822
1957
|
|
|
1823
1958
|
# <!--
|
|
1824
1959
|
# rdoc-file=string.c
|
|
@@ -1888,7 +2023,7 @@ class String
|
|
|
1888
2023
|
# s.force_encoding(Encoding::UTF_8) # => "łał"
|
|
1889
2024
|
# s.valid_encoding? # => true
|
|
1890
2025
|
#
|
|
1891
|
-
def force_encoding: (
|
|
2026
|
+
def force_encoding: (encoding enc) -> self
|
|
1892
2027
|
|
|
1893
2028
|
# <!--
|
|
1894
2029
|
# rdoc-file=string.c
|
|
@@ -1926,7 +2061,8 @@ class String
|
|
|
1926
2061
|
# s.grapheme_clusters
|
|
1927
2062
|
# # => ["ä", "-", "p", "q", "r", "-", "b̈", "-", "x", "y", "z", "-", "c̈"]
|
|
1928
2063
|
#
|
|
1929
|
-
def grapheme_clusters: () ->
|
|
2064
|
+
def grapheme_clusters: () -> Array[String]
|
|
2065
|
+
| () { (String grapheme_cluter) -> void } -> self
|
|
1930
2066
|
|
|
1931
2067
|
# <!--
|
|
1932
2068
|
# rdoc-file=string.c
|
|
@@ -1942,10 +2078,9 @@ class String
|
|
|
1942
2078
|
#
|
|
1943
2079
|
# Related: String#sub, String#sub!, String#gsub!.
|
|
1944
2080
|
#
|
|
1945
|
-
def gsub: (Regexp | string pattern, string replacement) -> String
|
|
1946
|
-
| (Regexp | string pattern
|
|
2081
|
+
def gsub: (Regexp | string pattern, string | hash[String, _ToS] replacement) -> String
|
|
2082
|
+
| (Regexp | string pattern) -> Enumerator[String, String]
|
|
1947
2083
|
| (Regexp | string pattern) { (String match) -> _ToS } -> String
|
|
1948
|
-
| (Regexp | string pattern) -> ::Enumerator[String, self]
|
|
1949
2084
|
|
|
1950
2085
|
# <!--
|
|
1951
2086
|
# rdoc-file=string.c
|
|
@@ -1962,10 +2097,9 @@ class String
|
|
|
1962
2097
|
#
|
|
1963
2098
|
# Related: String#sub, String#gsub, String#sub!.
|
|
1964
2099
|
#
|
|
1965
|
-
def gsub!: (Regexp | string pattern, string replacement) ->
|
|
1966
|
-
| (Regexp | string pattern
|
|
1967
|
-
| (Regexp | string pattern) { (String match) -> _ToS } ->
|
|
1968
|
-
| (Regexp | string pattern) -> ::Enumerator[String, self]
|
|
2100
|
+
def gsub!: (Regexp | string pattern, string | hash[String, _ToS] replacement) -> self?
|
|
2101
|
+
| (Regexp | string pattern) -> Enumerator[String, self]
|
|
2102
|
+
| (Regexp | string pattern) { (String match) -> _ToS } -> self?
|
|
1969
2103
|
|
|
1970
2104
|
# <!--
|
|
1971
2105
|
# rdoc-file=string.c
|
|
@@ -2006,7 +2140,7 @@ class String
|
|
|
2006
2140
|
# s.include?('fo') # => true
|
|
2007
2141
|
# s.include?('food') # => false
|
|
2008
2142
|
#
|
|
2009
|
-
def include?: (string
|
|
2143
|
+
def include?: (string other_string) -> bool
|
|
2010
2144
|
|
|
2011
2145
|
# <!--
|
|
2012
2146
|
# rdoc-file=string.c
|
|
@@ -2052,7 +2186,7 @@ class String
|
|
|
2052
2186
|
#
|
|
2053
2187
|
# Related: String#rindex.
|
|
2054
2188
|
#
|
|
2055
|
-
def index: (Regexp | string
|
|
2189
|
+
def index: (Regexp | string pattern, ?int offset) -> Integer?
|
|
2056
2190
|
|
|
2057
2191
|
# <!--
|
|
2058
2192
|
# rdoc-file=string.c
|
|
@@ -2069,7 +2203,7 @@ class String
|
|
|
2069
2203
|
#
|
|
2070
2204
|
# 'foo'.insert(-2, 'bar') # => "fobaro"
|
|
2071
2205
|
#
|
|
2072
|
-
def insert: (int index, string other_str) ->
|
|
2206
|
+
def insert: (int index, string other_str) -> self
|
|
2073
2207
|
|
|
2074
2208
|
# <!--
|
|
2075
2209
|
# rdoc-file=string.c
|
|
@@ -2121,8 +2255,6 @@ class String
|
|
|
2121
2255
|
# 'тест'.bytesize # => 8
|
|
2122
2256
|
# 'こんにちは'.bytesize # => 15
|
|
2123
2257
|
#
|
|
2124
|
-
# String#size is an alias for String#length.
|
|
2125
|
-
#
|
|
2126
2258
|
def length: () -> Integer
|
|
2127
2259
|
|
|
2128
2260
|
# <!--
|
|
@@ -2132,7 +2264,8 @@ class String
|
|
|
2132
2264
|
# Forms substrings ("lines") of `self` according to the given arguments (see
|
|
2133
2265
|
# String#each_line for details); returns the lines in an array.
|
|
2134
2266
|
#
|
|
2135
|
-
def lines: (?string separator, ?chomp: boolish) -> Array[String]
|
|
2267
|
+
def lines: (?string? separator, ?chomp: boolish) -> Array[String]
|
|
2268
|
+
| (?string? separator, ?chomp: boolish) { (String line) -> void } -> self
|
|
2136
2269
|
|
|
2137
2270
|
# <!--
|
|
2138
2271
|
# rdoc-file=string.c
|
|
@@ -2157,7 +2290,7 @@ class String
|
|
|
2157
2290
|
#
|
|
2158
2291
|
# Related: String#rjust, String#center.
|
|
2159
2292
|
#
|
|
2160
|
-
def ljust: (int
|
|
2293
|
+
def ljust: (int size, ?string pad_string) -> String
|
|
2161
2294
|
|
|
2162
2295
|
# <!--
|
|
2163
2296
|
# rdoc-file=string.c
|
|
@@ -2193,7 +2326,7 @@ class String
|
|
|
2193
2326
|
# -->
|
|
2194
2327
|
# Returns a MatchData object (or `nil`) based on `self` and the given `pattern`.
|
|
2195
2328
|
#
|
|
2196
|
-
# Note: also updates Regexp@
|
|
2329
|
+
# Note: also updates Regexp@Global+Variables.
|
|
2197
2330
|
#
|
|
2198
2331
|
# * Computes `regexp` by converting `pattern` (if not already a Regexp).
|
|
2199
2332
|
# regexp = Regexp.new(pattern)
|
|
@@ -2221,8 +2354,8 @@ class String
|
|
|
2221
2354
|
# 'foo'.match(/x/) {|matchdata| matchdata } # => nil
|
|
2222
2355
|
# 'foo'.match(/f/, 1) {|matchdata| matchdata } # => nil
|
|
2223
2356
|
#
|
|
2224
|
-
def match: (Regexp | string pattern, ?int
|
|
2225
|
-
| [
|
|
2357
|
+
def match: (Regexp | string pattern, ?int offset) -> MatchData?
|
|
2358
|
+
| [T] (Regexp | string pattern, ?int offset) { (MatchData matchdata) -> T } -> T?
|
|
2226
2359
|
|
|
2227
2360
|
# <!--
|
|
2228
2361
|
# rdoc-file=string.c
|
|
@@ -2231,7 +2364,7 @@ class String
|
|
|
2231
2364
|
# Returns `true` or `false` based on whether a match is found for `self` and
|
|
2232
2365
|
# `pattern`.
|
|
2233
2366
|
#
|
|
2234
|
-
# Note: does not update Regexp@
|
|
2367
|
+
# Note: does not update Regexp@Global+Variables.
|
|
2235
2368
|
#
|
|
2236
2369
|
# Computes `regexp` by converting `pattern` (if not already a Regexp).
|
|
2237
2370
|
# regexp = Regexp.new(pattern)
|
|
@@ -2247,7 +2380,7 @@ class String
|
|
|
2247
2380
|
# 'foo'.match?('f', 1) # => false
|
|
2248
2381
|
# 'foo'.match?('o', 1) # => true
|
|
2249
2382
|
#
|
|
2250
|
-
def match?: (Regexp | string pattern, ?int
|
|
2383
|
+
def match?: (Regexp | string pattern, ?int offset) -> bool
|
|
2251
2384
|
|
|
2252
2385
|
# <!-- rdoc-file=string.c -->
|
|
2253
2386
|
# Returns the successor to `self`. The successor is calculated by incrementing
|
|
@@ -2301,16 +2434,12 @@ class String
|
|
|
2301
2434
|
#
|
|
2302
2435
|
# ''.succ # => ""
|
|
2303
2436
|
#
|
|
2304
|
-
|
|
2305
|
-
#
|
|
2306
|
-
def next: () -> String
|
|
2437
|
+
alias next succ
|
|
2307
2438
|
|
|
2308
2439
|
# <!-- rdoc-file=string.c -->
|
|
2309
2440
|
# Equivalent to String#succ, but modifies `self` in place; returns `self`.
|
|
2310
2441
|
#
|
|
2311
|
-
|
|
2312
|
-
#
|
|
2313
|
-
def next!: () -> self
|
|
2442
|
+
alias next! succ!
|
|
2314
2443
|
|
|
2315
2444
|
# <!--
|
|
2316
2445
|
# rdoc-file=string.c
|
|
@@ -2373,7 +2502,7 @@ class String
|
|
|
2373
2502
|
#
|
|
2374
2503
|
# Related: String#rpartition, String#split.
|
|
2375
2504
|
#
|
|
2376
|
-
def partition: (Regexp | string
|
|
2505
|
+
def partition: (Regexp | string pattern) -> [String, String, String]
|
|
2377
2506
|
|
|
2378
2507
|
# <!--
|
|
2379
2508
|
# rdoc-file=string.c
|
|
@@ -2387,7 +2516,7 @@ class String
|
|
|
2387
2516
|
#
|
|
2388
2517
|
# Related: String#concat.
|
|
2389
2518
|
#
|
|
2390
|
-
def prepend: (*string
|
|
2519
|
+
def prepend: (*string other_strings) -> self
|
|
2391
2520
|
|
|
2392
2521
|
# <!-- rdoc-file=string.c -->
|
|
2393
2522
|
# Replaces the contents of `self` with the contents of `other_string`:
|
|
@@ -2395,7 +2524,7 @@ class String
|
|
|
2395
2524
|
# s = 'foo' # => "foo"
|
|
2396
2525
|
# s.replace('bar') # => "bar"
|
|
2397
2526
|
#
|
|
2398
|
-
def replace: (string
|
|
2527
|
+
def replace: (string other_string) -> self
|
|
2399
2528
|
|
|
2400
2529
|
# <!--
|
|
2401
2530
|
# rdoc-file=string.c
|
|
@@ -2475,7 +2604,7 @@ class String
|
|
|
2475
2604
|
#
|
|
2476
2605
|
# Related: String#index.
|
|
2477
2606
|
#
|
|
2478
|
-
def rindex: (
|
|
2607
|
+
def rindex: (Regexp | string pattern, ?int offset) -> Integer?
|
|
2479
2608
|
|
|
2480
2609
|
# <!--
|
|
2481
2610
|
# rdoc-file=string.c
|
|
@@ -2500,7 +2629,7 @@ class String
|
|
|
2500
2629
|
#
|
|
2501
2630
|
# Related: String#ljust, String#center.
|
|
2502
2631
|
#
|
|
2503
|
-
def rjust: (int
|
|
2632
|
+
def rjust: (int size, ?string pad_string) -> String
|
|
2504
2633
|
|
|
2505
2634
|
# <!--
|
|
2506
2635
|
# rdoc-file=string.c
|
|
@@ -2532,7 +2661,7 @@ class String
|
|
|
2532
2661
|
#
|
|
2533
2662
|
# Related: String#partition, String#split.
|
|
2534
2663
|
#
|
|
2535
|
-
def rpartition: (
|
|
2664
|
+
def rpartition: (Regexp | string pattern) -> [String, String, String]
|
|
2536
2665
|
|
|
2537
2666
|
# <!--
|
|
2538
2667
|
# rdoc-file=string.c
|
|
@@ -2601,9 +2730,9 @@ class String
|
|
|
2601
2730
|
# rceu lowlr
|
|
2602
2731
|
#
|
|
2603
2732
|
def scan: (Regexp pattern) -> Array[String | Array[String]]
|
|
2604
|
-
| (Regexp pattern) { (String | Array[String]) -> void } -> self
|
|
2733
|
+
| (Regexp pattern) { (String | Array[String] matches) -> void } -> self
|
|
2605
2734
|
| (string pattern) -> Array[String]
|
|
2606
|
-
| (string pattern) { (String) -> void } -> self
|
|
2735
|
+
| (string pattern) { (String match) -> void } -> self
|
|
2607
2736
|
|
|
2608
2737
|
# <!--
|
|
2609
2738
|
# rdoc-file=string.c
|
|
@@ -2635,8 +2764,8 @@ class String
|
|
|
2635
2764
|
# "\x81"
|
|
2636
2765
|
# "\x81"
|
|
2637
2766
|
#
|
|
2638
|
-
def scrub: (?string
|
|
2639
|
-
| () { (String bytes) -> string } -> String
|
|
2767
|
+
def scrub: (?string? replacement) -> String
|
|
2768
|
+
| (?nil) { (String bytes) -> string } -> String
|
|
2640
2769
|
|
|
2641
2770
|
# <!--
|
|
2642
2771
|
# rdoc-file=string.c
|
|
@@ -2646,8 +2775,8 @@ class String
|
|
|
2646
2775
|
# -->
|
|
2647
2776
|
# Like String#scrub, except that any replacements are made in `self`.
|
|
2648
2777
|
#
|
|
2649
|
-
def scrub!: (?string
|
|
2650
|
-
| () { (String bytes) -> string } -> self
|
|
2778
|
+
def scrub!: (?string? replacement) -> self
|
|
2779
|
+
| (?nil) { (String bytes) -> string } -> self
|
|
2651
2780
|
|
|
2652
2781
|
# <!--
|
|
2653
2782
|
# rdoc-file=string.c
|
|
@@ -2661,7 +2790,7 @@ class String
|
|
|
2661
2790
|
#
|
|
2662
2791
|
# Related: String#getbyte.
|
|
2663
2792
|
#
|
|
2664
|
-
def setbyte: (int index,
|
|
2793
|
+
def setbyte: [T < _ToInt] (int index, T byte) -> T
|
|
2665
2794
|
|
|
2666
2795
|
# <!-- rdoc-file=string.c -->
|
|
2667
2796
|
# Returns the count of characters (not bytes) in `self`:
|
|
@@ -2676,8 +2805,6 @@ class String
|
|
|
2676
2805
|
# 'тест'.bytesize # => 8
|
|
2677
2806
|
# 'こんにちは'.bytesize # => 15
|
|
2678
2807
|
#
|
|
2679
|
-
# String#size is an alias for String#length.
|
|
2680
|
-
#
|
|
2681
2808
|
alias size length
|
|
2682
2809
|
|
|
2683
2810
|
# <!-- rdoc-file=string.c -->
|
|
@@ -2706,10 +2833,10 @@ class String
|
|
|
2706
2833
|
# string.slice!("r") #=> "r"
|
|
2707
2834
|
# string #=> "Thing"
|
|
2708
2835
|
#
|
|
2709
|
-
def slice!: (int
|
|
2710
|
-
| (
|
|
2711
|
-
| (
|
|
2712
|
-
| (
|
|
2836
|
+
def slice!: (int index, ?int length) -> String?
|
|
2837
|
+
| (range[int?] range) -> String?
|
|
2838
|
+
| (String substring) -> String?
|
|
2839
|
+
| (Regexp regexp, ?MatchData::capture backref) -> String?
|
|
2713
2840
|
|
|
2714
2841
|
# <!--
|
|
2715
2842
|
# rdoc-file=string.c
|
|
@@ -2797,8 +2924,8 @@ class String
|
|
|
2797
2924
|
#
|
|
2798
2925
|
# Related: String#partition, String#rpartition.
|
|
2799
2926
|
#
|
|
2800
|
-
def split: (?Regexp | string pattern, ?int limit) -> Array[String]
|
|
2801
|
-
| (?Regexp | string pattern, ?int limit) { (String) -> void } -> self
|
|
2927
|
+
def split: (?Regexp | string | nil pattern, ?int limit) -> Array[String]
|
|
2928
|
+
| (?Regexp | string | nil pattern, ?int limit) { (String substring) -> void } -> self
|
|
2802
2929
|
|
|
2803
2930
|
# <!--
|
|
2804
2931
|
# rdoc-file=string.c
|
|
@@ -2816,7 +2943,7 @@ class String
|
|
|
2816
2943
|
# " now is the".squeeze(" ") #=> " now is the"
|
|
2817
2944
|
# "putters shoot balls".squeeze("m-z") #=> "puters shot balls"
|
|
2818
2945
|
#
|
|
2819
|
-
def squeeze: (*
|
|
2946
|
+
def squeeze: (*selector selectors) -> String
|
|
2820
2947
|
|
|
2821
2948
|
# <!--
|
|
2822
2949
|
# rdoc-file=string.c
|
|
@@ -2825,7 +2952,7 @@ class String
|
|
|
2825
2952
|
# Like String#squeeze, but modifies `self` in place. Returns `self` if any
|
|
2826
2953
|
# changes were made, `nil` otherwise.
|
|
2827
2954
|
#
|
|
2828
|
-
def squeeze!: (*
|
|
2955
|
+
def squeeze!: (*selector selectors) -> self?
|
|
2829
2956
|
|
|
2830
2957
|
# <!--
|
|
2831
2958
|
# rdoc-file=string.c
|
|
@@ -2851,7 +2978,7 @@ class String
|
|
|
2851
2978
|
#
|
|
2852
2979
|
# Related: String#end_with?.
|
|
2853
2980
|
#
|
|
2854
|
-
def start_with?: (*string prefixes) -> bool
|
|
2981
|
+
def start_with?: (*Regexp | string prefixes) -> bool
|
|
2855
2982
|
|
|
2856
2983
|
# <!--
|
|
2857
2984
|
# rdoc-file=string.c
|
|
@@ -2892,7 +3019,7 @@ class String
|
|
|
2892
3019
|
#
|
|
2893
3020
|
# Related: String#sub!, String#gsub, String#gsub!.
|
|
2894
3021
|
#
|
|
2895
|
-
def sub: (Regexp | string pattern, string |
|
|
3022
|
+
def sub: (Regexp | string pattern, string | hash[String, _ToS] replacement) -> String
|
|
2896
3023
|
| (Regexp | string pattern) { (String match) -> _ToS } -> String
|
|
2897
3024
|
|
|
2898
3025
|
# <!--
|
|
@@ -2907,8 +3034,8 @@ class String
|
|
|
2907
3034
|
#
|
|
2908
3035
|
# Related: String#sub, String#gsub, String#gsub!.
|
|
2909
3036
|
#
|
|
2910
|
-
def sub!: (Regexp | string pattern, string |
|
|
2911
|
-
| (Regexp | string pattern) { (String match) -> _ToS } ->
|
|
3037
|
+
def sub!: (Regexp | string pattern, string | hash[String, _ToS] replacement) -> self?
|
|
3038
|
+
| (Regexp | string pattern) { (String match) -> _ToS } -> self?
|
|
2912
3039
|
|
|
2913
3040
|
# <!--
|
|
2914
3041
|
# rdoc-file=string.c
|
|
@@ -2965,8 +3092,6 @@ class String
|
|
|
2965
3092
|
#
|
|
2966
3093
|
# ''.succ # => ""
|
|
2967
3094
|
#
|
|
2968
|
-
# String#next is an alias for String#succ.
|
|
2969
|
-
#
|
|
2970
3095
|
def succ: () -> String
|
|
2971
3096
|
|
|
2972
3097
|
# <!--
|
|
@@ -2975,9 +3100,7 @@ class String
|
|
|
2975
3100
|
# -->
|
|
2976
3101
|
# Equivalent to String#succ, but modifies `self` in place; returns `self`.
|
|
2977
3102
|
#
|
|
2978
|
-
|
|
2979
|
-
#
|
|
2980
|
-
def succ!: () -> String
|
|
3103
|
+
def succ!: () -> self
|
|
2981
3104
|
|
|
2982
3105
|
# <!--
|
|
2983
3106
|
# rdoc-file=string.c
|
|
@@ -2994,7 +3117,7 @@ class String
|
|
|
2994
3117
|
#
|
|
2995
3118
|
# This is not a particularly strong checksum.
|
|
2996
3119
|
#
|
|
2997
|
-
def sum: (?int
|
|
3120
|
+
def sum: (?int bits) -> Integer
|
|
2998
3121
|
|
|
2999
3122
|
# <!--
|
|
3000
3123
|
# rdoc-file=string.c
|
|
@@ -3117,7 +3240,7 @@ class String
|
|
|
3117
3240
|
# 'abcdef'.to_i # => 0
|
|
3118
3241
|
# '2'.to_i(2) # => 0
|
|
3119
3242
|
#
|
|
3120
|
-
def to_i: (?int
|
|
3243
|
+
def to_i: (?int radix) -> Integer
|
|
3121
3244
|
|
|
3122
3245
|
# <!--
|
|
3123
3246
|
# rdoc-file=rational.c
|
|
@@ -3155,17 +3278,13 @@ class String
|
|
|
3155
3278
|
# Returns `self` if `self` is a String, or `self` converted to a String if
|
|
3156
3279
|
# `self` is a subclass of String.
|
|
3157
3280
|
#
|
|
3158
|
-
# String#to_str is an alias for String#to_s.
|
|
3159
|
-
#
|
|
3160
3281
|
def to_s: () -> String
|
|
3161
3282
|
|
|
3162
3283
|
# <!-- rdoc-file=string.c -->
|
|
3163
3284
|
# Returns `self` if `self` is a String, or `self` converted to a String if
|
|
3164
3285
|
# `self` is a subclass of String.
|
|
3165
3286
|
#
|
|
3166
|
-
|
|
3167
|
-
#
|
|
3168
|
-
def to_str: () -> String
|
|
3287
|
+
alias to_str to_s
|
|
3169
3288
|
|
|
3170
3289
|
# <!-- rdoc-file=string.c -->
|
|
3171
3290
|
# Returns the Symbol corresponding to *str*, creating the symbol if it did not
|
|
@@ -3182,7 +3301,7 @@ class String
|
|
|
3182
3301
|
#
|
|
3183
3302
|
# 'cat and dog'.to_sym #=> :"cat and dog"
|
|
3184
3303
|
#
|
|
3185
|
-
|
|
3304
|
+
alias to_sym intern
|
|
3186
3305
|
|
|
3187
3306
|
# <!--
|
|
3188
3307
|
# rdoc-file=string.c
|
|
@@ -3222,7 +3341,7 @@ class String
|
|
|
3222
3341
|
# 'i-b-m'.tr('b\-z', 'a-z') # => "ibabm" # Escaped embedded hyphen.
|
|
3223
3342
|
# 'foo\\bar'.tr('ab\\', 'XYZ') # => "fooZYXr" # Escaped backslash.
|
|
3224
3343
|
#
|
|
3225
|
-
def tr: (
|
|
3344
|
+
def tr: (selector source, string relpacement) -> String
|
|
3226
3345
|
|
|
3227
3346
|
# <!--
|
|
3228
3347
|
# rdoc-file=string.c
|
|
@@ -3231,7 +3350,7 @@ class String
|
|
|
3231
3350
|
# Like String#tr, but modifies `self` in place. Returns `self` if any changes
|
|
3232
3351
|
# were made, `nil` otherwise.
|
|
3233
3352
|
#
|
|
3234
|
-
def tr!: (
|
|
3353
|
+
def tr!: (selector source, string relpacement) -> self?
|
|
3235
3354
|
|
|
3236
3355
|
# <!--
|
|
3237
3356
|
# rdoc-file=string.c
|
|
@@ -3246,7 +3365,7 @@ class String
|
|
|
3246
3365
|
#
|
|
3247
3366
|
# Related: String#squeeze.
|
|
3248
3367
|
#
|
|
3249
|
-
def tr_s: (
|
|
3368
|
+
def tr_s: (selector source, string replacement) -> String
|
|
3250
3369
|
|
|
3251
3370
|
# <!--
|
|
3252
3371
|
# rdoc-file=string.c
|
|
@@ -3257,7 +3376,7 @@ class String
|
|
|
3257
3376
|
#
|
|
3258
3377
|
# Related: String#squeeze!.
|
|
3259
3378
|
#
|
|
3260
|
-
def tr_s!: (
|
|
3379
|
+
def tr_s!: (selector source, string replacement) -> self?
|
|
3261
3380
|
|
|
3262
3381
|
# <!--
|
|
3263
3382
|
# rdoc-file=string.c
|
|
@@ -3309,7 +3428,7 @@ class String
|
|
|
3309
3428
|
#
|
|
3310
3429
|
# Related: String#unicode_normalize!, String#unicode_normalized?.
|
|
3311
3430
|
#
|
|
3312
|
-
def unicode_normalize: (?:nfc | :nfd | :nfkc | :nfkd) ->
|
|
3431
|
+
def unicode_normalize: (?:nfc | :nfd | :nfkc | :nfkd form) -> self
|
|
3313
3432
|
|
|
3314
3433
|
# <!--
|
|
3315
3434
|
# rdoc-file=string.c
|
|
@@ -3320,7 +3439,7 @@ class String
|
|
|
3320
3439
|
#
|
|
3321
3440
|
# Related String#unicode_normalized?.
|
|
3322
3441
|
#
|
|
3323
|
-
def unicode_normalize!: (?:nfc | :nfd | :nfkc | :nfkd) ->
|
|
3442
|
+
def unicode_normalize!: (?:nfc | :nfd | :nfkc | :nfkd form) -> self
|
|
3324
3443
|
|
|
3325
3444
|
# <!--
|
|
3326
3445
|
# rdoc-file=string.c
|
|
@@ -3353,7 +3472,8 @@ class String
|
|
|
3353
3472
|
# Extracts data from `self`, forming objects that become the elements of a new
|
|
3354
3473
|
# array; returns that array. See [Packed Data](rdoc-ref:packed_data.rdoc).
|
|
3355
3474
|
#
|
|
3356
|
-
def unpack: (
|
|
3475
|
+
def unpack: (string template, ?offset: int) -> Array[Integer | Float | String | nil]
|
|
3476
|
+
| (string template, ?offset: int) { (Integer | Float | String | nil value) -> void } -> nil
|
|
3357
3477
|
|
|
3358
3478
|
# <!--
|
|
3359
3479
|
# rdoc-file=pack.rb
|
|
@@ -3362,7 +3482,7 @@ class String
|
|
|
3362
3482
|
# Like String#unpack, but unpacks and returns only the first extracted object.
|
|
3363
3483
|
# See [Packed Data](rdoc-ref:packed_data.rdoc).
|
|
3364
3484
|
#
|
|
3365
|
-
def unpack1: (
|
|
3485
|
+
def unpack1: (string template, ?offset: int) -> (Integer | Float | String)?
|
|
3366
3486
|
|
|
3367
3487
|
# <!--
|
|
3368
3488
|
# rdoc-file=string.c
|
|
@@ -3439,8 +3559,8 @@ class String
|
|
|
3439
3559
|
#
|
|
3440
3560
|
# 'a8'.upto('b6') # => #<Enumerator: "a8":upto("b6")>
|
|
3441
3561
|
#
|
|
3442
|
-
def upto: (string
|
|
3443
|
-
| (string
|
|
3562
|
+
def upto: (string other_string, ?boolish exclusive) -> Enumerator[String, self]
|
|
3563
|
+
| (string other_string, ?boolish exclusive) { (String s) -> void } -> self
|
|
3444
3564
|
|
|
3445
3565
|
# <!--
|
|
3446
3566
|
# rdoc-file=string.c
|
|
@@ -3453,79 +3573,12 @@ class String
|
|
|
3453
3573
|
# "\x80".force_encoding("UTF-8").valid_encoding? # => false
|
|
3454
3574
|
#
|
|
3455
3575
|
def valid_encoding?: () -> bool
|
|
3456
|
-
|
|
3457
|
-
private
|
|
3458
|
-
|
|
3459
|
-
# <!--
|
|
3460
|
-
# rdoc-file=string.c
|
|
3461
|
-
# - String.new(string = '', **opts) -> new_string
|
|
3462
|
-
# -->
|
|
3463
|
-
# Returns a new String that is a copy of `string`.
|
|
3464
|
-
#
|
|
3465
|
-
# With no arguments, returns the empty string with the Encoding `ASCII-8BIT`:
|
|
3466
|
-
#
|
|
3467
|
-
# s = String.new
|
|
3468
|
-
# s # => ""
|
|
3469
|
-
# s.encoding # => #<Encoding:ASCII-8BIT>
|
|
3470
|
-
#
|
|
3471
|
-
# With optional argument `string` and no keyword arguments, returns a copy of
|
|
3472
|
-
# `string` with the same encoding:
|
|
3473
|
-
#
|
|
3474
|
-
# String.new('foo') # => "foo"
|
|
3475
|
-
# String.new('тест') # => "тест"
|
|
3476
|
-
# String.new('こんにちは') # => "こんにちは"
|
|
3477
|
-
#
|
|
3478
|
-
# (Unlike String.new, a [string
|
|
3479
|
-
# literal](rdoc-ref:syntax/literals.rdoc@String+Literals) like `''` or a [here
|
|
3480
|
-
# document literal](rdoc-ref:syntax/literals.rdoc@Here+Document+Literals) always
|
|
3481
|
-
# has [script encoding](rdoc-ref:encodings.rdoc@Script+Encoding).)
|
|
3482
|
-
#
|
|
3483
|
-
# With optional keyword argument `encoding`, returns a copy of `string` with the
|
|
3484
|
-
# specified encoding; the `encoding` may be an Encoding object, an encoding
|
|
3485
|
-
# name, or an encoding name alias:
|
|
3486
|
-
#
|
|
3487
|
-
# String.new('foo', encoding: Encoding::US_ASCII).encoding # => #<Encoding:US-ASCII>
|
|
3488
|
-
# String.new('foo', encoding: 'US-ASCII').encoding # => #<Encoding:US-ASCII>
|
|
3489
|
-
# String.new('foo', encoding: 'ASCII').encoding # => #<Encoding:US-ASCII>
|
|
3490
|
-
#
|
|
3491
|
-
# The given encoding need not be valid for the string's content, and that
|
|
3492
|
-
# validity is not checked:
|
|
3493
|
-
#
|
|
3494
|
-
# s = String.new('こんにちは', encoding: 'ascii')
|
|
3495
|
-
# s.valid_encoding? # => false
|
|
3496
|
-
#
|
|
3497
|
-
# But the given `encoding` itself is checked:
|
|
3498
|
-
#
|
|
3499
|
-
# String.new('foo', encoding: 'bar') # Raises ArgumentError.
|
|
3500
|
-
#
|
|
3501
|
-
# With optional keyword argument `capacity`, returns a copy of `string` (or an
|
|
3502
|
-
# empty string, if `string` is not given); the given `capacity` is advisory
|
|
3503
|
-
# only, and may or may not set the size of the internal buffer, which may in
|
|
3504
|
-
# turn affect performance:
|
|
3505
|
-
#
|
|
3506
|
-
# String.new(capacity: 1)
|
|
3507
|
-
# String.new('foo', capacity: 4096)
|
|
3508
|
-
#
|
|
3509
|
-
# The `string`, `encoding`, and `capacity` arguments may all be used together:
|
|
3510
|
-
#
|
|
3511
|
-
# String.new('hello', encoding: 'UTF-8', capacity: 25)
|
|
3512
|
-
#
|
|
3513
|
-
def initialize: (?string str, ?encoding: encoding, ?capacity: int) -> void
|
|
3514
|
-
|
|
3515
|
-
# <!--
|
|
3516
|
-
# rdoc-file=string.c
|
|
3517
|
-
# - replace(other_string) -> self
|
|
3518
|
-
# -->
|
|
3519
|
-
# Replaces the contents of `self` with the contents of `other_string`:
|
|
3520
|
-
#
|
|
3521
|
-
# s = 'foo' # => "foo"
|
|
3522
|
-
# s.replace('bar') # => "bar"
|
|
3523
|
-
#
|
|
3524
|
-
alias initialize_copy replace
|
|
3525
3576
|
end
|
|
3526
3577
|
|
|
3578
|
+
%a{steep:deprecated}
|
|
3527
3579
|
interface _ArefFromStringToString
|
|
3528
3580
|
def []: (String) -> String
|
|
3529
3581
|
end
|
|
3530
3582
|
|
|
3583
|
+
%a{steep:deprecated}
|
|
3531
3584
|
type String::encode_fallback = Hash[String, String] | Proc | Method | _ArefFromStringToString
|