selectorValidator.js 1.22 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var selectorPropertyBase_1 = require("../selectorPropertyBase");
exports.SelectorValidator = {
    attribute: function (selector) {
        return selector.length !== 0;
    },
    camelCase: function (selector) {
        return /^[a-zA-Z0-9\[\]]+$/.test(selector);
    },
    element: function (selector) {
        return selector !== null;
    },
    kebabCase: function (selector) {
        return /^[a-z0-9\-]+\-[a-z0-9\-]+$/.test(selector);
    },
    prefix: function (prefix, selectorStyle) {
        var regex = new RegExp("^\\[?(" + prefix + ")");
        return function (selector) {
            if (!prefix)
                return true;
            if (!regex.test(selector))
                return false;
            var suffix = selector.replace(regex, '');
            if (selectorStyle === selectorPropertyBase_1.OPTION_STYLE_CAMEL_CASE) {
                return !suffix || suffix[0] === suffix[0].toUpperCase();
            }
            else if (selectorStyle === selectorPropertyBase_1.OPTION_STYLE_KEBAB_CASE) {
                return !suffix || suffix[0] === '-';
            }
            throw Error('Invalid selector style!');
        };
    }
};