money 6.1.0.beta1 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 11002632b6f2ab53b4691fbcf1824b65ee95f7da
4
- data.tar.gz: 9d93fd3a69e74b5c4285f365c7587dc7b6072281
3
+ metadata.gz: 5160af002d878da8e074fe1408852b40dcede5a5
4
+ data.tar.gz: 1a991c73c08d6667d8225e0fda638d651e1de914
5
5
  SHA512:
6
- metadata.gz: f4cb9248d5cb8bdb5342b76f1e49766ee614e74ef432023567ae1839b7aa587a9194520938c4b7d1ed091262da8a11d038b47a673c62649cde63097633c2a00d
7
- data.tar.gz: 2640b8e18f2ce3ac3a6eee8923c5b57b083609345dfa10bf2ae76ce4124348109c077f1c2284385c37d57f13b9408735a6c4e789ad4ccc01a090c4003ac5ffe4
6
+ metadata.gz: 374f0da1e1a52400556add531216a0e840a811e398ea4e53a20916e6a2466265b34f0326083c3cf70e683be4b3484fdf80a446eda80f5b9e3633cdacc494932a
7
+ data.tar.gz: 795336612e1a73c7338b4bb042e44bac2cddfe7f3030223caf661f9f369e967de6fdb8a9ff30a4b8058599aa5820e424794ec6a9c7f4acff26bf6c70d69d1744
data/AUTHORS CHANGED
@@ -43,6 +43,7 @@ Jérémy Lecour
43
43
  Jesse Cooke
44
44
  John Duff
45
45
  John Gakos
46
+ Jonathon M. Abbott
46
47
  Josh Delsman
47
48
  Joshua Clayton
48
49
  Josh Hepworth
@@ -2,6 +2,7 @@
2
2
 
3
3
  ## 6.1.0
4
4
  - Remove deprecated methods.
5
+ - Fix issue with block form of rounding_mode.
5
6
 
6
7
  ## 6.0.1
7
8
  - Deprecated methods lists caller on print out for easier updating.
data/README.md CHANGED
@@ -4,6 +4,7 @@
4
4
  [![Build Status](https://travis-ci.org/RubyMoney/money.png?branch=master)](https://travis-ci.org/RubyMoney/money)
5
5
  [![Code Climate](https://codeclimate.com/github/RubyMoney/money.png)](https://codeclimate.com/github/RubyMoney/money)
6
6
  [![Coverage Status](https://coveralls.io/repos/RubyMoney/money/badge.png?branch=master)](https://coveralls.io/r/RubyMoney/money?branch=master)
7
+ [![Inline docs](http://inch-pages.github.io/github/RubyMoney/money.png)](http://inch-pages.github.io/github/RubyMoney/money)
7
8
  [![Dependency Status](https://gemnasium.com/RubyMoney/money.png)](https://gemnasium.com/RubyMoney/money)
8
9
  [![License](http://img.shields.io/license/MIT.png?color=green)](http://opensource.org/licenses/MIT)
9
10
 
@@ -269,7 +269,7 @@
269
269
  "priority": 100,
270
270
  "iso_code": "BRL",
271
271
  "name": "Brazilian Real",
272
- "symbol": "R$ ",
272
+ "symbol": "R$",
273
273
  "subunit": "Centavo",
274
274
  "subunit_to_unit": 100,
275
275
  "symbol_first": true,
@@ -413,7 +413,7 @@
413
413
  "subunit": "Peso",
414
414
  "subunit_to_unit": 1,
415
415
  "symbol_first": true,
416
- "html_entity": "₱",
416
+ "html_entity": "$",
417
417
  "decimal_mark": ",",
418
418
  "thousands_separator": ".",
419
419
  "iso_numeric": "152"
@@ -1820,7 +1820,7 @@
1820
1820
  },
1821
1821
  "ssp": {
1822
1822
  "priority": 100,
1823
- "iso_code": "SHP",
1823
+ "iso_code": "SSP",
1824
1824
  "name": "South Sudanese Pound",
1825
1825
  "symbol": "£",
1826
1826
  "alternate_symbols": [],
@@ -17,7 +17,7 @@ class Money
17
17
  # Raises a DifferentCurrencyError to remove possibility of accidentally
18
18
  # exchanging currencies
19
19
  def exchange_with(from, to_currency, &block)
20
- raise DifferentCurrencyError, "No exchanging of currencies allowed: #{from} to #{to_currency}"
20
+ raise DifferentCurrencyError, "No exchanging of currencies allowed: #{from} #{from.currency} to #{to_currency}"
21
21
  end
22
22
  end
23
23
  end
@@ -97,6 +97,22 @@ class Money
97
97
  alias_method :zero, :empty
98
98
  end
99
99
 
100
+ # Set the ability to assume the currency from a passed symbol. (Wrapper for
101
+ # Monetize.assume_from_symbol.)
102
+ #
103
+ # @param [true, false]
104
+ def self.assume_from_symbol=(value)
105
+ Monetize.assume_from_symbol = value
106
+ end
107
+
108
+ # Return the ability to assume the currency from a passed symbol. (Wrapper for
109
+ # Monetize.assume_from_symbol.)
110
+ #
111
+ # @param [true, false]
112
+ def self.assume_from_symbol
113
+ Monetize.assume_from_symbol
114
+ end
115
+
100
116
  def self.default_currency
101
117
  if @default_currency.respond_to?(:call)
102
118
  Money::Currency.new(@default_currency.call)
@@ -147,11 +163,13 @@ class Money
147
163
  if mode.nil?
148
164
  Thread.current[:money_rounding_mode] || @rounding_mode
149
165
  else
150
- Thread.current[:money_rounding_mode] = mode
151
- yield
166
+ begin
167
+ Thread.current[:money_rounding_mode] = mode
168
+ yield
169
+ ensure
170
+ Thread.current[:money_rounding_mode] = nil
171
+ end
152
172
  end
153
- ensure
154
- Thread.current[:money_rounding_mode] = nil
155
173
  end
156
174
 
157
175
  # Creates a new Money object of the given value, using the Canadian
@@ -389,14 +407,25 @@ class Money
389
407
  #
390
408
  # @param [Currency, String, Symbol] other_currency Currency to exchange to.
391
409
  #
410
+ # @yield [n] Optional block to use when rounding after exchanging one currency
411
+ # for another.
412
+ # @yieldparam [Float] n The resulting float after exchanging one currency for
413
+ # another.
414
+ # @yieldreturn [Integer]
415
+ #
392
416
  # @return [Money]
393
417
  #
394
418
  # @example
395
419
  # Money.new(2000, "USD").exchange_to("EUR")
420
+ # Money.new(2000, "USD").exchange_to("EUR") {|x| x.round}
396
421
  # Money.new(2000, "USD").exchange_to(Currency.new("EUR"))
397
- def exchange_to(other_currency)
422
+ def exchange_to(other_currency, &rounding_method)
398
423
  other_currency = Currency.wrap(other_currency)
399
- @bank.exchange_with(self, other_currency)
424
+ if self.currency == other_currency
425
+ self
426
+ else
427
+ @bank.exchange_with(self, other_currency, &rounding_method)
428
+ end
400
429
  end
401
430
 
402
431
  # Receive a money object with the same amount as the current Money object
@@ -241,8 +241,10 @@ class Money
241
241
  "#{sign_before}#{symbol_value}#{symbol_space}#{sign}#{formatted}"
242
242
  else
243
243
  symbol_space = rules[:symbol_after_without_space] ? "" : " "
244
- "#{sign_before}#{formatted}#{symbol_space}#{sign}#{symbol_value}"
244
+ "#{sign_before}#{sign}#{formatted}#{symbol_space}#{symbol_value}"
245
245
  end
246
+ else
247
+ formatted="#{sign_before}#{sign}#{formatted}"
246
248
  end
247
249
 
248
250
  if rules.has_key?(:decimal_mark) && rules[:decimal_mark] &&
@@ -1,3 +1,3 @@
1
1
  class Money
2
- VERSION = "6.1.0.beta1"
2
+ VERSION = "6.1.0"
3
3
  end
@@ -5,7 +5,7 @@ describe Money::Bank::SingleCurrency do
5
5
  it "raises when called" do
6
6
  expect {
7
7
  subject.exchange_with(Money.new(100, 'USD'), 'EUR')
8
- }.to raise_exception(Money::Bank::DifferentCurrencyError, "No exchanging of currencies allowed: 1.00 to EUR")
8
+ }.to raise_exception(Money::Bank::DifferentCurrencyError, "No exchanging of currencies allowed: 1.00 USD to EUR")
9
9
  end
10
10
  end
11
11
  end
@@ -132,7 +132,7 @@ describe Money, "formatting" do
132
132
  one_thousand["LKR"].should == "1,000.00 ₨"
133
133
 
134
134
  # Brazilian Real
135
- one_thousand["BRL"].should == "R$ 1.000,00"
135
+ one_thousand["BRL"].should == "R$1.000,00"
136
136
 
137
137
  # Other
138
138
  one_thousand["SEK"].should == "1 000,00 kr"
@@ -243,7 +243,7 @@ describe Money, "formatting" do
243
243
  one["LKR"].should == "1.00 ₨"
244
244
 
245
245
  # Brazilian Real
246
- one["BRL"].should == "R$ 1,00"
246
+ one["BRL"].should == "R$1,00"
247
247
 
248
248
  # Other
249
249
  one["SEK"].should == "1,00 kr"
@@ -282,6 +282,15 @@ describe Money, "formatting" do
282
282
  money = Money.new(100, "EUR")
283
283
  money.format.should == "€1,00"
284
284
  end
285
+
286
+ specify "(:symbol => false) returns a signed amount without a symbol" do
287
+ money = Money.new(-100, "EUR")
288
+ money.format(:symbol => false).should == "-1,00"
289
+
290
+ money = Money.new(100, "EUR")
291
+ money.format(:symbol => false,
292
+ :sign_positive => true).should == "+1,00"
293
+ end
285
294
  end
286
295
 
287
296
  describe ":decimal_mark option" do
@@ -235,6 +235,18 @@ YAML
235
235
 
236
236
  Money.rounding_mode.should == BigDecimal::ROUND_HALF_EVEN
237
237
  end
238
+
239
+ it "works for multiplication within a block" do
240
+ Money.rounding_mode(BigDecimal::ROUND_DOWN) do
241
+ (Money.new(1_00) * "0.019".to_d).fractional.should == 1
242
+ end
243
+
244
+ Money.rounding_mode(BigDecimal::ROUND_UP) do
245
+ (Money.new(1_00) * "0.011".to_d).fractional.should == 2
246
+ end
247
+
248
+ Money.rounding_mode.should == BigDecimal::ROUND_HALF_EVEN
249
+ end
238
250
  end
239
251
  end
240
252
 
@@ -444,6 +456,18 @@ YAML
444
456
  money.bank.should_receive(:exchange_with).with(Money.new(100_00, Money::Currency.new("USD")), Money::Currency.new("EUR")).and_return(Money.new(200_00, Money::Currency.new('EUR')))
445
457
  money.exchange_to("EUR").should == Money.new(200_00, "EUR")
446
458
  end
459
+
460
+ it 'uses the block given as rounding method' do
461
+ money = Money.new(100_00, 'USD')
462
+ money.bank.should_receive(:exchange_with).and_yield(300_00)
463
+ expect { |block| money.exchange_to(Money::Currency.new('EUR'), &block) }.to yield_successive_args(300_00)
464
+ end
465
+
466
+ it "does no exchange when the currencies are the same" do
467
+ money = Money.new(100_00, "USD")
468
+ money.bank.should_not_receive(:exchange_with)
469
+ money.exchange_to("USD").should == money
470
+ end
447
471
  end
448
472
 
449
473
  describe "#allocate" do
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.1.0.beta1
4
+ version: 6.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Emmons
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-21 00:00:00.000000000 Z
11
+ date: 2014-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -158,12 +158,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
158
158
  version: '0'
159
159
  required_rubygems_version: !ruby/object:Gem::Requirement
160
160
  requirements:
161
- - - ">"
161
+ - - ">="
162
162
  - !ruby/object:Gem::Version
163
- version: 1.3.1
163
+ version: '0'
164
164
  requirements: []
165
165
  rubyforge_project:
166
- rubygems_version: 2.2.0
166
+ rubygems_version: 2.2.2
167
167
  signing_key:
168
168
  specification_version: 4
169
169
  summary: A Ruby Library for dealing with money and currency conversion.