class Prism::ASCIISource
Prism::Source
的专用版本,用于仅包含 ASCII 字符的源代码。此类用于应用性能优化,这些优化不能应用于包含多字节字符的源。
在极少数情况下,如果源包含多字节字符,但由于魔术编码注释而被标记为二进制,并且无法被急切地转换为 UTF-8,也将使用此类。这是因为在那种情况下,我们会将所有内容都视为单字节字符。
公共实例方法
Source
# File lib/prism/parse_result.rb, line 243 def character_column(byte_offset) byte_offset - line_start(byte_offset) end
返回给定字节偏移量的字符列号。
Source
# File lib/prism/parse_result.rb, line 238 def character_offset(byte_offset) byte_offset end
返回给定字节偏移量的字符偏移量。
Source
# File lib/prism/parse_result.rb, line 260 def code_units_cache(encoding) ->(byte_offset) { byte_offset } end
返回一个缓存,该缓存是标识函数,以保持相同的接口。我们可以这样做,因为对于仅限 ASCII 的源,代码单元始终等效于字节偏移量。
Source
# 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` 相同。
Source
# File lib/prism/parse_result.rb, line 253 def code_units_offset(byte_offset, encoding) byte_offset end
返回给定编码的给定字节偏移量的文件开头以代码单元计数的偏移量。
此方法使用 UTF-8、UTF-16 和 UTF-32 进行测试。如果存在代码单元的概念,其与其它编码中的字符数量不同,则此处不会捕获。