class Prism::Location
Это представляет расположение в исходном коде.
Атрибуты
Длина этого расположения в байтах.
Объект Source, используемый для получения дополнительной информации из заданного смещения и длины.
Смещение в байтах от начала исходного кода, где начинается это расположение.
Публичные методы класса
Исходный код
# 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
Создать новый объект расположения с заданным исходным кодом, начальным байтовым смещением и длиной в байтах.
Открытые методы экземпляра
Исходный код
# 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 равно этому местоположению.
Исходный код
# 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 Объединяет это местоположение с первым вхождением строки в исходном коде, которое встречается после этого местоположения на той же строке, и возвращает новое местоположение. Это вызовет ошибку, если строка не существует.
Исходный код
# 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
Конечный столбец в кодовых единицах, использующий заданный кэш для извлечения или вычисления значения.
Исходный код
# File lib/prism/parse_result.rb, line 397 def cached_end_code_units_offset(cache) cache[end_offset] end
Смещение конца от начала файла в кодовых единицах, использующее заданный кэш для извлечения или вычисления значения.
Исходный код
# 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
Начальный столбец в кодовых единицах, использующий заданный кэш для извлечения или вычисления значения.
Исходный код
# File lib/prism/parse_result.rb, line 375 def cached_start_code_units_offset(cache) cache[start_offset] end
Начальное смещение от начала файла в кодовых единицах, использующее заданный кэш для извлечения или вычисления значения.
Исходный код
# File lib/prism/parse_result.rb, line 334 def chop copy(length: length == 0 ? length : length - 1) end
Возвращает новое местоположение, являющееся результатом отбрасывания последнего байта.
Исходный код
# File lib/prism/parse_result.rb, line 324 def comments [*@leading_comments, *@trailing_comments] end
Возвращает все комментарии, связанные с этим местоположением (как ведущие, так и завершающие комментарии).
Исходный код
# 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
Создает новый объект местоположения с заданными параметрами.
Исходный код
# File lib/prism/parse_result.rb, line 466
def deconstruct_keys(keys)
{ start_offset: start_offset, end_offset: end_offset }
end Реализует интерфейс сопоставления шаблонов хешей для Location.
Исходный код
# File lib/prism/parse_result.rb, line 449 def end_character_column source.character_column(end_offset) end
Номер столбца в символах, где заканчивается это местоположение, от начала строки.
Исходный код
# File lib/prism/parse_result.rb, line 386 def end_character_offset source.character_offset(end_offset) end
Смещение символа от начала источника, где заканчивается это местоположение.
Исходный код
# 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
Номер столбца в кодовых единицах заданной кодировки, где заканчивается это местоположение, от начала строки.
Исходный код
# 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
Смещение от начала файла в кодовых единицах заданной кодировки.
Исходный код
# File lib/prism/parse_result.rb, line 443 def end_column source.column(end_offset) end
Номер столбца в байтах, где заканчивается это местоположение, от начала строки.
Исходный код
# File lib/prism/parse_result.rb, line 413 def end_line source.line(end_offset) end
Номер строки, где заканчивается это местоположение.
Исходный код
# File lib/prism/parse_result.rb, line 380 def end_offset start_offset + length end
Смещение байта от начала источника, где заканчивается это местоположение.
Исходный код
# File lib/prism/parse_result.rb, line 339
def inspect
"#<Prism::Location @start_offset=#{@start_offset} @length=#{@length} start_line=#{start_line}>"
end Возвращает строковое представление этого местоположения.
Исходный код
# 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
Возвращает новое местоположение, простирающееся от этого местоположения до заданного другого местоположения. Вызывает ошибку, если это местоположение не находится перед другим местоположением или если они не имеют одного и того же источника.
Исходный код
# File lib/prism/parse_result.rb, line 307 def leading_comment(comment) leading_comments << comment end
Прикрепляет комментарий к начальным комментариям этого местоположения.
Исходный код
# File lib/prism/parse_result.rb, line 302 def leading_comments @leading_comments ||= [] end
Это комментарии, связанные с этим местоположением, которые существуют перед началом этого местоположения.
Исходный код
# 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.
Исходный код
# File lib/prism/parse_result.rb, line 349 def slice source.slice(start_offset, length) end
Исходный код, который представляет это местоположение.
Исходный код
# 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
Исходный код, который представляет это местоположение, начиная с начала строки, на которой начинается это местоположение, до конца строки, на которой заканчивается это местоположение.
Исходный код
# File lib/prism/parse_result.rb, line 344 def source_lines source.lines end
Возвращает все строки исходного кода, связанные с этим местоположением.
Исходный код
# File lib/prism/parse_result.rb, line 425 def start_character_column source.character_column(start_offset) end
Номер столбца в символах, где заканчивается это местоположение с начала строки.
Исходный код
# File lib/prism/parse_result.rb, line 364 def start_character_offset source.character_offset(start_offset) end
Смещение символов от начала источника, где начинается это местоположение.
Исходный код
# 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
Номер столбца в кодовых единицах заданной кодировки, где начинается это местоположение с начала строки.
Исходный код
# 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
Смещение от начала файла в кодовых единицах заданной кодировки.
Исходный код
# File lib/prism/parse_result.rb, line 419 def start_column source.column(start_offset) end
Номер столбца в байтах, где начинается это местоположение с начала строки.
Исходный код
# File lib/prism/parse_result.rb, line 402 def start_line source.line(start_offset) end
Номер строки, где начинается это местоположение.
Исходный код
# 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
Содержимое строки, где начинается это местоположение перед этим местоположением.
Исходный код
# File lib/prism/parse_result.rb, line 318 def trailing_comment(comment) trailing_comments << comment end
Прикрепляет комментарий к заключительным комментариям этого местоположения.
Исходный код
# 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.