package humanize.measure;
import humanize.spi.FormatProvider;
import humanize.text.FormatFactory;
import java.text.Format;
import java.text.NumberFormat;
import java.util.Locale;
import javax.measure.MeasureFormat;
import javax.measure.unit.UnitFormat;
/**
* <p>
* Provides a JSR-275 measure formatter. Supports "standard" sub-format.
* </p>
*
* Examples:
*
* <pre>
*
* // == "100 kg"
* Humanize.format("{0, measure}", Measure.valueOf(100, SI.GRAM.times(1000)));
*
* Humanize.format("{0, measure, standard}", measure);
*
* // With a locale
*
* MessageFormat esFormat = Humanize.messageFormatInstance("{0, measure}", new Locale("es"));
* esFormat.render(Measure.valueOf(1000, SI.GRAM.times(1000)));
*
* </pre>
*
*/
public class MeasureFormatProvider implements FormatProvider
{
@Override
public FormatFactory getFactory()
{
return new FormatFactory()
{
@Override
public Format getFormat(String name, String args, Locale locale)
{
if (args != null && "standard".equalsIgnoreCase(args))
{
return MeasureFormat.getStandard();
} else
{
return MeasureFormat.getInstance(NumberFormat.getInstance(locale), UnitFormat.getInstance(locale));
}
}
};
}
@Override
public String getFormatName()
{
return "measure";
}
}