UNPKG

tslint-folders

Version:

Custom TSLint rules for checking imports between packages and their folders, and generating relevant diagrams.

56 lines (55 loc) 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FilenameCasingUtils = void 0; var FilenamesRuleConfig_1 = require("../model/FilenamesRuleConfig"); var FilenameCasingUtils; (function (FilenameCasingUtils) { function isCased(filename, casing) { if (hasInvalidChars(filename)) { return false; } switch (casing) { case FilenamesRuleConfig_1.Casing.CamelCase: return isCamelCased(filename); case FilenamesRuleConfig_1.Casing.KebabCase: return isKebabCased(filename); case FilenamesRuleConfig_1.Casing.PascalCase: return isPascalCased(filename); case FilenamesRuleConfig_1.Casing.SnakeCase: return isSnakeCased(filename); default: throw new Error("unhandled casing ".concat(casing)); } } FilenameCasingUtils.isCased = isCased; function hasInvalidChars(filename) { return /[^a-z^A-Z^0-9._/.-]+/.test(filename); } function isPascalCased(name) { return isUpperCase(name[0]) && !name.includes("_") && !name.includes("-"); } function isCamelCased(name) { return isLowerCase(name[0]) && !name.includes("_") && !name.includes("-"); } function isNotSeparatorCased(name, disallowedSeparator) { for (var i = 0; i < name.length; i++) { var c = name.charAt(i); if (c === disallowedSeparator || !isLowerCase(c)) { return false; } } return true; } function isKebabCased(name) { return isNotSeparatorCased(name, "_") && name.includes("-"); } function isSnakeCased(name) { return isNotSeparatorCased(name, "-") && name.includes("_"); } function isUpperCase(str) { return str === str.toUpperCase(); } function isLowerCase(str) { return str === str.toLowerCase(); } })(FilenameCasingUtils = exports.FilenameCasingUtils || (exports.FilenameCasingUtils = {}));