@modcord/unit-converter
Version:
Converts metric units to any of their multiples or submultiples.
28 lines (23 loc) • 553 B
JavaScript
class Unit {
constructor (magnitude) {
this.magnitude = magnitude;
}
convert (n) {
const mag = this.magnitude;
return [ Math.floor(n / mag), n % mag];
}
to (...units) {
return n => units.reduce(
(arr, unit) => [
...arr.slice(0, -1),
...unit.convert(arr[arr.length-1])
]
, [n]).slice(0,-1);
}
from (...units) {
return (...ns) => units.reduce(
(sum, unit, i) => sum + ns[i] * unit.magnitude
, 0) / this.magnitude;
}
}
module.exports = Unit;