aboutsummaryrefslogtreecommitdiff
path: root/node_modules/tslint/lib/rules/fileHeaderRule.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/tslint/lib/rules/fileHeaderRule.js')
-rw-r--r--node_modules/tslint/lib/rules/fileHeaderRule.js44
1 files changed, 38 insertions, 6 deletions
diff --git a/node_modules/tslint/lib/rules/fileHeaderRule.js b/node_modules/tslint/lib/rules/fileHeaderRule.js
index 91d505d53..eca48adc5 100644
--- a/node_modules/tslint/lib/rules/fileHeaderRule.js
+++ b/node_modules/tslint/lib/rules/fileHeaderRule.js
@@ -26,27 +26,58 @@ var Rule = /** @class */ (function (_super) {
}
Rule.prototype.apply = function (sourceFile) {
var text = sourceFile.text;
+ var headerFormat = new RegExp(this.ruleArguments[0]);
+ var textToInsert = this.ruleArguments[1];
// ignore shebang if it exists
var offset = text.startsWith("#!") ? text.indexOf("\n") : 0;
// returns the text of the first comment or undefined
var commentText = ts.forEachLeadingCommentRange(text, offset, function (pos, end, kind) { return text.substring(pos + 2, kind === ts.SyntaxKind.SingleLineCommentTrivia ? end : end - 2); });
- if (commentText === undefined || !new RegExp(this.ruleArguments[0]).test(commentText)) {
- if (offset !== 0) {
+ if (commentText === undefined || !headerFormat.test(commentText)) {
+ var isErrorAtStart = offset === 0;
+ if (!isErrorAtStart) {
++offset; // show warning in next line after shebang
}
- return [new Lint.RuleFailure(sourceFile, offset, offset, Rule.FAILURE_STRING, this.ruleName)];
+ var leadingNewlines = isErrorAtStart ? 0 : 1;
+ var trailingNewlines = isErrorAtStart ? 2 : 1;
+ var fix = textToInsert !== undefined
+ ? Lint.Replacement.appendText(offset, this.createComment(sourceFile, textToInsert, leadingNewlines, trailingNewlines))
+ : undefined;
+ return [new Lint.RuleFailure(sourceFile, offset, offset, Rule.FAILURE_STRING, this.ruleName, fix)];
}
return [];
};
+ Rule.prototype.createComment = function (sourceFile, commentText, leadingNewlines, trailingNewlines) {
+ if (leadingNewlines === void 0) { leadingNewlines = 1; }
+ if (trailingNewlines === void 0) { trailingNewlines = 1; }
+ var maybeCarriageReturn = sourceFile.text[sourceFile.getLineEndOfPosition(0)] === "\r" ? "\r" : "";
+ var lineEnding = maybeCarriageReturn + "\n";
+ return lineEnding.repeat(leadingNewlines) + [
+ "/*!"
+ ].concat(commentText.split(/\r?\n/g).map(function (line) { return (" * " + line).replace(/\s+$/, ""); }), [
+ " */",
+ ]).join(lineEnding) + lineEnding.repeat(trailingNewlines);
+ };
/* tslint:disable:object-literal-sort-keys */
Rule.metadata = {
ruleName: "file-header",
description: "Enforces a certain header comment for all files, matched by a regular expression.",
- optionsDescription: "Regular expression to match the header.",
+ optionsDescription: Lint.Utils.dedent(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\n The first option, which is mandatory, is a regular expression that all headers should match.\n The second argument, which is optional, is a string that should be inserted as a header comment\n if fixing is enabled and no header that matches the first argument is found."], ["\n The first option, which is mandatory, is a regular expression that all headers should match.\n The second argument, which is optional, is a string that should be inserted as a header comment\n if fixing is enabled and no header that matches the first argument is found."]))),
options: {
- type: "string",
+ type: "array",
+ items: [
+ {
+ type: "string",
+ },
+ {
+ type: "string",
+ },
+ ],
+ additionalItems: false,
+ minLength: 1,
+ maxLength: 2,
},
- optionExamples: [[true, "Copyright \\d{4}"]],
+ optionExamples: [[true, "Copyright \\d{4}", "Copyright 2017"]],
+ hasFix: true,
type: "style",
typescriptOnly: false,
};
@@ -55,3 +86,4 @@ var Rule = /** @class */ (function (_super) {
return Rule;
}(Lint.Rules.AbstractRule));
exports.Rule = Rule;
+var templateObject_1;