Packages

ex_cldr

0.0.16
2.47.5 2.47.4 2.47.3 2.47.2 2.47.1 2.47.0 2.46.0 2.45.2 2.45.1 2.45.0 2.44.1 2.44.0 2.43.2 2.43.1 2.43.0 2.42.0 2.41.1 2.41.0 2.40.4 2.40.3 2.40.2 2.40.1 2.40.0 2.39.2 2.39.1 2.39.0 2.38.1 2.38.0 2.37.5 2.37.4 2.37.3 retired 2.37.2 2.37.1 2.37.0 2.36.0 2.35.1 2.35.0 retired 2.34.2 2.34.1 2.34.0 2.33.2 2.33.1 2.33.1-rc.0 2.33.0 2.32.1 2.32.0 2.31.0 2.30.0 2.29.0 2.28.0 2.27.1 2.27.0 retired 2.26.3 2.26.2 2.26.1 2.26.0 2.25.0 2.24.2 2.24.1 2.24.0 2.24.0-rc.6 2.24.0-rc.5 2.24.0-rc.4 2.24.0-rc.3 2.24.0-rc.2 2.24.0-rc.1 2.24.0-rc.0 2.23.2 2.23.1 2.23.0 2.22.1 2.22.0 2.21.0 2.20.0 2.20.0-rc.3 2.20.0-rc.2 2.20.0-rc.1 2.20.0-rc.0 2.19.1 2.19.0 2.18.2 2.18.1 2.18.0 2.18.0-rc.0 2.17.2 2.17.1 2.17.0 2.16.2 2.16.1 2.16.1-rc.0 2.16.0 2.15.0 2.14.1 2.14.0 2.14.0-rc.0 2.13.0 2.12.1 2.12.0 2.11.1 2.11.0 2.10.2 2.10.1 2.10.0 retired 2.9.0 2.8.1 2.8.0 2.7.2 2.7.1 2.7.0 2.6.2 2.6.1 2.6.0 2.5.0 2.4.3 2.4.2 2.4.1 2.4.0 2.3.2 2.3.1 2.3.0 2.2.7 2.2.6 2.2.5 2.2.4 2.2.3 2.2.2 2.2.1 2.2.0 2.1.0 2.0.4 2.0.3 2.0.2 2.0.1 2.0.0 2.0.0-rc.3 retired 2.0.0-rc.2 retired 2.0.0-rc.1 retired 2.0.0-rc.0 retired 1.8.2 1.8.1 1.8.0 1.7.1 1.7.0 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.5.2 1.5.1 1.5.0 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 retired 1.4.0-rc.3 retired 1.4.0-rc.2 retired 1.4.0-rc.1 retired 1.4.0-rc.0 retired 1.3.2 1.3.1 1.3.0 1.2.0 1.1.0 1.0.0 1.0.0-rc.3 retired 1.0.0-rc.2 retired 1.0.0-rc.1 retired 1.0.0-rc.0 retired 0.13.1 0.13.0 0.12.2 retired 0.12.1 retired 0.12.0 retired 0.11.0 retired 0.10.0 retired 0.9.0 retired 0.8.3 retired 0.8.2 retired 0.8.1 retired 0.8.0 retired 0.7.0 retired 0.6.2 retired 0.6.1 retired 0.6.0 retired 0.5.2 retired 0.5.1 retired 0.5.0 retired 0.4.2 retired 0.4.1 retired 0.4.0 retired 0.3.0 retired 0.2.1 retired 0.2.0 retired 0.1.3 retired 0.1.2 retired 0.1.1 retired 0.1.0 retired 0.0.20 retired 0.0.19 retired 0.0.18 retired 0.0.17 retired 0.0.16 retired 0.0.15 retired 0.0.14 retired 0.0.13 retired 0.0.12 retired 0.0.11 retired 0.0.10 retired 0.0.8 retired 0.0.7 retired 0.0.6 retired 0.0.5 retired 0.0.4 retired 0.0.3 retired

Common Locale Data Repository (CLDR) functions for Elixir to localize and format numbers, dates, lists, messages, languages, territories and units with support for over 700 locales for internationalized (i18n) and localized (L10N) applications.

Retired package: Deprecated

Current section

Files

Jump to
ex_cldr lib cldr number rbnf.ex
Raw

lib/cldr/number/rbnf.ex

defmodule Cldr.Rbnf do
@moduledoc """
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.
"""
@doc """
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.
"""
def known_locales do
Enum.filter Cldr.known_locales(), fn (locale) ->
Cldr.Locale.get_locale(locale).rbnf != %{}
end
end
@doc """
Returns the rbnf rules for a `locale` or `{:error, :rbnf_file_not_found}`
* `locale` is any locale returned by `Rbnf.known_locales/0`.
Note that `for_locale/1` does not raise if the locale does not exist
like the majority of `Cldr`. This is by design since the set of locales
that have rbnf rules is substantially less than the set of locales
supported by `Cldr`.
"""
@spec for_locale(Locale.t) :: %{} | nil
def for_locale(locale) do
Cldr.Locale.get_locale(locale).rbnf
end
@doc """
Returns a map that merges all rules by the primary dimension of
RuleGroup, within which rbnf rules are keyed by locale.
This function is primarily intended to support compile-time generation
of functions to process rbnf rules.
"""
@spec for_all_locales :: %{}
def for_all_locales do
Enum.map(known_locales(), fn locale ->
Enum.map(for_locale(locale), fn {group, sets} ->
locale = String.replace(locale, "_", "-")
{group, %{locale => sets}}
end)
|> Enum.into(%{})
end)
|> Cldr.Map.merge_map_list
end
# Returns all the rules in rbnf without any tagging for rulegroup or set.
# This is helpful for testing only.
@doc false
def all_rules do
known_locales()
|> Enum.map(&for_locale/1)
|> Enum.flat_map(&Map.values/1) # Get sets from groups
|> Enum.flat_map(&Map.values/1) # Get rules from set
|> Enum.flat_map(&(&1.rules)) # Get the list of rules
end
# Returns a list of unique rule definitions. Used for testing.
@doc false
def all_rule_definitions do
all_rules()
|> Enum.map(&(&1.definition))
|> Enum.uniq
end
end