Spec-Zone.ru › Ruby 3.4
  1. Prism::
  2. Расположение

class Prism::Location

Родительский класс:
Object

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

Атрибуты

length [R]

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

source [R]

Объект Source, используемый для получения дополнительных сведений по заданному смещению и длине.

start_offset [R]

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

Открытые методы класса

new (source, start_offset, length) Показать исходный код
# File lib/prism/parse_result.rb, line 306
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 494
def ==(other)
  Location === other &&
    other.start_offset == start_offset &&
    other.end_offset == end_offset
end

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

adjoin (string) Показать исходный код
# File lib/prism/parse_result.rb, line 513
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 479
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 415
def cached_end_code_units_offset(cache)
  cache[end_offset]
end

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

cached_start_code_units_column (cache) Показать исходный код
# File lib/prism/parse_result.rb, line 455
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 393
def cached_start_code_units_offset(cache)
  cache[start_offset]
end

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

chop () Показать исходный код
# File lib/prism/parse_result.rb, line 352
def chop
  copy(length: length == 0 ? length : length - 1)
end

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

comments () Показать исходный код
# File lib/prism/parse_result.rb, line 342
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 347
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 484
def deconstruct_keys(keys)
  { start_offset: start_offset, end_offset: end_offset }
end

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

end_character_column () Показать исходный код
# File lib/prism/parse_result.rb, line 467
def end_character_column
  source.character_column(end_offset)
end

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

end_character_offset () Показать исходный код
# File lib/prism/parse_result.rb, line 404
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 473
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 409
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 461
def end_column
  source.column(end_offset)
end

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

end_line () Показать исходный код
# File lib/prism/parse_result.rb, line 431
def end_line
  source.line(end_offset)
end

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

end_offset () Показать исходный код
# File lib/prism/parse_result.rb, line 398
def end_offset
  start_offset + length
end

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

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

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

join (other) Показать исходный код
# File lib/prism/parse_result.rb, line 503
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 325
def leading_comment(comment)
  leading_comments << comment
end

Добавляет комментарий к предшествующим комментариям этого расположения.

leading_comments () Показать исходный код
# File lib/prism/parse_result.rb, line 320
def leading_comments
  @leading_comments ||= []
end

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

pretty_print (q) Показать исходный код
# File lib/prism/parse_result.rb, line 489
def pretty_print(q)
  q.text("(#{start_line},#{start_column})-(#{end_line},#{end_column})")
end

Реализует интерфейс форматированного вывода для Location.

slice () Показать исходный код
# File lib/prism/parse_result.rb, line 367
def slice
  source.slice(start_offset, length)
end

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

slice_lines () Показать исходный код
# File lib/prism/parse_result.rb, line 374
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 362
def source_lines
  source.lines
end

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

start_character_column () Показать исходный код
# File lib/prism/parse_result.rb, line 443
def start_character_column
  source.character_column(start_offset)
end

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

start_character_offset () Показать исходный код
# File lib/prism/parse_result.rb, line 382
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 449
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 387
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 437
def start_column
  source.column(start_offset)
end

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

start_line () Показать исходный код
# File lib/prism/parse_result.rb, line 420
def start_line
  source.line(start_offset)
end

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

start_line_slice () Показать исходный код
# File lib/prism/parse_result.rb, line 425
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 336
def trailing_comment(comment)
  trailing_comments << comment
end

Добавляет комментарий к завершающим комментариям этого расположения.

trailing_comments () Показать исходный код
# File lib/prism/parse_result.rb, line 331
def trailing_comments
  @trailing_comments ||= []
end

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

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

Spec-Zone.ru

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