UNPKG

criticizer

Version:

Linting for Angular applications, following angular.io/styleguide.

41 lines (34 loc) 1.02 kB
export const SelectorValidator = { attribute(selector: string): boolean { return selector.length !== 0; }, element(selector: string): boolean { return selector !== null; }, kebabCase(selector: string): boolean { return /^[a-z0-9\-]+\-[a-z0-9\-]+$/.test(selector); }, camelCase(selector: string): boolean { return /^[a-zA-Z0-9\[\]]+$/.test(selector); }, prefix(prefix: string, selectorType: string): Function { const regex = new RegExp(`^\\[?(${prefix})`); return (selector: string) => { if (!prefix) { return true; } if (!regex.test(selector)) { return false; } else { const suffix = selector.replace(regex, ''); if (selectorType === 'camelCase') { return !suffix || suffix[0] === suffix[0].toUpperCase(); } else if (selectorType === 'kebab-case') { return !suffix || suffix[0] === '-'; } else { throw new Error('Invalid selector type'); } } }; } };