ValueMeasure
A data type and utilities for handling units of measure.
const {Measure, MeasureUnitCollator, MeasureFormat} = require( 'valuemeasure' );
Simple unit as a string.
let bagMeasure = new Measure({ 'value':5, 'unit': { 'name':'bag', 'measure': { 'value':80000, 'unit':'kernel', }, },});let measureFormatter = new MeasureFormat({'operator':{'productOperator':' '}});measureFormatter.formatMeasure( bagMeasure );// 5 (80,000-kernel) bag
Compound (array) unit as a string and objects.
let torqueMeasure = new Measure({ 'value':500, 'unit': [ 'kilogram', { 'name':'meter', 'exp':2, }, { 'name':'second', 'exp':-2, }, ],});let measureFormatter = new MeasureFormat({'exponent':{'^':'^'}});measureFormatter.formatMeasure( torqueMeasure );// 500 kilogram⋅meter^²/second^²
Compound (array) complex (nested) unit as objects and a nested Measure
.
let fantasiaMeasure = new Measure({ 'value':2000, 'unit': [ { 'name':'bucket', 'measure': { 'value':2, 'unit':'gallon', }, }, { 'name':'second', 'exp':-1, }, ],});let measureFormatter = new MeasureFormat({'numberFormatOptions':{'useGrouping':false}});measureFormatter.formatMeasure( fantasiaMeasure );// 2000 (2-gallon)⋅bucket/second
let accelerationMeasure = new Measure({ 'value':9.8, 'unit': [ 'meter', { 'name':'second', 'exp':-2, }, ],});let timeMeasure = new Measure({ 'value':15, 'unit':'second',});let productUnit = Measure.productOfUnits( accelerationMeasure.unit, timeMeasure.unit );let speedMeasure = new Measure({ 'value':0, 'unit': [ 'meter', { 'name':'second', 'exp':-1, }, ],});// Check whether a product of two `Measure`s would produce the expected unit.let measureCollator = new MeasureCollator();let wasExpected = measureCollator.compare( productUnit, speedMeasure.unit ) == 0;// Pretty-print the resulting unit.let measureFormatter = new MeasureFormat();let unitFormatted = measureFormatter.formatMeasureUnit( productUnit );