core/encoding.rbs in rbs-2.0.0 vs core/encoding.rbs in rbs-2.1.0
- old
+ new
@@ -1,153 +1,461 @@
+# <!-- rdoc-file=encoding.c -->
+# An Encoding instance represents a character encoding usable in Ruby. It is
+# defined as a constant under the Encoding namespace. It has a name and
+# optionally, aliases:
+#
+# Encoding::ISO_8859_1.name
+# #=> "ISO-8859-1"
+#
+# Encoding::ISO_8859_1.names
+# #=> ["ISO-8859-1", "ISO8859-1"]
+#
+# Ruby methods dealing with encodings return or accept Encoding instances as
+# arguments (when a method accepts an Encoding instance as an argument, it can
+# be passed an Encoding name or alias instead).
+#
+# "some string".encoding
+# #=> #<Encoding:UTF-8>
+#
+# string = "some string".encode(Encoding::ISO_8859_1)
+# #=> "some string"
+# string.encoding
+# #=> #<Encoding:ISO-8859-1>
+#
+# "some string".encode "ISO-8859-1"
+# #=> "some string"
+#
+# Encoding::ASCII_8BIT is a special encoding that is usually used for a byte
+# string, not a character string. But as the name insists, its characters in the
+# range of ASCII are considered as ASCII characters. This is useful when you
+# use ASCII-8BIT characters with other ASCII compatible characters.
+#
+# ## Changing an encoding
+#
+# The associated Encoding of a String can be changed in two different ways.
+#
+# First, it is possible to set the Encoding of a string to a new Encoding
+# without changing the internal byte representation of the string, with
+# String#force_encoding. This is how you can tell Ruby the correct encoding of a
+# string.
+#
+# string
+# #=> "R\xC3\xA9sum\xC3\xA9"
+# string.encoding
+# #=> #<Encoding:ISO-8859-1>
+# string.force_encoding(Encoding::UTF_8)
+# #=> "R\u00E9sum\u00E9"
+#
+# Second, it is possible to transcode a string, i.e. translate its internal byte
+# representation to another encoding. Its associated encoding is also set to the
+# other encoding. See String#encode for the various forms of transcoding, and
+# the Encoding::Converter class for additional control over the transcoding
+# process.
+#
+# string
+# #=> "R\u00E9sum\u00E9"
+# string.encoding
+# #=> #<Encoding:UTF-8>
+# string = string.encode!(Encoding::ISO_8859_1)
+# #=> "R\xE9sum\xE9"
+# string.encoding
+# #=> #<Encoding::ISO-8859-1>
+#
+# ## Script encoding
+#
+# All Ruby script code has an associated Encoding which any String literal
+# created in the source code will be associated to.
+#
+# The default script encoding is Encoding::UTF_8 after v2.0, but it can be
+# changed by a magic comment on the first line of the source code file (or
+# second line, if there is a shebang line on the first). The comment must
+# contain the word `coding` or `encoding`, followed by a colon, space and the
+# Encoding name or alias:
+#
+# # encoding: UTF-8
+#
+# "some string".encoding
+# #=> #<Encoding:UTF-8>
+#
+# The `__ENCODING__` keyword returns the script encoding of the file which the
+# keyword is written:
+#
+# # encoding: ISO-8859-1
+#
+# __ENCODING__
+# #=> #<Encoding:ISO-8859-1>
+#
+# `ruby -K` will change the default locale encoding, but this is not
+# recommended. Ruby source files should declare its script encoding by a magic
+# comment even when they only depend on US-ASCII strings or regular expressions.
+#
+# ## Locale encoding
+#
+# The default encoding of the environment. Usually derived from locale.
+#
+# see Encoding.locale_charmap, Encoding.find('locale')
+#
+# ## Filesystem encoding
+#
+# The default encoding of strings from the filesystem of the environment. This
+# is used for strings of file names or paths.
+#
+# see Encoding.find('filesystem')
+#
+# ## External encoding
+#
+# Each IO object has an external encoding which indicates the encoding that Ruby
+# will use to read its data. By default Ruby sets the external encoding of an IO
+# object to the default external encoding. The default external encoding is set
+# by locale encoding or the interpreter `-E` option. Encoding.default_external
+# returns the current value of the external encoding.
+#
+# ENV["LANG"]
+# #=> "UTF-8"
+# Encoding.default_external
+# #=> #<Encoding:UTF-8>
+#
+# $ ruby -E ISO-8859-1 -e "p Encoding.default_external"
+# #<Encoding:ISO-8859-1>
+#
+# $ LANG=C ruby -e 'p Encoding.default_external'
+# #<Encoding:US-ASCII>
+#
+# The default external encoding may also be set through
+# Encoding.default_external=, but you should not do this as strings created
+# before and after the change will have inconsistent encodings. Instead use
+# `ruby -E` to invoke ruby with the correct external encoding.
+#
+# When you know that the actual encoding of the data of an IO object is not the
+# default external encoding, you can reset its external encoding with
+# IO#set_encoding or set it at IO object creation (see IO.new options).
+#
+# ## Internal encoding
+#
+# To process the data of an IO object which has an encoding different from its
+# external encoding, you can set its internal encoding. Ruby will use this
+# internal encoding to transcode the data when it is read from the IO object.
+#
+# Conversely, when data is written to the IO object it is transcoded from the
+# internal encoding to the external encoding of the IO object.
+#
+# The internal encoding of an IO object can be set with IO#set_encoding or at IO
+# object creation (see IO.new options).
+#
+# The internal encoding is optional and when not set, the Ruby default internal
+# encoding is used. If not explicitly set this default internal encoding is
+# `nil` meaning that by default, no transcoding occurs.
+#
+# The default internal encoding can be set with the interpreter option `-E`.
+# Encoding.default_internal returns the current internal encoding.
+#
+# $ ruby -e 'p Encoding.default_internal'
+# nil
+#
+# $ ruby -E ISO-8859-1:UTF-8 -e "p [Encoding.default_external, \
+# Encoding.default_internal]"
+# [#<Encoding:ISO-8859-1>, #<Encoding:UTF-8>]
+#
+# The default internal encoding may also be set through
+# Encoding.default_internal=, but you should not do this as strings created
+# before and after the change will have inconsistent encodings. Instead use
+# `ruby -E` to invoke ruby with the correct internal encoding.
+#
+# ## IO encoding example
+#
+# In the following example a UTF-8 encoded string "Ru00E9sumu00E9" is transcoded
+# for output to ISO-8859-1 encoding, then read back in and transcoded to UTF-8:
+#
+# string = "R\u00E9sum\u00E9"
+#
+# open("transcoded.txt", "w:ISO-8859-1") do |io|
+# io.write(string)
+# end
+#
+# puts "raw text:"
+# p File.binread("transcoded.txt")
+# puts
+#
+# open("transcoded.txt", "r:ISO-8859-1:UTF-8") do |io|
+# puts "transcoded text:"
+# p io.read
+# end
+#
+# While writing the file, the internal encoding is not specified as it is only
+# necessary for reading. While reading the file both the internal and external
+# encoding must be specified to obtain the correct result.
+#
+# $ ruby t.rb
+# raw text:
+# "R\xE9sum\xE9"
+#
+# transcoded text:
+# "R\u00E9sum\u00E9"
+#
class Encoding < Object
+ # <!--
+ # rdoc-file=encoding.c
+ # - Encoding.aliases -> {"alias1" => "orig1", "alias2" => "orig2", ...}
+ # -->
# Returns the hash of available encoding alias and original encoding name.
#
# Encoding.aliases
- # #=> {"BINARY"=>"ASCII-8BIT", "ASCII"=>"US-ASCII", "ANSI_X3.4-1986"=>"US-ASCII",
- # "SJIS"=>"Shift_JIS", "eucJP"=>"EUC-JP", "CP932"=>"Windows-31J"}
+ # #=> {"BINARY"=>"ASCII-8BIT", "ASCII"=>"US-ASCII", "ANSI_X3.4-1968"=>"US-ASCII",
+ # "SJIS"=>"Windows-31J", "eucJP"=>"EUC-JP", "CP932"=>"Windows-31J"}
+ #
def self.aliases: () -> ::Hash[String, String]
- def self.compatible?: (untyped obj1, untyped obj2) -> Encoding?
-
- # Returns default external encoding.
+ # <!--
+ # rdoc-file=encoding.c
+ # - Encoding.compatible?(obj1, obj2) -> enc or nil
+ # -->
+ # Checks the compatibility of two objects.
#
- # The default external encoding is used by default for strings created
- # from the following locations:
+ # If the objects are both strings they are compatible when they are
+ # concatenatable. The encoding of the concatenated string will be returned if
+ # they are compatible, nil if they are not.
#
- # - CSV
+ # Encoding.compatible?("\xa1".force_encoding("iso-8859-1"), "b")
+ # #=> #<Encoding:ISO-8859-1>
#
- # - [File](https://ruby-doc.org/core-2.6.3/File.html) data read from
- # disk
+ # Encoding.compatible?(
+ # "\xa1".force_encoding("iso-8859-1"),
+ # "\xa1\xa1".force_encoding("euc-jp"))
+ # #=> nil
#
- # - SDBM
+ # If the objects are non-strings their encodings are compatible when they have
+ # an encoding and:
+ # * Either encoding is US-ASCII compatible
+ # * One of the encodings is a 7-bit encoding
#
- # - StringIO
+ def self.compatible?: (untyped obj1, untyped obj2) -> Encoding?
+
+ # <!--
+ # rdoc-file=encoding.c
+ # - Encoding.default_external -> enc
+ # -->
+ # Returns default external encoding.
#
- # - Zlib::GzipReader
+ # The default external encoding is used by default for strings created from the
+ # following locations:
#
- # - Zlib::GzipWriter
+ # * CSV
+ # * File data read from disk
+ # * SDBM
+ # * StringIO
+ # * Zlib::GzipReader
+ # * Zlib::GzipWriter
+ # * String#inspect
+ # * Regexp#inspect
#
- # - [String\#inspect](https://ruby-doc.org/core-2.6.3/String.html#method-i-inspect)
#
- # - [Regexp\#inspect](https://ruby-doc.org/core-2.6.3/Regexp.html#method-i-inspect)
- #
# While strings created from these locations will have this encoding, the
- # encoding may not be valid. Be sure to check
- # [String\#valid\_encoding?](https://ruby-doc.org/core-2.6.3/String.html#method-i-valid_encoding-3F)
- # .
+ # encoding may not be valid. Be sure to check String#valid_encoding?.
#
- # [File](https://ruby-doc.org/core-2.6.3/File.html) data written to disk
- # will be transcoded to the default external encoding when written.
+ # File data written to disk will be transcoded to the default external encoding
+ # when written, if default_internal is not nil.
#
- # The default external encoding is initialized by the locale or -E option.
+ # The default external encoding is initialized by the -E option. If -E isn't
+ # set, it is initialized to UTF-8 on Windows and the locale on other operating
+ # systems.
+ #
def self.default_external: () -> Encoding
+ # <!--
+ # rdoc-file=encoding.c
+ # - Encoding.default_external = enc
+ # -->
+ # Sets default external encoding. You should not set Encoding::default_external
+ # in ruby code as strings created before changing the value may have a different
+ # encoding from strings created after the value was changed., instead you should
+ # use `ruby -E` to invoke ruby with the correct default_external.
+ #
+ # See Encoding::default_external for information on how the default external
+ # encoding is used.
+ #
def self.default_external=: (String arg0) -> String
| (Encoding arg0) -> Encoding
- # Returns default internal encoding. Strings will be transcoded to the
- # default internal encoding in the following places if the default
- # internal encoding is not nil:
+ # <!--
+ # rdoc-file=encoding.c
+ # - Encoding.default_internal -> enc
+ # -->
+ # Returns default internal encoding. Strings will be transcoded to the default
+ # internal encoding in the following places if the default internal encoding is
+ # not nil:
#
- # - CSV
+ # * CSV
+ # * Etc.sysconfdir and Etc.systmpdir
+ # * File data read from disk
+ # * File names from Dir
+ # * Integer#chr
+ # * String#inspect and Regexp#inspect
+ # * Strings returned from Readline
+ # * Strings returned from SDBM
+ # * Time#zone
+ # * Values from ENV
+ # * Values in ARGV including $PROGRAM_NAME
#
- # - Etc.sysconfdir and Etc.systmpdir
#
- # - [File](https://ruby-doc.org/core-2.6.3/File.html) data read from
- # disk
+ # Additionally String#encode and String#encode! use the default internal
+ # encoding if no encoding is given.
#
- # - [File](https://ruby-doc.org/core-2.6.3/File.html) names from
- # [Dir](https://ruby-doc.org/core-2.6.3/Dir.html)
+ # The script encoding (__ENCODING__), not default_internal, is used as the
+ # encoding of created strings.
#
- # - [Integer\#chr](https://ruby-doc.org/core-2.6.3/Integer.html#method-i-chr)
+ # Encoding::default_internal is initialized with -E option or nil otherwise.
#
- # - [String\#inspect](https://ruby-doc.org/core-2.6.3/String.html#method-i-inspect)
- # and
- # [Regexp\#inspect](https://ruby-doc.org/core-2.6.3/Regexp.html#method-i-inspect)
+ def self.default_internal: () -> Encoding?
+
+ # <!--
+ # rdoc-file=encoding.c
+ # - Encoding.default_internal = enc or nil
+ # -->
+ # Sets default internal encoding or removes default internal encoding when
+ # passed nil. You should not set Encoding::default_internal in ruby code as
+ # strings created before changing the value may have a different encoding from
+ # strings created after the change. Instead you should use `ruby -E` to invoke
+ # ruby with the correct default_internal.
#
- # - Strings returned from Readline
+ # See Encoding::default_internal for information on how the default internal
+ # encoding is used.
#
- # - Strings returned from SDBM
+ def self.default_internal=: (String arg0) -> String?
+ | (Encoding arg0) -> Encoding?
+ | (nil arg0) -> nil
+
+ # <!--
+ # rdoc-file=encoding.c
+ # - Encoding.find(string) -> enc
+ # -->
+ # Search the encoding with specified *name*. *name* should be a string.
#
- # - [Time\#zone](https://ruby-doc.org/core-2.6.3/Time.html#method-i-zone)
+ # Encoding.find("US-ASCII") #=> #<Encoding:US-ASCII>
#
- # - Values from [ENV](https://ruby-doc.org/core-2.6.3/ENV.html)
+ # Names which this method accept are encoding names and aliases including
+ # following special aliases
#
- # - Values in ARGV including $PROGRAM\_NAME
+ # "external"
+ # : default external encoding
+ # "internal"
+ # : default internal encoding
+ # "locale"
+ # : locale encoding
+ # "filesystem"
+ # : filesystem encoding
#
- # Additionally
- # [String\#encode](https://ruby-doc.org/core-2.6.3/String.html#method-i-encode)
- # and
- # [String\#encode\!](https://ruby-doc.org/core-2.6.3/String.html#method-i-encode-21)
- # use the default internal encoding if no encoding is given.
#
- # The locale encoding (\_\_ENCODING\_\_), not
- # [::default\_internal](Encoding.downloaded.ruby_doc#method-c-default_internal)
- # , is used as the encoding of created strings.
+ # An ArgumentError is raised when no encoding with *name*. Only
+ # `Encoding.find("internal")` however returns nil when no encoding named
+ # "internal", in other words, when Ruby has no default internal encoding.
#
- # [::default\_internal](Encoding.downloaded.ruby_doc#method-c-default_internal)
- # is initialized by the source file's internal\_encoding or -E option.
- def self.default_internal: () -> Encoding?
-
- def self.default_internal=: (String arg0) -> String?
- | (Encoding arg0) -> Encoding?
- | (nil arg0) -> nil
-
def self.find: (String | Encoding arg0) -> Encoding
+ # <!--
+ # rdoc-file=encoding.c
+ # - Encoding.list -> [enc1, enc2, ...]
+ # -->
+ # Returns the list of loaded encodings.
+ #
+ # Encoding.list
+ # #=> [#<Encoding:ASCII-8BIT>, #<Encoding:UTF-8>,
+ # #<Encoding:ISO-2022-JP (dummy)>]
+ #
+ # Encoding.find("US-ASCII")
+ # #=> #<Encoding:US-ASCII>
+ #
+ # Encoding.list
+ # #=> [#<Encoding:ASCII-8BIT>, #<Encoding:UTF-8>,
+ # #<Encoding:US-ASCII>, #<Encoding:ISO-2022-JP (dummy)>]
+ #
def self.list: () -> ::Array[Encoding]
+ # <!--
+ # rdoc-file=encoding.c
+ # - Encoding.name_list -> ["enc1", "enc2", ...]
+ # -->
# Returns the list of available encoding names.
#
# Encoding.name_list
# #=> ["US-ASCII", "ASCII-8BIT", "UTF-8",
# "ISO-8859-1", "Shift_JIS", "EUC-JP",
# "Windows-31J",
# "BINARY", "CP932", "eucJP"]
+ #
def self.name_list: () -> ::Array[String]
+ # <!--
+ # rdoc-file=encoding.c
+ # - enc.ascii_compatible? -> true or false
+ # -->
# Returns whether ASCII-compatible or not.
#
- # ```ruby
- # Encoding::UTF_8.ascii_compatible? #=> true
- # Encoding::UTF_16BE.ascii_compatible? #=> false
- # ```
+ # Encoding::UTF_8.ascii_compatible? #=> true
+ # Encoding::UTF_16BE.ascii_compatible? #=> false
+ #
def ascii_compatible?: () -> bool
- # Returns true for dummy encodings. A dummy encoding is an encoding for
- # which character handling is not properly implemented. It is used for
- # stateful encodings.
+ # <!--
+ # rdoc-file=encoding.c
+ # - enc.dummy? -> true or false
+ # -->
+ # Returns true for dummy encodings. A dummy encoding is an encoding for which
+ # character handling is not properly implemented. It is used for stateful
+ # encodings.
#
- # ```ruby
- # Encoding::ISO_2022_JP.dummy? #=> true
- # Encoding::UTF_8.dummy? #=> false
- # ```
+ # Encoding::ISO_2022_JP.dummy? #=> true
+ # Encoding::UTF_8.dummy? #=> false
+ #
def dummy?: () -> bool
+ # <!--
+ # rdoc-file=encoding.c
+ # - enc.inspect -> string
+ # -->
+ # Returns a string which represents the encoding for programmers.
+ #
+ # Encoding::UTF_8.inspect #=> "#<Encoding:UTF-8>"
+ # Encoding::ISO_2022_JP.inspect #=> "#<Encoding:ISO-2022-JP (dummy)>"
+ #
def inspect: () -> String
+ # <!-- rdoc-file=encoding.c -->
# Returns the name of the encoding.
#
- # ```ruby
- # Encoding::UTF_8.name #=> "UTF-8"
- # ```
+ # Encoding::UTF_8.name #=> "UTF-8"
+ #
def name: () -> String
+ # <!--
+ # rdoc-file=encoding.c
+ # - enc.names -> array
+ # -->
# Returns the list of name and aliases of the encoding.
#
- # ```ruby
- # Encoding::WINDOWS_31J.names #=> ["Windows-31J", "CP932", "csWindows31J"]
- # ```
+ # Encoding::WINDOWS_31J.names #=> ["Windows-31J", "CP932", "csWindows31J", "SJIS", "PCK"]
+ #
def names: () -> ::Array[String]
+ # <!--
+ # rdoc-file=encoding.c
+ # - enc.replicate(name) -> encoding
+ # -->
+ # Returns a replicated encoding of *enc* whose name is *name*. The new encoding
+ # should have the same byte structure of *enc*. If *name* is used by another
+ # encoding, raise ArgumentError.
+ #
def replicate: (String name) -> Encoding
+ # <!--
+ # rdoc-file=encoding.c
+ # - enc.name -> string
+ # - enc.to_s -> string
+ # -->
# Returns the name of the encoding.
#
- # ```ruby
- # Encoding::UTF_8.name #=> "UTF-8"
- # ```
+ # Encoding::UTF_8.name #=> "UTF-8"
+ #
def to_s: () -> String
end
Encoding::ANSI_X3_4_1968: Encoding
@@ -565,45 +873,132 @@
Encoding::Windows_31J: Encoding
Encoding::Windows_874: Encoding
+# <!-- rdoc-file=transcode.c -->
+# Encoding conversion class.
+#
class Encoding::Converter < Object
end
+# <!-- rdoc-file=transcode.c -->
+# AFTER_OUTPUT
+#
+# Stop converting after some output is complete but before all of the input was
+# consumed. See primitive_convert for an example.
+#
Encoding::Converter::AFTER_OUTPUT: Integer
+# <!-- rdoc-file=transcode.c -->
+# CRLF_NEWLINE_DECORATOR
+#
+# Decorator for converting LF to CRLF
+#
Encoding::Converter::CRLF_NEWLINE_DECORATOR: Integer
+# <!-- rdoc-file=transcode.c -->
+# CR_NEWLINE_DECORATOR
+#
+# Decorator for converting LF to CR
+#
Encoding::Converter::CR_NEWLINE_DECORATOR: Integer
+# <!-- rdoc-file=transcode.c -->
+# INVALID_MASK
+#
+# Mask for invalid byte sequences
+#
Encoding::Converter::INVALID_MASK: Integer
+# <!-- rdoc-file=transcode.c -->
+# INVALID_REPLACE
+#
+# Replace invalid byte sequences
+#
Encoding::Converter::INVALID_REPLACE: Integer
+# <!-- rdoc-file=transcode.c -->
+# PARTIAL_INPUT
+#
+# Indicates the source may be part of a larger string. See primitive_convert
+# for an example.
+#
Encoding::Converter::PARTIAL_INPUT: Integer
+# <!-- rdoc-file=transcode.c -->
+# UNDEF_HEX_CHARREF
+#
+# Replace byte sequences that are undefined in the destination encoding with an
+# XML hexadecimal character reference. This is valid for XML conversion.
+#
Encoding::Converter::UNDEF_HEX_CHARREF: Integer
+# <!-- rdoc-file=transcode.c -->
+# UNDEF_MASK
+#
+# Mask for a valid character in the source encoding but no related character(s)
+# in destination encoding.
+#
Encoding::Converter::UNDEF_MASK: Integer
+# <!-- rdoc-file=transcode.c -->
+# UNDEF_REPLACE
+#
+# Replace byte sequences that are undefined in the destination encoding.
+#
Encoding::Converter::UNDEF_REPLACE: Integer
+# <!-- rdoc-file=transcode.c -->
+# UNIVERSAL_NEWLINE_DECORATOR
+#
+# Decorator for converting CRLF and CR to LF
+#
Encoding::Converter::UNIVERSAL_NEWLINE_DECORATOR: Integer
+# <!-- rdoc-file=transcode.c -->
+# XML_ATTR_CONTENT_DECORATOR
+#
+# Escape as XML AttValue
+#
Encoding::Converter::XML_ATTR_CONTENT_DECORATOR: Integer
+# <!-- rdoc-file=transcode.c -->
+# XML_ATTR_QUOTE_DECORATOR
+#
+# Escape as XML AttValue
+#
Encoding::Converter::XML_ATTR_QUOTE_DECORATOR: Integer
+# <!-- rdoc-file=transcode.c -->
+# XML_TEXT_DECORATOR
+#
+# Escape as XML CharData
+#
Encoding::Converter::XML_TEXT_DECORATOR: Integer
+# <!-- rdoc-file=error.c -->
+# Raised by Encoding and String methods when the source encoding is incompatible
+# with the target encoding.
+#
class Encoding::CompatibilityError < EncodingError
end
+# <!-- rdoc-file=transcode.c -->
+# Raised by transcoding methods when a named encoding does not correspond with a
+# known converter.
+#
class Encoding::ConverterNotFoundError < EncodingError
end
+# <!-- rdoc-file=transcode.c -->
+# Raised by Encoding and String methods when the string being transcoded
+# contains a byte invalid for the either the source or target encoding.
+#
class Encoding::InvalidByteSequenceError < EncodingError
end
+# <!-- rdoc-file=transcode.c -->
+# Raised by Encoding and String methods when a transcoding operation fails.
+#
class Encoding::UndefinedConversionError < EncodingError
end