MyApp.Cldr.Number.resolve_currency
resolve_currency
, go back to MyApp.Cldr.Number module for more information.
Resolve a currency from a string
Arguments
list
is any list in which currency names and symbols are expectedoptions
is a keyword list of options
Options
:backend
is any module() that includesuse Cldr
and therefore is aCldr
backend module(). The default isCldr.default_backend/0
:locale
is any valid locale returned byCldr.known_locale_names/1
or aCldr.LanguageTag
struct returned byCldr.Locale.new!/2
The default isMyApp.Cldr.get_locale()
:only
is anatom
or list ofatoms
representing the currencies or currency types to be considered for a match. The equates to a list of acceptable currencies for parsing. See the notes below for currency types.:except
is anatom
or list ofatoms
representing the currencies or currency types to be not considered for a match. This equates to a list of unacceptable currencies for parsing. See the notes below for currency types.:fuzzy
is a float greater than0.0
and less than or equal to1.0
which is used as input toString.jaro_distance/2
to determine is the provided currency string is close enough to a known currency string for it to identify definitively a currency code. It is recommended to use numbers greater than0.8
in order to reduce false positives.
Returns
An ISO4217 currency code as an atom or
{:error, {exception, message}}
Notes
The :only
and :except
options accept a list of
currency codes and/or currency types. The following
types are recognised.
If both :only
and :except
are specified,
the :except
entries take priority - that means
any entries in :except
are removed from the :only
entries.
:all
, the default, considers all currencies:current
considers those currencies that have a:to
date of nil and which also is a known ISO4217 currency:historic
is the opposite of:current
:tender
considers currencies that are legal tender:unannotated
considers currencies that don't have "(some string)" in their names. These are usually financial instruments.
Examples
iex> MyApp.Cldr.Number.resolve_currency("US dollars")
:USD
iex> MyApp.Cldr.Number.resolve_currency("100 eurosports", fuzzy: 0.75)
:EUR
iex> MyApp.Cldr.Number.resolve_currency("dollars des États-Unis", locale: "fr")
:USD
iex> MyApp.Cldr.Number.resolve_currency("not a known currency", locale: "fr")
{:error,
{Cldr.UnknownCurrencyError,
"The currency \"not a known currency\" is unknown or not supported"}}