Spec-Zone.ru › Ruby 4.0
  1. Prism::
  2. Location

class Prism::Location

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

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

Атрибуты

length [R]

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

source [R]

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

start_offset [R]

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

Общедоступные методы класса

new (source, start_offset, length) Показать исходный код
# File lib/prism/parse_result.rb, line 293
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 481
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 500
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 466
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 402
def cached_end_code_units_offset(cache)
  cache[end_offset]
end

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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