Time constructor

Time({
  1. int significantFigures = 10,
  2. bool removeTrailingZeros = true,
  3. dynamic name,
})

Class for time conversions, e.g. if you want to convert 1 hour in seconds:

var time = Time(removeTrailingZeros: false);
time.convert(Unit(TIME.hours, value: 1));
print(TIME.seconds);

Implementation

Time({this.significantFigures = 10, this.removeTrailingZeros = true, name}) {
  size = TIME.values.length;
  this.name = name ?? PROPERTY.time;
  for (TIME val in TIME.values) {
    unitList.add(Unit(val, symbol: mapSymbols[val]));
  }
  unitConversion = Node(name: TIME.seconds, leafNodes: [
    Node(
      coefficientProduct: 1e-1,
      name: TIME.deciseconds,
    ),
    Node(
      coefficientProduct: 1e-2,
      name: TIME.centiseconds,
    ),
    Node(
      coefficientProduct: 1e-3,
      name: TIME.milliseconds,
    ),
    Node(
      coefficientProduct: 1e-6,
      name: TIME.microseconds,
    ),
    Node(
      coefficientProduct: 1e-9,
      name: TIME.nanoseconds,
    ),
    Node(coefficientProduct: 60.0, name: TIME.minutes, leafNodes: [
      Node(coefficientProduct: 60.0, name: TIME.hours, leafNodes: [
        Node(coefficientProduct: 24.0, name: TIME.days, leafNodes: [
          Node(
            coefficientProduct: 7.0,
            name: TIME.weeks,
          ),
          Node(coefficientProduct: 365.0, name: TIME.years365, leafNodes: [
            Node(
              coefficientProduct: 5.0,
              name: TIME.lustrum,
            ),
            Node(
              coefficientProduct: 10.0,
              name: TIME.decades,
            ),
            Node(
              coefficientProduct: 100.0,
              name: TIME.centuries,
            ),
            Node(
              coefficientProduct: 1000.0,
              name: TIME.millennium,
            ),
          ]),
        ]),
      ]),
    ]),
  ]);
}