eu_central_bank 0.1.0 → 0.1.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/README.rdoc +10 -3
- data/VERSION +1 -1
- data/eu_central_bank.gemspec +6 -6
- data/lib/eu_central_bank.rb +9 -4
- data/spec/eu_central_bank_spec.rb +11 -2
- metadata +20 -5
data/README.rdoc
CHANGED
@@ -28,8 +28,11 @@ With the gem, you do not need to manually add exchange rates. Calling update_rat
|
|
28
28
|
|
29
29
|
# exchange 100 CAD to USD
|
30
30
|
# API is the same as the money gem
|
31
|
-
eu_bank.exchange(100, "CAD", "USD") #
|
32
|
-
Money.us_dollar(100).exchange_to("CAD") # Money.
|
31
|
+
eu_bank.exchange(100, "CAD", "USD") # Money.new(80, "USD")
|
32
|
+
Money.us_dollar(100).exchange_to("CAD") # Money.new(124, "CAD")
|
33
|
+
|
34
|
+
# using the new exchange_with method
|
35
|
+
eu_bank.exchange_with(Money.new(100, "CAD"), "USD") # Money.new(80, "USD")
|
33
36
|
|
34
37
|
For performance reasons, you may prefer to read from a file instead. Furthermore, ECB publishes their rates daily. It makes sense to save the rates in a file to read from.
|
35
38
|
|
@@ -40,7 +43,11 @@ For performance reasons, you may prefer to read from a file instead. Furthermore
|
|
40
43
|
eu_bank.update_rates("/some/file/location/exchange_rates.xml")
|
41
44
|
|
42
45
|
# exchange 100 CAD to USD as usual
|
43
|
-
eu_bank.
|
46
|
+
eu_bank.exchange_with(Money.new(100, "CAD"), "USD") # Money.new(80, "USD")
|
47
|
+
|
48
|
+
== Deprecation
|
49
|
+
|
50
|
+
Note that the *exchange* method will be deprecated in Money version 3.2.0. eu_central_bank will follow suite and deprecate the method in version 0.2.0
|
44
51
|
|
45
52
|
== Note on Patches/Pull Requests
|
46
53
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/eu_central_bank.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{eu_central_bank}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Wong Liang Zan"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-07-17}
|
13
13
|
s.description = %q{This gem reads exchange rates from the european central bank website. It uses it to calculates exchange rates. It is compatible with the money gem}
|
14
14
|
s.email = %q{zan@liangzan.net}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -34,18 +34,18 @@ Gem::Specification.new do |s|
|
|
34
34
|
s.homepage = %q{http://github.com/liangzan/eu_central_bank}
|
35
35
|
s.rdoc_options = ["--charset=UTF-8"]
|
36
36
|
s.require_paths = ["lib"]
|
37
|
-
s.rubygems_version = %q{1.3.
|
37
|
+
s.rubygems_version = %q{1.3.7}
|
38
38
|
s.summary = %q{Calculates exchange rates based on rates from european central bank. Money gem compatible.}
|
39
39
|
s.test_files = [
|
40
|
-
"spec/
|
41
|
-
"spec/
|
40
|
+
"spec/spec_helper.rb",
|
41
|
+
"spec/eu_central_bank_spec.rb"
|
42
42
|
]
|
43
43
|
|
44
44
|
if s.respond_to? :specification_version then
|
45
45
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
46
46
|
s.specification_version = 3
|
47
47
|
|
48
|
-
if Gem::Version.new(Gem::
|
48
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
49
|
s.add_development_dependency(%q<rspec>, [">= 1.3.0"])
|
50
50
|
s.add_development_dependency(%q<rr>, [">= 0.10.11"])
|
51
51
|
s.add_development_dependency(%q<shoulda>, [">= 2.10.3"])
|
data/lib/eu_central_bank.rb
CHANGED
@@ -28,13 +28,18 @@ class EuCentralBank < Money::VariableExchangeBank
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def exchange(cents, from_currency, to_currency)
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
warn '[DEPRECIATION] `exchange` will be removed in money v3.2.0 and eu_central_bank v0.2.0, use #exchange_with instead'
|
32
|
+
exchange_with(Money.new(cents, from_currency), to_currency)
|
33
|
+
end
|
34
|
+
|
35
|
+
def exchange_with(from, to_currency)
|
36
|
+
rate = get_rate(from.currency, to_currency)
|
37
|
+
unless rate
|
38
|
+
from_base_rate = get_rate("EUR", from.currency)
|
34
39
|
to_base_rate = get_rate("EUR", to_currency)
|
35
40
|
rate = to_base_rate / from_base_rate
|
36
41
|
end
|
37
|
-
(cents * rate).floor
|
42
|
+
Money.new((from.cents * rate).floor, to_currency)
|
38
43
|
end
|
39
44
|
|
40
45
|
protected
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
require 'yaml'
|
2
3
|
|
3
4
|
describe "EuCentralBank" do
|
4
5
|
before(:each) do
|
@@ -38,11 +39,19 @@ describe "EuCentralBank" do
|
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
41
|
-
it "should return the correct exchange rates" do
|
42
|
+
it "should return the correct exchange rates using exchange" do
|
42
43
|
EXCHANGE_RATES = YAML.load_file(@yml_cache_path)
|
43
44
|
@bank.update_rates(@cache_path)
|
44
45
|
EuCentralBank::CURRENCIES.each do |currency|
|
45
|
-
@bank.exchange(100, "EUR", currency).should == (EXCHANGE_RATES["currencies"][currency].to_f * 100).floor
|
46
|
+
@bank.exchange(100, "EUR", currency).cents.should == (EXCHANGE_RATES["currencies"][currency].to_f * 100).floor
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should return the correct exchange rates using exchange_with" do
|
51
|
+
EXCHANGE_RATES = YAML.load_file(@yml_cache_path)
|
52
|
+
@bank.update_rates(@cache_path)
|
53
|
+
EuCentralBank::CURRENCIES.each do |currency|
|
54
|
+
@bank.exchange_with(Money.new(100, "EUR"), currency).cents.should == (EXCHANGE_RATES["currencies"][currency].to_f * 100).floor
|
46
55
|
end
|
47
56
|
end
|
48
57
|
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eu_central_bank
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Wong Liang Zan
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-07-17 00:00:00 +08:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: rspec
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 27
|
27
30
|
segments:
|
28
31
|
- 1
|
29
32
|
- 3
|
@@ -35,9 +38,11 @@ dependencies:
|
|
35
38
|
name: rr
|
36
39
|
prerelease: false
|
37
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
38
42
|
requirements:
|
39
43
|
- - ">="
|
40
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 33
|
41
46
|
segments:
|
42
47
|
- 0
|
43
48
|
- 10
|
@@ -49,9 +54,11 @@ dependencies:
|
|
49
54
|
name: shoulda
|
50
55
|
prerelease: false
|
51
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
52
58
|
requirements:
|
53
59
|
- - ">="
|
54
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 33
|
55
62
|
segments:
|
56
63
|
- 2
|
57
64
|
- 10
|
@@ -63,9 +70,11 @@ dependencies:
|
|
63
70
|
name: nokogiri
|
64
71
|
prerelease: false
|
65
72
|
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
66
74
|
requirements:
|
67
75
|
- - ">="
|
68
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 5
|
69
78
|
segments:
|
70
79
|
- 1
|
71
80
|
- 4
|
@@ -77,9 +86,11 @@ dependencies:
|
|
77
86
|
name: money
|
78
87
|
prerelease: false
|
79
88
|
requirement: &id005 !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
80
90
|
requirements:
|
81
91
|
- - ">="
|
82
92
|
- !ruby/object:Gem::Version
|
93
|
+
hash: 3
|
83
94
|
segments:
|
84
95
|
- 2
|
85
96
|
- 3
|
@@ -120,26 +131,30 @@ rdoc_options:
|
|
120
131
|
require_paths:
|
121
132
|
- lib
|
122
133
|
required_ruby_version: !ruby/object:Gem::Requirement
|
134
|
+
none: false
|
123
135
|
requirements:
|
124
136
|
- - ">="
|
125
137
|
- !ruby/object:Gem::Version
|
138
|
+
hash: 3
|
126
139
|
segments:
|
127
140
|
- 0
|
128
141
|
version: "0"
|
129
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
|
+
none: false
|
130
144
|
requirements:
|
131
145
|
- - ">="
|
132
146
|
- !ruby/object:Gem::Version
|
147
|
+
hash: 3
|
133
148
|
segments:
|
134
149
|
- 0
|
135
150
|
version: "0"
|
136
151
|
requirements: []
|
137
152
|
|
138
153
|
rubyforge_project:
|
139
|
-
rubygems_version: 1.3.
|
154
|
+
rubygems_version: 1.3.7
|
140
155
|
signing_key:
|
141
156
|
specification_version: 3
|
142
157
|
summary: Calculates exchange rates based on rates from european central bank. Money gem compatible.
|
143
158
|
test_files:
|
144
|
-
- spec/eu_central_bank_spec.rb
|
145
159
|
- spec/spec_helper.rb
|
160
|
+
- spec/eu_central_bank_spec.rb
|