Class: SQLint::Linter

Inherits:
Object
  • Object
show all
Defined in:
lib/sqlint/linter.rb

Defined Under Namespace

Classes: Lint

Instance Method Summary collapse

Constructor Details

#initialize(filename, input_stream) ⇒ Linter

Returns a new instance of Linter.



7
8
9
10
# File 'lib/sqlint/linter.rb', line 7

def initialize(filename, input_stream)
  @input = input_stream.read
  @filename = filename
end

Instance Method Details

#runObject



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/sqlint/linter.rb', line 12

def run
  [].tap do |results|
    begin
      PgQuery.parse(@input)
    rescue PgQuery::ParseError => e
      offset = e.location
      lines_before_error = @input[0...(offset)].split("\n")
      line_number = lines_before_error.size
      column_number = lines_before_error.any? ? lines_before_error.last.size : 1
      results << Lint.new(@filename, line_number, column_number, :error, e.message)
    end
  end
end