123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- "use strict";
- var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
- var _isType = require("./isType");
- var isObject = _isType.isObject;
- var isString = _isType.isString;
- /**
- * Represents an Item of an Enum.
- * @param {String} key The Enum key.
- * @param {Number} value The Enum value.
- */
- var EnumItem = (function () {
- /*constructor reference so that, this.constructor===EnumItem//=>true */
- function EnumItem(key, value) {
- var options = arguments[2] === undefined ? {} : arguments[2];
- _classCallCheck(this, EnumItem);
- this.key = key;
- this.value = value;
- this._options = options;
- this._options.ignoreCase = this._options.ignoreCase || false;
- }
- /**
- * Checks if the flagged EnumItem has the passing object.
- * @param {EnumItem || String || Number} value The object to check with.
- * @return {Boolean} The check result.
- */
- EnumItem.prototype.has = function has(value) {
- if (EnumItem.isEnumItem(value)) {
- return (this.value & value.value) !== 0;
- } else if (isString(value)) {
- if (this._options.ignoreCase) {
- return this.key.toLowerCase().indexOf(value.toLowerCase()) >= 0;
- }
- return this.key.indexOf(value) >= 0;
- } else {
- return (this.value & value) !== 0;
- }
- };
- /**
- * Checks if the EnumItem is the same as the passing object.
- * @param {EnumItem || String || Number} key The object to check with.
- * @return {Boolean} The check result.
- */
- EnumItem.prototype.is = function is(key) {
- if (EnumItem.isEnumItem(key)) {
- return this.key === key.key;
- } else if (isString(key)) {
- if (this._options.ignoreCase) {
- return this.key.toLowerCase() === key.toLowerCase();
- }
- return this.key === key;
- } else {
- return this.value === key;
- }
- };
- /**
- * Returns String representation of this EnumItem.
- * @return {String} String representation of this EnumItem.
- */
- EnumItem.prototype.toString = function toString() {
- return this.key;
- };
- /**
- * Returns JSON object representation of this EnumItem.
- * @return {String} JSON object representation of this EnumItem.
- */
- EnumItem.prototype.toJSON = function toJSON() {
- return this.key;
- };
- /**
- * Returns the value to compare with.
- * @return {String} The value to compare with.
- */
- EnumItem.prototype.valueOf = function valueOf() {
- return this.value;
- };
- EnumItem.isEnumItem = function isEnumItem(value) {
- return value instanceof EnumItem || isObject(value) && value.key !== undefined && value.value !== undefined;
- };
- return EnumItem;
- })();
- module.exports = EnumItem;
|