aboutsummaryrefslogtreecommitdiffstats
path: root/packages/tslint-config/rules/enumNamingRule.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/tslint-config/rules/enumNamingRule.ts')
-rw-r--r--packages/tslint-config/rules/enumNamingRule.ts60
1 files changed, 0 insertions, 60 deletions
diff --git a/packages/tslint-config/rules/enumNamingRule.ts b/packages/tslint-config/rules/enumNamingRule.ts
deleted file mode 100644
index 56499618f..000000000
--- a/packages/tslint-config/rules/enumNamingRule.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import * as Lint from 'tslint';
-import * as ts from 'typescript';
-
-export class Rule extends Lint.Rules.AbstractRule {
- public static FAILURE_STRING = `Enum member names should be PascalCase`;
-
- public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
- return this.applyWithFunction(sourceFile, walk);
- }
-}
-
-function walk(ctx: Lint.WalkContext<void>): void {
- // Recursively walk the AST starting with root node, `ctx.sourceFile`.
- // Call the function `cb` (defined below) for each child.
- return ts.forEachChild(ctx.sourceFile, cb);
-
- function cb(node: ts.Node): void {
- if (node.kind === ts.SyntaxKind.EnumMember) {
- const keyNode = node.getFirstToken(ctx.sourceFile);
- if (keyNode !== undefined) {
- const keyText = keyNode.getText(ctx.sourceFile);
- if (!isPascalCase(keyText)) {
- return ctx.addFailureAtNode(node, Rule.FAILURE_STRING, getFix(keyText, node));
- }
- }
- }
- // Continue recursion into the AST by calling function `cb` for every child of the current node.
- return ts.forEachChild(node, cb);
- }
-
- function getFix(text: string, node: ts.Node): Lint.Replacement {
- let fix = toPascalCase(text);
- // check for `member = value`
- if (node.getChildCount(ctx.sourceFile) === 3) {
- const value = node.getLastToken(ctx.sourceFile);
- if (value !== undefined) {
- fix += ` = ${value.getText(ctx.sourceFile)}`;
- }
- }
- return new Lint.Replacement(node.getStart(ctx.sourceFile), node.getWidth(ctx.sourceFile), fix);
- }
-}
-
-// Modified from: https://github.com/jonschlinkert/pascalcase/
-function toPascalCase(str: string): string {
- let result = str.replace(/([a-z0-9\W])([A-Z])/g, '$1 $2');
- if (result.length === 1) {
- return result.toUpperCase();
- }
- result = result.replace(/^[\W_\.]+|[\W_\.]+$/g, '').toLowerCase();
- result = result.charAt(0).toUpperCase() + result.slice(1);
- return result.replace(/[\W_\.]+(\w|$)/g, (_, ch) => {
- return ch.toUpperCase();
- });
-}
-function isPascalCase(s: string): boolean {
- const regex = /^([A-Z0-9]+[a-z0-9]+)+$/g;
- const key = s.split('=')[0].trim();
- return regex.test(key);
-}