class Goodcheck::Buffer
Constants
- DISABLE_LINE_PATTERNS
- DISABLE_NEXT_LINE_PATTERNS
Attributes
content[R]
path[R]
Public Class Methods
new(path:, content:)
click to toggle source
# File lib/goodcheck/buffer.rb, line 28 def initialize(path:, content:) @path = path @content = content @line_ranges = nil end
Public Instance Methods
line(line_number)
click to toggle source
# File lib/goodcheck/buffer.rb, line 78 def line(line_number) lines[line_number - 1] end
line_disabled?(line_number)
click to toggle source
# File lib/goodcheck/buffer.rb, line 50 def line_disabled?(line_number) if line_number > 1 return true if DISABLE_NEXT_LINE_PATTERNS.any? { |pattern| line(line_number - 1).match?(pattern) } end if line_number <= lines.length return DISABLE_LINE_PATTERNS.any? { |pattern| line(line_number).match?(pattern) } end return false end
line_ranges()
click to toggle source
# File lib/goodcheck/buffer.rb, line 34 def line_ranges unless @line_ranges @line_ranges = [] start_position = 0 content.split(/\n/, -1).each do |line| range = start_position..(start_position + line.bytesize) @line_ranges << range start_position = range.end + 1 end end @line_ranges end
lines()
click to toggle source
# File lib/goodcheck/buffer.rb, line 74 def lines @lines ||= content.lines end
location_for_position(position)
click to toggle source
# File lib/goodcheck/buffer.rb, line 62 def location_for_position(position) line_index = line_ranges.bsearch_index do |range| position <= range.end end if line_index line_number = line_index + 1 column_number = position - line_ranges[line_index].begin + 1 [line_number, column_number] end end