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 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
-