format method

String format(
  1. Unit unit
)

Formats the specified unit.

Implementation

String format(Unit unit) {
  var name = nameFor(unit);
  if (name != null) return name;

  if (unit is ProductUnit) {
    var posExponents = unit.elements
        .where((e) => e.pow.dividend >= 0)
        .map(
            (e) => _formatPow(nameFor(e.base), e.pow.dividend, e.pow.divisor))
        .join('·');

    var negExponents = unit.elements.where((e) => e.pow.dividend < 0).map(
        (e) => _formatPow(nameFor(e.base), -e.pow.dividend, e.pow.divisor));

    if (negExponents.isEmpty) return posExponents;
    if (posExponents.isEmpty) posExponents = '1';
    if (negExponents.length == 1) {
      return '$posExponents/${negExponents.join('·')}';
    }

    return '$posExponents/(${negExponents.join('·')})';
  }

  throw ArgumentError('Cannot format given Object as a Unit');
}