From c3ca91050c9b07ae800226c07a27f37c97d237dc Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Mon, 5 Oct 2020 14:35:44 +0300 Subject: [PATCH] minor refactoring... Signed-off-by: Alex A. Naanou --- containers.js | 35 +++++++++----- package-lock.json | 117 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 6 ++- 3 files changed, 145 insertions(+), 13 deletions(-) diff --git a/containers.js b/containers.js index e99be1d..2e22c7b 100644 --- a/containers.js +++ b/containers.js @@ -49,25 +49,29 @@ module.UniqueKeyMap = object.Constructor('UniqueKeyMap', Map, { // Extended API... // - set: function(key, elem){ + set: function(key, elem, return_key=false){ var names + var n + // index this.__keys.set(elem, names = this.__keys.get(elem) || new Set()) // key/elem already exists... if(this.__unique_key_value__ && names.has(key)){ - return this } + return return_key ? + key + : this } names.add(key) - // make name unique... - var n = key - var i = 0 - while(this.has(n)){ - i++ - n = this.__key_pattern__ - .replace(/\$KEY/, key) - .replace(/\$COUNT/, i) } // add the elem with the unique name... - return object.parentCall(UniqueKeyMap.prototype, 'set', this, n, elem) }, + var res = object.parentCall( + UniqueKeyMap.prototype, + 'set', + this, + n = this.uniqieKey(key), + elem) + return return_key ? + n + : res }, delete: function(key){ var s = this.__keys.get(this.get(key)) if(s){ @@ -79,6 +83,15 @@ module.UniqueKeyMap = object.Constructor('UniqueKeyMap', Map, { // New API... // + uniqieKey: function(key){ + var n = key + var i = 0 + while(this.has(n)){ + i++ + n = this.__key_pattern__ + .replace(/\$KEY/, key) + .replace(/\$COUNT/, i) } + return n }, rename: function(from, to){ var e = this.get(from) this.delete(from) diff --git a/package-lock.json b/package-lock.json index 6fd0abe..7f1d0a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,133 @@ { "name": "ig-types", - "version": "1.0.0", + "version": "2.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "ig-argv": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/ig-argv/-/ig-argv-2.15.0.tgz", + "integrity": "sha512-Y9x7B96bq0T6yXIIMYJ6f3V9j7wOJjwpXytA8QpZn1LTM2D4C+YG2Ljl/rj+fhw29q42GNbZyVPsHsISPYVpsw==", + "dev": true, + "requires": { + "ig-object": "^5.2.6" + } + }, "ig-object": { "version": "5.2.8", "resolved": "https://registry.npmjs.org/ig-object/-/ig-object-5.2.8.tgz", "integrity": "sha512-EzT4CP6d6lI8bnknNgT3W8mUQhSVXflO0yPbKD4dKsFcINiC6npjoEBz+8m3VQmWJhc+36pXD4JLwNxUEgzi+Q==" }, + "ig-test": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/ig-test/-/ig-test-1.4.4.tgz", + "integrity": "sha512-x5GuZY7ABQ1yt4cbh+c0hzqujAjDpD72mzRYqOCBWkhfikom589AYvTuxJcW3nM8hvIMZW6226dvHbR6+yEtsw==", + "dev": true, + "requires": { + "colors": "^1.4.0", + "glob": "^7.1.6", + "ig-argv": "^2.13.2", + "ig-object": "^5.2.6" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "object-run": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-run/-/object-run-1.0.1.tgz", "integrity": "sha512-FkYGSw3wr5DLfEueCJvbkCh3jZE1DTVCEQNshQwH8zpUFn0ahyM1cQMNFfzTMC3DSTBHVH7+7+DAf1WDWn+EXA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true } } } diff --git a/package.json b/package.json index f69b2f3..8ff62b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ig-types", - "version": "2.0.1", + "version": "2.0.2", "description": "Generic JavaScript types and type extensions...", "main": "main.js", "scripts": { @@ -23,5 +23,9 @@ "dependencies": { "ig-object": "^5.2.8", "object-run": "^1.0.1" + }, + "devDependencies": { + "ig-test": "*", + "color": "*" } }