money 6.13.0 → 6.13.1
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 +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +42 -0
- data/config/currency_backwards_compatible.json +15 -0
- data/config/currency_iso.json +5 -5
- data/lib/money/locale_backend/currency.rb +11 -0
- data/lib/money/locale_backend/legacy.rb +2 -2
- data/lib/money/money.rb +3 -1
- data/lib/money/money/formatter.rb +3 -0
- data/lib/money/money/formatting_rules.rb +8 -1
- data/lib/money/money/locale_backend.rb +3 -1
- data/lib/money/version.rb +1 -1
- data/spec/locale_backend/currency_spec.rb +15 -0
- data/spec/money/formatting_spec.rb +4 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4981b9f6d6c9b7162e5df6692e81cac6440edcca
|
4
|
+
data.tar.gz: 96d7be00c3f275c0b8731807f4fa8955fade71bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4943cebf00d5abf48ca73b52ffd18cc2324287ffada6513357a1d4146b52fc7f4742dd95937efe499f96989c853939543ba857e8af32346f65852cbb71e0c3dd
|
7
|
+
data.tar.gz: 7b87dfa829e29eb266083e1b8d7df418c519273fb5fcab0095d6426b54cee22319303aa122825aa6f23ff635d32a28eb1644efa4f608c697c869c7b37405af0f
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 6.13.1
|
4
|
+
- Add bolívar soberano (VES)
|
5
|
+
- Deprecate bolívar fuerte (VEF)
|
6
|
+
- Deprecate old `#format` rules passed as a symbol
|
7
|
+
- Clarify `use_i18n` deprecation
|
8
|
+
- Add `:currency` locale_backend for explicit per-currency localization
|
9
|
+
|
3
10
|
## 6.13.0
|
4
11
|
- Add :format option to the Formatter
|
5
12
|
- Add ruby 2.6.0 support
|
data/README.md
CHANGED
@@ -434,6 +434,48 @@ If you wish to disable this feature and use defaults instead:
|
|
434
434
|
Money.locale_backend = nil
|
435
435
|
```
|
436
436
|
|
437
|
+
### Deprecation
|
438
|
+
|
439
|
+
The current default behaviour always checks the I18n locale first, falling back to "per currency"
|
440
|
+
localization. This is now deprecated and will be removed in favour of explicitly defined behaviour
|
441
|
+
in the next major release.
|
442
|
+
|
443
|
+
If you would like to use I18n localization (formatting depends on the locale):
|
444
|
+
|
445
|
+
```ruby
|
446
|
+
Money.locale_backend = :i18n
|
447
|
+
|
448
|
+
# example (using default localization from rails-i18n):
|
449
|
+
I18n.locale = :en
|
450
|
+
Money.new(10_000_00, 'USD').format # => $10,000.00
|
451
|
+
Money.new(10_000_00, 'EUR').format # => €10,000.00
|
452
|
+
|
453
|
+
I18n.locale = :es
|
454
|
+
Money.new(10_000_00, 'USD').format # => $10.000,00
|
455
|
+
Money.new(10_000_00, 'EUR').format # => €10.000,00
|
456
|
+
```
|
457
|
+
|
458
|
+
For the legacy behaviour of "per currency" localization (formatting depends only on currency):
|
459
|
+
|
460
|
+
```ruby
|
461
|
+
Money.locale_backend = :currency
|
462
|
+
|
463
|
+
# example:
|
464
|
+
Money.new(10_000_00, 'USD').format # => $10,000.00
|
465
|
+
Money.new(10_000_00, 'EUR').format # => €10.000,00
|
466
|
+
```
|
467
|
+
|
468
|
+
In case you don't need localization and would like to use default values (can be redefined using
|
469
|
+
`Money.default_formatting_rules`):
|
470
|
+
|
471
|
+
```ruby
|
472
|
+
Money.locale_backend = nil
|
473
|
+
|
474
|
+
# example:
|
475
|
+
Money.new(10_000_00, 'USD').format # => $10000.00
|
476
|
+
Money.new(10_000_00, 'EUR').format # => €10000.00
|
477
|
+
```
|
478
|
+
|
437
479
|
## Collection
|
438
480
|
|
439
481
|
In case you're working with collections of `Money` instances, have a look at [money-collection](https://github.com/RubyMoney/money-collection)
|
@@ -169,5 +169,20 @@
|
|
169
169
|
"thousands_separator": ",",
|
170
170
|
"iso_numeric": "935",
|
171
171
|
"smallest_denomination": 100
|
172
|
+
},
|
173
|
+
"vef": {
|
174
|
+
"priority": 100,
|
175
|
+
"iso_code": "VEF",
|
176
|
+
"name": "Venezuelan Bolívar",
|
177
|
+
"symbol": "Bs.F",
|
178
|
+
"alternate_symbols": ["Bs"],
|
179
|
+
"subunit": "Céntimo",
|
180
|
+
"subunit_to_unit": 100,
|
181
|
+
"symbol_first": true,
|
182
|
+
"html_entity": "",
|
183
|
+
"decimal_mark": ",",
|
184
|
+
"thousands_separator": ".",
|
185
|
+
"iso_numeric": "937",
|
186
|
+
"smallest_denomination": 1
|
172
187
|
}
|
173
188
|
}
|
data/config/currency_iso.json
CHANGED
@@ -2271,19 +2271,19 @@
|
|
2271
2271
|
"iso_numeric": "860",
|
2272
2272
|
"smallest_denomination": 100
|
2273
2273
|
},
|
2274
|
-
"
|
2274
|
+
"ves": {
|
2275
2275
|
"priority": 100,
|
2276
|
-
"iso_code": "
|
2277
|
-
"name": "Venezuelan Bolívar",
|
2276
|
+
"iso_code": "VES",
|
2277
|
+
"name": "Venezuelan Bolívar Soberano",
|
2278
2278
|
"symbol": "Bs",
|
2279
|
-
"alternate_symbols": ["Bs.
|
2279
|
+
"alternate_symbols": ["Bs.S"],
|
2280
2280
|
"subunit": "Céntimo",
|
2281
2281
|
"subunit_to_unit": 100,
|
2282
2282
|
"symbol_first": true,
|
2283
2283
|
"html_entity": "",
|
2284
2284
|
"decimal_mark": ",",
|
2285
2285
|
"thousands_separator": ".",
|
2286
|
-
"iso_numeric": "
|
2286
|
+
"iso_numeric": "928",
|
2287
2287
|
"smallest_denomination": 1
|
2288
2288
|
},
|
2289
2289
|
"vnd": {
|
@@ -9,9 +9,9 @@ class Money
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def lookup(key, currency)
|
12
|
-
|
13
|
-
warn '[DEPRECATION] `use_i18n` is deprecated - use `Money.locale_backend = :i18n` instead'
|
12
|
+
warn '[DEPRECATION] You are using the default localization behaviour that will change in the next major release. Find out more - https://github.com/RubyMoney/money#deprecation'
|
14
13
|
|
14
|
+
if Money.use_i18n
|
15
15
|
i18n_backend.lookup(key, nil) || currency.public_send(key)
|
16
16
|
else
|
17
17
|
currency.public_send(key)
|
data/lib/money/money.rb
CHANGED
@@ -149,7 +149,9 @@ class Money
|
|
149
149
|
|
150
150
|
def self.use_i18n=(value)
|
151
151
|
if value
|
152
|
-
warn '[DEPRECATION] `use_i18n` is deprecated - use `Money.locale_backend = :i18n` instead'
|
152
|
+
warn '[DEPRECATION] `use_i18n` is deprecated - use `Money.locale_backend = :i18n` instead for locale based formatting'
|
153
|
+
else
|
154
|
+
warn '[DEPRECATION] `use_i18n` is deprecated - use `Money.locale_backend = :currency` instead for currency based formatting'
|
153
155
|
end
|
154
156
|
|
155
157
|
@use_i18n = value
|
@@ -204,6 +204,9 @@ class Money
|
|
204
204
|
# # CAD: "CAD$"
|
205
205
|
# Money.new(10000, "CAD").format(translate: true) #=> "CAD$100.00"
|
206
206
|
#
|
207
|
+
# @option rules [Boolean] :drop_trailing_zeros (false) Ignore trailing zeros after
|
208
|
+
# the decimal mark
|
209
|
+
#
|
207
210
|
# @example
|
208
211
|
# Money.new(89000, :btc).format(drop_trailing_zeros: true) #=> B⃦0.00089
|
209
212
|
# Money.new(110, :usd).format(drop_trailing_zeros: true) #=> $1.1
|
@@ -38,14 +38,21 @@ class Money
|
|
38
38
|
rules = {}
|
39
39
|
elsif rules.size == 1
|
40
40
|
rules = rules.pop
|
41
|
-
|
41
|
+
|
42
|
+
if rules.is_a?(Symbol)
|
43
|
+
warn '[DEPRECATION] Use Hash when passing rules to Money#format.'
|
44
|
+
rules = { rules => true }
|
45
|
+
end
|
42
46
|
end
|
47
|
+
|
43
48
|
if !rules.include?(:decimal_mark) && rules.include?(:separator)
|
44
49
|
rules[:decimal_mark] = rules[:separator]
|
45
50
|
end
|
51
|
+
|
46
52
|
if !rules.include?(:thousands_separator) && rules.include?(:delimiter)
|
47
53
|
rules[:thousands_separator] = rules[:delimiter]
|
48
54
|
end
|
55
|
+
|
49
56
|
rules
|
50
57
|
end
|
51
58
|
|
@@ -3,12 +3,14 @@
|
|
3
3
|
require 'money/locale_backend/errors'
|
4
4
|
require 'money/locale_backend/legacy'
|
5
5
|
require 'money/locale_backend/i18n'
|
6
|
+
require 'money/locale_backend/currency'
|
6
7
|
|
7
8
|
class Money
|
8
9
|
module LocaleBackend
|
9
10
|
BACKENDS = {
|
10
11
|
legacy: Money::LocaleBackend::Legacy,
|
11
|
-
i18n: Money::LocaleBackend::I18n
|
12
|
+
i18n: Money::LocaleBackend::I18n,
|
13
|
+
currency: Money::LocaleBackend::Currency
|
12
14
|
}.freeze
|
13
15
|
|
14
16
|
def self.find(name)
|
data/lib/money/version.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
describe Money::LocaleBackend::Currency do
|
4
|
+
describe '#lookup' do
|
5
|
+
let(:currency) { Money::Currency.new('EUR') }
|
6
|
+
|
7
|
+
it 'returns thousands_separator as defined in currency' do
|
8
|
+
expect(subject.lookup(:thousands_separator, currency)).to eq('.')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns decimal_mark based as defined in currency' do
|
12
|
+
expect(subject.lookup(:decimal_mark, currency)).to eq(',')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -136,6 +136,10 @@ describe Money, "formatting" do
|
|
136
136
|
end
|
137
137
|
|
138
138
|
describe "#format" do
|
139
|
+
it 'supports the old formatting options' do
|
140
|
+
expect(Money.zero.format(:display_free)).to eq('free')
|
141
|
+
end
|
142
|
+
|
139
143
|
context "Locale :ja" do
|
140
144
|
before { @_locale = I18n.locale; I18n.locale = :ja }
|
141
145
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: money
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.13.
|
4
|
+
version: 6.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shane Emmons
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|
@@ -129,6 +129,7 @@ files:
|
|
129
129
|
- lib/money/currency/heuristics.rb
|
130
130
|
- lib/money/currency/loader.rb
|
131
131
|
- lib/money/locale_backend/base.rb
|
132
|
+
- lib/money/locale_backend/currency.rb
|
132
133
|
- lib/money/locale_backend/errors.rb
|
133
134
|
- lib/money/locale_backend/i18n.rb
|
134
135
|
- lib/money/locale_backend/legacy.rb
|
@@ -148,6 +149,7 @@ files:
|
|
148
149
|
- spec/currency/heuristics_spec.rb
|
149
150
|
- spec/currency/loader_spec.rb
|
150
151
|
- spec/currency_spec.rb
|
152
|
+
- spec/locale_backend/currency_spec.rb
|
151
153
|
- spec/locale_backend/i18n_spec.rb
|
152
154
|
- spec/locale_backend/legacy_spec.rb
|
153
155
|
- spec/money/allocation_spec.rb
|
@@ -193,6 +195,7 @@ test_files:
|
|
193
195
|
- spec/currency/heuristics_spec.rb
|
194
196
|
- spec/currency/loader_spec.rb
|
195
197
|
- spec/currency_spec.rb
|
198
|
+
- spec/locale_backend/currency_spec.rb
|
196
199
|
- spec/locale_backend/i18n_spec.rb
|
197
200
|
- spec/locale_backend/legacy_spec.rb
|
198
201
|
- spec/money/allocation_spec.rb
|