class Prism::Location
Представляет расположение в исходном коде.
Атрибуты
Длина этого расположения в байтах.
Объект Source, используемый для получения дополнительных сведений по заданному смещению и длине.
Смещение в байтах от начала источника, с которого начинается это расположение.
Открытые методы класса
# 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
Создаёт новый объект расположения с заданными источником, начальным смещением в байтах и длиной в байтах.
Открытые методы экземпляра
# File lib/prism/parse_result.rb, line 494
def ==(other)
Location === other &&
other.start_offset == start_offset &&
other.end_offset == end_offset
end Возвращает true, если заданное другое расположение равно этому расположению.
# 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 Объединяет это расположение с первым вхождением строки в источнике, которое находится после этого расположения на той же строке, и возвращает новое расположение. Если строка отсутствует, будет вызвана ошибка.
# 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
Конечный столбец в кодовых единицах; использует заданный кэш для получения или вычисления значения.
# File lib/prism/parse_result.rb, line 415 def cached_end_code_units_offset(cache) cache[end_offset] end
Конечное смещение от начала файла в кодовых единицах; использует заданный кэш для получения или вычисления значения.
# 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
Начальный столбец в кодовых единицах; использует заданный кэш для получения или вычисления значения.
# File lib/prism/parse_result.rb, line 393 def cached_start_code_units_offset(cache) cache[start_offset] end
Начальное смещение от начала файла в кодовых единицах; использует заданный кэш для получения или вычисления значения.
# File lib/prism/parse_result.rb, line 352 def chop copy(length: length == 0 ? length : length - 1) end
Возвращает новое расположение, полученное удалением последнего байта.
# File lib/prism/parse_result.rb, line 342 def comments [*@leading_comments, *@trailing_comments] end
Возвращает все комментарии, связанные с этим расположением (как предшествующие, так и завершающие).
# 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
Создаёт новый объект расположения с заданными параметрами.
# File lib/prism/parse_result.rb, line 484
def deconstruct_keys(keys)
{ start_offset: start_offset, end_offset: end_offset }
end Реализует интерфейс сопоставления с образцом для хэшей для Location.
# File lib/prism/parse_result.rb, line 467 def end_character_column source.character_column(end_offset) end
Номер столбца в символах, в котором заканчивается это расположение, считая от начала строки.
# File lib/prism/parse_result.rb, line 404 def end_character_offset source.character_offset(end_offset) end
Смещение в символах от начала источника до конца этого расположения.
# 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
Номер столбца в кодовых единицах указанной кодировки, в котором заканчивается это расположение, считая от начала строки.
# 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
Смещение от начала файла в кодовых единицах указанной кодировки.
# File lib/prism/parse_result.rb, line 461 def end_column source.column(end_offset) end
Номер столбца в байтах, в котором заканчивается это расположение, считая от начала строки.
# File lib/prism/parse_result.rb, line 431 def end_line source.line(end_offset) end
Номер строки, на которой заканчивается это расположение.
# File lib/prism/parse_result.rb, line 398 def end_offset start_offset + length end
Смещение в байтах от начала источника до конца этого расположения.
# File lib/prism/parse_result.rb, line 357
def inspect
"#<Prism::Location @start_offset=#{@start_offset} @length=#{@length} start_line=#{start_line}>"
end Возвращает строковое представление этого расположения.
# 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
Возвращает новое расположение, охватывающее область от этого расположения до заданного другого расположения. Вызывает ошибку, если это расположение находится не перед другим или если у них разные источники.
# File lib/prism/parse_result.rb, line 325 def leading_comment(comment) leading_comments << comment end
Добавляет комментарий к предшествующим комментариям этого расположения.
# File lib/prism/parse_result.rb, line 320 def leading_comments @leading_comments ||= [] end
Комментарии, связанные с этим расположением, которые находятся перед его началом.
# File lib/prism/parse_result.rb, line 489
def pretty_print(q)
q.text("(#{start_line},#{start_column})-(#{end_line},#{end_column})")
end Реализует интерфейс форматированного вывода для Location.
# File lib/prism/parse_result.rb, line 367 def slice source.slice(start_offset, length) end
Исходный код, представленный этим расположением.
# 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
Исходный код, представленный этим расположением, начиная с начала строки, на которой оно начинается, и заканчивая концом строки, на которой оно заканчивается.
# File lib/prism/parse_result.rb, line 362 def source_lines source.lines end
Возвращает все строки исходного кода, связанные с этим расположением.
# File lib/prism/parse_result.rb, line 443 def start_character_column source.character_column(start_offset) end
Номер столбца в символах, в котором заканчивается это расположение, считая от начала строки.
# File lib/prism/parse_result.rb, line 382 def start_character_offset source.character_offset(start_offset) end
Смещение в символах от начала источника до начала этого расположения.
# 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
Номер столбца в кодовых единицах указанной кодировки, с которого начинается это расположение, считая от начала строки.
# 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
Смещение от начала файла в кодовых единицах указанной кодировки.
# File lib/prism/parse_result.rb, line 437 def start_column source.column(start_offset) end
Номер столбца в байтах, с которого начинается это расположение, считая от начала строки.
# File lib/prism/parse_result.rb, line 420 def start_line source.line(start_offset) end
Номер строки, на которой начинается это расположение.
# 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
Содержимое строки, на которой начинается это расположение, до этого расположения.
# File lib/prism/parse_result.rb, line 336 def trailing_comment(comment) trailing_comments << comment end
Добавляет комментарий к завершающим комментариям этого расположения.
# 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.