all files / fc-er/ Enum.js

96.88% Statements 62/64
79.17% Branches 19/24
100% Functions 18/18
100% Lines 48/48
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 12211×                             10×                           11×                                                                         101×                      
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; Eif ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { Eif (protoProps) defineProperties(Constructor.prototype, protoProps); Iif (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
 
function _classCallCheck(instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
Eif (typeof define !== 'function') {
    var define = require('amdefine')(module);
}
 
define(function (require) {
    'use strict';
 
    var Enum = function () {
        function Enum() {
            _classCallCheck(this, Enum);
 
            this.valueIndex = [];
            this.aliasIndex = {};
            this.textIndex = {};
 
            for (var i = 0; i < arguments.length; i++) {
                var element = arguments[i];
                if (element.value == null) {
                    element.value = i;
                }
                this.addElement(element);
            }
        }
 
        _createClass(Enum, [{
            key: 'addElement',
            value: function addElement(element) {
                if (this.hasOwnProperty(element.value)) {
                    throw new Error('Already defined an element with value ' + element.value + ' in this enum type');
                }
 
                if (this.hasOwnProperty(element.alias)) {
                    throw new Error('Already defined an element with alias ' + element.alias + ' in this enum type');
                }
 
                this[element.value] = element.alias;
                this[element.alias] = element.value;
 
                this.valueIndex[element.value] = element;
                this.aliasIndex[element.alias] = element;
                this.textIndex[element.text] = element;
            }
        }, {
            key: 'fromValue',
            value: function fromValue(value) {
                return this.valueIndex[value];
            }
        }, {
            key: 'fromAlias',
            value: function fromAlias(alias) {
                return this.aliasIndex[alias];
            }
        }, {
            key: 'fromText',
            value: function fromText(text) {
                return this.textIndex[text];
            }
        }, {
            key: 'getTextFromValue',
            value: function getTextFromValue(value) {
                return this.fromValue(value).text;
            }
        }, {
            key: 'getTextFromAlias',
            value: function getTextFromAlias(alias) {
                return this.fromAlias(alias).text;
            }
        }, {
            key: 'getValueFromAlias',
            value: function getValueFromAlias(alias) {
                return this.fromAlias(alias).value;
            }
        }, {
            key: 'getValueFromText',
            value: function getValueFromText(text) {
                return this.fromText(text).value;
            }
        }, {
            key: 'getAliasFromValue',
            value: function getAliasFromValue(value) {
                return this.fromValue(value).alias;
            }
        }, {
            key: 'getAliasFromText',
            value: function getAliasFromText(text) {
                return this.fromText(text).alias;
            }
        }, {
            key: 'toArray',
            value: function toArray() {
                var array = [];
                if (arguments.length > 0) {
                    for (var i = 0; i < arguments.length; i++) {
                        var hint = arguments[i];
                        if (typeof hint === 'string') {
                            array.push(this.fromAlias(hint));
                        } else {
                            array.push(hint);
                        }
                    }
                } else {
                    for (var _i = 0; _i < this.valueIndex.length; _i++) {
                        if (this.valueIndex[_i]) {
                            array.push(this.valueIndex[_i]);
                        }
                    }
                }
 
                return array;
            }
        }]);
 
        return Enum;
    }();
 
    return Enum;
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9FbnVtLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFJLE9BQU8sTUFBUCxLQUFrQixVQUFsQixFQUE4QjtBQUFDLFFBQUksU0FBUyxRQUFRLFVBQVIsRUFBb0IsTUFBcEIsQ0FBVCxDQUFMO0NBQWxDOztBQUVBLE9BQU8sVUFBVSxPQUFWLEVBQW1CO0FBQ3RCLGlCQURzQjs7UUFHaEI7QUFDRix3QkFBYzs7O0FBQ1YsaUJBQUssVUFBTCxHQUFrQixFQUFsQixDQURVO0FBRVYsaUJBQUssVUFBTCxHQUFrQixFQUFsQixDQUZVO0FBR1YsaUJBQUssU0FBTCxHQUFpQixFQUFqQixDQUhVOztBQUtWLGlCQUFLLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxVQUFVLE1BQVYsRUFBa0IsR0FBdEMsRUFBMkM7QUFDdkMsb0JBQU0sVUFBVSxVQUFVLENBQVYsQ0FBVixDQURpQztBQUV2QyxvQkFBSSxRQUFRLEtBQVIsSUFBaUIsSUFBakIsRUFBdUI7QUFDdkIsNEJBQVEsS0FBUixHQUFnQixDQUFoQixDQUR1QjtpQkFBM0I7QUFHQSxxQkFBSyxVQUFMLENBQWdCLE9BQWhCLEVBTHVDO2FBQTNDO1NBTEo7Ozs7dUNBY1csU0FBUztBQUNoQixvQkFBSSxLQUFLLGNBQUwsQ0FBb0IsUUFBUSxLQUFSLENBQXhCLEVBQXdDO0FBQ3BDLDBCQUFNLElBQUksS0FBSiw0Q0FBbUQsUUFBUSxLQUFSLHVCQUFuRCxDQUFOLENBRG9DO2lCQUF4Qzs7QUFJQSxvQkFBSSxLQUFLLGNBQUwsQ0FBb0IsUUFBUSxLQUFSLENBQXhCLEVBQXdDO0FBQ3BDLDBCQUFNLElBQUksS0FBSiw0Q0FBbUQsUUFBUSxLQUFSLHVCQUFuRCxDQUFOLENBRG9DO2lCQUF4Qzs7QUFJQSxxQkFBSyxRQUFRLEtBQVIsQ0FBTCxHQUFzQixRQUFRLEtBQVIsQ0FUTjtBQVVoQixxQkFBSyxRQUFRLEtBQVIsQ0FBTCxHQUFzQixRQUFRLEtBQVIsQ0FWTjs7QUFZaEIscUJBQUssVUFBTCxDQUFnQixRQUFRLEtBQVIsQ0FBaEIsR0FBaUMsT0FBakMsQ0FaZ0I7QUFhaEIscUJBQUssVUFBTCxDQUFnQixRQUFRLEtBQVIsQ0FBaEIsR0FBaUMsT0FBakMsQ0FiZ0I7QUFjaEIscUJBQUssU0FBTCxDQUFlLFFBQVEsSUFBUixDQUFmLEdBQStCLE9BQS9CLENBZGdCOzs7O3NDQWlCVixPQUFPO0FBQ2IsdUJBQU8sS0FBSyxVQUFMLENBQWdCLEtBQWhCLENBQVAsQ0FEYTs7OztzQ0FJUCxPQUFPO0FBQ2IsdUJBQU8sS0FBSyxVQUFMLENBQWdCLEtBQWhCLENBQVAsQ0FEYTs7OztxQ0FJUixNQUFNO0FBQ1gsdUJBQU8sS0FBSyxTQUFMLENBQWUsSUFBZixDQUFQLENBRFc7Ozs7NkNBSUUsT0FBTztBQUNwQix1QkFBTyxLQUFLLFNBQUwsQ0FBZSxLQUFmLEVBQXNCLElBQXRCLENBRGE7Ozs7NkNBSVAsT0FBTztBQUNwQix1QkFBTyxLQUFLLFNBQUwsQ0FBZSxLQUFmLEVBQXNCLElBQXRCLENBRGE7Ozs7OENBSU4sT0FBTztBQUNyQix1QkFBTyxLQUFLLFNBQUwsQ0FBZSxLQUFmLEVBQXNCLEtBQXRCLENBRGM7Ozs7NkNBSVIsTUFBTTtBQUNuQix1QkFBTyxLQUFLLFFBQUwsQ0FBYyxJQUFkLEVBQW9CLEtBQXBCLENBRFk7Ozs7OENBSUwsT0FBTztBQUNyQix1QkFBTyxLQUFLLFNBQUwsQ0FBZSxLQUFmLEVBQXNCLEtBQXRCLENBRGM7Ozs7NkNBSVIsTUFBTTtBQUNuQix1QkFBTyxLQUFLLFFBQUwsQ0FBYyxJQUFkLEVBQW9CLEtBQXBCLENBRFk7Ozs7c0NBSWI7QUFDTixvQkFBTSxRQUFRLEVBQVIsQ0FEQTtBQUVOLG9CQUFJLFVBQVUsTUFBVixHQUFtQixDQUFuQixFQUFzQjtBQUN0Qix5QkFBSyxJQUFJLElBQUksQ0FBSixFQUFPLElBQUksVUFBVSxNQUFWLEVBQWtCLEdBQXRDLEVBQTJDO0FBQ3ZDLDRCQUFNLE9BQU8sVUFBVSxDQUFWLENBQVAsQ0FEaUM7QUFFdkMsNEJBQUksT0FBTyxJQUFQLEtBQWdCLFFBQWhCLEVBQTBCO0FBQzFCLGtDQUFNLElBQU4sQ0FBVyxLQUFLLFNBQUwsQ0FBZSxJQUFmLENBQVgsRUFEMEI7eUJBQTlCLE1BR0s7QUFDRCxrQ0FBTSxJQUFOLENBQVcsSUFBWCxFQURDO3lCQUhMO3FCQUZKO2lCQURKLE1BV0s7QUFDRCx5QkFBSyxJQUFJLEtBQUksQ0FBSixFQUFPLEtBQUksS0FBSyxVQUFMLENBQWdCLE1BQWhCLEVBQXdCLElBQTVDLEVBQWlEO0FBQzdDLDRCQUFJLEtBQUssVUFBTCxDQUFnQixFQUFoQixDQUFKLEVBQXdCO0FBQ3BCLGtDQUFNLElBQU4sQ0FBVyxLQUFLLFVBQUwsQ0FBZ0IsRUFBaEIsQ0FBWCxFQURvQjt5QkFBeEI7cUJBREo7aUJBWko7O0FBbUJBLHVCQUFPLEtBQVAsQ0FyQk07Ozs7O1FBdkVROztBQWdHdEIsV0FBTyxJQUFQLENBaEdzQjtDQUFuQixDQUFQIiwiZmlsZSI6IkVudW0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpZiAodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykge3ZhciBkZWZpbmUgPSByZXF1aXJlKCdhbWRlZmluZScpKG1vZHVsZSl9XG5cbmRlZmluZShmdW5jdGlvbiAocmVxdWlyZSkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIGNsYXNzIEVudW0ge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVJbmRleCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5hbGlhc0luZGV4ID0ge307XG4gICAgICAgICAgICB0aGlzLnRleHRJbmRleCA9IHt9O1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQudmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYWRkRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eShlbGVtZW50LnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQWxyZWFkeSBkZWZpbmVkIGFuIGVsZW1lbnQgd2l0aCB2YWx1ZSAke2VsZW1lbnQudmFsdWV9IGluIHRoaXMgZW51bSB0eXBlYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc093blByb3BlcnR5KGVsZW1lbnQuYWxpYXMpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBbHJlYWR5IGRlZmluZWQgYW4gZWxlbWVudCB3aXRoIGFsaWFzICR7ZWxlbWVudC5hbGlhc30gaW4gdGhpcyBlbnVtIHR5cGVgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpc1tlbGVtZW50LnZhbHVlXSA9IGVsZW1lbnQuYWxpYXM7XG4gICAgICAgICAgICB0aGlzW2VsZW1lbnQuYWxpYXNdID0gZWxlbWVudC52YWx1ZTtcblxuICAgICAgICAgICAgdGhpcy52YWx1ZUluZGV4W2VsZW1lbnQudmFsdWVdID0gZWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuYWxpYXNJbmRleFtlbGVtZW50LmFsaWFzXSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICB0aGlzLnRleHRJbmRleFtlbGVtZW50LnRleHRdID0gZWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZyb21WYWx1ZSh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVJbmRleFt2YWx1ZV07XG4gICAgICAgIH1cblxuICAgICAgICBmcm9tQWxpYXMoYWxpYXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFsaWFzSW5kZXhbYWxpYXNdO1xuICAgICAgICB9XG5cbiAgICAgICAgZnJvbVRleHQodGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dEluZGV4W3RleHRdO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0VGV4dEZyb21WYWx1ZSh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVZhbHVlKHZhbHVlKS50ZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0VGV4dEZyb21BbGlhcyhhbGlhcykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbUFsaWFzKGFsaWFzKS50ZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0VmFsdWVGcm9tQWxpYXMoYWxpYXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21BbGlhcyhhbGlhcykudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRWYWx1ZUZyb21UZXh0KHRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21UZXh0KHRleHQpLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0QWxpYXNGcm9tVmFsdWUodmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21WYWx1ZSh2YWx1ZSkuYWxpYXM7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRBbGlhc0Zyb21UZXh0KHRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21UZXh0KHRleHQpLmFsaWFzO1xuICAgICAgICB9XG5cbiAgICAgICAgdG9BcnJheSgpIHtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5ID0gW107XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoaW50ID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGhpbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5wdXNoKHRoaXMuZnJvbUFsaWFzKGhpbnQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LnB1c2goaGludCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWVJbmRleC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUluZGV4W2ldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5wdXNoKHRoaXMudmFsdWVJbmRleFtpXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBFbnVtO1xufSk7XG4iXX0=