1
0
Fork 0

fix(core): Put getId into a closure

This commit is contained in:
joostdecock 2022-09-25 16:40:09 +02:00
parent 1a25a9e379
commit 3b53f4c883
2 changed files with 33 additions and 17 deletions

View file

@ -77,18 +77,6 @@ Part.prototype.attr = function (name, value, overwrite = false) {
return this
}
/**
* Returns on unused ID (unused in this part)
*
* @param {string} prefix - An optional prefix to apply to the ID
* @return {string} id - The id
*/
Part.prototype.getId = function (prefix = '') {
this.freeId += 1
return prefix + this.freeId
}
/**
* Hide the part
*
@ -125,7 +113,7 @@ Part.prototype.shorthand = function () {
const shorthand = {
complete,
context: this.context,
getId: this.getId,
getId: this.__getIdClosure(),
hide: this.hide,
log: this.context.store.log,
paperless,
@ -289,6 +277,22 @@ Part.prototype.__boundary = function () {
return this
}
/**
* Returns a closure holding a getId method (returns an ID unused in this part)
*
* @return {function} getId - The getId function
*/
Part.prototype.__getIdClosure = function () {
const self = this
const method = function (prefix = '') {
self.freeId += 1
return prefix + self.freeId
}
return method
}
/**
* Copies point/path/snippet data from part orig into this
*

View file

@ -58,10 +58,22 @@ describe('Part', () => {
expect(pattern.parts[0].test.points.macro.y).to.equal(456)
})
it('Should return a free ID', () => {
const part = new Part()
const free = part.getId()
expect(part.getId()).to.equal('' + (parseInt(free) + 1))
it('Should return a free ID in draft method', () => {
let id = null
const part = {
name: 'test',
draft: ({ getId, part }) => {
console.log(getId)
id = getId()
id = getId()
id = getId()
return part
},
}
const design = new Design({ parts: [part] })
new design().draft()
expect(id).to.equal('3')
})
it('Should return a function from __unitsClosure', () => {