nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
65 lines (64 loc) • 1.73 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.$Length = void 0;
const base_1 = require("./base");
const constants_1 = require("./constants");
class $Length extends base_1.$BaseConverter {
static #factors = {
millimeter: 0.001,
centimeter: 0.01,
meter: 1,
kilometer: 1000,
millimetre: 0.001,
centimetre: 0.01,
metre: 1,
kilometre: 1000,
inch: 0.0254,
foot: 0.3048,
yard: 0.9144,
mile: 1609.344,
'nautical-mile': 1852,
'light-year': 9.4607_3047_25808e15,
};
constructor(value, unit) {
super(value, unit);
}
#toMeters() {
return this.value * _a.#factors[this.unit];
}
to(target) {
const inMeters = this.#toMeters();
return inMeters / _a.#factors[target];
}
toAll() {
const inMeters = this.#toMeters();
const result = {};
for (const unit of constants_1.UNITS.length) {
result[unit] = inMeters / _a.#factors[unit];
}
return result;
}
formatTo(target, options) {
const value = this.to(target);
const shortLabels = {
millimeter: 'mm',
centimeter: 'cm',
meter: 'm',
kilometer: 'km',
millimetre: 'mm',
centimetre: 'cm',
metre: 'm',
kilometre: 'km',
inch: 'in',
foot: 'ft',
yard: 'yd',
mile: 'mi',
'nautical-mile': 'nmi',
'light-year': 'ly',
};
return this.$formatTo(value, target, shortLabels, options);
}
}
exports.$Length = $Length;
_a = $Length;