money 3.0.0 → 3.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.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,8 @@
1
+ == Money 3.0.1
2
+ * Added #eql? method
3
+ * Updated Numeric#to_money to work with all children of Numeric
4
+ (BigDecimal, Integer, Fixnum, etc)
5
+
1
6
  == Money 3.0.0
2
7
  * Version Bump due to compatibility changes with ActiveRecord. See
3
8
  http://github.com/FooBarWidget/money/issues#issue/4/comment/224880 for more
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.0.0
1
+ 3.0.1
@@ -4,8 +4,10 @@ class Numeric
4
4
  #
5
5
  # 100.to_money => #<Money @cents=10000>
6
6
  # 100.37.to_money => #<Money @cents=10037>
7
+ # require 'bigdecimal'
8
+ # BigDecimal.new('100').to_money => #<Money @cents=10000>
7
9
  def to_money
8
- Money.new(self * 100)
10
+ Money.new((self * 100).to_int)
9
11
  end
10
12
  end
11
13
 
data/lib/money/money.rb CHANGED
@@ -102,6 +102,11 @@ class Money
102
102
  end
103
103
  end
104
104
 
105
+ # synonymous with #==
106
+ def eql?(other_money)
107
+ self == other_money
108
+ end
109
+
105
110
  # Compares this money object against another object. +other_money+ must respond
106
111
  # to #to_money.
107
112
  #
data/money.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{money}
8
- s.version = "3.0.0"
8
+ s.version = "3.0.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tobias Luetke", "Hongli Lai", "Jeremy McNevin", "Shane Emmons"]
12
- s.date = %q{2010-05-07}
12
+ s.date = %q{2010-05-26}
13
13
  s.description = %q{Money and currency exchange support library.}
14
14
  s.email = %q{hongli@phusion.nl}
15
15
  s.extra_rdoc_files = [
@@ -42,7 +42,7 @@ Gem::Specification.new do |s|
42
42
  s.rdoc_options = ["--charset=UTF-8"]
43
43
  s.require_paths = ["lib"]
44
44
  s.rubyforge_project = %q{money}
45
- s.rubygems_version = %q{1.3.6}
45
+ s.rubygems_version = %q{1.3.7}
46
46
  s.summary = %q{Money and currency exchange support library}
47
47
  s.test_files = [
48
48
  "test/core_extensions_spec.rb",
@@ -55,7 +55,7 @@ Gem::Specification.new do |s|
55
55
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
56
56
  s.specification_version = 3
57
57
 
58
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
58
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
59
59
  s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
60
60
  s.add_development_dependency(%q<hanna>, [">= 0.1.12"])
61
61
  else
@@ -11,6 +11,11 @@ describe "Money core extensions" do
11
11
  money = 100.37.to_money
12
12
  money.cents.should == 100_37
13
13
  money.currency.should == Money.default_currency
14
+
15
+ require 'bigdecimal'
16
+ money = BigDecimal.new('1234').to_money
17
+ money.cents.should == 1234_00
18
+ money.currency.should == Money.default_currency
14
19
  end
15
20
 
16
21
  specify "String#to_money works" do
data/test/money_spec.rb CHANGED
@@ -102,6 +102,51 @@ describe Money do
102
102
  Money.new(1_00, "USD").should_not == nil
103
103
  end
104
104
 
105
+ specify "#eql? returns true if and only if their amount and currency are equal" do
106
+ Money.new(1_00, "USD").eql?(Money.new(1_00, "USD")).should be true
107
+ Money.new(1_00, "USD").eql?(Money.new(1_00, "EUR")).should be false
108
+ Money.new(1_00, "USD").eql?(Money.new(2_00, "USD")).should be false
109
+ Money.new(1_00, "USD").eql?(Money.new(99_00, "EUR")).should be false
110
+ end
111
+
112
+ specify "#eql? can be used to compare with a String money value" do
113
+ Money.new(1_00, "USD").eql?("1.00").should be true
114
+ Money.new(1_00, "USD").eql?("2.00").should be false
115
+ Money.new(1_00, "GBP").eql?("1.00").should be false
116
+ end
117
+
118
+ specify "#eql? can be used to compare with a Numeric money value" do
119
+ Money.new(1_00, "USD").eql?(1).should be true
120
+ Money.new(1_57, "USD").eql?(1.57).should be true
121
+ Money.new(1_00, "USD").eql?(2).should be false
122
+ Money.new(1_00, "GBP").eql?(1).should be false
123
+ end
124
+
125
+ specify "#eql? can be used to compare with an object that responds to #to_money" do
126
+ klass = Class.new do
127
+ def initialize(money)
128
+ @money = money
129
+ end
130
+
131
+ def to_money
132
+ @money
133
+ end
134
+ end
135
+
136
+ Money.new(1_00, "USD").eql?(klass.new(Money.new(1_00, "USD"))).should be true
137
+ Money.new(2_50, "USD").eql?(klass.new(Money.new(2_50, "USD"))).should be true
138
+ Money.new(2_50, "USD").eql?(klass.new(Money.new(3_00, "USD"))).should be false
139
+ Money.new(1_00, "GBP").eql?(klass.new(Money.new(1_00, "USD"))).should be false
140
+ end
141
+
142
+ specify "#eql? returns false if used to compare with an object that doesn't respond to #to_money" do
143
+ Money.new(1_00, "USD").eql?(Object.new).should be false
144
+ Money.new(1_00, "USD").eql?(Class).should be false
145
+ Money.new(1_00, "USD").eql?(Kernel).should be false
146
+ Money.new(1_00, "USD").eql?(/foo/).should be false
147
+ Money.new(1_00, "USD").eql?(nil).should be false
148
+ end
149
+
105
150
  specify "#<=> can be used to compare with a String money value" do
106
151
  (Money.new(1_00) <=> "1.00").should == 0
107
152
  (Money.new(1_00) <=> ".99").should > 0
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: money
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 5
4
5
  prerelease: false
5
6
  segments:
6
7
  - 3
7
8
  - 0
8
- - 0
9
- version: 3.0.0
9
+ - 1
10
+ version: 3.0.1
10
11
  platform: ruby
11
12
  authors:
12
13
  - Tobias Luetke
@@ -17,16 +18,18 @@ autorequire:
17
18
  bindir: bin
18
19
  cert_chain: []
19
20
 
20
- date: 2010-05-07 00:00:00 -04:00
21
+ date: 2010-05-26 00:00:00 -04:00
21
22
  default_executable:
22
23
  dependencies:
23
24
  - !ruby/object:Gem::Dependency
24
25
  name: rspec
25
26
  prerelease: false
26
27
  requirement: &id001 !ruby/object:Gem::Requirement
28
+ none: false
27
29
  requirements:
28
30
  - - ">="
29
31
  - !ruby/object:Gem::Version
32
+ hash: 13
30
33
  segments:
31
34
  - 1
32
35
  - 2
@@ -38,9 +41,11 @@ dependencies:
38
41
  name: hanna
39
42
  prerelease: false
40
43
  requirement: &id002 !ruby/object:Gem::Requirement
44
+ none: false
41
45
  requirements:
42
46
  - - ">="
43
47
  - !ruby/object:Gem::Version
48
+ hash: 3
44
49
  segments:
45
50
  - 0
46
51
  - 1
@@ -88,23 +93,27 @@ rdoc_options:
88
93
  require_paths:
89
94
  - lib
90
95
  required_ruby_version: !ruby/object:Gem::Requirement
96
+ none: false
91
97
  requirements:
92
98
  - - ">="
93
99
  - !ruby/object:Gem::Version
100
+ hash: 3
94
101
  segments:
95
102
  - 0
96
103
  version: "0"
97
104
  required_rubygems_version: !ruby/object:Gem::Requirement
105
+ none: false
98
106
  requirements:
99
107
  - - ">="
100
108
  - !ruby/object:Gem::Version
109
+ hash: 3
101
110
  segments:
102
111
  - 0
103
112
  version: "0"
104
113
  requirements: []
105
114
 
106
115
  rubyforge_project: money
107
- rubygems_version: 1.3.6
116
+ rubygems_version: 1.3.7
108
117
  signing_key:
109
118
  specification_version: 3
110
119
  summary: Money and currency exchange support library