money 6.5.1 → 6.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +209 -5
- data/LICENSE +18 -16
- data/README.md +321 -70
- data/config/currency_backwards_compatible.json +65 -0
- data/config/currency_iso.json +280 -94
- data/config/currency_non_iso.json +101 -3
- data/lib/money/bank/base.rb +1 -3
- data/lib/money/bank/variable_exchange.rb +88 -96
- data/lib/money/currency/heuristics.rb +1 -143
- data/lib/money/currency/loader.rb +15 -13
- data/lib/money/currency.rb +98 -81
- data/lib/money/locale_backend/base.rb +7 -0
- data/lib/money/locale_backend/currency.rb +11 -0
- data/lib/money/locale_backend/errors.rb +6 -0
- data/lib/money/locale_backend/i18n.rb +25 -0
- data/lib/money/locale_backend/legacy.rb +28 -0
- data/lib/money/money/allocation.rb +46 -0
- data/lib/money/money/arithmetic.rb +97 -52
- data/lib/money/money/constructors.rb +5 -6
- data/lib/money/money/formatter.rb +399 -0
- data/lib/money/money/formatting_rules.rb +142 -0
- data/lib/money/money/locale_backend.rb +22 -0
- data/lib/money/money.rb +268 -194
- data/lib/money/rates_store/memory.rb +120 -0
- data/lib/money/version.rb +1 -1
- data/money.gemspec +15 -20
- metadata +36 -59
- data/.coveralls.yml +0 -1
- data/.gitignore +0 -22
- data/.travis.yml +0 -13
- data/AUTHORS +0 -116
- data/CONTRIBUTING.md +0 -17
- data/Gemfile +0 -7
- data/Rakefile +0 -17
- data/lib/money/money/formatting.rb +0 -386
- data/spec/bank/base_spec.rb +0 -77
- data/spec/bank/single_currency_spec.rb +0 -11
- data/spec/bank/variable_exchange_spec.rb +0 -275
- data/spec/currency/heuristics_spec.rb +0 -84
- data/spec/currency_spec.rb +0 -321
- data/spec/money/arithmetic_spec.rb +0 -568
- data/spec/money/constructors_spec.rb +0 -75
- data/spec/money/formatting_spec.rb +0 -667
- data/spec/money_spec.rb +0 -745
- data/spec/spec_helper.rb +0 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 3de47437ec002ed24a400508cac96b2ff6812f484c666fe3db3a82e921a805c0
|
|
4
|
+
data.tar.gz: f96755602e56ea81d734b7505e7cfc88caaa948d7a8d285eeb470801028c15b9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2f8cd71611e96a80cb733651675cb6fac59d358cb7c9576c8c264abbfec6eb1da11b8cbe2af12cdfb070e5dd01cd74f6fdc70772da16aa4c2abc5248b13fca3c
|
|
7
|
+
data.tar.gz: '092ba5a188eb29d462431e94420e1c6d7a7f9a4a59c0895f66a4a1cf92cfaa37cbc1bc344a241f5f8cc9fc4e998189164bc2d0ab11480a589fe7bb0e341754ba'
|
data/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,200 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
4
|
-
|
|
3
|
+
## 6.16.0
|
|
4
|
+
|
|
5
|
+
- Add `Money.from_cents` alias as a more explicit initializer, it's the same as `Money.new`
|
|
6
|
+
|
|
7
|
+
## 6.15.0
|
|
8
|
+
|
|
9
|
+
- Add :delimiter_pattern option to the Formatter
|
|
10
|
+
|
|
11
|
+
## 6.14.1
|
|
12
|
+
|
|
13
|
+
- Fix CHF format regression introduced in v6.14.0
|
|
14
|
+
- Fix deprecation warning in #format_decimal_part
|
|
15
|
+
|
|
16
|
+
## 6.14.0
|
|
17
|
+
|
|
18
|
+
- Fix Bahraini dinar symbol
|
|
19
|
+
- Raise exception when default currency is not set or passed as parameter
|
|
20
|
+
- Allow specifying default_bank as a lambda
|
|
21
|
+
- Allow passing a default format in currencies definition only valid without symbol_position
|
|
22
|
+
- Always allow comparison with zero Money
|
|
23
|
+
- Rename Money.infinite_precision to default_infinite_precision
|
|
24
|
+
- Add Currency.reset! method to reload all the default currency definitions
|
|
25
|
+
- Fix edgecase for Money#allocate when applying to array of all zero values
|
|
26
|
+
|
|
27
|
+
## 6.13.8
|
|
28
|
+
- Update symbol for XOF
|
|
29
|
+
- Update UYU currency symbol
|
|
30
|
+
- Allow double conversion using same bank
|
|
31
|
+
- Warn when using unsafe serializer for rate import
|
|
32
|
+
- Move Icelandic symbol after the amount
|
|
33
|
+
|
|
34
|
+
## 6.13.7
|
|
35
|
+
- Improve deprecation warnings for the upcoming major release
|
|
36
|
+
|
|
37
|
+
## 6.13.6
|
|
38
|
+
- Fix a regression introduced in 6.13.5 that broken RatesStore::Memory subclasses
|
|
39
|
+
|
|
40
|
+
## 6.13.5
|
|
41
|
+
- Raise warning on using Money.default_currency
|
|
42
|
+
- Raise warning on using default Money.rounding_mode
|
|
43
|
+
- Add Second Ouguiya MRU 929 to currency iso file
|
|
44
|
+
- Add symbol for UZS
|
|
45
|
+
- Use monitor for recursive mutual exclusion in RatesStore::Memory
|
|
46
|
+
- Allow passing store as a string to Money::Bank::VariableExchange (to support Rails 6)
|
|
47
|
+
|
|
48
|
+
## 6.13.4
|
|
49
|
+
- Update currency config for Zambian Kwacha (ZMW)
|
|
50
|
+
- Do not modify options passed to FormattingRules
|
|
51
|
+
|
|
52
|
+
## 6.13.3
|
|
53
|
+
- Remove specs from the packaged gem
|
|
54
|
+
- Use Currency::Loader directly without extending
|
|
55
|
+
- Add Money.with_rounding_mode as a replacement for calling Money.rounding_mode with a block
|
|
56
|
+
- Fix currency search for two digit ISO numbers
|
|
57
|
+
- Add description to TypeError raised by +/- operations
|
|
58
|
+
|
|
59
|
+
## 6.13.2
|
|
60
|
+
- Prevent Money initialization with non-finite amounts
|
|
61
|
+
- Convert the fractional value of a Money object to BigDecimal when initializing
|
|
62
|
+
- Offer replacements for currency position deprecations
|
|
63
|
+
- Fix Peruvian Sol symbol
|
|
64
|
+
- Lock i18n to <= 1.2.0 for older (< 2.3) rubies
|
|
65
|
+
- Prevent Divide By Zero in `Money#allocate`
|
|
66
|
+
|
|
67
|
+
## 6.13.1
|
|
68
|
+
- Add bolívar soberano (VES)
|
|
69
|
+
- Deprecate bolívar fuerte (VEF)
|
|
70
|
+
- Deprecate old `#format` rules passed as a symbol
|
|
71
|
+
- Clarify `use_i18n` deprecation
|
|
72
|
+
- Add `:currency` locale_backend for explicit per-currency localization
|
|
73
|
+
|
|
74
|
+
## 6.13.0
|
|
75
|
+
- Add :format option to the Formatter
|
|
76
|
+
- Add ruby 2.6.0 support
|
|
77
|
+
- Performance improvement (lazy stringify currency keys)
|
|
78
|
+
- Add `Money.locale_backend` for translation lookups
|
|
79
|
+
- Deprecate `use_i18n` flag in favour of `locale_backend = :i18n`
|
|
80
|
+
- Deprecate old formatting rules in favour of `:format`
|
|
81
|
+
- LVL and LTL are no longer used
|
|
82
|
+
- Add `Currency#iso?` for checking if currency is iso or not
|
|
83
|
+
- Relax versions-lock of `i18n` and `rspec` dependencies
|
|
84
|
+
- Add Bitcoin Cash
|
|
85
|
+
- Fix incorrect behaviour of `Currency#find_by_currency_iso` when given empty input
|
|
86
|
+
|
|
87
|
+
## 6.12.0
|
|
88
|
+
- Remove caching of `.empty`/`.zero`
|
|
89
|
+
- Preserve assigned bank when rounding
|
|
90
|
+
- Always round the fractional part when calling `#round`
|
|
91
|
+
- Wrap all amount parts when `:html_wrap` option is used
|
|
92
|
+
- Deprecate `#currency_as_string` and `#currency_as_string=` (in favour of `#with_currency`)
|
|
93
|
+
- Add `#with_currency` for swapping the currency
|
|
94
|
+
- Rewrite allocate/split (fixing some penny losing issues)
|
|
95
|
+
|
|
96
|
+
## 6.11.3
|
|
97
|
+
- Fix regression: if enabled use i18n locales in Money#to_s
|
|
98
|
+
|
|
99
|
+
## 6.11.2
|
|
100
|
+
- Fix regression: ignore formatting defaults for Money#to_s
|
|
101
|
+
|
|
102
|
+
## 6.11.1
|
|
103
|
+
- Fix issue with adding non-USD money to zero (used when calling `.sum` on an array)
|
|
104
|
+
|
|
105
|
+
## 6.11.0
|
|
106
|
+
- Support i18n 1.0
|
|
107
|
+
- Update yard dependency to 0.9.11
|
|
108
|
+
- Support for ruby 2.5.0
|
|
109
|
+
- Add inheritance for currency definitions
|
|
110
|
+
- Added new symbol for bitcoin denomination
|
|
111
|
+
- Specify custom rounding precision when using `infinite_precision`
|
|
112
|
+
- Allow splits with sums greater than 1
|
|
113
|
+
- Prevent arithmetic methods from losing reference to the bank
|
|
114
|
+
- Fix coerced zero numeric subtraction
|
|
115
|
+
- Fix south asian formatting to support whole numbers
|
|
116
|
+
- Refactor formatting logic
|
|
117
|
+
|
|
118
|
+
## 6.10.1
|
|
119
|
+
- Fix an issue with Money.empty memoization
|
|
120
|
+
|
|
121
|
+
## 6.10.0
|
|
122
|
+
- Added support for i18n version 0.9
|
|
123
|
+
- Disabled rounding when verifying allocation splits
|
|
124
|
+
- Added Chinese Yuan Offshore (CNH)
|
|
125
|
+
- Fixed html_entity for ARS
|
|
126
|
+
- Fixed KZT symbol
|
|
127
|
+
- Allowed comparing cross currency when both are zero
|
|
128
|
+
- Fixed memory rate store
|
|
129
|
+
- Corrected HUF subunit and thousands separator config
|
|
130
|
+
|
|
131
|
+
## 6.9.0
|
|
132
|
+
- Extracted heuristics into money-heuristics gem
|
|
133
|
+
|
|
134
|
+
## 6.8.4
|
|
135
|
+
- Resolving NIO ambiguity with CAD
|
|
136
|
+
- Display the BBD $ symbol before digits
|
|
137
|
+
- Symbol first for NIO and PAB currencies
|
|
138
|
+
|
|
139
|
+
## 6.8.3
|
|
140
|
+
- Added support for the British Penny (GBX)
|
|
141
|
+
- Fixed LKR currency html_entity symbol
|
|
142
|
+
|
|
143
|
+
## 6.8.2
|
|
144
|
+
- Removed subunits for HUF
|
|
145
|
+
- Fixed `#from_amount` accepting `nil` as currency_code
|
|
146
|
+
- Relaxed i18n version (< 0.9)
|
|
147
|
+
- Set symbol for UZS
|
|
148
|
+
- Added disambiguate_symbol for XFU
|
|
149
|
+
- Fixed Peruvian Sol name
|
|
150
|
+
- Fixed symbol_first for VND (now `false`)
|
|
151
|
+
|
|
152
|
+
## 6.8.1
|
|
153
|
+
- Fixed issue with calling `format` on a frozen `Money` object
|
|
154
|
+
|
|
155
|
+
## 6.8.0
|
|
156
|
+
- Ruby 2.4.0 support
|
|
157
|
+
- Fixed UZS syntax
|
|
158
|
+
- Fixed HUF smallest denomination
|
|
159
|
+
- Fixed ruby 1.9 issues
|
|
160
|
+
- Fixed html entity for COP
|
|
161
|
+
- Updated all currency decimals to ISO-4217
|
|
162
|
+
- Fixed money allocation for negative amounts
|
|
163
|
+
- Fixed symbol_first for RON
|
|
164
|
+
- Fixed disambiguate option when symbol is set to true
|
|
165
|
+
- Fixed thousands separator for CZK
|
|
166
|
+
- Improved formatter performance by precaching I18n calls
|
|
167
|
+
|
|
168
|
+
## 6.7.1
|
|
169
|
+
- Changed DKK symbol from 'kr' to 'kr.'
|
|
170
|
+
- Improved Money::Formatting#format docs
|
|
171
|
+
- Updated VEF symbol from 'Bs F' to 'Bs'
|
|
172
|
+
- `Currency#exponent` now returns Fixnum
|
|
173
|
+
- Fixed coercion issues
|
|
174
|
+
- Fixed edge case with explicit override of thousands separator and decimal mark
|
|
175
|
+
- `Money#==` will now raise error for non-zero numeric values
|
|
176
|
+
- Fixed divmod
|
|
177
|
+
- Added disambiguation symbol to USD Dollar
|
|
178
|
+
- Use disambiguation symbol when both disambiguate and symbol are true in `format` method
|
|
179
|
+
|
|
180
|
+
## 6.7.0
|
|
181
|
+
- Changed `Money#<=>` to return `nil` if the comparison is inappropriate. (#584)
|
|
182
|
+
- Remove implicit conversion of values being compared. Only accept `Money` and
|
|
183
|
+
subclasses of `Money` for comparisons and raise TypeError otherwise.
|
|
184
|
+
- When comparing fails due to `Money::Bank::UnknownRate` `Money#<=>` will now
|
|
185
|
+
return `nil` as `Comparable#==` will not rescue exceptions in the next release.
|
|
186
|
+
- Fix `Currency` specs for `#exponent` and `#decimal_places` not making assertions.
|
|
187
|
+
- Fix a couple of Ruby warnings found in specs.
|
|
188
|
+
- Fix `Money#-`,`Money#+` arithmetics for Ruby 2.3+ : check for zero value without using eql? with a Fixnum. (#577)
|
|
189
|
+
- Use `Money#decimal_mark` when formatting with `rounded_infinite_precision` rule
|
|
190
|
+
set to `true`.
|
|
191
|
+
- Replaced meta-defined `thousands_separator` and `decimal_mark` methods with regular methods. (#579)
|
|
192
|
+
|
|
193
|
+
## 6.6.0
|
|
194
|
+
- Fixed VariableExchange#exchange_with for big numbers.
|
|
195
|
+
- Add Currency symbol translation support
|
|
196
|
+
- `Currency.all` raises a more helpful error message
|
|
197
|
+
(`Currency::MissingAttributeError`)if a currency has no priority
|
|
5
198
|
- `Currency` implements `Enumerable`.
|
|
6
199
|
- `Currency#<=>` sorts alphabetically by `id` if the `priority`s are the same,
|
|
7
200
|
and no longer raises an error if one of the priorities is missing.
|
|
@@ -16,6 +209,17 @@
|
|
|
16
209
|
`.ca_dollar`, and `.euro`.
|
|
17
210
|
- Add helper methods for British pounds: `Money.pound_sterling` and
|
|
18
211
|
`Money.gbp`.
|
|
212
|
+
- Add `Money.from_amount` to create money from a value in units instead of
|
|
213
|
+
fractional units.
|
|
214
|
+
- Changed CHF symbol from 'Fr' to 'CHF'
|
|
215
|
+
- Changed CLF exponent from 0 to 4
|
|
216
|
+
- Changed CLP subunit_to_unit from 1 to 100
|
|
217
|
+
- Minor fixes to prevent warnings on unused variables and the redefinition of
|
|
218
|
+
`Money.default_currency`
|
|
219
|
+
- `Money#==` changed to acknowledge that 0 in one currency is equal to 0 in any currency.
|
|
220
|
+
- Changed KRW subunit_to_unit from 100 to 1
|
|
221
|
+
- Decouple exchange rates storage from bank objects and formalize storage public API. Default is `Money::RatesStore::Memory`.
|
|
222
|
+
- `Currency.new` now a singleton by its id
|
|
19
223
|
|
|
20
224
|
## 6.5.1
|
|
21
225
|
- Fix format for BYR currency
|
|
@@ -72,7 +276,7 @@
|
|
|
72
276
|
- Works on Ruby 1.8.7
|
|
73
277
|
- Update deps
|
|
74
278
|
- Depreciate Money.parse
|
|
75
|
-
- Passing :
|
|
279
|
+
- Passing symbol: false when formatting 'JPY' currency in :ja locale
|
|
76
280
|
will work as expected
|
|
77
281
|
- Divide now obeys the specified rounding mode
|
|
78
282
|
- Add Money#round method. This is helpful when working in infinite_precision mode and would like to perform rounding at specific points in your work flow.
|
|
@@ -255,7 +459,7 @@ Features
|
|
|
255
459
|
|
|
256
460
|
Bugfixes
|
|
257
461
|
--------
|
|
258
|
-
- Fixed issue with #format(:
|
|
462
|
+
- Fixed issue with #format(no_cents: true) (thanks Romain & Julien)
|
|
259
463
|
|
|
260
464
|
Money 3.5.5
|
|
261
465
|
===========
|
|
@@ -342,7 +546,7 @@ Features
|
|
|
342
546
|
- Deprecated `Money#format` with separate params instead of Hash. Deprecation
|
|
343
547
|
target set to Money 3.5.0.
|
|
344
548
|
([#issue/31](http://github.com/RubyMoney/money/issues/31))
|
|
345
|
-
- Deprecated `Money#new(0, :
|
|
549
|
+
- Deprecated `Money#new(0, currency: "EUR")` in favor of
|
|
346
550
|
`Money#new(0, "EUR")`. Deprecation target set to Money 3.5.0.
|
|
347
551
|
([#issue/31](http://github.com/RubyMoney/money/issues/31))
|
|
348
552
|
- Throw ArgumentError when trying to multiply two Money objects together.
|
data/LICENSE
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
1
3
|
Copyright (c) 2005 Tobias Lutke
|
|
2
4
|
Copyright (c) 2008 Phusion
|
|
5
|
+
Copyright (c) 2021 Shane Emmons
|
|
3
6
|
|
|
4
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
the following conditions:
|
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
in the Software without restriction, including without limitation the rights
|
|
10
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
furnished to do so, subject to the following conditions:
|
|
11
13
|
|
|
12
|
-
The above copyright notice and this permission notice shall be
|
|
13
|
-
|
|
14
|
+
The above copyright notice and this permission notice shall be included in all
|
|
15
|
+
copies or substantial portions of the Software.
|
|
14
16
|
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
OF
|
|
21
|
-
|
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
|
+
SOFTWARE.
|