google_currency 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ [![Build Status](https://secure.travis-ci.org/RubyMoney/google_currency.png)](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) 2010 Shane Emmons. See {file:LICENSE} for details.
38
+ Copyright (c) 2011 Shane Emmons. See {file:LICENSE} for details.
data/Rakefile CHANGED
@@ -29,8 +29,8 @@ rescue LoadError
29
29
  end
30
30
 
31
31
  begin
32
- require 'rake/gempackagetask'
33
- Rake::GemPackageTask.new(gemspec) do |pkg|
32
+ require 'rubygems/package_task'
33
+ Gem::PackageTask.new(gemspec) do |pkg|
34
34
  pkg.gem_spec = gemspec
35
35
  end
36
36
  task :gem => :gemspec
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "google_currency"
3
- s.version = "1.2.0"
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.7"
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 'json'
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
- JSON.parse(data)
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
- hash: 31
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
- date: 2011-02-18 00:00:00 -05:00
20
- default_executable:
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
- prerelease: false
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- requirement: &id003 !ruby/object:Gem::Requirement
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
- requirement: &id004 !ruby/object:Gem::Requirement
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
- hash: 13
79
- segments:
80
- - 3
81
- - 5
82
- version: "3.5"
65
+ - !ruby/object:Gem::Version
66
+ version: '3.5'
83
67
  type: :runtime
84
- version_requirements: *id004
85
- description: GoogleCurrency extends Money::Bank::Base and gives you access to the current Google Currency exchange rates.
86
- email:
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/google_currency_spec.rb
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
- hash: 3
120
- segments:
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
- hash: 21
129
- segments:
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.2
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
-