class Prism::Location
这表示源代码中的一个位置。
属性
此位置的字节长度。
一个 Source
对象,用于从给定的偏移量和长度确定更多信息。
此位置开始的源文件起始字节偏移量。
公共类方法
使用给定的源、起始字节偏移量和字节长度创建一个新的位置对象。
# File prism/parse_result.rb, line 288 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
公共实例方法
如果给定的其他位置等于此位置,则返回 true。
# File prism/parse_result.rb, line 476 def ==(other) Location === other && other.start_offset == start_offset && other.end_offset == end_offset end
将此位置与同一行上此位置之后源代码中首次出现的字符串连接,并返回新位置。如果字符串不存在,则会引发错误。
# File prism/parse_result.rb, line 495 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 prism/parse_result.rb, line 461 def cached_end_code_units_column(cache) cache[end_offset] - cache[source.line_start(end_offset)] end
使用给定的缓存获取或计算的值,以代码单元表示的从文件开始的结束偏移量。
# File prism/parse_result.rb, line 397 def cached_end_code_units_offset(cache) cache[end_offset] end
使用给定的缓存获取或计算的值,以代码单元表示的起始列。
# File prism/parse_result.rb, line 437 def cached_start_code_units_column(cache) cache[start_offset] - cache[source.line_start(start_offset)] end
使用给定的缓存获取或计算的值,以代码单元表示的从文件开始的起始偏移量。
# File prism/parse_result.rb, line 375 def cached_start_code_units_offset(cache) cache[start_offset] end
返回一个新的位置,该位置是通过截断最后一个字节的结果。
# File prism/parse_result.rb, line 334 def chop copy(length: length == 0 ? length : length - 1) end
返回与此位置关联的所有注释(前导和尾随注释)。
# File prism/parse_result.rb, line 324 def comments [*@leading_comments, *@trailing_comments] end
使用给定的选项创建一个新的位置对象。
# File prism/parse_result.rb, line 329 def copy(source: self.source, start_offset: self.start_offset, length: self.length) Location.new(source, start_offset, length) end
为 Location
实现哈希模式匹配接口。
# File prism/parse_result.rb, line 466 def deconstruct_keys(keys) { start_offset: start_offset, end_offset: end_offset } end
此位置结束时,从行首开始以字符表示的列号。
# File prism/parse_result.rb, line 449 def end_character_column source.character_column(end_offset) end
此位置结束时,从源文件开头开始以字符表示的偏移量。
# File prism/parse_result.rb, line 386 def end_character_offset source.character_offset(end_offset) end
此位置结束时,从行首开始以给定编码的代码单元表示的列号。
# File prism/parse_result.rb, line 455 def end_code_units_column(encoding = Encoding::UTF_16LE) source.code_units_column(end_offset, encoding) end
以给定编码的代码单元表示的从文件开始的偏移量。
# File prism/parse_result.rb, line 391 def end_code_units_offset(encoding = Encoding::UTF_16LE) source.code_units_offset(end_offset, encoding) end
此位置结束时,从行首开始以字节表示的列号。
# File prism/parse_result.rb, line 443 def end_column source.column(end_offset) end
此位置结束时的行号。
# File prism/parse_result.rb, line 413 def end_line source.line(end_offset) end
此位置结束时,从源文件开头开始以字节表示的偏移量。
# File prism/parse_result.rb, line 380 def end_offset start_offset + length end
返回此位置的字符串表示形式。
# File prism/parse_result.rb, line 339 def inspect "#<Prism::Location @start_offset=#{@start_offset} @length=#{@length} start_line=#{start_line}>" end
返回一个新的位置,该位置从此位置延伸到给定的其他位置。如果此位置不在其他位置之前,或者它们不共享同一个源,则会引发错误。
# File prism/parse_result.rb, line 485 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 prism/parse_result.rb, line 307 def leading_comment(comment) leading_comments << comment end
这些是与此位置关联的,且在此位置开始之前存在的注释。
# File prism/parse_result.rb, line 302 def leading_comments @leading_comments ||= [] end
为 Location
实现漂亮打印接口。
# File prism/parse_result.rb, line 471 def pretty_print(q) q.text("(#{start_line},#{start_column})-(#{end_line},#{end_column})") end
此位置表示的源代码。
# File prism/parse_result.rb, line 349 def slice source.slice(start_offset, length) end
此位置表示的源代码,从该位置开始所在的行开头到该位置结束所在的行结尾。
# File prism/parse_result.rb, line 356 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 prism/parse_result.rb, line 344 def source_lines source.lines end
此位置结束时,从行首开始以字符表示的列号。
# File prism/parse_result.rb, line 425 def start_character_column source.character_column(start_offset) end
此位置开始时,从源文件开头开始以字符表示的偏移量。
# File prism/parse_result.rb, line 364 def start_character_offset source.character_offset(start_offset) end
此位置开始时,从行首开始以给定编码的代码单元表示的列号。
# File prism/parse_result.rb, line 431 def start_code_units_column(encoding = Encoding::UTF_16LE) source.code_units_column(start_offset, encoding) end
以给定编码的代码单元表示的从文件开始的偏移量。
# File prism/parse_result.rb, line 369 def start_code_units_offset(encoding = Encoding::UTF_16LE) source.code_units_offset(start_offset, encoding) end
此位置开始时,从行首开始以字节表示的列号。
# File prism/parse_result.rb, line 419 def start_column source.column(start_offset) end
此位置开始时的行号。
# File prism/parse_result.rb, line 402 def start_line source.line(start_offset) end
此位置开始所在的行中,此位置之前的内容。
# File prism/parse_result.rb, line 407 def start_line_slice offset = source.line_start(start_offset) source.slice(offset, start_offset - offset) end
将注释附加到此位置的尾随注释。
# File prism/parse_result.rb, line 318 def trailing_comment(comment) trailing_comments << comment end
这些是与此位置关联的,且在此位置结束之后存在的注释。
# File prism/parse_result.rb, line 313 def trailing_comments @trailing_comments ||= [] end