smeevil/currency_formatter


An Elixir function to format a number to a currency using ISO standards

License: WTFPL

Language: Elixir


CurrencyFormatter

This package offers an Elixir function to format a number to a currency using ISO standards.

The JSON iso data has been gracefully borrowed from the ruby money gem.

Examples :

Formatting cents to currency string

iex> CurrencyFormatter.format(654321, :eur)
"€6.543,21"

iex> CurrencyFormatter.format(654300, :eur)
"€6.543"

iex> CurrencyFormatter.format(654300, :eur, keep_decimals: true)
"€6.543,00"


iex> CurrencyFormatter.format(123456)
"$1,234.56"

iex> CurrencyFormatter.format(654321, "AUD")
"$6,543.21"

iex> CurrencyFormatter.format(123456, disambiguate: true)
"US$1,234.56"

iex> CurrencyFormatter.format(654321, "AUD", disambiguate: true)
"A$6,543.21"

Formatting cents to a currency raw html string

      iex> CurrencyFormatter.raw_html_format(123456, "EUR")
      ~s[<span class="currency-formatter-symbol">€</span><span class="currency-formatter-amount">1.234,56</span>]
  """

Formatting cents to a currency safe(phoenix) html string

iex> CurrencyFormatter.html_format(123456, "EUR")
      [
        safe: [
          60,
          "span",
          [[32, "class", 61, 34, "currency-formatter-symbol", 34]],
          62,
          "",
          60,
          47,
          "span",
          62
        ],
        safe: [
          60,
          "span",
          [[32, "class", 61, 34, "currency-formatter-amount", 34]],
          62,
          "1.234,56",
          60,
          47,
          "span",
          62
        ]
      ]

Requesting formatting instructions for a currency

iex> CurrencyFormatter.instructions(:EUR)
%{"alternate_symbols" => [], "decimal_mark" => ",", "html_entity" => "&#x20AC;",
  "iso_code" => "EUR", "iso_numeric" => "978", "name" => "Euro", "priority" => 2,
  "smallest_denomination" => 1, "subunit" => "Cent", "subunit_to_unit" => 100,
  "symbol" => "", "symbol_first" => true, "thousands_separator" => "."}

Get a map of all currencies and their instructions

iex> currencies = CurrencyFormatter.get_currencies()
iex> Enum.count(currencies)
172
iex> currencies["usd"]
%{"alternate_symbols" => ["US$"], "decimal_mark" => ".",
  "disambiguate_symbol" => "US$", "html_entity" => "$", "iso_code" => "USD",
  "iso_numeric" => "840", "name" => "United States Dollar", "priority" => 1,
  "smallest_denomination" => 1, "subunit" => "Cent", "subunit_to_unit" => 100,
  "symbol" => "$", "symbol_first" => true, "thousands_separator" => ","}

Getting a list of tuples for use with a select dropdown

iex> CurrencyFormatter.get_currencies_for_select()
["AED", "AFN", "ALL", ...]
iex> CurrencyFormatter.get_currencies_for_select(:names)
[{"AED", "United Arab Emirates Dirham"}, {"AFN", "Afghan Afghani"} , {"ALL", "Albanian Lek"}, ...]
iex> CurrencyFormatter.get_currencies_for_select(:symbols)
[{"AED", "د.إ"}, {"AFN", "؋"}, {"ALL", "L"}, ...]
iex> CurrencyFormatter.get_currencies_for_select(:disambiguate_symbols)
[[{"AED", "د.إ"}, {"AFN", "؋"}, {"ALL", "Lek"}, ...]

Get the disambiguous symbol of a currrency

iex> CurrencyFormatter.symbol(:AUD)
"A$"

Installation

As this is available in Hex, the package can be installed as:

  1. Add currency_formatter to your list of dependencies in mix.exs:
def deps do
  [{:currency_formatter, "~> 0.4"}]
end

Setup

By default you will have 172 currencies available, there are two configuration options that can be set in your app's config.exs file to limit the number of currencies.

If you would like to limit the list to only include specific currencies, you can configure a whitelist by passing a list of ISO codes to include:

config :currency_formatter, :whitelist, ["EUR", "GBP", "USD"]

To exclude certain currencies from the list, you can configure a blacklist using a list of ISO codes to exclude:

config :currency_formatter, :blacklist, ["XDR", "XAG", "XAU"]

Documentation

API documentation is available at https://hexdocs.pm/currency_formatter and http://smeevil.github.io/currency_formatter

Project Statistics

Sourcerank 5
Repository Size 4.67 MB
Stars 8
Forks 8
Watchers 3
Open issues 1
Dependencies 1
Contributors 6
Tags 0
Created
Last updated
Last pushed

Top Contributors See all

Gerard de Brieder Duff O'Melia Udo Kramer Jared Knipp Marcel de Graaf

Packages Referencing this Repo

currency_formatter
A library to help with formatting a number to a currency using iso standards and other convenienc...
Latest release 0.8.1 - Updated - 8 stars

Something wrong with this page? Make a suggestion

Last synced: 2018-08-24 14:34:51 UTC

Login to resync this repository