Sha256: adbddd42b1b46f0f6e07813ccf580f30f9795ad3da2769aef29f9e30eb7e38d2
Contents?: true
Size: 1.76 KB
Versions: 2
Compression:
Stored size: 1.76 KB
Contents
module Steep module AST class Location attr_reader :buffer attr_reader :start_pos attr_reader :end_pos def initialize(buffer:, start_pos:, end_pos:) @buffer = buffer @start_pos = start_pos @end_pos = end_pos end def inspect "#<#{self.class}:#{self.__id__} @buffer=#{buffer.name}, @start_pos=#{start_pos}, @end_pos=#{end_pos}, source='#{source.lines.first}', start_line=#{start_line}, start_column=#{start_column}>" end def name buffer.name end def start_line start_loc[0] end def start_column start_loc[1] end def end_line end_loc[0] end def end_column end_loc[1] end def start_loc @start_loc ||= buffer.pos_to_loc(start_pos) end def end_loc @end_loc ||= buffer.pos_to_loc(end_pos) end def source @source ||= buffer.source(start_pos...end_pos) end def to_s "#{start_line}:#{start_column}...#{end_line}:#{end_column}" end def ==(other) other.is_a?(Location) && other.buffer == buffer && other.start_pos == start_pos && other.end_pos == end_pos end def +(other) raise "Invalid concat: buffer=#{buffer.name}, other.buffer=#{other.buffer.name}" unless other.buffer == buffer self.class.new(buffer: buffer, start_pos: start_pos, end_pos: other.end_pos) end def self.concat(*locations) locations.inject {|l1, l2| l1 + l2 } end def pred?(loc) loc.is_a?(Location) && loc.name == name && loc.start_pos == end_pos end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
steep-0.5.1 | lib/steep/ast/location.rb |
steep-0.5.0 | lib/steep/ast/location.rb |