123456789_123456789_123456789_123456789_123456789_

Class: RSpec::Support::Source::Token Private

Do not use. This class is for internal use only.
Relationships & Source Files
Inherits: Object
Defined in: rspec-support/lib/rspec/support/source/token.rb

Overview

A wrapper for Ripper token which is generated with ‘Ripper.lex`.

Constant Summary

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Class Method Details

.tokens_from_ripper_tokens(ripper_tokens)

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 25

def self.tokens_from_ripper_tokens(ripper_tokens)
  ripper_tokens.map { |ripper_token| new(ripper_token) }.freeze
end

Instance Attribute Details

#equals_operator?Boolean (readonly)

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 59

def equals_operator?
  type == :on_op && string == '='
end

#keyword?Boolean (readonly)

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 55

def keyword?
  type == :on_kw
end

#opening?Boolean (readonly)

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 63

def opening?
  opening_delimiter? || opening_keyword?
end

#opening_delimiter?Boolean (readonly, private)

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 73

def opening_delimiter?
  CLOSING_TYPES_BY_OPENING_TYPE.key?(type)
end

#opening_keyword?Boolean (readonly, private)

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 77

def opening_keyword?
  return false unless keyword?
  CLOSING_KEYWORDS_BY_OPENING_KEYWORD.key?(string)
end

#token (readonly)

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 23

attr_reader :token

Instance Method Details

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

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 45

def ==(other)
  token == other.token
end

#closed_by?(other) ⇒ Boolean

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 67

def closed_by?(other)
  delimiter_closed_by?(other) || keyword_closed_by?(other)
end

#delimiter_closed_by?(other) ⇒ Boolean (private)

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 82

def delimiter_closed_by?(other)
  other.type == CLOSING_TYPES_BY_OPENING_TYPE[type]
end

#eql?(other)

Alias for #==.

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 49

alias_method :eql?, :==

#inspect

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 51

def inspect
  "#<#{self.class} #{type} #{string.inspect}>"
end

#keyword_closed_by?(other) ⇒ Boolean (private)

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 86

def keyword_closed_by?(other)
  return false unless keyword?
  return true if other.string == CLOSING_KEYWORDS_BY_OPENING_KEYWORD[string]

  # Ruby 3's `end`-less method definition: `def method_name = body`
  string == 'def' && other.equals_operator? && location.line == other.location.line
end

#location

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 33

def location
  @location ||= Location.new(*token[0])
end

#string

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 41

def string
  token[2]
end

#type

[ GitHub ]

  
# File 'rspec-support/lib/rspec/support/source/token.rb', line 37

def type
  token[1]
end