Class: Fast::Source::Range

Inherits:
Object
  • Object
show all
Defined in:
lib/fast/source.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source_buffer, begin_pos, end_pos) ⇒ Range

Returns a new instance of Range.



22
23
24
25
26
# File 'lib/fast/source.rb', line 22

def initialize(source_buffer, begin_pos, end_pos)
  @source_buffer = source_buffer
  @begin_pos = begin_pos
  @end_pos = end_pos
end

Instance Attribute Details

#begin_posObject (readonly)

Returns the value of attribute begin_pos.



20
21
22
# File 'lib/fast/source.rb', line 20

def begin_pos
  @begin_pos
end

#end_posObject (readonly)

Returns the value of attribute end_pos.



20
21
22
# File 'lib/fast/source.rb', line 20

def end_pos
  @end_pos
end

#source_bufferObject (readonly)

Returns the value of attribute source_buffer.



20
21
22
# File 'lib/fast/source.rb', line 20

def source_buffer
  @source_buffer
end

Instance Method Details

#adjust(begin_pos: 0, end_pos: 0) ⇒ Object



65
66
67
# File 'lib/fast/source.rb', line 65

def adjust(begin_pos: 0, end_pos: 0)
  self.class.new(source_buffer, self.begin_pos + begin_pos, self.end_pos + end_pos)
end

#beginObject



28
29
30
# File 'lib/fast/source.rb', line 28

def begin
  self.class.new(source_buffer, begin_pos, begin_pos)
end

#columnObject



52
53
54
55
# File 'lib/fast/source.rb', line 52

def column
  last_newline = source_buffer.source.to_s.rindex("\n", begin_pos - 1)
  begin_pos - (last_newline ? last_newline + 1 : 0)
end

#endObject



32
33
34
# File 'lib/fast/source.rb', line 32

def end
  self.class.new(source_buffer, end_pos, end_pos)
end

#first_lineObject



44
45
46
# File 'lib/fast/source.rb', line 44

def first_line
  source_buffer.source.to_s[0...begin_pos].count("\n") + 1
end

#join(other) ⇒ Object



61
62
63
# File 'lib/fast/source.rb', line 61

def join(other)
  self.class.new(source_buffer, [begin_pos, other.begin_pos].min, [end_pos, other.end_pos].max)
end

#last_lineObject



48
49
50
# File 'lib/fast/source.rb', line 48

def last_line
  source_buffer.source.to_s[0...end_pos].count("\n") + 1
end

#lineObject



40
41
42
# File 'lib/fast/source.rb', line 40

def line
  first_line
end

#sourceObject



36
37
38
# File 'lib/fast/source.rb', line 36

def source
  source_buffer.source.to_s[begin_pos...end_pos]
end

#to_rangeObject



57
58
59
# File 'lib/fast/source.rb', line 57

def to_range
  begin_pos...end_pos
end