File Manager

Current Path : /usr/lib/ruby/gems/3.0.0/gems/rbs-1.0.4/core/
Upload File :
Current File : //usr/lib/ruby/gems/3.0.0/gems/rbs-1.0.4/core/symbol.rbs

# Symbol objects represent names inside the Ruby interpreter. They are generated
# using the `:name` and `:"string"` literals syntax, and by the various `to_sym`
# methods. The same Symbol object will be created for a given name or string for
# the duration of a program's execution, regardless of the context or meaning of
# that name. Thus if `Fred` is a constant in one context, a method in another,
# and a class in a third, the Symbol `:Fred` will be the same object in all
# three contexts.
#
#     module One
#       class Fred
#       end
#       $f1 = :Fred
#     end
#     module Two
#       Fred = 1
#       $f2 = :Fred
#     end
#     def Fred()
#     end
#     $f3 = :Fred
#     $f1.object_id   #=> 2514190
#     $f2.object_id   #=> 2514190
#     $f3.object_id   #=> 2514190
#
class Symbol
  include Comparable

  # Returns an array of all the symbols currently in Ruby's symbol table.
  #
  #     Symbol.all_symbols.size    #=> 903
  #     Symbol.all_symbols[1,20]   #=> [:floor, :ARGV, :Binding, :symlink,
  #                                     :chown, :EOFError, :$;, :String,
  #                                     :LOCK_SH, :"setuid?", :$<,
  #                                     :default_proc, :compact, :extend,
  #                                     :Tms, :getwd, :$=, :ThreadGroup,
  #                                     :wait2, :$>]
  #
  def self.all_symbols: () -> ::Array[Symbol]

  public

  # Compares `symbol` with `other_symbol` after calling #to_s on each of the
  # symbols. Returns -1, 0, +1, or `nil` depending on whether `symbol` is less
  # than, equal to, or greater than `other_symbol`.
  #
  # `nil` is returned if the two values are incomparable.
  #
  # See String#<=> for more information.
  #
  def <=>: (untyped other) -> Integer?

  # Equality---If *sym* and *obj* are exactly the same symbol, returns `true`.
  #
  def ==: (untyped obj) -> bool

  # Equality---If *sym* and *obj* are exactly the same symbol, returns `true`.
  #
  def ===: (untyped obj) -> bool

  # Returns `sym.to_s =~ obj`.
  #
  def =~: (untyped obj) -> Integer?

  # Returns `sym.to_s[]`.
  #
  def []: (int index) -> String?
        | (int start, int length) -> String?
        | (Range[Integer?] range) -> String?
        | (Regexp regexp) -> String?
        | (Regexp regexp, int | String capture) -> String?
        | (String match_str) -> String?

  # Same as `sym.to_s.capitalize.intern`.
  #
  def capitalize: () -> Symbol
                | (:ascii | :lithuanian | :turkic) -> Symbol
                | (:lithuanian, :turkic) -> Symbol
                | (:turkic, :lithuanian) -> Symbol

  # Case-insensitive version of Symbol#<=>. Currently, case-insensitivity only
  # works on characters A-Z/a-z, not all of Unicode. This is different from
  # Symbol#casecmp?.
  #
  #     :aBcDeF.casecmp(:abcde)     #=> 1
  #     :aBcDeF.casecmp(:abcdef)    #=> 0
  #     :aBcDeF.casecmp(:abcdefg)   #=> -1
  #     :abcdef.casecmp(:ABCDEF)    #=> 0
  #
  # `nil` is returned if the two symbols have incompatible encodings, or if
  # `other_symbol` is not a symbol.
  #
  #     :foo.casecmp(2)   #=> nil
  #     "\u{e4 f6 fc}".encode("ISO-8859-1").to_sym.casecmp(:"\u{c4 d6 dc}")   #=> nil
  #
  def casecmp: (untyped other) -> Integer?

  # Returns `true` if `sym` and `other_symbol` are equal after Unicode case
  # folding, `false` if they are not equal.
  #
  #     :aBcDeF.casecmp?(:abcde)     #=> false
  #     :aBcDeF.casecmp?(:abcdef)    #=> true
  #     :aBcDeF.casecmp?(:abcdefg)   #=> false
  #     :abcdef.casecmp?(:ABCDEF)    #=> true
  #     :"\u{e4 f6 fc}".casecmp?(:"\u{c4 d6 dc}")   #=> true
  #
  # `nil` is returned if the two symbols have incompatible encodings, or if
  # `other_symbol` is not a symbol.
  #
  #     :foo.casecmp?(2)   #=> nil
  #     "\u{e4 f6 fc}".encode("ISO-8859-1").to_sym.casecmp?(:"\u{c4 d6 dc}")   #=> nil
  #
  def casecmp?: (untyped other) -> bool?

  # Same as `sym.to_s.downcase.intern`.
  #
  def downcase: () -> Symbol
              | (:ascii | :fold | :lithuanian | :turkic) -> Symbol
              | (:lithuanian, :turkic) -> Symbol
              | (:turkic, :lithuanian) -> Symbol

  # Returns whether *sym* is :"" or not.
  #
  def empty?: () -> bool

  # Returns the Encoding object that represents the encoding of *sym*.
  #
  def encoding: () -> Encoding

  # Returns true if `sym` ends with one of the `suffixes` given.
  #
  #     :hello.end_with?("ello")               #=> true
  #
  #     # returns true if one of the +suffixes+ matches.
  #     :hello.end_with?("heaven", "ello")     #=> true
  #     :hello.end_with?("heaven", "paradise") #=> false
  #
  def end_with?: (*string suffixes) -> bool

  # Returns the name or string corresponding to *sym*.
  #
  #     :fred.id2name   #=> "fred"
  #     :ginger.to_s    #=> "ginger"
  #
  def id2name: () -> String

  # Returns the representation of *sym* as a symbol literal.
  #
  #     :fred.inspect   #=> ":fred"
  #
  def inspect: () -> String

  # In general, `to_sym` returns the Symbol corresponding to an object. As *sym*
  # is already a symbol, `self` is returned in this case.
  #
  def intern: () -> Symbol

  # Same as `sym.to_s.length`.
  #
  def length: () -> Integer

  # Returns `sym.to_s.match`.
  #
  def match: (Regexp | string pattern, ?int pos) -> MatchData?
           | (Regexp | string pattern, ?int pos) { (MatchData) -> void } -> untyped

  # Returns `sym.to_s.match?`.
  #
  def match?: (Regexp | string pattern, ?int pos) -> bool

  # Same as `sym.to_s.succ.intern`.
  #
  def next: () -> Symbol

  # Same as `sym.to_s.length`.
  #
  alias size length

  # Returns `sym.to_s[]`.
  #
  alias slice `[]`

  # Returns true if `sym` starts with one of the `prefixes` given. Each of the
  # `prefixes` should be a String or a Regexp.
  #
  #     :hello.start_with?("hell")               #=> true
  #     :hello.start_with?(/H/i)                 #=> true
  #
  #     # returns true if one of the prefixes matches.
  #     :hello.start_with?("heaven", "hell")     #=> true
  #     :hello.start_with?("heaven", "paradise") #=> false
  def start_with?: (*string prefixes) -> bool

  # Same as `sym.to_s.succ.intern`.
  #
  alias succ next

  # Same as `sym.to_s.swapcase.intern`.
  #
  def swapcase: () -> Symbol
              | (:ascii | :lithuanian | :turkic) -> Symbol
              | (:lithuanian, :turkic) -> Symbol
              | (:turkic, :lithuanian) -> Symbol

  # Returns a *Proc* object which responds to the given method by *sym*.
  #
  #     (1..3).collect(&:to_s)  #=> ["1", "2", "3"]
  #
  def to_proc: () -> Proc

  # Returns the name or string corresponding to *sym*.
  #
  #     :fred.id2name   #=> "fred"
  #     :ginger.to_s    #=> "ginger"
  #
  alias to_s id2name

  # In general, `to_sym` returns the Symbol corresponding to an object. As *sym*
  # is already a symbol, `self` is returned in this case.
  #
  alias to_sym intern

  # Same as `sym.to_s.upcase.intern`.
  #
  def upcase: () -> Symbol
            | (:ascii | :lithuanian | :turkic) -> Symbol
            | (:lithuanian, :turkic) -> Symbol
            | (:turkic, :lithuanian) -> Symbol
end

File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com