Interface MicroPropsGenerator

All Known Implementing Classes:
CompactNotation.CompactHandler, LongNameHandler, LongNameMultiplexer, MicroProps, MixedUnitLongNameHandler, MultiplierFormatHandler, MutablePatternModifier, MutablePatternModifier.ImmutablePatternModifier, ScientificNotation.ScientificHandler, 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(com.ibm.icu.impl.number.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(com.ibm.icu.impl.number.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.