Class: Prism::ASCIISource

Inherits:
Source
  • Object
show all
Defined in:
lib/prism/parse_result.rb

Overview

Specialized version of Prism::Source for source code that includes ASCII characters only. This class is used to apply performance optimizations that cannot be applied to sources that include multibyte characters. Sources that include multibyte characters are represented by the Prism::Source class.

Instance Attribute Summary

Attributes inherited from Source

#offsets, #source, #start_line

Instance Method Summary collapse

Methods inherited from Source

#column, #encoding, for, #initialize, #line, #line_end, #line_start, #lines, #slice

Constructor Details

This class inherits a constructor from Prism::Source

Instance Method Details

#character_column(byte_offset) ⇒ Object

Return the column number in characters for the given byte offset.



142
143
144
# File 'lib/prism/parse_result.rb', line 142

def character_column(byte_offset)
  byte_offset - line_start(byte_offset)
end

#character_offset(byte_offset) ⇒ Object

Return the character offset for the given byte offset.



137
138
139
# File 'lib/prism/parse_result.rb', line 137

def character_offset(byte_offset)
  byte_offset
end

#code_units_column(byte_offset, encoding) ⇒ Object

Specialized version of ‘code_units_column` that does not depend on `code_units_offset`, which is a more expensive operation. This is essentialy the same as `Prism::Source#column`.



159
160
161
# File 'lib/prism/parse_result.rb', line 159

def code_units_column(byte_offset, encoding)
  byte_offset - line_start(byte_offset)
end

#code_units_offset(byte_offset, encoding) ⇒ Object

Returns the offset from the start of the file for the given byte offset counting in code units for the given encoding.

This method is tested with UTF-8, UTF-16, and UTF-32. If there is the concept of code units that differs from the number of characters in other encodings, it is not captured here.



152
153
154
# File 'lib/prism/parse_result.rb', line 152

def code_units_offset(byte_offset, encoding)
  byte_offset
end