Class LocalUnitFormat

java.lang.Object
tech.units.indriya.format.AbstractUnitFormat
tech.units.indriya.format.LocalUnitFormat
All Implemented Interfaces:
javax.measure.format.UnitFormat

public class LocalUnitFormat extends AbstractUnitFormat

This class represents the local sensitive format.

Here is the grammar for CommonUnits in Extended Backus-Naur Form (EBNF)

Note that the grammar has been left-factored to be suitable for use by a top-down parser generator such as JavaCC

invalid input: '<'table width="90%" * align="center"> Lexical Entities: <sign> := "+" | "-" <digit> := "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" <superscript_digit> := "⁰" | "¹" | "²" | "³" | "⁴" | "⁵" | "⁶" | "⁷" | "⁸" | "⁹" <integer> := (<digit>)+ invalid input: '<'tr * valign="top"> <number> := (<sign>)? (<digit>)* (".")? (<digit>)+ (("e" | "E") (<sign>)? (<digit>)+)? <exponent> := ( "^" ( <sign> )? <integer> )
| ( "^(" (<sign>)? <integer> ( "/" (<sign>)? <integer> )? ")" )
| ( <superscript_digit> )+ <initial_char> := ? Any Unicode character excluding the following: ASCII control invalid input: '&' whitespace (\u0000 - \u0020), decimal digits '0'-'9', '(' (\u0028), ')' (\u0029), '*' (\u002A), '+' (\u002B), '-' (\u002D), '.' (\u002E), '/' (\u005C), ':' (\u003A), '^' (\u005E), '²' (\u00B2), '³' (\u00B3), '·' (\u00B7), '¹' (\u00B9), '⁰' (\u2070), '⁴' (\u2074), '⁵' (\u2075), '⁶' (\u2076), '⁷' (\u2077), '⁸' (\u2078), '⁹' (\u2079) ? <unit_identifier> := <initial_char> ( <initial_char> | <digit> )* Non-Terminals: invalid input: '<'tr * valign="top"> <unit_expr> := <compound_expr> <compound_expr> := <add_expr> ( ":" <add_expr> )* <add_expr> := ( <number> <sign> )? <mul_expr> ( <sign> <number> )? <mul_expr> := <exponent_expr> ( ( ( "*" | "·" ) <exponent_expr> ) | ( "/" <exponent_expr> ) )* <exponent_expr> := ( <atomic_expr> ( <exponent> )? )
| (<integer> "^" <atomic_expr>)
| ( ( "log" ( <integer> )? ) | "ln" ) "(" <add_expr> ")" ) <atomic_expr> := <number>
| <unit_identifier>
| ( "(" <add_expr> ")" )
Since:
1.0
Version:
1.0.2, April 30, 2017
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final int
    Operator precedence for the addition and subtraction operations
    private static final LocalUnitFormat
    DefaultQuantityFactory locale instance.
    private static final int
    Operator precedence for the exponentiation and logarithm operations
    private static final char
    Multiplicand character
    private static final int
    Operator precedence for a unit identifier containing no mathematical operations (i.e., consisting exclusively of an identifier and possibly a prefix).
    private static final int
    Operator precedence for the multiplication and division operations
    private final SymbolMap
    The symbol map used by this instance to map between Units and Strings, etc...
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
    Base constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    format(javax.measure.Unit<?> unit, Appendable appendable)
    Formats the specified unit.
    private int
    formatConverter(javax.measure.UnitConverter converter, boolean continued, int unitPrecedence, StringBuilder buffer)
    Formats the given converter to the given StringBuffer and returns the operator precedence of the converter's mathematical operation.
    private void
    formatExponent(javax.measure.Unit<?> unit, int pow, int root, boolean continued, Appendable buffer)
    Format the given unit raised to the given fractional power to the given StringBuffer.
    private int
    formatInternal(javax.measure.Unit<?> unit, Appendable buffer)
    Format the given unit to the given StringBuilder, then return the operator precedence of the outermost operator in the unit expression that was formatted.
    Returns the instance for the current default locale (non-ascii characters are allowed)
    Returns an instance for the given locale.
    Returns an instance for the given symbol map.
    protected SymbolMap
    Get the symbol map used by this instance to map between Units and Strings, etc...
    boolean
     
    javax.measure.Unit<? extends javax.measure.Quantity<?>>
     
    protected javax.measure.Unit<?>
    parse(CharSequence csq, int index)
    Parses a portion of the specified CharSequence from the specified position to produce a unit.
    javax.measure.Unit<?>
    Parses a portion of the specified CharSequence from the specified position to produce a unit.

    Methods inherited from class tech.units.indriya.format.AbstractUnitFormat

    format, format, label

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • DEFAULT_INSTANCE

      private static final LocalUnitFormat DEFAULT_INSTANCE
      DefaultQuantityFactory locale instance. If the default locale is changed after the class is initialized, this instance will no longer be used.
    • MIDDLE_DOT

      private static final char MIDDLE_DOT
      Multiplicand character
      See Also:
    • ADDITION_PRECEDENCE

      private static final int ADDITION_PRECEDENCE
      Operator precedence for the addition and subtraction operations
      See Also:
    • PRODUCT_PRECEDENCE

      private static final int PRODUCT_PRECEDENCE
      Operator precedence for the multiplication and division operations
      See Also:
    • EXPONENT_PRECEDENCE

      private static final int EXPONENT_PRECEDENCE
      Operator precedence for the exponentiation and logarithm operations
      See Also:
    • NOOP_PRECEDENCE

      private static final int NOOP_PRECEDENCE
      Operator precedence for a unit identifier containing no mathematical operations (i.e., consisting exclusively of an identifier and possibly a prefix). Defined to be Integer.MAX_VALUE so that no operator can have a higher precedence.
      See Also:
    • symbolMap

      private final transient SymbolMap symbolMap
      The symbol map used by this instance to map between Units and Strings, etc...
  • Constructor Details

    • LocalUnitFormat

      private LocalUnitFormat(SymbolMap symbols)
      Base constructor.
      Parameters:
      symbols - the symbol mapping.
  • Method Details

    • getInstance

      public static LocalUnitFormat getInstance()
      Returns the instance for the current default locale (non-ascii characters are allowed)
    • getInstance

      public static LocalUnitFormat getInstance(Locale locale)
      Returns an instance for the given locale.
      Parameters:
      locale -
    • getInstance

      public static LocalUnitFormat getInstance(SymbolMap symbols)
      Returns an instance for the given symbol map.
    • getSymbols

      protected SymbolMap getSymbols()
      Get the symbol map used by this instance to map between Units and Strings, etc...
      Specified by:
      getSymbols in class AbstractUnitFormat
      Returns:
      SymbolMap the current symbol map
    • format

      public Appendable format(javax.measure.Unit<?> unit, Appendable appendable) throws IOException
      Description copied from class: AbstractUnitFormat
      Formats the specified unit.
      Specified by:
      format in interface javax.measure.format.UnitFormat
      Specified by:
      format in class AbstractUnitFormat
      Parameters:
      unit - the unit to format.
      appendable - the appendable destination.
      Returns:
      The appendable destination passed in as appendable, with formatted text appended.
      Throws:
      IOException - if an error occurs.
    • isLocaleSensitive

      public boolean isLocaleSensitive()
    • parse

      protected javax.measure.Unit<?> parse(CharSequence csq, int index) throws javax.measure.format.ParserException
      Description copied from class: AbstractUnitFormat
      Parses a portion of the specified CharSequence from the specified position to produce a unit. If there is no unit to parse AbstractUnit.ONE is returned.
      Specified by:
      parse in class AbstractUnitFormat
      Parameters:
      csq - the CharSequence to parse.
      index - the current parsing index.
      Returns:
      the unit parsed from the specified character sub-sequence.
      Throws:
      javax.measure.format.ParserException
    • parse

      public javax.measure.Unit<?> parse(CharSequence csq, ParsePosition cursor) throws javax.measure.format.ParserException
      Description copied from class: AbstractUnitFormat
      Parses a portion of the specified CharSequence from the specified position to produce a unit. If there is no unit to parse AbstractUnit.ONE is returned.
      Specified by:
      parse in class AbstractUnitFormat
      Parameters:
      csq - the CharSequence to parse.
      cursor - the cursor holding the current parsing index.
      Returns:
      the unit parsed from the specified character sub-sequence.
      Throws:
      javax.measure.format.ParserException
    • parse

      public javax.measure.Unit<? extends javax.measure.Quantity<?>> parse(CharSequence csq) throws javax.measure.format.ParserException
      Throws:
      javax.measure.format.ParserException
    • formatInternal

      private int formatInternal(javax.measure.Unit<?> unit, Appendable buffer) throws IOException
      Format the given unit to the given StringBuilder, then return the operator precedence of the outermost operator in the unit expression that was formatted. See
      invalid reference
      ConverterFormat
      for the constants that define the various precedence values.
      Parameters:
      unit - the unit to be formatted
      buffer - the StringBuilder to be written to
      Returns:
      the operator precedence of the outermost operator in the unit expression that was output
      Throws:
      IOException
    • formatExponent

      private void formatExponent(javax.measure.Unit<?> unit, int pow, int root, boolean continued, Appendable buffer) throws IOException
      Format the given unit raised to the given fractional power to the given StringBuffer.
      Parameters:
      unit - Unit the unit to be formatted
      pow - int the numerator of the fractional power
      root - int the denominator of the fractional power
      continued - boolean true if the converter expression should begin with an operator, otherwise false. This will always be true unless the unit being modified is equal to Unit.ONE.
      buffer - StringBuffer the buffer to append to. No assumptions should be made about its content.
      Throws:
      IOException
    • formatConverter

      private int formatConverter(javax.measure.UnitConverter converter, boolean continued, int unitPrecedence, StringBuilder buffer)
      Formats the given converter to the given StringBuffer and returns the operator precedence of the converter's mathematical operation. This is the default implementation, which supports all built-in UnitConverter implementations. Note that it recursively calls itself in the case of a
      invalid reference
      Compound
      converter.
      Parameters:
      converter - the converter to be formatted
      continued - true if the converter expression should begin with an operator, otherwise false.
      unitPrecedence - the operator precedence of the operation expressed by the unit being modified by the given converter.
      buffer - the StringBuffer to append to.
      Returns:
      the operator precedence of the given UnitConverter