View Source Plausible.Cldr.Rbnf.Spellout (Plausible v0.0.1)
Functions to implement the spellout rule-based-number-format rules of CLDR.
As CLDR notes, the data is incomplete or non-existent for many languages. It is considered complete for English however.
The standard public API for RBNF is via the Cldr.Number.to_string/2
function.
The functions on this module are defined at compile time based upon the RBNF rules defined in the Unicode CLDR data repository. Available rules are identified by:
iex> Plausible.Cldr.Rbnf.Spellout.rule_sets("en")
...> |> Enum.sort()
[
:spellout_cardinal,
:spellout_cardinal_verbose,
:spellout_numbering,
:spellout_numbering_verbose,
:spellout_numbering_year,
:spellout_ordinal,
:spellout_ordinal_verbose
]
A rule can then be invoked on an available rule_set. For example:
iex> Plausible.Cldr.Rbnf.Spellout.spellout_ordinal(123, "en")
"one hundred twenty-third"
This call is equivalent to the call through the public API of:
iex> Plausible.Cldr.Number.to_string(123, format: :spellout)
{:ok, "one hundred twenty-three"}