UNPKG

@qudtlib/core

Version:

Data model for QUDTLib

35 lines (34 loc) 1.19 kB
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