123456789_123456789_123456789_123456789_123456789_

Class: RBS::Types::Literal

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Instance Chain:
Inherits: Object
Defined in: lib/rbs/types.rb

Constant Summary

  • TABLE =
    # File 'lib/rbs/types.rb', line 1403
    {
      "\\a" => "\a",
      "\\b" => "\b",
      "\\e" => "\033",
      "\\f" => "\f",
      "\\n" => "\n",
      "\\r" => "\r",
      "\\s" => " ",
      "\\t" => "\t",
      "\\v" => "\v",
      "\\\"" => "\"",
      "\\\'" => "'",
      "\\\\" => "\\",
      "\\" => ""
    }

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(literal:, location:) ⇒ Literal

[ GitHub ]

  
# File 'lib/rbs/types.rb', line 1363

def initialize(literal:, location:)
  @literal = literal
  @location = location
end

Class Method Details

.unescape_string(string, is_double_quote)

[ GitHub ]

  
# File 'lib/rbs/types.rb', line 1419

def self.unescape_string(string, is_double_quote)
  if is_double_quote
    string.gsub!(/\\([0-9]{1,3})/) { ($1 || "").to_i(8).chr }
    string.gsub!(/\\x([0-9a-f]{1,2})/) { ($1 || "").to_i(16).chr }
    string.gsub!(/\\u([0-9a-fA-F]{4})/) { ($1 || "").to_i(16).chr(Encoding::UTF_8) }
    string.gsub!(/\\[abefnrstv"'\\]?/, TABLE)
    string
  else
    string.gsub!(/\\['\\]/, TABLE)
    string
  end
end

Instance Attribute Details

#has_classish_type?Boolean (readonly)

[ GitHub ]

  
# File 'lib/rbs/types.rb', line 1395

def has_classish_type?
  false
end

#has_self_type?Boolean (readonly)

[ GitHub ]

  
# File 'lib/rbs/types.rb', line 1391

def has_self_type?
  false
end

#literal (readonly)

[ GitHub ]

  
# File 'lib/rbs/types.rb', line 1360

attr_reader :literal

#location (readonly)

[ GitHub ]

  
# File 'lib/rbs/types.rb', line 1361

attr_reader :location

#with_nonreturn_void?Boolean (readonly)

[ GitHub ]

  
# File 'lib/rbs/types.rb', line 1399

def with_nonreturn_void?
  false
end

Instance Method Details

#==(other) Also known as: #eql?

[ GitHub ]

  
# File 'lib/rbs/types.rb', line 1368

def ==(other)
  other.is_a?(Literal) && other.literal == literal
end

#eql?(other)

Alias for #==.

[ GitHub ]

  
# File 'lib/rbs/types.rb', line 1372

alias eql? ==

#hash

[ GitHub ]

  
# File 'lib/rbs/types.rb', line 1374

def hash
  self.class.hash ^ literal.hash
end

#to_json(state = _ = nil)

[ GitHub ]

  
# File 'lib/rbs/types.rb', line 1383

def to_json(state = _ = nil)
  { class: :literal, literal: literal.inspect, location: location }.to_json(state)
end

#to_s(level = 0)

[ GitHub ]

  
# File 'lib/rbs/types.rb', line 1387

def to_s(level = 0)
  literal.inspect
end