forked from Shopify/erb_lint
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcached_offense.rb
39 lines (34 loc) · 863 Bytes
/
cached_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
# frozen_string_literal: true
module ERBLint
# A Cached version of an Offense with only essential information represented as strings
class CachedOffense
attr_reader :line_number, :message, :severity
def initialize(message, line_number, severity)
@message = message
@line_number = line_number
@severity = severity
end
def self.new_from_offense(offense)
new(
offense.message,
offense.line_number.to_s,
offense.severity
)
end
def to_json_format
{
message: message,
line_number: line_number,
severity: severity,
}
end
def self.from_json(parsed_json)
parsed_json.transform_keys!(&:to_sym)
new(
parsed_json[:message],
parsed_json[:line_number],
parsed_json[:severity]&.to_sym
)
end
end
end