blob: 54ee1942151dff7ef3df5d288caff76890d0cdac (
plain)
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
|
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import attr
from ..result import Issue
class CompactFormatter(object):
"""Formatter for compact output.
This formatter prints one error per line, mimicking the
eslint 'compact' formatter.
"""
# If modifying this format, please also update the vim errorformats in editor.py
fmt = "{path}: line {lineno}{column}, {level} - {message} ({rule})"
def __init__(self, summary=True):
self.summary = summary
def __call__(self, result):
message = []
num_problems = 0
for path, errors in sorted(result.issues.items()):
num_problems += len(errors)
for err in errors:
assert isinstance(err, Issue)
d = attr.asdict(err)
d["column"] = ", col %s" % d["column"] if d["column"] else ""
d["level"] = d["level"].capitalize()
d["rule"] = d["rule"] or d["linter"]
message.append(self.fmt.format(**d))
if self.summary and num_problems:
message.append(
"\n{} problem{}".format(num_problems, "" if num_problems == 1 else "s")
)
return "\n".join(message)
|