View Source Bonfire.Common.Localise.Cldr.Rbnf.Ordinal (Bonfire v0.9.10-classic-beta.169)
Functions to implement the ordinal 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> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets(:en)
[:digits_ordinal]
iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets("fr")
...> |> Enum.sort()
[
:digits_ordinal,
:digits_ordinal_feminine,
:digits_ordinal_feminine_plural,
:digits_ordinal_masculine,
:digits_ordinal_masculine_plural
]
A rule can then be invoked on an available rule_set. For example
iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal(123, :en)
"123rd"
This call is equivalent to the call through the public API of:
iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :ordinal)
{:ok, "123rd"}