Spec-Zone.ru › Ruby 3.4

class Prism::Location

Parent:
Object

Это представляет расположение в исходном коде.

Атрибуты

length [R]

Длина этого расположения в байтах.

source [R]

Объект Source, используемый для получения дополнительной информации из заданного смещения и длины.

start_offset [R]

Смещение в байтах от начала исходного кода, где начинается это расположение.

Публичные методы класса

new (source, start_offset, length)
Исходный код
# File lib/prism/parse_result.rb, line 288
def initialize(source, start_offset, length)
  @source = source
  @start_offset = start_offset
  @length = length

  # These are used to store comments that are associated with this location.
  # They are initialized to `nil` to save on memory when there are no
  # comments to be attached and/or the comment-related APIs are not used.
  @leading_comments = nil
  @trailing_comments = nil
end

Создать новый объект расположения с заданным исходным кодом, начальным байтовым смещением и длиной в байтах.

Открытые методы экземпляра

== (other)
Исходный код
# File lib/prism/parse_result.rb, line 476
def ==(other)
  Location === other &&
    other.start_offset == start_offset &&
    other.end_offset == end_offset
end

Возвращает true, если данное местоположение other равно этому местоположению.

adjoin (string)
Исходный код
# File lib/prism/parse_result.rb, line 495
def adjoin(string)
  line_suffix = source.slice(end_offset, source.line_end(end_offset) - end_offset)

  line_suffix_index = line_suffix.byteindex(string)
  raise "Could not find #{string}" if line_suffix_index.nil?

  Location.new(source, start_offset, length + line_suffix_index + string.bytesize)
end

Объединяет это местоположение с первым вхождением строки в исходном коде, которое встречается после этого местоположения на той же строке, и возвращает новое местоположение. Это вызовет ошибку, если строка не существует.

cached_end_code_units_column (cache)
Исходный код
# File lib/prism/parse_result.rb, line 461
def cached_end_code_units_column(cache)
  cache[end_offset] - cache[source.line_start(end_offset)]
end

Конечный столбец в кодовых единицах, использующий заданный кэш для извлечения или вычисления значения.

cached_end_code_units_offset (cache)
Исходный код
# File lib/prism/parse_result.rb, line 397
def cached_end_code_units_offset(cache)
  cache[end_offset]
end

Смещение конца от начала файла в кодовых единицах, использующее заданный кэш для извлечения или вычисления значения.

cached_start_code_units_column (cache)
Исходный код
# File lib/prism/parse_result.rb, line 437
def cached_start_code_units_column(cache)
  cache[start_offset] - cache[source.line_start(start_offset)]
end

Начальный столбец в кодовых единицах, использующий заданный кэш для извлечения или вычисления значения.

cached_start_code_units_offset (cache)
Исходный код
# File lib/prism/parse_result.rb, line 375
def cached_start_code_units_offset(cache)
  cache[start_offset]
end

Начальное смещение от начала файла в кодовых единицах, использующее заданный кэш для извлечения или вычисления значения.

chop ()
Исходный код
# File lib/prism/parse_result.rb, line 334
def chop
  copy(length: length == 0 ? length : length - 1)
end

Возвращает новое местоположение, являющееся результатом отбрасывания последнего байта.

comments ()
Исходный код
# File lib/prism/parse_result.rb, line 324
def comments
  [*@leading_comments, *@trailing_comments]
end

Возвращает все комментарии, связанные с этим местоположением (как ведущие, так и завершающие комментарии).

copy (source: self.source, start_offset: self.start_offset, length: self.length)
Исходный код
# File lib/prism/parse_result.rb, line 329
def copy(source: self.source, start_offset: self.start_offset, length: self.length)
  Location.new(source, start_offset, length)
end

Создает новый объект местоположения с заданными параметрами.

deconstruct_keys (keys)
Исходный код
# File lib/prism/parse_result.rb, line 466
def deconstruct_keys(keys)
  { start_offset: start_offset, end_offset: end_offset }
end

Реализует интерфейс сопоставления шаблонов хешей для Location.

end_character_column ()
Исходный код
# File lib/prism/parse_result.rb, line 449
def end_character_column
  source.character_column(end_offset)
end

Номер столбца в символах, где заканчивается это местоположение, от начала строки.

end_character_offset ()
Исходный код
# File lib/prism/parse_result.rb, line 386
def end_character_offset
  source.character_offset(end_offset)
end

Смещение символа от начала источника, где заканчивается это местоположение.

end_code_units_column (encoding = Encoding::UTF_16LE)
Исходный код
# File lib/prism/parse_result.rb, line 455
def end_code_units_column(encoding = Encoding::UTF_16LE)
  source.code_units_column(end_offset, encoding)
end

Номер столбца в кодовых единицах заданной кодировки, где заканчивается это местоположение, от начала строки.

end_code_units_offset (encoding = Encoding::UTF_16LE)
Исходный код
# File lib/prism/parse_result.rb, line 391
def end_code_units_offset(encoding = Encoding::UTF_16LE)
  source.code_units_offset(end_offset, encoding)
end

Смещение от начала файла в кодовых единицах заданной кодировки.

end_column ()
Исходный код
# File lib/prism/parse_result.rb, line 443
def end_column
  source.column(end_offset)
end

Номер столбца в байтах, где заканчивается это местоположение, от начала строки.

end_line ()
Исходный код
# File lib/prism/parse_result.rb, line 413
def end_line
  source.line(end_offset)
end

Номер строки, где заканчивается это местоположение.

end_offset ()
Исходный код
# File lib/prism/parse_result.rb, line 380
def end_offset
  start_offset + length
end

Смещение байта от начала источника, где заканчивается это местоположение.

inspect ()
Исходный код
# File lib/prism/parse_result.rb, line 339
def inspect
  "#<Prism::Location @start_offset=#{@start_offset} @length=#{@length} start_line=#{start_line}>"
end

Возвращает строковое представление этого местоположения.

join (other)
Исходный код
# File lib/prism/parse_result.rb, line 485
def join(other)
  raise "Incompatible sources" if source != other.source
  raise "Incompatible locations" if start_offset > other.start_offset

  Location.new(source, start_offset, other.end_offset - start_offset)
end

Возвращает новое местоположение, простирающееся от этого местоположения до заданного другого местоположения. Вызывает ошибку, если это местоположение не находится перед другим местоположением или если они не имеют одного и того же источника.

leading_comment (comment)
Исходный код
# File lib/prism/parse_result.rb, line 307
def leading_comment(comment)
  leading_comments << comment
end

Прикрепляет комментарий к начальным комментариям этого местоположения.

leading_comments ()
Исходный код
# File lib/prism/parse_result.rb, line 302
def leading_comments
  @leading_comments ||= []
end

Это комментарии, связанные с этим местоположением, которые существуют перед началом этого местоположения.

pretty_print (q)
Исходный код
# File lib/prism/parse_result.rb, line 471
def pretty_print(q)
  q.text("(#{start_line},#{start_column})-(#{end_line},#{end_column})")
end

Реализует интерфейс pretty print для Location.

slice ()
Исходный код
# File lib/prism/parse_result.rb, line 349
def slice
  source.slice(start_offset, length)
end

Исходный код, который представляет это местоположение.

slice_lines ()
Исходный код
# File lib/prism/parse_result.rb, line 356
def slice_lines
  line_start = source.line_start(start_offset)
  line_end = source.line_end(end_offset)
  source.slice(line_start, line_end - line_start)
end

Исходный код, который представляет это местоположение, начиная с начала строки, на которой начинается это местоположение, до конца строки, на которой заканчивается это местоположение.

source_lines ()
Исходный код
# File lib/prism/parse_result.rb, line 344
def source_lines
  source.lines
end

Возвращает все строки исходного кода, связанные с этим местоположением.

start_character_column ()
Исходный код
# File lib/prism/parse_result.rb, line 425
def start_character_column
  source.character_column(start_offset)
end

Номер столбца в символах, где заканчивается это местоположение с начала строки.

start_character_offset ()
Исходный код
# File lib/prism/parse_result.rb, line 364
def start_character_offset
  source.character_offset(start_offset)
end

Смещение символов от начала источника, где начинается это местоположение.

start_code_units_column (encoding = Encoding::UTF_16LE)
Исходный код
# File lib/prism/parse_result.rb, line 431
def start_code_units_column(encoding = Encoding::UTF_16LE)
  source.code_units_column(start_offset, encoding)
end

Номер столбца в кодовых единицах заданной кодировки, где начинается это местоположение с начала строки.

start_code_units_offset (encoding = Encoding::UTF_16LE)
Исходный код
# File lib/prism/parse_result.rb, line 369
def start_code_units_offset(encoding = Encoding::UTF_16LE)
  source.code_units_offset(start_offset, encoding)
end

Смещение от начала файла в кодовых единицах заданной кодировки.

start_column ()
Исходный код
# File lib/prism/parse_result.rb, line 419
def start_column
  source.column(start_offset)
end

Номер столбца в байтах, где начинается это местоположение с начала строки.

start_line ()
Исходный код
# File lib/prism/parse_result.rb, line 402
def start_line
  source.line(start_offset)
end

Номер строки, где начинается это местоположение.

start_line_slice ()
Исходный код
# File lib/prism/parse_result.rb, line 407
def start_line_slice
  offset = source.line_start(start_offset)
  source.slice(offset, start_offset - offset)
end

Содержимое строки, где начинается это местоположение перед этим местоположением.

trailing_comment (comment)
Исходный код
# File lib/prism/parse_result.rb, line 318
def trailing_comment(comment)
  trailing_comments << comment
end

Прикрепляет комментарий к заключительным комментариям этого местоположения.

trailing_comments ()
Исходный код
# File lib/prism/parse_result.rb, line 313
def trailing_comments
  @trailing_comments ||= []
end

Это комментарии, связанные с этим местоположением, которые существуют после конца этого местоположения.

Ruby Core © 1993–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API