@qudtlib/core
Version:
Data model for QUDTLib
39 lines (38 loc) • 1.38 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.SystemOfUnits = void 0;
const qudtNamespaces_js_1 = require("./qudtNamespaces.js");
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;
}
}
exports.SystemOfUnits = SystemOfUnits;
SystemOfUnits.GM_iri = qudtNamespaces_js_1.QudtNamespaces.unit.makeIriInNamespace("GM");
SystemOfUnits.KiloGM_iri = qudtNamespaces_js_1.QudtNamespaces.unit.makeIriInNamespace("KiloGM");
//# sourceMappingURL=systemOfUnits.js.map
;