From fc384274b7c9a9f27d08a2f6845990307782e789 Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Tue, 2 Apr 2019 14:47:19 +0200 Subject: [PATCH] Fix rule --- src/rules/interfaceNameRule.ts | 14 ++++++++++---- .../interface-name/always-prefix/test.ts.lint | 3 +++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/rules/interfaceNameRule.ts b/src/rules/interfaceNameRule.ts index 32f169f5e2c..38e1d894743 100644 --- a/src/rules/interfaceNameRule.ts +++ b/src/rules/interfaceNameRule.ts @@ -19,7 +19,6 @@ import * as utils from "tsutils"; import * as ts from "typescript"; import * as Lint from "../index"; -import { isLowerCase, isUpperCase } from "../utils"; const OPTION_ALWAYS = "always-prefix"; const OPTION_NEVER = "never-prefix"; @@ -76,12 +75,19 @@ function walk(ctx: Lint.WalkContext<{ never: boolean }>): void { } function hasPrefixI(name: string): boolean { - return name.length >= 3 && name[0] === "I" && !isLowerCase(name[1]) && !isUpperCase(name[2]); + return ( + name.length >= 3 && name[0] === "I" && /^[A-Z]*$/.test(name[1]) && !/^[A-Z]*$/.test(name[2]) + ); } function cantDecide(name: string): boolean { return ( - (name.length === 2 && name[0] === "I" && !isLowerCase(name[1])) || - (name.length >= 2 && name[0] === "I" && !isLowerCase(name[1]) && !isLowerCase(name[2])) + // Case ID + (name.length === 2 && name[0] === "I" && /^[A-Z]*$/.test(name[1])) || + // Case IDB + (name.length >= 2 && + name[0] === "I" && + /^[A-Z]*$/.test(name[1]) && + /^[A-Z]*$/.test(name[2])) ); } diff --git a/test/rules/interface-name/always-prefix/test.ts.lint b/test/rules/interface-name/always-prefix/test.ts.lint index 7dda122e691..a13794d3852 100644 --- a/test/rules/interface-name/always-prefix/test.ts.lint +++ b/test/rules/interface-name/always-prefix/test.ts.lint @@ -11,6 +11,9 @@ interface IABC { interface IDBFactory { } +interface II18nService { +} + // invalid code interface Options { ~~~~~~~ [interface name must start with a capitalized I]