View Source Cldr.Rbnf (Cldr Numbers v2.33.1)

Functions to implement Rules Based Number Formatting (rbnf)

During compilation RBNF rules are extracted and generated as function bodies by Cldr.Rbnf.Ordinal, Cldr.Rbnf.Cardinal and Cldr.Rbnf.NumberSystem.

The functions in this module would not normally be of common use outside of supporting the compilation phase.

Summary

Functions

Returns {:ok, rbnf_rules} for a locale or {:error, {Cldr.NoRbnf, info}}

Returns {:ok, rbnf_rules} for a locale or {:error, {Cldr.NoRbnf, info}}

Returns rbnf_rules for a locale or raises an exception if there are no rules.

Returns rbnf_rules for a locale and backend or raises an exception if there are no rules.

Returns the list of locales that that have RBNF defined

Returns the list of RBNF rules for a locale.

Returns the list of RBNF rules for a locale.

Functions

Link to this function

for_locale(language_tag)

View Source
@spec for_locale(Cldr.LanguageTag.t()) ::
  {:ok, map()} | {:error, {module(), String.t()}}

Returns {:ok, rbnf_rules} for a locale or {:error, {Cldr.NoRbnf, info}}

  • locale is any t:Cldr.LanguageTag

This function reads the raw locale definition and therefore should not be called at runtime.

Link to this function

for_locale(locale, backend)

View Source
@spec for_locale(Cldr.Locale.locale_name() | Cldr.LanguageTag.t(), Cldr.backend()) ::
  {:ok, map()} | {:error, {module(), String.t()}}

Returns {:ok, rbnf_rules} for a locale or {:error, {Cldr.NoRbnf, info}}

Returns rbnf_rules for a locale or raises an exception if there are no rules.

  • locale is any Cldr.LanguageTag

  • backend is any module that includes use Cldr and therefore is a Cldr backend module

Link to this function

for_locale!(locale, backend)

View Source

Returns rbnf_rules for a locale and backend or raises an exception if there are no rules.

Link to this function

known_locale_names(backend)

View Source

Returns the list of locales that that have RBNF defined

This list is the set of known locales for which there are rbnf rules defined.

Delegates to Cldr.known_rbnf_locale_names/1

Link to this function

rbnf_locale_error(locale)

View Source
Link to this function

rbnf_rule_error(locale, format)

View Source
Link to this function

rule_names_for_locale(language_tag)

View Source
@spec rule_names_for_locale(Cldr.LanguageTag.t()) ::
  {:ok, [atom()]} | {:error, {module(), String.t()}}

Returns the list of RBNF rules for a locale.

A rule name can be used as the :format parameter in Cldr.Number.to_string/3.

Arguments

  • locale is any Cldr.LanguageTag.t()

Returns

  • {:ok, [list_of_rule_names_as_atoms]} or

  • {:error, {exception, reason}}

Examples

iex> Cldr.Rbnf.rule_names_for_locale "zh"
{:ok,
 [:spellout_cardinal_alternate2, :spellout_ordinal, :spellout_cardinal,
  :spellout_cardinal_financial, :spellout_numbering, :spellout_numbering_days,
  :spellout_numbering_year, :digits_ordinal]}

iex> Cldr.Rbnf.rule_names_for_locale "fp"
{:error, {Cldr.InvalidLanguageError, "The language "fp" is invalid"}}
Link to this function

rule_names_for_locale(locale_name, backend \\ Cldr.default_backend!())

View Source
Link to this function

rule_names_for_locale!(locale)

View Source
@spec rule_names_for_locale!(Cldr.LanguageTag.t()) :: [atom()] | no_return()

Returns the list of RBNF rules for a locale.

A rule name can be used as the :format parameter in Cldr.Number.to_string/3.

Arguments

  • locale is any Cldr.LanguageTag.t()

Returns

  • [list_of_rule_names_as_atoms], or

  • raises an exception

Examples

iex> Cldr.Rbnf.rule_names_for_locale! "zh"
[:spellout_cardinal_alternate2, :spellout_ordinal, :spellout_cardinal,
 :spellout_cardinal_financial, :spellout_numbering, :spellout_numbering_days,
 :spellout_numbering_year, :digits_ordinal]