turbocommons-ts
Version:
General purpose library that implements frequently used and generic software development tasks
1 lines • 4.32 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.HashMapObject=void 0;var StringUtils_1=require("../utils/StringUtils"),ObjectUtils_1=require("../utils/ObjectUtils"),ArrayUtils_1=require("../utils/ArrayUtils"),NumericUtils_1=require("../utils/NumericUtils"),HashMapObject=function(){function t(t){if(void 0===t&&(t=null),this._keys=[],this._data={},this._length=0,null!=t)if(ObjectUtils_1.ObjectUtils.isObject(t))for(var e in t)this.set(String(e),t[e]);else{if(!ArrayUtils_1.ArrayUtils.isArray(t))throw new Error("HashMapObject: invalid data");for(var s=t.length,i=0;i<s;i++)this.set(String(i),t[i])}}return t.prototype.set=function(t,e){if(StringUtils_1.StringUtils.isString(t)&&""!==t.replace(/ |\n|\r|\t/gi,""))return this._data.hasOwnProperty(t)||(this._keys.push(t),this._length++),this._data[t]=e;throw new Error("HashMapObject: key must be a non empty string")},t.prototype.length=function(){return this._length},t.prototype.get=function(t){if(this._data.hasOwnProperty(t))return this._data[t];throw new Error("HashMapObject->get: key does not exist or is invalid")},t.prototype.getAt=function(t){if("number"==typeof t&&NumericUtils_1.NumericUtils.isInteger(t)&&t>=0&&t<this._length)return this._data[this._keys[t]];throw new Error("HashMapObject->getAt: index does not exist or is invalid")},t.prototype.getKeys=function(){return this._keys},t.prototype.getValues=function(){for(var t=[],e=0;e<this._keys.length;e++)t.push(this.get(this._keys[e]));return t},t.prototype.isKey=function(t){return StringUtils_1.StringUtils.isString(t)&&this._data.hasOwnProperty(t)},t.prototype.remove=function(t){if(this._data.hasOwnProperty(t)){var e=this._data[t];return delete this._data[t],delete this._keys[this._keys.indexOf(t)],this._length--,e}throw this._validateKeyFormat(t),new Error("HashMapObject->rename: key does not exist "+t)},t.prototype.rename=function(t,e){if(this._validateKeyFormat(t),this._validateKeyFormat(e),this.isKey(e))throw new Error("HashMapObject->rename: newKey "+e+" already exists");if(this.isKey(t)){for(var s={},i=0;i<this._keys.length;i++)this._keys[i]==t?s[e]=this._data[t]:s[this._keys[i]]=this._data[this._keys[i]];return this._data=s,this._keys[this._keys.indexOf(t)]=e,!0}throw new Error("HashMapObject->rename: key does not exist "+t)},t.prototype.swap=function(t,e){if(this._validateKeyFormat(t),this._validateKeyFormat(e),!this.isKey(t))throw new Error("HashMapObject->swap: key1 does not exist "+t);if(!this.isKey(e))throw new Error("HashMapObject->swap: key2 does not exist "+e);for(var s={},i=this.get(t),r=this.get(e),a=0;a<this._keys.length;a++)switch(this._keys[a]){case t:s[e]=r;break;case e:s[t]=i;break;default:s[this._keys[a]]=this._data[this._keys[a]]}this._data=s;var n=this._keys.indexOf(t),h=this._keys.indexOf(e);return this._keys[n]=e,this._keys[h]=t,!0},t.prototype.sortByKey=function(e,s){switch(void 0===e&&(e=t.SORT_METHOD_STRING),void 0===s&&(s=t.SORT_ORDER_ASCENDING),e+s){case t.SORT_METHOD_STRING+t.SORT_ORDER_ASCENDING:this._keys.sort();break;case t.SORT_METHOD_STRING+t.SORT_ORDER_DESCENDING:this._keys.sort(),this._keys.reverse();break;case t.SORT_METHOD_NUMERIC+t.SORT_ORDER_ASCENDING:this._keys.sort(function(t,e){return t-e});break;case t.SORT_METHOD_NUMERIC+t.SORT_ORDER_DESCENDING:this._keys.sort(function(t,e){return e-t});break;default:throw new Error("HashMapObject->sortByKey: Unknown sort method or order")}return!0},t.prototype.shift=function(){if(this._length<=0)throw new Error("HashMapObject->shift: No elements");this._length--;var t=this._data[this._keys[0]];return delete this._data[this._keys[0]],this._keys.shift(),t},t.prototype.pop=function(){if(this._length<=0)throw new Error("HashMapObject->pop: No elements");this._length--;var t=this._data[this._keys[this._length]];return delete this._data[this._keys[this._length]],this._keys.pop(),t},t.prototype.reverse=function(){return this._keys.reverse(),!0},t.prototype._validateKeyFormat=function(t){if(!StringUtils_1.StringUtils.isString(t)||""==t.replace(/ |\n|\r|\t/gi,""))throw new Error("HashMapObject: key must be a non empty string")},t.SORT_METHOD_STRING="SORT_METHOD_STRING",t.SORT_METHOD_NUMERIC="SORT_METHOD_NUMERIC",t.SORT_ORDER_ASCENDING="SORT_ORDER_ASCENDING",t.SORT_ORDER_DESCENDING="SORT_ORDER_DESCENDING",t}();exports.HashMapObject=HashMapObject;