Currencies [![Build Status](https://travis-ci.org/JakeStaTeresa/Currencies.svg?branch=master)](https://travis-ci.org/JakeStaTeresa/Currencies) [![Coverage Status](https://coveralls.io/repos/github/JakeStaTeresa/Currencies/badge.svg?branch=master&cache=1)](https://coveralls.io/github/JakeStaTeresa/Currencies) [![hex.pm version](https://img.shields.io/hexpm/v/currencies.svg)](https://hex.pm/packages/currencies) [![hex.pm downloads](https://img.shields.io/hexpm/dt/currencies.svg)](https://hex.pm/packages/currencies)
============
Currencies is a collection of all sorts of useful information for every currency in the ISO 4217 standard.
## Installation
Add `currencies` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[{:currencies, "~> 0.4.2"}]
end
```
After you are done, run `mix deps.get` in your shell to fetch and compile `Currencies`.
## Usage
Get all Currencies.
```Elixir
Countries.all |>
Enum.count
# 162
```
Gets all currencies matching a currency code or iso numeric code
```Elixir
Currencies.all(["aud", :sgd, 51, %{}])
|> Enum.map(fn(item) ->
case item do
:not_found -> :not_found
item -> item.name
end
end)
# ["Australia Dollar",
# "Singapore Dollar",
# "Armenia Dram",
# :not_found]
```
Find currency by code.
```Elixir
Countries.get("AUD") # Currencies.get(:aud) also supported
# %Currencies.Currency{central_bank: %Currencies.CentralBank{name: "Reserve Bank of Australia",
# url: "http://www.rba.gov.au"}, code: "AUD", display: "$",
# minor_unit: %Currencies.MinorUnit{name: "Cent", size: "1/100", symbol: "c"},
# name: "Australia Dollar", nicknames: ["Buck", "Dough"],
# representations: %Currencies.Representations{html: "$",
# unicode_decimal: '$'},
# users: ["Australia", "Christmas Island", "Cocos (Keeling) Islands", "Kiribati",
# "Nauru", "Norfolk Island", "Ashmore and Cartier Islands",
# "Australian Antarctic Territory", "Coral Sea Islands", "Heard Island",
# "McDonald Islands"]}
```
Find currency by iso numeric code
```Elixir
Countries.get(36)
# %Currencies.Currency{central_bank: %Currencies.CentralBank{name: "Reserve Bank of Australia",
# url: "http://www.rba.gov.au"}, code: "AUD", display: "$",
# minor_unit: %Currencies.MinorUnit{name: "Cent", size: "1/100", symbol: "c"},
# name: "Australia Dollar", nicknames: ["Buck", "Dough"],
# representations: %Currencies.Representations{html: "$",
# unicode_decimal: '$'},
# users: ["Australia", "Christmas Island", "Cocos (Keeling) Islands", "Kiribati",
# "Nauru", "Norfolk Island", "Ashmore and Cartier Islands",
# "Australian Antarctic Territory", "Coral Sea Islands", "Heard Island",
# "McDonald Islands"]}
```
Find currency by filtering through the list of currencies.
```Elixir
Currencies.filter(&(String.contains?(&1.name, "Peso")))
# [%Currencies.Currency{central_bank: %Currencies.CentralBank{name: "Central Bank of Argentina",
# url: "http://www.bcra.gov.ar/index_i.htm"}, code: "ARS", display: "$",
# minor_unit: %Currencies.MinorUnit{name: "Centavo", size: "1/100",
# symbol: nil}, name: "Argentina Peso", nicknames: nil,
# representations: %Currencies.Representations{html: "$",
# unicode_decimal: '$'}, users: ["Argentina", "Islas Malvinas"]},
# %Currencies.Currency{central_bank: %Currencies.CentralBank{name: "Banco Central De Chile",
# url: "http://www.bcentral.cl/eng/"}, code: "CLP", display: "$",
# minor_unit: %Currencies.MinorUnit{name: "Centavo", size: "1/100",
# symbol: nil}, name: "Chile Peso", nicknames: nil,
# representations: %Currencies.Representations{html: "$",
# unicode_decimal: '$'}, users: ["Chile"]},
# %Currencies.Currency{central_bank: %Currencies.CentralBank{name: "Central Bank of Colombia",
# url: "http://www.banrep.gov.co"}, code: "COP", display: "$",
# minor_unit: %Currencies.MinorUnit{name: "Centavo", size: "1/100",
# symbol: nil}, name: "Colombia Peso", nicknames: nil,
# representations: %Currencies.Representations{html: "$",
# unicode_decimal: '$'}, users: ["Colombia"]},
# %Currencies.Currency{central_bank: %Currencies.CentralBank{name: "Central Bank of Cuba",
# url: "http://www.bc.gob.cu/Espanol/default.asp"}, code: "CUC", display: nil,
# minor_unit: %Currencies.MinorUnit{name: "Centavo Convertible", size: "1/100",
# symbol: "¢"}, name: "Cuba Convertible Peso", nicknames: ["Chavito"],
# representations: %Currencies.Representations{html: nil, unicode_decimal: nil},
# users: ["Cuba"]},
# %Currencies.Currency{central_bank: %Currencies.CentralBank{name: "",
# url: "http://www.bc.gob.cu/Espanol/default.asp"}, code: "CUP",
# display: "₱",
# minor_unit: %Currencies.MinorUnit{name: "Centavo", size: "1/100",
# symbol: "¢"}, name: "Cuba Peso", nicknames: nil,
# representations: %Currencies.Representations{html: "₱",
# unicode_decimal: [8369]}, users: ["Cuba"]},
# %Currencies.Currency{central_bank: %Currencies.CentralBank{name: "Central Bank of the Dominican Republic",
# url: "http://www.bancentral.gov.do"}, code: "DOP", display: "RD$",
# minor_unit: %Currencies.MinorUnit{name: "Centavo", size: "1/100",
# symbol: nil}, name: "Dominican Republic Peso", nicknames: nil,
# representations: %Currencies.Representations{html: "RD$",
# unicode_decimal: 'RD$'}, users: ["Dominican Republic"]},
# %Currencies.Currency{central_bank: %Currencies.CentralBank{name: "Bank of Mexico",
# url: "http://www.banxico.org.mx"}, code: "MXN", display: "$",
# minor_unit: %Currencies.MinorUnit{name: "Cent", size: "1/100", symbol: nil},
# name: "Mexico Peso",
# nicknames: ["lana", "varos", "plata", "bolas", "lucas", "feria", "billete",
# "pachocha", "billullos", "villancicos", "villanos", "del águila",
# "morlacos", "papiros", "Marmaja"],
# representations: %Currencies.Representations{html: "$",
# unicode_decimal: '$'}, users: ["Mexico"]},
# %Currencies.Currency{central_bank: %Currencies.CentralBank{name: "Central Bank of the Philippines",
# url: "http://www.bsp.gov.ph/"}, code: "PHP", display: "₱",
# minor_unit: %Currencies.MinorUnit{name: "Sentimo", size: "1/100",
# symbol: nil}, name: "Philippines Peso", nicknames: nil,
# representations: %Currencies.Representations{html: "₱",
# unicode_decimal: [8369]}, users: ["Philippines"]},
# %Currencies.Currency{central_bank: %Currencies.CentralBank{name: "Central Bank of Uruguay",
# url: "http://www.bcu.gub.uy"}, code: "UYU", display: "$U",
# minor_unit: %Currencies.MinorUnit{name: "Centésimo", size: "1/100",
# symbol: nil}, name: "Uruguay Peso", nicknames: nil,
# representations: %Currencies.Representations{html: "$U",
# unicode_decimal: '$U'}, users: ["Uruguay"]}]
Currencies.filter(&(String.contains?(&1.name, "Peso"))) |>
Enum.map(&(&1.name))
# ["Argentina Peso", "Chile Peso", "Colombia Peso", "Cuba Convertible Peso",
# "Cuba Peso", "Dominican Republic Peso", "Mexico Peso", "Philippines Peso",
# "Uruguay Peso"]
Currencies.filter(&(String.contains?(&1.name, "Peso"))) |>
Enum.map(&(&1.name)) |>
Enum.count
# 9
```
## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request