@qudtlib/core
Version:
Data model for QUDTLib
35 lines (34 loc) • 1.19 kB
JavaScript
import { QudtNamespaces } from "./qudtNamespaces.js";
export class SystemOfUnits {
constructor(iri, labels, abbreviation, baseUnitIris) {
this.iri = iri;
this.labels = labels;
this.baseUnitIris = baseUnitIris || [];
this.abbreviation = abbreviation;
}
equals(other) {
return !!other && this.iri === other.iri;
}
hasBaseUnit(unit) {
return this.baseUnitIris.includes(unit.iri);
}
allowsUnit(unit) {
if (this.hasBaseUnit(unit)) {
return true;
}
if (unit.unitOfSystemIris.includes(this.iri)) {
return true;
}
if (unit.iri === SystemOfUnits.GM_iri) {
// we use gram as the base unit, but SI uses KiloGM, so if we fail for GM, try KiloGM
return this.baseUnitIris.includes(SystemOfUnits.KiloGM_iri);
}
if (unit.scalingOf && unit.prefix) {
return this.allowsUnit(unit.scalingOf);
}
return false;
}
}
SystemOfUnits.GM_iri = QudtNamespaces.unit.makeIriInNamespace("GM");
SystemOfUnits.KiloGM_iri = QudtNamespaces.unit.makeIriInNamespace("KiloGM");
//# sourceMappingURL=systemOfUnits.js.map