toStandardUnit method
Returns the converter from this unit to its standard unit.
Implementation
@override
UnitConverter toStandardUnit() {
if (_hasOnlyStandardUnit()) return UnitConverter.identity;
return _elements.expand((v) {
var cvtr = v.base.toStandardUnit();
if (!cvtr.isLinear) {
throw StateError('${v.base} is non-linear, cannot convert');
}
if (v.pow.divisor != 1) {
throw StateError(
'${v.base} holds a base unit with fractional exponent');
}
if (v.pow.dividend < 0) cvtr = cvtr.inverse;
return List.generate(v.pow.dividend.abs(), (_) => cvtr);
}).fold(UnitConverter.identity, (UnitConverter a, b) => a.concatenate(b));
}