money 2.1.4 → 2.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -73,7 +73,17 @@ class Money
73
73
  # Money.ca_dollar and Money.us_dollar
74
74
  def initialize(cents, currency = Money.default_currency, bank = Money.default_bank)
75
75
  @cents = cents.round
76
- @currency = currency
76
+ if currency.is_a?(Hash)
77
+ # Earlier versions of Money wrongly documented the constructor as being able
78
+ # to accept something like this:
79
+ #
80
+ # Money.new(50, :currency => "USD")
81
+ #
82
+ # We retain compatibility here.
83
+ @currency = currency[:currency] || Money.default_currency
84
+ else
85
+ @currency = currency
86
+ end
77
87
  @bank = bank
78
88
  end
79
89
 
@@ -94,7 +104,7 @@ class Money
94
104
  if currency == other_money.currency
95
105
  Money.new(cents + other_money.cents, other_money.currency)
96
106
  else
97
- Money.new(cents + other_money.exchange_to(currency).cents,currency)
107
+ Money.new(cents + other_money.exchange_to(currency).cents, currency)
98
108
  end
99
109
  end
100
110
 
@@ -163,31 +173,31 @@ class Money
163
173
  # Whether a money symbol should be prepended to the result string. The default is true.
164
174
  # This method attempts to pick a symbol that's suitable for the given currency.
165
175
  #
166
- # Money.new(100, :currency => "USD") => "$1.00"
167
- # Money.new(100, :currency => "GBP") => "£1.00"
168
- # Money.new(100, :currency => "EUR") => "€1.00"
176
+ # Money.new(100, "USD") => "$1.00"
177
+ # Money.new(100, "GBP") => "£1.00"
178
+ # Money.new(100, "EUR") => "€1.00"
169
179
  #
170
180
  # # Same thing.
171
- # Money.new(100, :currency => "USD").format(:symbol => true) => "$1.00"
172
- # Money.new(100, :currency => "GBP").format(:symbol => true) => "£1.00"
173
- # Money.new(100, :currency => "EUR").format(:symbol => true) => "€1.00"
181
+ # Money.new(100, "USD").format(:symbol => true) => "$1.00"
182
+ # Money.new(100, "GBP").format(:symbol => true) => "£1.00"
183
+ # Money.new(100, "EUR").format(:symbol => true) => "€1.00"
174
184
  #
175
185
  # You can specify a false expression or an empty string to disable prepending
176
186
  # a money symbol:
177
187
  #
178
- # Money.new(100, :currency => "USD").format(:symbol => false) => "1.00"
179
- # Money.new(100, :currency => "GBP").format(:symbol => nil) => "1.00"
180
- # Money.new(100, :currency => "EUR").format(:symbol => "") => "1.00"
188
+ # Money.new(100, "USD").format(:symbol => false) => "1.00"
189
+ # Money.new(100, "GBP").format(:symbol => nil) => "1.00"
190
+ # Money.new(100, "EUR").format(:symbol => "") => "1.00"
181
191
  #
182
192
  #
183
193
  # If the symbol for the given currency isn't known, then it will default
184
194
  # to "$" as symbol:
185
195
  #
186
- # Money.new(100, :currency => "AWG").format(:symbol => true) => "$1.00"
196
+ # Money.new(100, "AWG").format(:symbol => true) => "$1.00"
187
197
  #
188
198
  # You can specify a string as value to enforce using a particular symbol:
189
199
  #
190
- # Money.new(100, :currency => "AWG").format(:symbol => "ƒ") => "ƒ1.00"
200
+ # Money.new(100, "AWG").format(:symbol => "ƒ") => "ƒ1.00"
191
201
  #
192
202
  # === +:html+
193
203
  #
@@ -209,14 +219,14 @@ class Money
209
219
 
210
220
  if rules.has_key?(:symbol)
211
221
  if rules[:symbol] === true
212
- symbol = SYMBOLS[currency[:currency]] || "$"
222
+ symbol = SYMBOLS[currency] || "$"
213
223
  elsif rules[:symbol]
214
224
  symbol = rules[:symbol]
215
225
  else
216
226
  symbol = ""
217
227
  end
218
228
  else
219
- symbol = "$"
229
+ symbol = SYMBOLS[currency] || "$"
220
230
  end
221
231
 
222
232
  if rules[:no_cents]
@@ -12,7 +12,8 @@ Money::SYMBOLS = {
12
12
  "SCR" => "₨",
13
13
  "LKR" => "₨",
14
14
  "SEK" => "kr",
15
- "GHC" => "¢"
15
+ "GHC" => "¢",
16
+ "BRL" => "R$"
16
17
 
17
18
  # Everything else defaults to $
18
19
  }
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "money"
3
- s.version = "2.1.4"
3
+ s.version = "2.1.5"
4
4
  s.summary = "Money and currency exchange support library"
5
5
  s.email = "hongli@phusion.nl"
6
6
  s.homepage = "http://money.rubyforge.org/"
@@ -73,6 +73,14 @@ describe Money do
73
73
  Money.euro(50).should == Money.new(50, "EUR")
74
74
  end
75
75
 
76
+ specify "Money.new accepts { :currency => 'foo' } as the value for the 'currency' argument" do
77
+ money = Money.new(20, :currency => "EUR")
78
+ money.currency.should == "EUR"
79
+
80
+ money = Money.new(20, :currency => nil)
81
+ money.currency.should == Money.default_currency
82
+ end
83
+
76
84
  specify "Money.add_rate works" do
77
85
  Money.add_rate("EUR", "USD", 10)
78
86
  Money.new(10_00, "EUR").exchange_to("USD").should == Money.new(100_00, "USD")
@@ -129,11 +137,13 @@ describe Money do
129
137
  end
130
138
 
131
139
  specify "#format(:symbol => a symbol string) uses the given value as the money symbol" do
132
- Money.new(100, :currency => "GBP").format(:symbol => "£").should == "£1.00"
140
+ Money.new(100, "GBP").format(:symbol => "£").should == "£1.00"
133
141
  end
134
142
 
135
143
  specify "#format(:symbol => true) returns symbol based on the given currency code" do
136
- one = Proc.new {|currency| Money.new(100, :currency => currency).format(:symbol => true) }
144
+ one = Proc.new do |currency|
145
+ Money.new(100, currency).format(:symbol => true)
146
+ end
137
147
 
138
148
  # Pounds
139
149
  one["GBP"].should == "£1.00"
@@ -158,28 +168,42 @@ describe Money do
158
168
  one["SCR"].should == "₨1.00"
159
169
  one["LKR"].should == "₨1.00"
160
170
 
171
+ # Brazilian Real
172
+ one["BRL"].should == "R$1.00"
173
+
161
174
  # Other
162
175
  one["SEK"].should == "kr1.00"
163
176
  one["GHC"].should == "¢1.00"
164
177
  end
165
178
 
166
179
  specify "#format(:symbol => true) returns $ when currency code is not recognized" do
167
- Money.new(100, :currency => "XYZ").format(:symbol => true).should == "$1.00"
180
+ Money.new(100, "XYZ").format(:symbol => true).should == "$1.00"
168
181
  end
169
182
 
170
183
  specify "#format(:symbol => some non-Boolean value that evaluates to true) returs symbol based on the given currency code" do
171
- Money.new(100, :currency => "GBP").format(:symbol => true).should == "£1.00"
172
- Money.new(100, :currency => "EUR").format(:symbol => true).should == "€1.00"
173
- Money.new(100, :currency => "SEK").format(:symbol => true).should == "kr1.00"
184
+ Money.new(100, "GBP").format(:symbol => true).should == "£1.00"
185
+ Money.new(100, "EUR").format(:symbol => true).should == "€1.00"
186
+ Money.new(100, "SEK").format(:symbol => true).should == "kr1.00"
174
187
  end
175
188
 
176
189
  specify "#format with :symbol == "", nil or false returns the amount without a symbol" do
177
- money = Money.new(100, :currency => "GBP")
190
+ money = Money.new(100, "GBP")
178
191
  money.format(:symbol => "").should == "1.00"
179
192
  money.format(:symbol => nil).should == "1.00"
180
193
  money.format(:symbol => false).should == "1.00"
181
194
  end
182
195
 
196
+ specify "#format without :symbol assumes that :symbol is set to true" do
197
+ money = Money.new(100)
198
+ money.format.should == "$1.00"
199
+
200
+ money = Money.new(100, "GBP")
201
+ money.format.should == "£1.00"
202
+
203
+ money = Money.new(100, "XYZ")
204
+ money.format.should == "$1.00"
205
+ end
206
+
183
207
  specify "#format(:html => true) works as documented" do
184
208
  string = Money.ca_dollar(570).format(:html => true, :with_currency => true)
185
209
  string.should == "$5.70 <span class=\"currency\">CAD</span>"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: money
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.4
4
+ version: 2.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Luetke
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2009-08-02 00:00:00 +02:00
14
+ date: 2009-11-05 00:00:00 +01:00
15
15
  default_executable:
16
16
  dependencies: []
17
17
 
@@ -39,6 +39,8 @@ files:
39
39
  - test/money_spec.rb
40
40
  has_rdoc: true
41
41
  homepage: http://money.rubyforge.org/
42
+ licenses: []
43
+
42
44
  post_install_message:
43
45
  rdoc_options: []
44
46
 
@@ -59,9 +61,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
61
  requirements: []
60
62
 
61
63
  rubyforge_project: money
62
- rubygems_version: 1.3.1
64
+ rubygems_version: 1.3.5
63
65
  signing_key:
64
- specification_version: 2
66
+ specification_version: 3
65
67
  summary: Money and currency exchange support library
66
68
  test_files: []
67
69