forked from Shopify/erb_lint
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathoffense.rb
51 lines (42 loc) · 1.28 KB
/
offense.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# frozen_string_literal: true
module ERBLint
# Defines common functionality available to all linters.
class Offense
attr_reader :linter, :source_range, :message, :context, :severity
def initialize(linter, source_range, message, context = nil, severity = nil)
unless source_range.is_a?(Parser::Source::Range)
raise ArgumentError, "expected Parser::Source::Range for arg 2"
end
@linter = linter
@source_range = source_range
@message = message
@context = context
@severity = severity
end
def to_cached_offense_json_format
ERBLint::CachedOffense.new_from_offense(self).to_json_format
end
def inspect
"#<#{self.class.name} linter=#{linter.class.name} "\
"source_range=#{source_range.begin_pos}...#{source_range.end_pos} "\
"message=#{message}> "\
"severity=#{severity}"
end
def ==(other)
other.class <= ERBLint::Offense &&
other.linter == linter &&
other.source_range == source_range &&
other.message == message &&
other.severity == severity
end
def line_range
Range.new(source_range.line, source_range.last_line)
end
def line_number
line_range.begin
end
def column
source_range.column
end
end
end