class Prism::Location
Представляет местоположение в исходном коде.
Атрибуты
Длина этого местоположения в байтах.
Объект Source, используемый для получения дополнительной информации по заданным смещению и длине.
Смещение в байтах от начала исходного кода, с которого начинается это местоположение.
Общедоступные методы класса
# 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
Создает новый объект местоположения с указанными исходным кодом, начальным смещением в байтах и длиной в байтах.
Общедоступные методы экземпляра
# File lib/prism/parse_result.rb, line 481
def ==(other)
Location === other &&
other.start_offset == start_offset &&
other.end_offset == end_offset
end Возвращает true, если указанное другое местоположение совпадает с этим.
# 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 Объединяет это местоположение с первым вхождением строки в исходном коде, которое находится после него в той же строке, и возвращает новое местоположение. Вызывает ошибку, если строка не найдена.
# 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
Номер конечного столбца в кодовых единицах; значение берется из указанного кэша или вычисляется.
# File lib/prism/parse_result.rb, line 402 def cached_end_code_units_offset(cache) cache[end_offset] end
Конечное смещение от начала файла в кодовых единицах; значение берется из указанного кэша или вычисляется.
# 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
Номер начального столбца в кодовых единицах; значение берется из указанного кэша или вычисляется.
# File lib/prism/parse_result.rb, line 380 def cached_start_code_units_offset(cache) cache[start_offset] end
Начальное смещение от начала файла в кодовых единицах; значение берется из указанного кэша или вычисляется.
# File lib/prism/parse_result.rb, line 339 def chop copy(length: length == 0 ? length : length - 1) end
Возвращает новое местоположение, полученное удалением последнего байта.
# File lib/prism/parse_result.rb, line 329 def comments [*@leading_comments, *@trailing_comments] end
Возвращает все комментарии, связанные с этим местоположением (как предшествующие, так и последующие).
# 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
Создает новый объект местоположения с указанными параметрами.
# File lib/prism/parse_result.rb, line 471
def deconstruct_keys(keys)
{ start_offset: start_offset, end_offset: end_offset }
end Реализует интерфейс сопоставления с образцом для хэшей для Location.
# File lib/prism/parse_result.rb, line 454 def end_character_column source.character_column(end_offset) end
Номер столбца в символах, где заканчивается это местоположение, считая от начала строки.
# File lib/prism/parse_result.rb, line 391 def end_character_offset source.character_offset(end_offset) end
Смещение в символах от начала исходного кода до конца этого местоположения.
# 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
Номер столбца в кодовых единицах указанной кодировки, где заканчивается это местоположение, считая от начала строки.
# 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
Смещение от начала файла в кодовых единицах указанной кодировки.
# File lib/prism/parse_result.rb, line 448 def end_column source.column(end_offset) end
Номер столбца в байтах, где заканчивается это местоположение, считая от начала строки.
# File lib/prism/parse_result.rb, line 418 def end_line source.line(end_offset) end
Номер строки, на которой заканчивается это местоположение.
# File lib/prism/parse_result.rb, line 385 def end_offset start_offset + length end
Смещение в байтах от начала исходного кода до конца этого местоположения.
# File lib/prism/parse_result.rb, line 344
def inspect
"#<Prism::Location @start_offset=#{@start_offset} @length=#{@length} start_line=#{start_line}>"
end Возвращает строковое представление этого местоположения.
# 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
Возвращает новое местоположение, охватывающее диапазон от этого местоположения до указанного другого. Вызывает ошибку, если это местоположение находится не перед другим или они относятся к разным исходным данным.
# File lib/prism/parse_result.rb, line 312 def leading_comment(comment) leading_comments << comment end
Добавляет комментарий к предшествующим комментариям этого местоположения.
# File lib/prism/parse_result.rb, line 307 def leading_comments @leading_comments ||= [] end
Комментарии, связанные с этим местоположением и расположенные перед его началом.
# File lib/prism/parse_result.rb, line 476
def pretty_print(q)
q.text("(#{start_line},#{start_column})-(#{end_line},#{end_column})")
end Реализует интерфейс красивой печати для Location.
# File lib/prism/parse_result.rb, line 354 def slice source.slice(start_offset, length) end
Исходный код, представленный этим местоположением.
# 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
Исходный код, представленный этим местоположением: от начала строки, на которой оно начинается, до конца строки, на которой оно заканчивается.
# File lib/prism/parse_result.rb, line 349 def source_lines source.lines end
Возвращает все строки исходного кода, связанные с этим местоположением.
# File lib/prism/parse_result.rb, line 430 def start_character_column source.character_column(start_offset) end
Номер столбца в символах, где заканчивается это местоположение, считая от начала строки.
# File lib/prism/parse_result.rb, line 369 def start_character_offset source.character_offset(start_offset) end
Смещение в символах от начала исходного кода до начала этого местоположения.
# 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
Номер столбца в кодовых единицах указанной кодировки, с которого начинается это местоположение, считая от начала строки.
# 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
Смещение от начала файла в кодовых единицах указанной кодировки.
# File lib/prism/parse_result.rb, line 424 def start_column source.column(start_offset) end
Номер столбца в байтах, с которого начинается это местоположение, считая от начала строки.
# File lib/prism/parse_result.rb, line 407 def start_line source.line(start_offset) end
Номер строки, на которой начинается это местоположение.
# 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
Содержимое строки, на которой начинается это местоположение, расположенное перед ним.
# File lib/prism/parse_result.rb, line 323 def trailing_comment(comment) trailing_comments << comment end
Добавляет комментарий к последующим комментариям этого местоположения.
# 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.