From b2aebcdbc5ac783121d0d6c370d207def204f3ce Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 21 Aug 2017 16:50:24 +0200 Subject: [PATCH] lint - single-quoted-imports only --- .../lib/tslint/noUnexternalizedStringsRule.js | 9 +++++++-- .../lib/tslint/noUnexternalizedStringsRule.ts | 18 ++++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/build/lib/tslint/noUnexternalizedStringsRule.js b/build/lib/tslint/noUnexternalizedStringsRule.js index d8eb4d38017..4eb8115f27b 100644 --- a/build/lib/tslint/noUnexternalizedStringsRule.js +++ b/build/lib/tslint/noUnexternalizedStringsRule.js @@ -87,7 +87,11 @@ var NoUnexternalizedStringsRuleWalker = (function (_super) { var doubleQuoted = text.length >= 2 && text[0] === NoUnexternalizedStringsRuleWalker.DOUBLE_QUOTE && text[text.length - 1] === NoUnexternalizedStringsRuleWalker.DOUBLE_QUOTE; var info = this.findDescribingParent(node); // Ignore strings in import and export nodes. - if (info && info.ignoreUsage) { + if (info && info.isImport && doubleQuoted) { + this.addFailureAtNode(node, NoUnexternalizedStringsRuleWalker.ImportFailureMessage, new Lint.Fix(NoUnexternalizedStringsRuleWalker.ImportFailureMessage, [ + this.createReplacement(node.getStart(), 1, '\''), + this.createReplacement(node.getStart() + text.length - 1, 1, '\''), + ])); return; } var callInfo = info ? info.callInfo : null; @@ -161,7 +165,7 @@ var NoUnexternalizedStringsRuleWalker = (function (_super) { return { callInfo: { callExpression: callExpression, argIndex: callExpression.arguments.indexOf(node) } }; } else if (kind === ts.SyntaxKind.ImportEqualsDeclaration || kind === ts.SyntaxKind.ImportDeclaration || kind === ts.SyntaxKind.ExportDeclaration) { - return { ignoreUsage: true }; + return { isImport: true }; } else if (kind === ts.SyntaxKind.VariableDeclaration || kind === ts.SyntaxKind.FunctionDeclaration || kind === ts.SyntaxKind.PropertyDeclaration || kind === ts.SyntaxKind.MethodDeclaration || kind === ts.SyntaxKind.VariableDeclarationList || kind === ts.SyntaxKind.InterfaceDeclaration @@ -172,6 +176,7 @@ var NoUnexternalizedStringsRuleWalker = (function (_super) { node = parent; } }; + NoUnexternalizedStringsRuleWalker.ImportFailureMessage = 'Do not use double qoutes for imports.'; NoUnexternalizedStringsRuleWalker.DOUBLE_QUOTE = '"'; return NoUnexternalizedStringsRuleWalker; }(Lint.RuleWalker)); diff --git a/build/lib/tslint/noUnexternalizedStringsRule.ts b/build/lib/tslint/noUnexternalizedStringsRule.ts index cbe457c5be5..172db4d6b12 100644 --- a/build/lib/tslint/noUnexternalizedStringsRule.ts +++ b/build/lib/tslint/noUnexternalizedStringsRule.ts @@ -45,6 +45,8 @@ interface KeyMessagePair { class NoUnexternalizedStringsRuleWalker extends Lint.RuleWalker { + private static ImportFailureMessage = 'Do not use double qoutes for imports.'; + private static DOUBLE_QUOTE: string = '"'; private signatures: Map; @@ -101,7 +103,15 @@ class NoUnexternalizedStringsRuleWalker extends Lint.RuleWalker { let doubleQuoted = text.length >= 2 && text[0] === NoUnexternalizedStringsRuleWalker.DOUBLE_QUOTE && text[text.length - 1] === NoUnexternalizedStringsRuleWalker.DOUBLE_QUOTE; let info = this.findDescribingParent(node); // Ignore strings in import and export nodes. - if (info && info.ignoreUsage) { + if (info && info.isImport && doubleQuoted) { + this.addFailureAtNode( + node, + NoUnexternalizedStringsRuleWalker.ImportFailureMessage, + new Lint.Fix(NoUnexternalizedStringsRuleWalker.ImportFailureMessage, [ + this.createReplacement(node.getStart(), 1, '\''), + this.createReplacement(node.getStart() + text.length - 1, 1, '\''), + ]) + ); return; } let callInfo = info ? info.callInfo : null; @@ -170,7 +180,7 @@ class NoUnexternalizedStringsRuleWalker extends Lint.RuleWalker { occurrences.push({ key: keyNode, message: messageNode }); } - private findDescribingParent(node: ts.Node): { callInfo?: { callExpression: ts.CallExpression, argIndex: number }, ignoreUsage?: boolean; } { + private findDescribingParent(node: ts.Node): { callInfo?: { callExpression: ts.CallExpression, argIndex: number }, isImport?: boolean; } { let parent: ts.Node; while ((parent = node.parent)) { let kind = parent.kind; @@ -178,7 +188,7 @@ class NoUnexternalizedStringsRuleWalker extends Lint.RuleWalker { let callExpression = parent as ts.CallExpression; return { callInfo: { callExpression: callExpression, argIndex: callExpression.arguments.indexOf(node) } }; } else if (kind === ts.SyntaxKind.ImportEqualsDeclaration || kind === ts.SyntaxKind.ImportDeclaration || kind === ts.SyntaxKind.ExportDeclaration) { - return { ignoreUsage: true }; + return { isImport: true }; } else if (kind === ts.SyntaxKind.VariableDeclaration || kind === ts.SyntaxKind.FunctionDeclaration || kind === ts.SyntaxKind.PropertyDeclaration || kind === ts.SyntaxKind.MethodDeclaration || kind === ts.SyntaxKind.VariableDeclarationList || kind === ts.SyntaxKind.InterfaceDeclaration || kind === ts.SyntaxKind.ClassDeclaration || kind === ts.SyntaxKind.EnumDeclaration || kind === ts.SyntaxKind.ModuleDeclaration @@ -188,4 +198,4 @@ class NoUnexternalizedStringsRuleWalker extends Lint.RuleWalker { node = parent; } } -} \ No newline at end of file +}