Sha256: e4a21c8e0738ce92212217eb993aff31e333009af647e0c1239b69382a5632ee
Contents?: true
Size: 1.72 KB
Versions: 12
Compression:
Stored size: 1.72 KB
Contents
module Parser module Source class Range attr_reader :source_buffer attr_reader :begin_pos, :end_pos def initialize(source_buffer, begin_pos, end_pos) @source_buffer = source_buffer @begin_pos, @end_pos = begin_pos, end_pos freeze end def begin Range.new(@source_buffer, @begin_pos, @begin_pos) end def end Range.new(@source_buffer, @end_pos, @end_pos) end def size @end_pos - @begin_pos end alias length size def line line, _ = @source_buffer.decompose_position(@begin_pos) line end def column _, column = @source_buffer.decompose_position(@begin_pos) column end def column_range self.begin.column...self.end.column end def source_line @source_buffer.source_line(line) end def source @source_buffer.source[self.begin_pos...self.end_pos] end def is?(*what) what.include?(source) end def to_a (@begin_pos...@end_pos).to_a end def to_s line, column = @source_buffer.decompose_position(@begin_pos) [@source_buffer.name, line, column + 1].join(':') end def join(other) Range.new(@source_buffer, [@begin_pos, other.begin_pos].min, [@end_pos, other.end_pos].max) end def ==(other) other.is_a?(Range) && @source_buffer == other.source_buffer && @begin_pos == other.begin_pos && @end_pos == other.end_pos end def inspect "#<Source::Range #{@source_buffer.name} #{@begin_pos}...#{@end_pos}>" end end end end
Version data entries
12 entries across 12 versions & 1 rubygems