Note ex_money
5.17.0 and later is supported on Elixir 1.12 and later versions only.
This is the changelog for Money v5.17.0 released on May 28th, 2024. For older changelogs please consult the release tag on GitHub
- Fixes warnings on Elixir 1.17.
This is the changelog for Money v5.16.1 released on April 23rd, 2024. For older changelogs please consult the release tag on GitHub
Money.sum/2
default exchange rates is always%{}
even if the exchange rate server is not running. Thanks to @haste for the report. Closes #168.
This is the changelog for Money v5.16.0 released on April 21st, 2024. For older changelogs please consult the release tag on GitHub
-
WHen parsing numbers, use the localized number system separators where they exist. Thanks to @pshoukry for the report. Closes #167.
-
Surface errors when starting the exchange rates retrieveer. Thanks to @danschultzer for the PR. Closes #165.
-
Update to CLDR 45.0 data.
-
Return structured errors for
Money.ExchangeRates.latest_rates/0
,Money.ExchangeRates.historic_rates/1
,Money.ExchangeRates.last_updated/0
andMoney.ExchangeRates.latest_rates_available?/0
when the exchange rates retrieval process is not running.
This is the changelog for Money v5.15.4 released on March 1st, 2024. For older changelogs please consult the release tag on GitHub
- Fix exchange rate conversions for digital tokens. Thanks much to @ddanschultzer for the PR. Closes 164.
- Format the exchange rate retrieval interval used in the init message using the default
cldr
backend configured for:ex_money
.
This is the changelog for Money v5.15.3 released on January 4th, 2024. For older changelogs please consult the release tag on GitHub
- Add
or ~> 4.0
for:phoenix_html
dependency. Thanks to @wkirschbaum for the PR. Closes #161.
This is the changelog for Money v5.15.2 released on November 3rd, 2023. For older changelogs please consult the release tag on GitHub
- Fix compilation warnings on doctests on Elixir 1.16.
This is the changelog for Money v5.15.1 released on October 10th, 2023. For older changelogs please consult the release tag on GitHub
- Fixes the exchange rate retriever, removing the double retrieval loop. Thanks to @dbernheisel for the report. Closes #152.
This is the changelog for Money v5.15.0 released on July 24th, 2023. For older changelogs please consult the release tag on GitHub
- Adds an option
:no_fraction_if_integer
toMoney.to_string/2
. Iftruthy
this option will setfractional_digits: 0
ifmoney
is an integer value. This may be helpful in cases where integer money amounts such asMoney.new(:USD, 1234)
should be formatted as$1,234
rather than$1,234.00
.
This is the changelog for Money v5.14.1 released on July 23rd, 2023. For older changelogs please consult the release tag on GitHub
-
Fix
Looger.warn/1
warnings by moving toLogger.warning/1
. -
Fix failing test case.
This is the changelog for Money v5.14.0 released on April 29th, 2023. For older changelogs please consult the release tag on GitHub
- Adds
Money.integer?/1
to return a boolean indicatng if a money amount is an integer value (ie has no significant fractional digits).
This is the changelog for Money v5.13.0 released on April 28th, 2023. For older changelogs please consult the release tag on GitHub
-
Updates to ex_cldr version 2.37.0 which includes data from CLDR release 43
-
Tests now assume Decimal ~> 2.0 since the
Inspect
protocol implementation now emits executable code examples.
This is the changelog for Money v5.12.4 released on March 30th, 2023. For older changelogs please consult the release tag on GitHub
Note ex_money 5.12.4
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.25
or later.
- Delegates http requests (used in exchange rates retrieval) to
Cldr.Http.get_with_headers/2
. This centralizes all HTTP get requests for allex_cldr_*
libraries to this one function which can then be reviewed and managed for security concerns.
This is the changelog for Money v5.12.3 released on October 13th, 2022. For older changelogs please consult the release tag on GitHub
Note ex_money 5.12.3
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.25
or later.
- Fix
NaN
andInf
amount detection to be compatible with Decimal 1.x and 2.x. Thanks to @Lostkobrakai for the PR. Closes #144.
This is the changelog for Money v5.12.2 released on October 13th, 2022. For older changelogs please consult the release tag on GitHub
Note ex_money 5.12.2
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.25
or later.
- Don't create "NaN" or "Inf" valued Money structs. Thanks for @coladarci for the report. Closes #143.
This is the changelog for Money v5.12.1 released on August 27th, 2022. For older changelogs please consult the release tag on GitHub
Note ex_money 5.12.1
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.25
or later.
- Removes compile-time warnings for Elixir 1.14 (use
Application.compile_env/2
, notApplication.get_env/2
)
This is the changelog for Money v5.12.0 released on June 8th, 2022. For older changelogs please consult the release tag on GitHub
Note ex_money 5.12.0
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.25
or later.
- Add
Money.localize/2
to convert a money amount into the currency in affect for the given locale.
This is the changelog for Money v5.11.0 released on May 14th, 2022. For older changelogs please consult the release tag on GitHub
Note ex_money 5.11.0
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.25
or later.
-
Adds support for ISO 24165 Digital Tokens (crypto currency). Digital Token-based money behaves the same as currency-based money with the following exceptions due to limited data availability:
- Digital token names are not localized (there is no localised data available in CLDR)
- Digital token names are not pluralized (also because there is no localised data available)
- Digital token amounts are never rounded (there is no data available to standardise on rounding rules or the number of fractional digits to round to)
This is the changelog for Money v5.10.0 released on April 6th, 2022. For older changelogs please consult the release tag on GitHub
Note ex_money 5.10.0
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.25
or later.
-
Add
Money.zero?/1
,Money.positive?/1
andMoney.negative?/1
. Thanks to @emaiax for the PR. -
Update CLDR to release 41 in ex_cldr version 2.28.0 and ex_cldr_numbers 2.26.0.
This is the changelog for Money v5.9.0 released on February 21st, 2022. For older changelogs please consult the release tag on GitHub
Note ex_money 5.9.0
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.25
or later.
-
Updates to ex_cldr version 2.26.0 and ex_cldr_numbers version 2.25.0 which use atoms for locale names and rbnf locale names. This is consistent with other elements of
t:Cldr.LanguageTag
where atoms are used when the cardinality of the data is fixed and relatively small and strings where the data is free format. -
Adjusts the output of
Money.inspect/2
to be executable code. Instead of#Money<:USD, 100>
the output will beMoney.new(:USD, "100")
. This improved developer experience by allowing for copy/paste ofinspect/2
results intoiex
. It is also in line with similar changes being made inelixir
,Decimal
and others. -
Add documentation for
:currency_symbol
option forMoney.to_string/2
. Although its an option that is passed through toCldr.Number.to_string/3
, its very relevant tot:Money
formatting.
This is the changelog for Money v5.8.0 released on January 31st, 2022. For older changelogs please consult the release tag on GitHub
Note ex_money 5.8.0
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.23
or later.
- Adds configuration option
:exclude_protocol_implementations
to omit generating implementations for one or more protocols from the listJson.Encoder
,Phoneix.HTML.Safe
andGringotts.Money
. Thanks to @jgough-playoxygen for the suggestion.
This is the changelog for Money v5.7.4 released on December 23rd, 2021. For older changelogs please consult the release tag on GitHub
Note ex_money 5.7.4
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.23
or later.
- Fix
Money.to_integer_exp/1
whent:Money
has a negative amount. Thanks to @hamptokr for the report and the PR.
This is the changelog for Money v5.7.3 released on December 19th, 2021. For older changelogs please consult the release tag on GitHub
Note ex_money 5.7.3
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.23
or later.
- Fixes retrieving exchange rates on OTP releases before OTP 22. Thanks to @fbettag for the report, collaboration and patience.
This is the changelog for Money v5.7.2 released on December 17th, 2021. For older changelogs please consult the release tag on GitHub
Note ex_money 5.7.2
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.23
or later.
- Fix spec for
Money.from_integer/3
. Thanks to @jdewar for the report.
- Support a
:fractional_digits
option forMoney.from_integer/3
and improve the documentation.
This is the changelog for Money v5.7.1 released on December 8th, 2021. For older changelogs please consult the release tag on GitHub
Note ex_money 5.7.1
is supported on Elixir 1.10 and later versions only. It also requires ex_cldr_numbers 2.23
or later.
-
Fix dialyzer warnings on Elixir 1.12 and 1.13
-
Replace
use Mix.Config
withimport Config
in configuration files since the former is deprecated.
This is the changelog for Money v5.7.0 released on October 28th, 2021. For older changelogs please consult the release tag on GitHub
- Updates to support CLDR release 40 via ex_cldr version 2.24
- Don't call deprecated
Cldr.Config.get_locale/2
, useCldr.Locale.Loader.get_locale/2
instead.
This is the changelog for Money v5.6.0 released on August 31st, 2021. For older changelogs please consult the release tag on GitHub
- Adds
Money.to_currency_code/1
to return the currency code part of at:Money
. Thanks to @Adzz for the proposal. Closes #130.
This is the changelog for Money v5.5.5 released on August 15th, 2021. For older changelogs please consult the release tag on GitHub
- Allow either
phoenix_html
version 2.x or 3.x. Thanks to @seantanly for the PR. Closes #129.
This is the changelog for Money v5.5.4 released on June 17th, 2021. For older changelogs please consult the release tag on GitHub
- Support
t:Cldr.Number.Format.Options
as an argument toMoney.to_string/2
. Thanks to @jeroenvisser101 for the PR. Closes #127.
This is the changelog for Money v5.5.3 released on May 7th, 2021. For older changelogs please consult the release tag on GitHub
- Fixes parsing money when a currency string has a "." in it such as "kr.". Thanks for the report to @Doerge. Closes #125.
This is the changelog for Money v5.5.2 released on April 14th, 2021. For older changelogs please consult the release tag on GitHub
- Fix exception message when describing the requirement for a default backend configuration. Thanks to @holandes22 for the report. Closes #124.
This is the changelog for Money v5.5.1 released on February 18th, 2021. For older changelogs please consult the release tag on GitHub
- Fix formatting a
t:Money
that has no:format_options
key. That can happen if re-hydrating at:Money
using:erlang.binary_to_term/1
from an older version ofex_money
that doesn't have the:format_options
key in the struct. Thanks to @coladarci. Fixes #123.
This is the changelog for Money v5.5.0 released on February 10th, 2021. For older changelogs please consult the release tag on GitHub
-
Adds format options to
t:Money
to allow per-money formatting options to be applied with theString.Chars
protocol. Thanks to @morinap for the feature request. -
Adds
Money.put_format_options/2
This is the changelog for Money v5.4.1 released on January 7th, 2021. For older changelogs please consult the release tag on GitHub
-
Update
stream_data
to remove stacktrace warning -
Use
Cldr.default_backend!/0
instead of deprecatedCldr.default_backend/0
in tests. Closes #120. Thanks to @darwintantuco.
This is the changelog for Money v5.4.0 released on November 1st, 2020. For older changelogs please consult the release tag on GitHub
- Add support for CLDR 38
This is the changelog for Money v5.3.2 released on September 30th, 2020. For older changelogs please consult the release tag on GitHub
-
Fix docs for
Money.div!/2
-
Update
cldr_utils
which implements a shim forDecimal
to support both version1.9
and2.0
.
This is the changelog for Money v5.3.1 released on September 26th, 2020. For older changelogs please consult the release tag on GitHub
- Support
nimble_parsec
versions that match~> 0.5 or ~> 1.0
This is the changelog for Money v5.3.0 released on September 5th, 2020. For older changelogs please consult the release tag on GitHub
- Fix parsing money amounts to use Unicode definition of whitespace (set
[:Zs:]
). Thanks to @Sanjibukai for the report.
- Add
Money.sum/2
to sum a list ofMoney
, converting them if required.
This is the changelog for Money v5.2.1 released on June 23rd, 2020. For older changelogs please consult the release tag on GitHub
-
Configure the
Money.Application
supervisor via the arguments toMoney.Application.start/2
and configure defaults inmix.exs
. This permits different restart strategies and names. -
Add
Money.ExchangeRates.Supervisor.default_supervisor/0
to return the name of the default supervisor which isMoney.Supervisor
-
Change
Money.ExchangeRates.Supervisor.stop/0
to becomeMoney.ExchangeRates.Supervisor.stop/{0, 1}
allowing the supervisor name to be passed in. The default isMoney.ExchangeRates.Supervisor.default_supervisor/0
- Add back the name of the Application supervisor,
Money.Supervisor
. Thanks for the report of the regression to @jeroenvisser101. Fixes #117.
This is the changelog for Money v5.2.0 released on May 30th, 2020. For older changelogs please consult the release tag on GitHub
- Adds a configuration option
:verify_peer
which is a boolean that determines whether to verify the client certificate for any exchange rate service API call. The default istrue
. This option should not be changed without a very clear understanding of the security implications. This option will remain undocumented but supported for now.
- Handle expired certificate errors on the exchange rates API service and log them. Thanks to @coladarci. Fixes #116
This is the changelog for Money v5.1.0 released on May 26th, 2020. For older changelogs please consult the release tag on GitHub
-
Extract default currency from locale when calling
Money.parse/2
on a money string. The updated docs now say::default_currency
is any valid currency code orfalse
that will used if no currency code, symbol or description is indentified in the parsed string. The default isnil
which means that the default currency associated with the:locale
option will be used. Iffalse
then the currency assocated with the:locale
option will not be used and an error will be returned if there is no currency in the string being parsed.
-
Add certificate verification for exchange rate retrieval
This is the changelog for Money v5.0.2 released on April 29th, 2020. For older changelogs please consult the release tag on GitHub
- Update the application supervisor spec
This is the changelog for Money v5.0.1 released on January 28th, 2020. For older changelogs please consult the release tag on GitHub
- Make
nimble_parsec
a required dependency since it is required for parsing money amounts. Thanks to @jonnystoten for the report.
This is the changelog for Money v5.0.0 released on January 21st, 2020. For older changelogs please consult the release tag on GitHub
-
Elixir 1.10 introduces semantic sorting for stucts that depends on the availability of a
compare/2
function that returns:lt
,:eq
or:gt
. Therefore in this release ofex_money
the functionscompare/2
andcompare!/2
are swapped withcmp/2
andcmp!/2
in order to conform with this expectation. Nowcompare/2
will return:eq
,:lt
or:gt
. Andcmp/2
return-1
,0
or1
. -
Deprecate
Money.reduce/1
in favour ofMoney.normalize/1
to be consistent withDecimal
versions1.9
and later.
It is believed and tested that Money
version 5.0.0
is compatible with all versions of Decimal
from 1.6
up to the as-yet-unreleased 2.0
.
From Elixir verison 1.10.0
, several functions in the Enum
module can use the Money.compare/2
function to simplify sorting. For example:
iex> list = [Money.new(:USD, 100), Money.new(:USD, 200)]
[#Money<:USD, 100>, #Money<:USD, 200>]
iex> Enum.sort list, Money
[#Money<:USD, 100>, #Money<:USD, 200>]
iex> Enum.sort list, {:asc, Money}
[#Money<:USD, 100>, #Money<:USD, 200>]
iex> Enum.sort list, {:desc, Money}
[#Money<:USD, 200>, #Money<:USD, 100>]
Note that Enum.sort/2
will sort money amounts even when the currencies are incompatible. In this case the order of the result is not predictable. It is the developers responsibility to filter the list to compatible currencies prior to sorting. This is a limitation of the Enum.sort/2
implementation.
ex_money
version5.0.0
is compatible withDecimal
versions from1.6
onwards. InDecimal
version2.0
the same changes tocompare/2
andcmp/2
will occur and inDecimal
version1.9
,Decimal.cmp/2
is deprecated.ex_money
version5.0.0
detects these different versions ofDecimal
and therefore remains compatability withDecimal
back to version1.6
.
This is the changelog for Money v4.4.2 released on January 2nd, 2020. For older changelogs please consult the release tag on GitHub
-
Remove calls to
Code.ensure_compiled?/1
since it is deprecated in Elixir 1.10. Use insteadCldr.Config.ensure_compiled?/1
which is added as a private API inCldr
version 2.12.0. This version ofCldr
now becomes the minimum version required. -
Remove spurious entries in
.dialyzer_ignore_warnings
- no entries are required and dialyzer is happy.
This is the changelog for Money v4.4.1 released on November 10th, 2019. For older changelogs please consult the release tag on GitHub
- Fixes money parsing error. Thanks to @Doerge. Closes #112.
This is the changelog for Money v4.4.0 released on November 6th, 2019. For older changelogs please consult the release tag on GitHub
Money.parse/2
until this release supported the:currency_filter
option. It allowed for currencies to be filtered based upon their attributes (:all
,:current
,:historic
,:tender
,:annotated
). When multiple attributes were passed in a list, a currency had to meet all of these attributes. From this release onwards, multiple attributes items areor
ed, notand
ed. It is expected this option is used extremely rarely and therefore of limited impact.
Money.parse/2
now includes the option:default_currency
which allows for parsing a number only (without a currency code) and it will be tagged with the:default_currency
.
iex> Money.parse("100")
{:error,
{Money.Invalid,
"A currency code, symbol or description must be specified but was not found in \"100\""}}
iex> Money.parse("100", default_currency: :USD)
#Money<:USD, 100>
- Add
:only
and:except
options toMoney.parse/2
to specify which currency codes or currency attributes are permitted.:only
and:except
replace the option:currency_filter
which is now deprecated. If provided,:currency_filter
is interpreted as:only
. An example:
iex> Money.parse("100 usd", only: :current, except: :USD)
{:error,
{Money.UnknownCurrencyError,
"The currency \"usd\" is unknown or not supported"}}
Money.parse/2
now supports negative money amounts.
iex> Money.parse("chf -100")
#Money<:CHF, -100>
iex> Money.parse("(chf 100)")
#Money<:CHF, -100>
- The money parser has been rewritten using nimble_parsec
This is the changelog for Money v4.3.0 released on September 8th, 2019. For older changelogs please consult the release tag on GitHub
- Adds a
Money
backend in the same spirit as other libraries that leverge ex_cldr. Thanks to @Lostkobrakai. Closes #108. All of the functions in theMoney
module may also be called on a backend module<backend>.Money.fun
without having to specify a backend module since this is implicit.
Money.new!/3
replacesMoney.new!/2
to accept options. Thanks to @Lostkobrakai. Closes #109.
This is the changelog for Money v4.2.2 released on September 7th, 2019. For older changelogs please consult the release tag on GitHub
- Use
Keyword.get_lazy
when the default isCldr.default_backend/0
to avoid exceptions when no default backend is configured. Thanks to @Lostkobrakai. Closes #108.
This is the changelog for Money v4.2.1 released on September 2nd, 2019. For older changelogs please consult the release tag on GitHub
- Fixes parsing of money amount that have a single digit amount. Closes #107. Thanks to @njwest
This is the changelog for Money v4.2.0 released on 21 August, 2019. For older changelogs please consult the release tag on GitHub
- Move the
Money.Migration
module to ex_money_ecto where it belongs
Money.default_backend/0
will now either use the backend configured under the:default_cldr_backend
key ofex_money
orCldr.default_backend/0
. In either case an exeption will be raised if no default backend is configured.
This is the changelog for Money v4.1.0 released on July 13th, 2019. For older changelogs please consult the release tag on GitHub
-
Adds
Money.abs/1
. Thanks to @jeremyjh. -
Improve
@doc
consistency using## Arguments
not## Options
.
This is the changelog for Money v4.0.0 released on July 8th, 2019. For older changelogs please consult the release tag on GitHub
-
Functions related to the serialization of money types have been extracted to the library ex_money_sql. For applications using the dependency
ex_money
that do not require serialization no changes are required. For applications using serialization, the dependency should be changed toex_money_sql
(which in turn depends onex_money
). -
Supports Elixir 1.6 and later only
This is the changelog for Money v3.4.4 released on June 2nd, 2019. For older changelogs please consult the release tag on GitHub
- Supports passing an
Cldr.Number.Formation.Options.t
as alternative to aKeyword.t
for options toMoney.to_string/2
. Performance is doubled when using pre-validated options which is useful if formatting is being executed in a tight loop.
An example of this usage is:
iex> money = Money.new(:USD, 100)
# Apply any options required as a keyword list
# Money will take care of managing the `:currency` option
iex> options = []
iex> {:ok, options} = Cldr.Number.Format.Options.validate_options(0, backend, options)
iex> Money.to_string(money, options)
The 0
in validate_options
is used to determine the sign of the amount because that can influence formatting - for example the accounting format often uses (1234)
as its format. If you know your amounts are always positive, just use 0
.
If the use case may have both positive and negative amounts, generate two option sets (one with the positive number and one with the negative). Then use the appropriate option set. For example:
iex> money = Money.new(:USD, 1234)
# Add options as required
# Money will take care of managing the `:currency` option
iex> options = []
iex> {:ok, positive_options} = Cldr.Number.Format.Options.validate_options(0, backend, options)
iex> {:ok, negative_options} = Cldr.Number.Format.Options.validate_options(-1, backend, options)
iex> if Money.cmp(money, Money.zero(:USD)) == :gt do
...> Money.to_string(money, positive_options)
...> else
...> Money.to_string(money, negative_options)
...> end
This is the changelog for Money v3.4.3 released on June 2nd, 2019. For older changelogs please consult the release tag on GitHub
-
Ensure
Money.to_string!/2
properly raises -
Add specs for
Money.to_string/2
andMoney.to_string!/2
Thanks to @rodrigues for the report and PR.
This is the changelog for Money v3.4.2 released on April 16th, 2019. For older changelogs please consult the release tag on GitHub
Money.put_fraction/2
now correctly allows setting the fraction to 0.
-
Money.round/2
allows setting:currency_digits
to an integer number of digits in addition to the options:iso
,:cash
and:accounting
. The default remains:iso
. -
Improves the documentation for
Money.to_string/2
.
This is the changelog for Money v3.4.1 released on April 5th, 2019. For older changelogs please consult the release tag on GitHub
- Fix
README.md
markdown formatting error. Thanks to @fireproofsocks for the report and @lostkobrakai for the fix. Closes #99.
This is the changelog for Money v3.4.0 released on March 28th, 2019. For older changelogs please consult the release tag on GitHub
- Updates to CLDR version 35.0.0 released on March 27th 2019 through
ex_cldr
version 2.6.0.
This is the changelog for Money v3.3.1 released on March 8th, 2019. For older changelogs please consult the release tag on GitHub
- Fix or silence dialyzer warnings
This is the changelog for Money v3.3.0 released on February 24th, 2019. For older changelogs please consult the release tag on GitHub
- Adds
Money.put_fraction/2
. This will set the fractional part of a money to the specified integer amount. Examples:
iex> Money.put_fraction Money.new(:USD, "2.49"), 99
#Money<:USD, 2.99>
iex> Money.put_fraction Money.new(:USD, "2.49"), 999
{:error,
{Money.InvalidAmountError, "Rounding up to 999 is invalid for currency :USD"}}
- Parsing money strings now uses a more complete set of character definitions for decimal and grouping separators based upon the
characters.json
file of the "en" locale.
This is the changelog for Money v3.2.4 released on February 13th, 2019. For older changelogs please consult the release tag on GitHub
- Updates to ex_cldr_currencies version 2.1.2 which correctly removes duplicate currency strings when the same string referred to different currency codes. See the changelog for further detail.
- Adds a
:fuzzy
option toMoney.parse/2
that usesString.jaro_distance/2
to help determine if the provided currency text can be resolved as a currency code. For example:
iex> Money.parse("100 eurosports", fuzzy: 0.8)
#Money<:EUR, 100>
iex> Money.parse("100 eurosports", fuzzy: 0.9)
{:error,
{Money.Invalid, "Unable to create money from \\"eurosports\\" and \\"100\\""}}
This is the changelog for Money v3.2.3 released on February 12th, 2019. For older changelogs please consult the release tag on GitHub
- Correctly parse money strings with unicode currency symbols like "€". Closes #95. Thanks to @crbelaus.
This is the changelog for Money v3.2.2 released on February 10th, 2019. For older changelogs please consult the release tag on GitHub
- Improves parsing of money strings. Parsing now uses various strings that CLDR knows about. Some examples:
iex> Money.parse "$au 12 346", locale: "fr"
#Money<:AUD, 12346>
iex> Money.parse "12 346 dollar australien", locale: "fr"
#Money<:AUD, 12346>
iex> Money.parse "A$ 12346", locale: "en"
#Money<:AUD, 12346>
iex> Money.parse "australian dollar 12346.45", locale: "en"
#Money<:AUD, 12346.45>
iex> Money.parse "AU$ 12346,45", locale: "de"
#Money<:AUD, 12346.45>
# Can also return the strings available for a given currency
# and locale
iex> Cldr.Currency.strings_for_currency :AUD, "de"
["aud", "au$", "australischer dollar", "australische dollar"]
# Round trip formatting also seems to be ok
iex> {:ok, string} = Cldr.Number.to_string 1234, Money.Cldr, currency: :AUD
iex> Money.parse string
#Money<:AUD, 1234.00>
This is the changelog for Money v3.2.1 released on February 2nd, 2019. For older changelogs please consult the release tag on GitHub
-
Added
Money.Ecto.Composite.Type.cast/1
andMoney.Ecto.Map.Type.cast/1
for aString.t
parameter. When aString.t
is provided,cast/1
will callMoney.parse/2
to create theMoney.t
. -
Money.new/3
now uses the current locale on the default backend if no locale or backend is specified. This means thatMoney.Ecto.Composite.Type.cast/1
andMoney.Ecto.Map.Type.cast/1
will be parsed using the locale that has been set for the current process in the default backend. As a result, a simpletype=text
form field can be used to input a money type (currency code and amount in a single string) that can then be cast to aMoney.t
.
This is the changelog for Money v3.2.0 released on February 1st, 2019. For older changelogs please consult the release tag on GitHub
- Correctly generate
migrations_path/1
function based upon whetherEcto
is configured and which version
- Adds
Money.parse/2
which will parse a string comprising a currency code and an amount. It will return aMoney.t
or an error. This function may be helpful in supporting money input in HTML forms.
This is the changelog for Money v3.1.0 released on December 30th, 2018. For older changelogs please consult the release tag on GitHub
-
Fix typo in
exchange_rates_retriever.ex
. Thanks to @lostkobrakai. Closes #91. -
Remove obsolete
cldr
compiler -
Changes the
sum
aggregate function formoney_with_currency
to beSTRICT
which means it handlesNULL
columns in the same way as the standardSUM
function. Thanks to @lostkobrakai. Closes #88. -
Fixes documentation link errors
-
Fix unhandled terminate typo error in exchange rates server. Thanks to @xavier. Closes #90.
This is the changelog for Money v3.0.0 released on November 23rd, 2018. For older changelogs please consult the release tag on GitHub
The primary purpose of this release is to support ex_cldr version 2.0
Money.from_tuple/1
has been removed- Uses ex_cldr version 2. Please see the changelog for configuration changes that are required.
- Requires a default_cldr_backend to be configured in
config.exs
. For example:
config :ex_money,
...
default_cldr_backend: MyApp.Cldr
end