/src/storable.ts
/* Storable
This implements a simple way of selecting a set of properties to be stored (e.g. in a JSON blob)
*/
export default abstract class Storable {
[index: string]: any
saveProperties: string[] = []
store(): object {
const obj: any = {};
for (let k of this.saveProperties) {
if (this[k] instanceof Set) {
obj[k] = Array.from(this[k]);
} else {
obj[k] = this[k];
}
}
return obj;
}
load(obj: any) {
for (let k of this.saveProperties) {
if (this[k] instanceof Set) {
this[k] = new Set(obj[k]);
} else {
this[k] = obj[k];
}
}
}
}