Spec-Zone.ru › Ruby 3.4

класс Prism::ASCIISource

Родитель:
Prism::Source

Специализированная версия Prism::Source для исходного кода, содержащего только символы ASCII. Этот класс используется для применения оптимизаций производительности, которые нельзя применить к источникам, содержащим многобайтовые символы.

В крайне редких случаях, когда источник содержит многобайтовые символы, но помечен как двоичный из-за комментария магического кодирования и не может быть быстро преобразован в UTF-8, также будет использован этот класс. Это связано с тем, что в этот момент мы будем обрабатывать всё как однобайтовые символы.

Публичные методы экземпляра

character_column (byte_offset)
Исходный код
# File lib/prism/parse_result.rb, line 243
def character_column(byte_offset)
  byte_offset - line_start(byte_offset)
end

Возвращает номер столбца в символах для заданного смещения байта.

character_offset (byte_offset)
Исходный код
# File lib/prism/parse_result.rb, line 238
def character_offset(byte_offset)
  byte_offset
end

Возвращает смещение символа для заданного смещения байта.

code_units_cache (encoding)
Исходный код
# File lib/prism/parse_result.rb, line 260
def code_units_cache(encoding)
  ->(byte_offset) { byte_offset }
end

Возвращает кэш, который является тождественной функцией для поддержания того же интерфейса. Это возможно, так как кодовые единицы всегда эквивалентны смещениям байтов для источников, содержащих только символы ASCII.

code_units_column (byte_offset, encoding)
Исходный код
# File lib/prism/parse_result.rb, line 267
def code_units_column(byte_offset, encoding)
  byte_offset - line_start(byte_offset)
end

Специализированная версия ‘code_units_column`, которая не зависит от `code_units_offset`, что является более дорогой операцией. По сути, это то же самое, что `Prism::Source#column`.

code_units_offset (byte_offset, encoding)
Исходный код
# File lib/prism/parse_result.rb, line 253
def code_units_offset(byte_offset, encoding)
  byte_offset
end

Возвращает смещение от начала файла для заданного смещения байта, учитывая кодовые единицы для заданного кодирования.

Этот метод протестирован с UTF-8, UTF-16 и UTF-32. Если существует понятие кодовых единиц, которое отличается от количества символов в других кодировках, оно здесь не учитывается.

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

Spec-Zone.ru

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