class Solargraph::Diagnostics::UpdateErrors

Public Instance Methods

diagnose(source, api_map) click to toggle source
# File lib/solargraph/diagnostics/update_errors.rb, line 6
def diagnose source, api_map
  result = []
  combine_ranges(source.code, source.error_ranges).each do |range|
    result.push(
      range: range.to_hash,
      severity: Diagnostics::Severities::ERROR,
      source: 'Solargraph',
      message: 'Syntax error'
    )
  end
  result
end

Private Instance Methods

combine_ranges(code, ranges) click to toggle source

Combine an array of ranges by their starting lines.

@param code [String] @param ranges [Array<Range>] @return [Array<Range>]

# File lib/solargraph/diagnostics/update_errors.rb, line 26
def combine_ranges code, ranges
  result = []
  lines = []
  ranges.sort{|a, b| a.start.line <=> b.start.line}.each do |rng|
    next if rng.nil? || lines.include?(rng.start.line)
    lines.push rng.start.line
    next if rng.start.line >= code.lines.length
    scol = code.lines[rng.start.line].index(/[^\s]/) || 0
    ecol = code.lines[rng.start.line].length
    result.push Range.from_to(rng.start.line, scol, rng.start.line, ecol)
  end
  result
end