alwz
Version:
Extendable library for typecasting
47 lines • 1.43 kB
JavaScript
import Converter from './Converter.mjs';
import EV from './ErrorValue.mjs';
import Registry from './Registry.mjs';
export class Aggregator extends Registry {
constructor() {
super();
this.converter = (name) => {
if (this._items.has(name)) {
return this._items.get(name);
}
else {
throw new Aggregator.AbsentConverter('converter has not been registered', name);
}
};
this.to = (name) => this.converter(name).convert;
Object.freeze(this);
}
get converters() {
return Array.from(this._items);
}
register(name, converter) {
if (this._items.has(name)) {
throw new Aggregator.DuplicateConverter('converter has already been registered', name);
}
else {
if (converter instanceof Converter) {
this._items.set(name, converter);
}
else {
throw new Aggregator.InvalidConverter('must be an instance of Converter', converter);
}
}
return this;
}
unregister(name) {
this._items.delete(name);
return this;
}
}
Aggregator.DuplicateConverter = class extends EV {
};
Aggregator.InvalidConverter = class extends EV {
};
Aggregator.AbsentConverter = class extends EV {
};
export default Aggregator;
//# sourceMappingURL=Aggregator.mjs.map