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
JavaScript
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 = {}));
;