13
13
import logging
14
14
15
15
import sublime
16
- from SublimeLinter .lint import NodeLinter
16
+ from SublimeLinter .lint import LintMatch , NodeLinter
17
17
18
18
19
19
logger = logging .getLogger ("SublimeLinter.plugin.htmlhint" )
@@ -23,10 +23,8 @@ class Htmlhint(NodeLinter):
23
23
24
24
"""Provides an interface to htmlhint."""
25
25
26
- cmd = ('htmlhint' , '--format' , 'json' , '--nocolor' , 'stdin' )
27
- defaults = {
28
- 'selector' : 'text.html'
29
- }
26
+ cmd = ("htmlhint" , "--format" , "json" , "--nocolor" , "stdin" )
27
+ defaults = {"selector" : "text.html" }
30
28
31
29
def find_errors (self , output ):
32
30
"""
@@ -36,40 +34,37 @@ def find_errors(self, output):
36
34
37
35
"""
38
36
output_json = sublime .decode_value (output )
39
-
40
- # logger.info('output_json:"{}", file: "{}"'.format(output_json, self.filename))
37
+ logger .debug ('output_json:"%s", file: "%s"' , output_json , self .filename )
41
38
42
39
for file in output_json :
43
- for message in file [' messages' ]:
40
+ for message in file [" messages" ]:
44
41
yield self .parse_message (message )
45
42
46
43
def parse_message (self , message ):
47
44
"""Parse message object into standard elements of an error and return them."""
48
- error_message = message ['message' ]
49
- line = message ['line' ] - 1
50
- col = message ['col' ]
51
-
52
- # set error and warning flags based on message type
53
- error = None
54
- warning = None
55
- if message ['type' ] == 'error' :
56
- error = True
57
- warning = False
58
- elif message ['type' ] == 'warning' :
59
- error = False
60
- warning = True
61
- elif message ['type' ] == 'info' :
62
- # ignore info messages by setting message to None
45
+ error_message = message ["message" ]
46
+ line = message ["line" ] - 1
47
+ col = message ["col" ]
48
+ error_type = message ["type" ]
49
+
50
+ # ignore message type of info
51
+ if error_type == "info" :
63
52
message = None
64
53
65
- message = 'message -- msg:"{}", line:{}, col:{}, error: {}, warning: {}, message_obj:{}'
66
- logger . info ( message . format (
54
+ logger . info (
55
+ ' message -- msg:"%s", line:%s, col:%s, type: %s, message_obj:%s' ,
67
56
error_message ,
68
57
line ,
69
58
col ,
70
- error ,
71
- warning ,
59
+ error_type ,
72
60
message ,
73
- ))
74
-
75
- return message , line , col , error , warning , error_message , None
61
+ )
62
+ return LintMatch (
63
+ filename = self .filename ,
64
+ line = line ,
65
+ col = col ,
66
+ error_type = error_type ,
67
+ code = message .get ("rule" , {}).get ("id" , "" ),
68
+ message = error_message ,
69
+ match = str (message ),
70
+ )
0 commit comments