Packages
ex_cldr_numbers
2.0.0
2.38.3
2.38.2
2.38.1
2.38.0
2.37.0
2.36.0
2.35.2
2.35.1
2.35.0
2.34.1
2.34.0
2.33.6
2.33.5
2.33.4
2.33.3
2.33.2
2.33.1
2.33.0
2.32.4
2.32.3
2.32.2
2.32.1
2.32.0
retired
2.31.3
retired
2.31.2
2.31.1
2.31.0
2.30.1
2.30.0
2.29.0
2.28.0
2.27.3
2.27.2
2.27.1
2.27.0
2.26.0
2.25.2
2.25.1
2.25.0
2.24.0
2.23.3
2.23.2
2.23.1
2.23.0
2.23.0-rc.4
2.23.0-rc.3
2.23.0-rc.2
2.23.0-rc.1
2.23.0-rc.0
2.22.1
2.22.0
2.21.0
2.20.0
2.19.0
2.18.4
2.18.3
2.18.2
2.18.1
2.18.0
2.17.0
2.17.0-rc.1
2.17.0-rc.0
2.16.1
2.16.0
2.16.0-rc.0
2.15.4
2.15.3
2.15.2
2.15.1
2.15.0
2.14.0
2.13.2
2.13.1
2.13.0
2.13.0-rc.0
2.12.1
2.12.0
2.11.0
2.10.0
2.9.0
2.8.0
2.7.2
2.7.1
2.7.0
2.6.4
2.6.3
2.6.2
2.6.1
2.6.0
2.5.0
2.4.4
2.4.3
2.4.2
2.4.1
2.4.0
2.3.0
2.2.0
2.1.1
2.1.0
2.0.0
2.0.0-rc.0
1.6.0
1.5.2
1.5.1
1.5.0
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.1
1.3.0
1.3.0-rc.1
1.3.0-rc.0
retired
1.2.0
1.1.0
1.0.1
1.0.0
1.0.0-rc.0
retired
0.3.3
0.3.2
retired
0.3.1
retired
0.3.0
retired
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
Number and currency localization and formatting functions for the Common Locale Data Repository (CLDR).
Current section
Files
Jump to
Current section
Files
lib/backend/decimal_formatter.ex
defmodule Cldr.Number.Backend.Decimal.Formatter do
@moduledoc false
def define_number_module(config) do
alias Cldr.Number.Formatter.Decimal
backend = config.backend
quote location: :keep do
defmodule Number.Formatter.Decimal do
@doc """
Formats a number according to a decimal format string.
## Arguments
* `number` is an integer, float or Decimal
* `format` is a format string. See `#{inspect(unquote(backend))}.Number` for further information.
* `options` is a map of options. See `#{inspect(unquote(backend))}.Number.to_string/2`
for further information.
"""
alias Cldr.Number.Format.Compiler
alias Cldr.Number.Formatter.Decimal
@spec to_string(Math.number(), String.t(), Map.t()) ::
{:ok, String.t()} | {:error, {atom, String.t()}}
def to_string(number, format, options)
# Precompile the known formats and build the formatting pipeline
# specific to this format thereby optimizing the performance.
unquote(Decimal.define_to_string(backend))
# For formats not precompiled we need to compile first
# and then process. This will be slower than a compiled
# format since we have to (a) compile the format and (b)
# execute the full formatting pipeline.
def to_string(number, format, options) when is_map(options) do
case Compiler.compile(format) do
{:ok, meta, _pipeline} ->
meta = Decimal.update_meta(meta, number, unquote(backend), options)
Decimal.do_to_string(number, meta, unquote(backend), options)
{:error, message} ->
{:error, {Cldr.FormatCompileError, message}}
end
end
end
end
end
end