AttributePool: Use ES6 class syntax

This commit is contained in:
Richard Hansen 2021-10-22 21:59:03 -04:00
parent bbc8b29ffd
commit c98b521539

View file

@ -29,13 +29,14 @@
used to reference Attributes in Changesets. used to reference Attributes in Changesets.
*/ */
const AttributePool = function () { class AttributePool {
constructor() {
this.numToAttrib = {}; // e.g. {0: ['foo','bar']} this.numToAttrib = {}; // e.g. {0: ['foo','bar']}
this.attribToNum = {}; // e.g. {'foo,bar': 0} this.attribToNum = {}; // e.g. {'foo,bar': 0}
this.nextNum = 0; this.nextNum = 0;
}; }
AttributePool.prototype.putAttrib = function (attrib, dontAddIfAbsent) { putAttrib(attrib, dontAddIfAbsent = false) {
const str = String(attrib); const str = String(attrib);
if (str in this.attribToNum) { if (str in this.attribToNum) {
return this.attribToNum[str]; return this.attribToNum[str];
@ -47,43 +48,43 @@ AttributePool.prototype.putAttrib = function (attrib, dontAddIfAbsent) {
this.attribToNum[str] = num; this.attribToNum[str] = num;
this.numToAttrib[num] = [String(attrib[0] || ''), String(attrib[1] || '')]; this.numToAttrib[num] = [String(attrib[0] || ''), String(attrib[1] || '')];
return num; return num;
}; }
AttributePool.prototype.getAttrib = function (num) { getAttrib(num) {
const pair = this.numToAttrib[num]; const pair = this.numToAttrib[num];
if (!pair) { if (!pair) {
return pair; return pair;
} }
return [pair[0], pair[1]]; // return a mutable copy return [pair[0], pair[1]]; // return a mutable copy
}; }
AttributePool.prototype.getAttribKey = function (num) { getAttribKey(num) {
const pair = this.numToAttrib[num]; const pair = this.numToAttrib[num];
if (!pair) return ''; if (!pair) return '';
return pair[0]; return pair[0];
}; }
AttributePool.prototype.getAttribValue = function (num) { getAttribValue(num) {
const pair = this.numToAttrib[num]; const pair = this.numToAttrib[num];
if (!pair) return ''; if (!pair) return '';
return pair[1]; return pair[1];
}; }
AttributePool.prototype.eachAttrib = function (func) { eachAttrib(func) {
for (const n of Object.keys(this.numToAttrib)) { for (const n of Object.keys(this.numToAttrib)) {
const pair = this.numToAttrib[n]; const pair = this.numToAttrib[n];
func(pair[0], pair[1]); func(pair[0], pair[1]);
} }
}; }
AttributePool.prototype.toJsonable = function () { toJsonable() {
return { return {
numToAttrib: this.numToAttrib, numToAttrib: this.numToAttrib,
nextNum: this.nextNum, nextNum: this.nextNum,
}; };
}; }
AttributePool.prototype.fromJsonable = function (obj) { fromJsonable(obj) {
this.numToAttrib = obj.numToAttrib; this.numToAttrib = obj.numToAttrib;
this.nextNum = obj.nextNum; this.nextNum = obj.nextNum;
this.attribToNum = {}; this.attribToNum = {};
@ -91,7 +92,7 @@ AttributePool.prototype.fromJsonable = function (obj) {
this.attribToNum[String(this.numToAttrib[n])] = Number(n); this.attribToNum[String(this.numToAttrib[n])] = Number(n);
} }
return this; return this;
}; }
}
module.exports = AttributePool; module.exports = AttributePool;