class Prism::ASCIISource

Prism::Source 的专用版本,用于仅包含 ASCII 字符的源代码。此类用于应用无法应用于包含多字节字符的源的性能优化。

在极少数情况下,如果源包含多字节字符,但由于魔术编码注释而被标记为二进制,并且无法急切转换为 UTF-8,也将使用此类。这是因为那时我们将把所有内容都视为单字节字符。

公共实例方法

character_column(byte_offset) 点击切换源代码

返回给定字节偏移量的字符列号。

# File prism/parse_result.rb, line 243
def character_column(byte_offset)
  byte_offset - line_start(byte_offset)
end
character_offset(byte_offset) 点击切换源代码

返回给定字节偏移量的字符偏移量。

# File prism/parse_result.rb, line 238
def character_offset(byte_offset)
  byte_offset
end
code_units_cache(encoding) 点击切换源代码

返回一个作为标识函数的缓存,以保持相同的接口。我们可以这样做,因为对于仅限 ASCII 的源,代码单元始终等同于字节偏移量。

# File prism/parse_result.rb, line 260
def code_units_cache(encoding)
  ->(byte_offset) { byte_offset }
end
code_units_column(byte_offset, encoding) 点击切换源代码

`code_units_column` 的专用版本,它不依赖于 `code_units_offset`,后者是一个更昂贵的操作。这本质上与 `Prism::Source#column` 相同。

# File prism/parse_result.rb, line 267
def code_units_column(byte_offset, encoding)
  byte_offset - line_start(byte_offset)
end
code_units_offset(byte_offset, encoding) 点击切换源代码

返回给定字节偏移量从文件开头开始的偏移量,以给定编码的代码单元计数。

此方法已使用 UTF-8、UTF-16 和 UTF-32 进行测试。如果存在与其他编码中的字符数不同的代码单元的概念,则此处不会捕获它。

# File prism/parse_result.rb, line 253
def code_units_offset(byte_offset, encoding)
  byte_offset
end