2018-03-13 14:03:57 +01:00

51 lines
2.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const abstractFormatter_1 = require("tslint/lib/language/formatter/abstractFormatter");
const colorBlue = "\u001b[93m";
const colorYellow = "\u001b[93m";
const colorRed = "\u001b[91m";
const colorReset = "\u001b[0m";
class Formatter extends abstractFormatter_1.AbstractFormatter {
format(failures) {
return `${this.mapToMessages(failures).join("\n")}\n`;
}
mapToMessages(failures) {
return failures.map((failure) => {
var fileName = failure.getFileName();
var failureString = failure.getFailure();
var ruleName = failure.getRuleName();
var lineAndCharacter = failure.getStartPosition().getLineAndCharacter();
var positionTuple = `:${lineAndCharacter.line + 1}:${lineAndCharacter.character + 1}`;
if (this.lastSeverity == failure.getRuleSeverity() && this.lastFailure == failureString) {
return " in " + fileName + positionTuple;
}
else {
let message = this.lastSeverity ? "\n" : "";
switch (this.lastSeverity = failure.getRuleSeverity()) {
case "warning": {
message += colorYellow + "WARNING:" + colorReset;
break;
}
case "error": {
message += colorRed + "ERROR:" + colorReset;
break;
}
default: {
message += failure.getRuleSeverity();
break;
}
}
this.lastFailure = failureString;
return message + " " + failureString + " [" + ruleName + "]\n in " + fileName + positionTuple;
}
});
}
}
Formatter.metadata = {
formatterName: "as",
description: "AssemblyScript's TSLint formatter.",
sample: "Similar to ASC's output.",
consumer: "human",
};
exports.Formatter = Formatter;