google_currency 1.2.0 → 2.0.0
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.md +12 -0
- data/README.md +10 -1
- data/Rakefile +2 -2
- data/google_currency.gemspec +4 -4
- data/lib/money/bank/google_currency.rb +4 -20
- data/spec/{google_currency_spec.rb → google_currency_with_json_spec.rb} +3 -23
- data/spec/google_currency_with_yajl_spec.rb +53 -0
- metadata +75 -93
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
Google Currency 2.0.0
|
2
|
+
=====================
|
3
|
+
|
4
|
+
Features
|
5
|
+
--------
|
6
|
+
- Added multi_json to allow users to select their own JSON parsing engine.
|
7
|
+
- Removed deprecated method #get_google_rate.
|
8
|
+
|
9
|
+
Bugfixes
|
10
|
+
--------
|
11
|
+
- Updated deprecated rake tasks
|
12
|
+
|
1
13
|
Google Currency 1.1.1
|
2
14
|
=====================
|
3
15
|
|
data/README.md
CHANGED
@@ -1,14 +1,23 @@
|
|
1
1
|
Google Currency
|
2
2
|
===============
|
3
3
|
|
4
|
+
[](http://travis-ci.org/RubyMoney/google_currency)
|
5
|
+
|
4
6
|
This gem extends Money::Bank::VariableExchange with Money::Bank::GoogleCurrency
|
5
7
|
and gives you access to the current Google Currency exchange rates.
|
6
8
|
|
9
|
+
You have to load one of the JSON libraries supported by
|
10
|
+
[MultiJSON](https://github.com/intridea/multi_json) (`json` for example)
|
11
|
+
if it's not already loaded by your application. In a Rails application,
|
12
|
+
ActiveSupport provides a JSON implementation that is automatically recognized.
|
13
|
+
|
7
14
|
Usage
|
8
15
|
-----
|
9
16
|
|
10
17
|
require 'money'
|
11
18
|
require 'money/bank/google_currency'
|
19
|
+
require 'json'
|
20
|
+
MultiJson.engine = :json_gem # or :yajl
|
12
21
|
|
13
22
|
# set default bank to instance of GoogleCurrency
|
14
23
|
Money.default_bank = Money::Bank::GoogleCurrency.new
|
@@ -26,4 +35,4 @@ An `UnknownCurrency` will be thrown if `#exchange_to` is called with a
|
|
26
35
|
Copyright
|
27
36
|
---------
|
28
37
|
|
29
|
-
Copyright (c)
|
38
|
+
Copyright (c) 2011 Shane Emmons. See {file:LICENSE} for details.
|
data/Rakefile
CHANGED
data/google_currency.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "google_currency"
|
3
|
-
s.version = "
|
3
|
+
s.version = "2.0.0"
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
5
|
s.authors = ["Shane Emmons", "Donald Ball"]
|
6
6
|
s.email = ["semmons99+RubyMoney@gmail.com", "donald.ball@gmail.com"]
|
@@ -8,15 +8,15 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.summary = "Access the Google Currency exchange rate data."
|
9
9
|
s.description = "GoogleCurrency extends Money::Bank::Base and gives you access to the current Google Currency exchange rates."
|
10
10
|
|
11
|
-
s.required_rubygems_version = ">= 1.3.
|
11
|
+
s.required_rubygems_version = ">= 1.3.6"
|
12
12
|
|
13
13
|
s.add_development_dependency "rspec", ">= 2.0.0"
|
14
14
|
s.add_development_dependency "yard", ">= 0.5.8"
|
15
15
|
s.add_development_dependency "json", ">= 1.4.0"
|
16
|
+
s.add_development_dependency "yajl-ruby", ">= 1.0.0"
|
16
17
|
|
17
18
|
s.add_dependency "money", "~> 3.5"
|
18
|
-
|
19
|
-
s.requirements << "json"
|
19
|
+
s.add_dependency "multi_json", ">= 1.0.0"
|
20
20
|
|
21
21
|
s.files = Dir.glob("{lib,spec}/**/*")
|
22
22
|
s.files += %w(LICENSE README.md CHANGELOG.md)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'money'
|
2
2
|
require 'open-uri'
|
3
|
-
require '
|
3
|
+
require 'multi_json'
|
4
4
|
|
5
5
|
class Money
|
6
6
|
module Bank
|
@@ -65,24 +65,6 @@ class Money
|
|
65
65
|
}
|
66
66
|
end
|
67
67
|
|
68
|
-
##
|
69
|
-
# Returns the requested rate after querying Google.
|
70
|
-
#
|
71
|
-
# @param [String, Symbol, Currency] from Currency to convert from
|
72
|
-
# @param [String, Symbol, Currency] to Currency to convert to
|
73
|
-
#
|
74
|
-
# @return [Float] The requested rate.
|
75
|
-
#
|
76
|
-
# @example
|
77
|
-
# @bank = GoogleCurrency.new #=> <Money::Bank::GoogleCurrency...>
|
78
|
-
# @bank.get_google_rate(:USD, :EUR) #=> 0.776337241
|
79
|
-
#
|
80
|
-
# @deprecated
|
81
|
-
def get_google_rate(from, to)
|
82
|
-
warn "#get_google_rate is deprecated, please use #get_rate"
|
83
|
-
fetch_rate(from, to)
|
84
|
-
end
|
85
|
-
|
86
68
|
private
|
87
69
|
|
88
70
|
##
|
@@ -129,7 +111,9 @@ class Money
|
|
129
111
|
data.gsub!(/rhs:/, '"rhs":')
|
130
112
|
data.gsub!(/error:/, '"error":')
|
131
113
|
data.gsub!(/icc:/, '"icc":')
|
132
|
-
|
114
|
+
data.gsub!(/(\xc2\xa0|\240)/, '')
|
115
|
+
|
116
|
+
MultiJson.decode(data)
|
133
117
|
end
|
134
118
|
end
|
135
119
|
end
|
@@ -3,34 +3,14 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
3
3
|
require 'money'
|
4
4
|
require 'money/bank/google_currency'
|
5
5
|
|
6
|
+
require 'json'
|
7
|
+
MultiJson.engine = :json_gem
|
8
|
+
|
6
9
|
describe "GoogleCurrency" do
|
7
10
|
before :each do
|
8
11
|
@bank = Money::Bank::GoogleCurrency.new
|
9
12
|
end
|
10
13
|
|
11
|
-
describe "#get_google_rate" do
|
12
|
-
it "should work for USD->USD" do
|
13
|
-
@bank.get_google_rate('USD', 'USD').should == 1.0
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should work for usd->usd" do
|
17
|
-
@bank.get_google_rate('usd', 'usd').should == 1.0
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should work for Currency.wrap(:USD)->Currency.wrap(:USD)" do
|
21
|
-
@bank.get_google_rate(Money::Currency.wrap(:USD),
|
22
|
-
Money::Currency.wrap(:USD)).should == 1.0
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should raise an UnknownCurrency error for an unknown currency" do
|
26
|
-
lambda{@bank.get_google_rate('USD', 'BATMAN')}.should raise_error(Money::Currency::UnknownCurrency)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should raise and UnknownRate error for a known currency but unknown rate" do
|
30
|
-
lambda{@bank.get_google_rate('USD', 'ALL')}.should raise_error(Money::Bank::UnknownRate)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
14
|
describe "#get_rate" do
|
35
15
|
it "should use #fetch_rate when rate is unknown" do
|
36
16
|
@bank.should_receive(:fetch_rate).once
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
require 'money'
|
4
|
+
require 'money/bank/google_currency'
|
5
|
+
|
6
|
+
require 'yajl'
|
7
|
+
MultiJson.engine = :yajl
|
8
|
+
|
9
|
+
describe "GoogleCurrency" do
|
10
|
+
before :each do
|
11
|
+
@bank = Money::Bank::GoogleCurrency.new
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#get_rate" do
|
15
|
+
it "should use #fetch_rate when rate is unknown" do
|
16
|
+
@bank.should_receive(:fetch_rate).once
|
17
|
+
@bank.get_rate('USD', 'USD')
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should not use #fetch_rate when rate is known" do
|
21
|
+
@bank.get_rate('USD', 'USD')
|
22
|
+
@bank.should_not_receive(:fetch_rate)
|
23
|
+
@bank.get_rate('USD', 'USD')
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should return the correct rate" do
|
27
|
+
@bank.get_rate('USD', 'USD').should == 1.0
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should store the rate for faster retreival" do
|
31
|
+
@bank.get_rate('USD', 'EUR')
|
32
|
+
@bank.rates.should include('USD_TO_EUR')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#flush_rates" do
|
37
|
+
it "should empty @rates" do
|
38
|
+
@bank.get_rate('USD', 'EUR')
|
39
|
+
@bank.flush_rates
|
40
|
+
@bank.rates.should == {}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "#flush_rate" do
|
45
|
+
it "should remove a specific rate from @rates" do
|
46
|
+
@bank.get_rate('USD', 'EUR')
|
47
|
+
@bank.get_rate('USD', 'JPY')
|
48
|
+
@bank.flush_rate('USD', 'EUR')
|
49
|
+
@bank.rates.should include('USD_TO_JPY')
|
50
|
+
@bank.rates.should_not include('USD_TO_EUR')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
metadata
CHANGED
@@ -1,100 +1,95 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: google_currency
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 2
|
9
|
-
- 0
|
10
|
-
version: 1.2.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Shane Emmons
|
14
9
|
- Donald Ball
|
15
10
|
autorequire:
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
dependencies:
|
22
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2011-09-21 00:00:00.000000000Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
23
16
|
name: rspec
|
24
|
-
|
25
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &9979680 !ruby/object:Gem::Requirement
|
26
18
|
none: false
|
27
|
-
requirements:
|
28
|
-
- -
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
hash: 15
|
31
|
-
segments:
|
32
|
-
- 2
|
33
|
-
- 0
|
34
|
-
- 0
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
35
22
|
version: 2.0.0
|
36
23
|
type: :development
|
37
|
-
version_requirements: *id001
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: yard
|
40
24
|
prerelease: false
|
41
|
-
|
25
|
+
version_requirements: *9979680
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: yard
|
28
|
+
requirement: &9979176 !ruby/object:Gem::Requirement
|
42
29
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
hash: 27
|
47
|
-
segments:
|
48
|
-
- 0
|
49
|
-
- 5
|
50
|
-
- 8
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
51
33
|
version: 0.5.8
|
52
34
|
type: :development
|
53
|
-
version_requirements: *id002
|
54
|
-
- !ruby/object:Gem::Dependency
|
55
|
-
name: json
|
56
35
|
prerelease: false
|
57
|
-
|
36
|
+
version_requirements: *9979176
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: json
|
39
|
+
requirement: &9978624 !ruby/object:Gem::Requirement
|
58
40
|
none: false
|
59
|
-
requirements:
|
60
|
-
- -
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
hash: 7
|
63
|
-
segments:
|
64
|
-
- 1
|
65
|
-
- 4
|
66
|
-
- 0
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
67
44
|
version: 1.4.0
|
68
45
|
type: :development
|
69
|
-
version_requirements: *id003
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: money
|
72
46
|
prerelease: false
|
73
|
-
|
47
|
+
version_requirements: *9978624
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: yajl-ruby
|
50
|
+
requirement: &9978048 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.0.0
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *9978048
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: money
|
61
|
+
requirement: &9977364 !ruby/object:Gem::Requirement
|
74
62
|
none: false
|
75
|
-
requirements:
|
63
|
+
requirements:
|
76
64
|
- - ~>
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
|
79
|
-
segments:
|
80
|
-
- 3
|
81
|
-
- 5
|
82
|
-
version: "3.5"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '3.5'
|
83
67
|
type: :runtime
|
84
|
-
|
85
|
-
|
86
|
-
|
68
|
+
prerelease: false
|
69
|
+
version_requirements: *9977364
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: multi_json
|
72
|
+
requirement: &9976764 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.0.0
|
78
|
+
type: :runtime
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: *9976764
|
81
|
+
description: GoogleCurrency extends Money::Bank::Base and gives you access to the
|
82
|
+
current Google Currency exchange rates.
|
83
|
+
email:
|
87
84
|
- semmons99+RubyMoney@gmail.com
|
88
85
|
- donald.ball@gmail.com
|
89
86
|
executables: []
|
90
|
-
|
91
87
|
extensions: []
|
92
|
-
|
93
88
|
extra_rdoc_files: []
|
94
|
-
|
95
|
-
files:
|
89
|
+
files:
|
96
90
|
- lib/money/bank/google_currency.rb
|
97
|
-
- spec/
|
91
|
+
- spec/google_currency_with_json_spec.rb
|
92
|
+
- spec/google_currency_with_yajl_spec.rb
|
98
93
|
- spec/spec_helper.rb
|
99
94
|
- LICENSE
|
100
95
|
- README.md
|
@@ -102,41 +97,28 @@ files:
|
|
102
97
|
- Rakefile
|
103
98
|
- .gemtest
|
104
99
|
- google_currency.gemspec
|
105
|
-
has_rdoc: true
|
106
100
|
homepage: http://rubymoney.github.com/google_currency
|
107
101
|
licenses: []
|
108
|
-
|
109
102
|
post_install_message:
|
110
103
|
rdoc_options: []
|
111
|
-
|
112
|
-
require_paths:
|
104
|
+
require_paths:
|
113
105
|
- lib
|
114
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
106
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
107
|
none: false
|
116
|
-
requirements:
|
117
|
-
- -
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
|
120
|
-
|
121
|
-
- 0
|
122
|
-
version: "0"
|
123
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ! '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
113
|
none: false
|
125
|
-
requirements:
|
126
|
-
- -
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
|
129
|
-
|
130
|
-
- 1
|
131
|
-
- 3
|
132
|
-
- 7
|
133
|
-
version: 1.3.7
|
134
|
-
requirements:
|
135
|
-
- json
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.3.6
|
118
|
+
requirements: []
|
136
119
|
rubyforge_project:
|
137
|
-
rubygems_version: 1.5
|
120
|
+
rubygems_version: 1.8.5
|
138
121
|
signing_key:
|
139
122
|
specification_version: 3
|
140
123
|
summary: Access the Google Currency exchange rate data.
|
141
124
|
test_files: []
|
142
|
-
|