class CC::Analyzer::SourceBuffer
Attributes
name[R]
source[R]
Public Class Methods
new(name, source)
click to toggle source
# File lib/cc/analyzer/source_buffer.rb, line 8 def initialize(name, source) @name = name @source = source end
Public Instance Methods
decompose_position(position)
click to toggle source
# File lib/cc/analyzer/source_buffer.rb, line 13 def decompose_position(position) line_no, line_begin = line_for(position) [1 + line_no, position - line_begin] end
line_count()
click to toggle source
# File lib/cc/analyzer/source_buffer.rb, line 19 def line_count @source.lines.count end
Private Instance Methods
line_begins()
click to toggle source
# File lib/cc/analyzer/source_buffer.rb, line 31 def line_begins unless @line_begins @line_begins = [[0, 0]] index = 1 @source.each_char do |char| @line_begins.unshift [@line_begins.length, index] if char == "\n" index += 1 end end @line_begins end
line_for(position)
click to toggle source
# File lib/cc/analyzer/source_buffer.rb, line 25 def line_for(position) line_begins.bsearch do |_, line_begin| line_begin <= position end end