Compiles number format patterns into metadata for fast runtime interpretation.
Number format patterns like "#,##0.###" or "¤#,##0.00" are
parsed using a leex/yecc lexer-parser and then analysed to
extract formatting metadata (digit counts, grouping, rounding,
etc.) into a Localize.Number.Format.Meta struct.
Summary
Functions
Compiles a number format definition into metadata.
Extracts metadata from a parsed format.
Same as format_to_metadata/1 but raises on error.
Returns a regex that can be used to split a number format or number string into integer, fraction, and exponent parts.
Parses a number format definition into a keyword list of positive and negative format elements.
Tokenizes a number format definition string.
Functions
@spec compile(String.t()) :: {:ok, Localize.Number.Format.Meta.t()} | {:error, String.t()}
Compiles a number format definition into metadata.
Parses the format string, analyses it, and returns the metadata struct used to drive number formatting.
Arguments
definitionis a number format pattern string.
Returns
{:ok, meta}wheremetais aLocalize.Number.Format.Meta.t().{:error, reason}if parsing fails.
@spec format_to_metadata(String.t() | Keyword.t()) :: {:ok, Localize.Number.Format.Meta.t()} | {:error, String.t()}
Extracts metadata from a parsed format.
Arguments
formatis either a format pattern string or a parsed keyword list fromparse/1.
Returns
{:ok, meta}wheremetais aLocalize.Number.Format.Meta.t().
@spec format_to_metadata!(String.t() | Keyword.t()) :: Localize.Number.Format.Meta.t()
Same as format_to_metadata/1 but raises on error.
Arguments
formatis either a format pattern string or a parsed keyword list.
Returns
- A
Localize.Number.Format.Meta.t()struct.
Raises
- Raises
ArgumentErrorif the format cannot be parsed.
Returns a regex that can be used to split a number format or number string into integer, fraction, and exponent parts.
Parses a number format definition into a keyword list of positive and negative format elements.
Arguments
definitionis a number format pattern string or a list of tokens fromtokenize/1.
Returns
{:ok, format}whereformatis a keyword list with:positiveand:negativekeys.{:error, reason}if parsing fails.
Examples
iex> {:ok, parsed} = Localize.Number.Format.Compiler.parse("#,##0.###")
iex> parsed[:positive]
[format: "#,##0.###"]
Tokenizes a number format definition string.
Arguments
definitionis a number format pattern string.
Returns
{:ok, tokens, end_line}or an error tuple.