minor refactoring...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2020-10-05 14:35:44 +03:00
parent a5e0ae6d64
commit c3ca91050c
3 changed files with 145 additions and 13 deletions

View File

@ -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)

117
package-lock.json generated
View File

@ -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
}
}
}

View File

@ -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": "*"
}
}