Interface MicroPropsGenerator

All Known Implementing Classes:
LongNameHandler, LongNameMultiplexer, MicroProps, MixedUnitLongNameHandler, MultiplierFormatHandler, MutablePatternModifier, MutablePatternModifier.ImmutablePatternModifier, UnitConversionHandler, UsagePrefsHandler

public interface MicroPropsGenerator
This interface is used when all number formatting settings, including the locale, are known, except for the quantity itself. The processQuantity(DecimalQuantity) method performs the final step in the number processing pipeline: it uses the quantity to generate a finalized MicroProps, which can be used to render the number to output.

In other words, this interface is used for the parts of number processing that are quantity-dependent.

In order to allow for multiple different objects to all mutate the same MicroProps, a "chain" of MicroPropsGenerators are linked together, and each one is responsible for manipulating a certain quantity-dependent part of the MicroProps. At the top of the linked list is a base instance of MicroProps with properties that are not quantity-dependent. Each element in the linked list calls processQuantity(DecimalQuantity) on its "parent", then does its work, and then returns the result.

This chain of MicroPropsGenerators is typically constructed by NumberFormatterImpl::macrosToMicroGenerator() when constructing a NumberFormatter.

A class implementing MicroPropsGenerator looks something like this:

class Foo implements MicroPropsGenerator {
    private final MicroPropsGenerator parent;

    public Foo(MicroPropsGenerator parent) {
        this.parent = parent;
    }

    @Override
    public MicroProps processQuantity(DecimalQuantity quantity) {
        MicroProps micros = this.parent.processQuantity(quantity);
        // Perform manipulations on micros and/or quantity
        return micros;
    }
}
  • Method Details

    • processQuantity

      MicroProps processQuantity(DecimalQuantity quantity)
      Considers the given DecimalQuantity, optionally mutates it, and returns a MicroProps.
      Parameters:
      quantity - The quantity for consideration and optional mutation.
      Returns:
      A MicroProps instance resolved for the quantity.