money_helper 1.0.0 → 1.0.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 +5 -13
- data/lib/money_helper.rb +21 -7
- data/spec/money_helper_spec.rb +32 -0
- metadata +12 -9
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MGFjMWQ5MTRlMzVkYWRjMTA0ZGI1NDQxNjk3NzUzNDRjZWEzM2ZmOA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0ec1d057d296f1729ab55b1becee98afad5c50b7
|
4
|
+
data.tar.gz: 786a1ae33bf67e9d1215be82a7856c0138d5c292
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
YzgxYWRlN2YyMGYyODJkNDI4NmI4ZjliZmM4MTM0ZTMzYTc1MWRjOWFlOTE4
|
11
|
-
YmJiY2NiMmU4YzFhM2JlNjM0M2EyYzE2ZGI3MmIzY2YwOGQ3MDA=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZTVkOWYyZDMzOWM1NmY5NDc1MTRlYmFkNDIwNjk3N2VkNDUwNDI5YWZkZGVi
|
14
|
-
NTAzM2ZhYmQzZWJmNDA3YTllYTg5ZTg1MDcwYjQ0ZmY2MjJlMmI2MGEyMTFj
|
15
|
-
M2NlMjllZDczMDgxZWE2NDhiMzMwYTc0MGZmMzYxMzlhYTUzMDU=
|
6
|
+
metadata.gz: a3ee33d19f4019bfae4b788fb62ca1ccf11d7264c6794b2f5acd5a39cb3ed3ceb967d9897d94c3e6d85ccd99a0e9416d298f688052ad2a6e1ab12affd356ac2f
|
7
|
+
data.tar.gz: 038e37ac696e39834b2a88cd00bdc43fd0771aed279a9dde5d499a5e719e6e46a1a9e3ffbe7d3effe907175163f72c93b713fd656680c634810b1a2f01cfbe9c
|
data/lib/money_helper.rb
CHANGED
@@ -25,19 +25,27 @@ module MoneyHelper
|
|
25
25
|
# currency: (String)
|
26
26
|
# number_only: (Boolean) optional flag to exclude currency indicators (retains number formatting
|
27
27
|
# specific to currency)
|
28
|
-
def self.money_to_text(amount, currency, number_only = false)
|
28
|
+
def self.money_to_text(amount, currency, number_only = false, options = {})
|
29
29
|
return nil unless amount.present?
|
30
30
|
currency = "USD" if currency.blank?
|
31
31
|
valid_currency = code_valid?(currency) ? currency : "USD"
|
32
32
|
symbol = symbol_for_code(currency)
|
33
33
|
include_symbol = !number_only && symbol.present? && OK_SYMBOLS.include?(symbol)
|
34
34
|
subunit_factor = Money::Currency.new(valid_currency).subunit_to_unit
|
35
|
+
money_options = { no_cents: true, symbol_position: :before, symbol: include_symbol }.merge(options)
|
35
36
|
(number_only || SYMBOL_ONLY.include?(currency) ? "" : currency + " ") +
|
36
|
-
Money.new(amount*subunit_factor.ceil, valid_currency).format(
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
Money.new(amount*subunit_factor.ceil, valid_currency).format(money_options).delete(' ')
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.symbol_with_optional_iso_code(currency = 'USD')
|
41
|
+
symbol = symbol_for_code(currency)
|
42
|
+
if SYMBOL_ONLY.include?(currency)
|
43
|
+
symbol
|
44
|
+
elsif symbol && OK_SYMBOLS.include?(symbol)
|
45
|
+
"#{iso_for_currency(currency)} #{symbol}"
|
46
|
+
else
|
47
|
+
"#{iso_for_currency(currency)}"
|
48
|
+
end
|
41
49
|
end
|
42
50
|
|
43
51
|
##
|
@@ -76,11 +84,17 @@ module MoneyHelper
|
|
76
84
|
Money::Currency.stringified_keys.include?(code.downcase)
|
77
85
|
end
|
78
86
|
|
87
|
+
def self.iso_for_currency(code)
|
88
|
+
return unless code && code_valid?(code)
|
89
|
+
Money::Currency.new(code).iso_code.tap do |iso_code|
|
90
|
+
iso_code.strip! if iso_code.present?
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
79
94
|
def self.symbol_for_code(code)
|
80
95
|
return unless code && code_valid?(code)
|
81
96
|
Money::Currency.new(code).symbol.tap do |symbol|
|
82
97
|
symbol.strip! if symbol.present?
|
83
98
|
end
|
84
99
|
end
|
85
|
-
|
86
100
|
end
|
data/spec/money_helper_spec.rb
CHANGED
@@ -145,6 +145,23 @@ describe MoneyHelper do
|
|
145
145
|
expect(MoneyHelper.money_to_text(10_000, "ITL")).to eql("ITL 10,000")
|
146
146
|
expect(MoneyHelper.money_to_text(10_000, "ITL", true)).to eql("10,000")
|
147
147
|
end
|
148
|
+
it 'allows options to be passed through and cents displayed' do
|
149
|
+
expect(MoneyHelper.money_to_text(10_000.1, 'USD', nil, no_cents: false)).to eq '$10,000.10'
|
150
|
+
expect(MoneyHelper.money_to_text(10_000.1, 'USD')).to eq '$10,000'
|
151
|
+
end
|
152
|
+
end
|
153
|
+
describe 'symbol_with_optional_iso_code' do
|
154
|
+
it 'just includes the symbol for USD GBP EUR and MYR' do
|
155
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("EUR")).to eql("€")
|
156
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("GBP")).to eql("£")
|
157
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("MYR")).to eql("RM")
|
158
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("USD")).to eql("$")
|
159
|
+
end
|
160
|
+
it 'includes the iso code as well for other currencies' do
|
161
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("AUD")).to eql("AUD $")
|
162
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("UZS")).to eql("UZS")
|
163
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("JPY")).to eql("JPY ¥")
|
164
|
+
end
|
148
165
|
end
|
149
166
|
describe "money_range_to_text" do
|
150
167
|
it "includes no indicator for currency for the upper amount in range" do
|
@@ -175,4 +192,19 @@ describe MoneyHelper do
|
|
175
192
|
expect(MoneyHelper.money_range_to_text(10_000, 20_000, "ITL")).to eql("ITL 10,000 - 20,000")
|
176
193
|
end
|
177
194
|
end
|
195
|
+
describe "symbol_with_optional_iso_code" do
|
196
|
+
it "returns the symbol only if currency is in SYMBOL_ONLY list" do
|
197
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("EUR")).to eql("€")
|
198
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("USD")).to eql("$")
|
199
|
+
end
|
200
|
+
it "returns iso code and symbol if symbol is in OK_SYMBOLS" do
|
201
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("INR")).to eql("INR ₹")
|
202
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("KHR")).to eql("KHR ៛")
|
203
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("KPW")).to eql("KPW ₩")
|
204
|
+
end
|
205
|
+
it "returns only the iso code if symbol is not in OK_SYMBOLS" do
|
206
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("CHF")).to eql("CHF")
|
207
|
+
expect(MoneyHelper.symbol_with_optional_iso_code("YER")).to eql("YER")
|
208
|
+
end
|
209
|
+
end
|
178
210
|
end
|
metadata
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: money_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sahil Yakhmi
|
8
8
|
- Joey Aghion
|
9
|
+
- Matt Zikherman
|
10
|
+
- Sarah Weir
|
9
11
|
autorequire:
|
10
12
|
bindir: bin
|
11
13
|
cert_chain: []
|
@@ -29,16 +31,16 @@ dependencies:
|
|
29
31
|
name: activesupport
|
30
32
|
requirement: !ruby/object:Gem::Requirement
|
31
33
|
requirements:
|
32
|
-
- -
|
34
|
+
- - '>='
|
33
35
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
36
|
+
version: '0'
|
35
37
|
type: :runtime
|
36
38
|
prerelease: false
|
37
39
|
version_requirements: !ruby/object:Gem::Requirement
|
38
40
|
requirements:
|
39
|
-
- -
|
41
|
+
- - '>='
|
40
42
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
43
|
+
version: '0'
|
42
44
|
- !ruby/object:Gem::Dependency
|
43
45
|
name: rspec
|
44
46
|
requirement: !ruby/object:Gem::Requirement
|
@@ -55,14 +57,14 @@ dependencies:
|
|
55
57
|
version: '3'
|
56
58
|
description: A simple module to assist in formatting unambiguous prices and price
|
57
59
|
ranges in international currencies in a Roman Script context.
|
58
|
-
email:
|
60
|
+
email: matt@artsymail.net
|
59
61
|
executables: []
|
60
62
|
extensions: []
|
61
63
|
extra_rdoc_files: []
|
62
64
|
files:
|
63
65
|
- lib/money_helper.rb
|
64
66
|
- spec/money_helper_spec.rb
|
65
|
-
homepage: https://github.com/
|
67
|
+
homepage: https://github.com/artsy/money_helper
|
66
68
|
licenses:
|
67
69
|
- MIT
|
68
70
|
metadata: {}
|
@@ -72,12 +74,12 @@ require_paths:
|
|
72
74
|
- lib
|
73
75
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
76
|
requirements:
|
75
|
-
- -
|
77
|
+
- - '>='
|
76
78
|
- !ruby/object:Gem::Version
|
77
79
|
version: '0'
|
78
80
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
81
|
requirements:
|
80
|
-
- -
|
82
|
+
- - '>='
|
81
83
|
- !ruby/object:Gem::Version
|
82
84
|
version: '0'
|
83
85
|
requirements: []
|
@@ -88,3 +90,4 @@ specification_version: 4
|
|
88
90
|
summary: MoneyHelper international price formatting utility
|
89
91
|
test_files:
|
90
92
|
- spec/money_helper_spec.rb
|
93
|
+
has_rdoc:
|