currency_switcher 0.0.1 → 0.0.2
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/Manifest +1 -1
- data/README.md +18 -3
- data/Rakefile +2 -2
- data/currency_switcher.gemspec +4 -5
- data/lib/currency_switcher/ext/fixnum.rb +16 -0
- data/lib/currency_switcher.rb +41 -4
- data/test/test_currency_switcher.rb +17 -6
- data.tar.gz.sig +0 -0
- metadata +5 -14
- metadata.gz.sig +0 -0
data/Manifest
CHANGED
data/README.md
CHANGED
@@ -10,16 +10,31 @@ $ gem install currency_switcher
|
|
10
10
|
|
11
11
|
## Usage
|
12
12
|
|
13
|
-
|
13
|
+
There are two ways of using the library:
|
14
|
+
|
15
|
+
1) From the available list of currencies you can create methods in a format specified below and call them on Fixnums:
|
14
16
|
|
15
17
|
'from_currency'_to_'to_currency'
|
16
18
|
|
17
19
|
For example:
|
18
20
|
|
19
21
|
require 'currency_switcher'
|
20
|
-
3.usd_to_gbp # => converts 3 USD to GBP and returns 1.94
|
21
|
-
15.eur_to_aud # => converts 15 EURO to Australian Dollar and returns 19.61
|
22
22
|
|
23
|
+
# Convert 3 US Dollars to British Pounds
|
24
|
+
3.usd_to_gbp
|
25
|
+
|
26
|
+
# Convert 15 Euros to Australian Dollars
|
27
|
+
15.eur_to_aud
|
28
|
+
|
29
|
+
2) Pass currencies as the arguments:
|
30
|
+
|
31
|
+
For example:
|
32
|
+
|
33
|
+
require 'currency_switcher'
|
34
|
+
|
35
|
+
# Convert 3 US Dollars to British Pounds
|
36
|
+
3.exchange("usd", "gbp")
|
37
|
+
|
23
38
|
## Available Currencies
|
24
39
|
|
25
40
|
aed => United Arab Emirates Dirham
|
data/Rakefile
CHANGED
@@ -2,11 +2,11 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
4
|
|
5
|
-
Echoe.new('currency_switcher', '0.0.
|
5
|
+
Echoe.new('currency_switcher', '0.0.2') do |p|
|
6
6
|
p.description = "Convert currencies using exchange rates from http://exchange-rates.org"
|
7
7
|
p.url = "http://github.com/staskie/currency_switcher"
|
8
8
|
p.author = "Dominik Staskiewicz"
|
9
9
|
p.email = "stadominik@gmail.com"
|
10
10
|
p.ignore_pattern = ["tmp/*", "script/*"]
|
11
11
|
p.development_dependencies = []
|
12
|
-
end
|
12
|
+
end
|
data/currency_switcher.gemspec
CHANGED
@@ -2,27 +2,26 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{currency_switcher}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.2"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Dominik Staskiewicz"]
|
9
9
|
s.cert_chain = ["/Users/dominik/Documents/keys/gem-public_cert.pem"]
|
10
|
-
s.date = %q{2011-
|
10
|
+
s.date = %q{2011-10-09}
|
11
11
|
s.description = %q{Convert currencies using exchange rates from http://exchange-rates.org}
|
12
12
|
s.email = %q{stadominik@gmail.com}
|
13
13
|
s.extra_rdoc_files = ["README.md", "lib/currency_switcher.rb", "lib/currency_switcher/currencies.rb", "lib/currency_switcher/ext/fixnum.rb"]
|
14
|
-
s.files = ["README.md", "Rakefile", "lib/currency_switcher.rb", "lib/currency_switcher/currencies.rb", "lib/currency_switcher/ext/fixnum.rb", "test/helper.rb", "test/html/eur_to_usd.html", "test/html/usd_to_gbp.html", "test/test_currency_switcher.rb", "
|
14
|
+
s.files = ["Manifest", "README.md", "Rakefile", "lib/currency_switcher.rb", "lib/currency_switcher/currencies.rb", "lib/currency_switcher/ext/fixnum.rb", "test/helper.rb", "test/html/eur_to_usd.html", "test/html/usd_to_gbp.html", "test/test_currency_switcher.rb", "currency_switcher.gemspec"]
|
15
15
|
s.homepage = %q{http://github.com/staskie/currency_switcher}
|
16
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Currency_switcher", "--main", "README.md"]
|
17
17
|
s.require_paths = ["lib"]
|
18
18
|
s.rubyforge_project = %q{currency_switcher}
|
19
|
-
s.rubygems_version = %q{1.
|
19
|
+
s.rubygems_version = %q{1.6.2}
|
20
20
|
s.signing_key = %q{/Users/dominik/Documents/keys/gem-private_key.pem}
|
21
21
|
s.summary = %q{Convert currencies using exchange rates from http://exchange-rates.org}
|
22
22
|
s.test_files = ["test/test_currency_switcher.rb"]
|
23
23
|
|
24
24
|
if s.respond_to? :specification_version then
|
25
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
26
25
|
s.specification_version = 3
|
27
26
|
|
28
27
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
@@ -1,4 +1,20 @@
|
|
1
1
|
class Numeric
|
2
|
+
# Exchange a value using from and to currencies
|
3
|
+
#
|
4
|
+
# from - From currency
|
5
|
+
# to - To currency
|
6
|
+
#
|
7
|
+
# Example
|
8
|
+
#
|
9
|
+
# 5.exchange("gbp", "usd")
|
10
|
+
#
|
11
|
+
# Returns float value of currency exchange result
|
12
|
+
# Raises StandardError if any currency is invalid
|
13
|
+
# or could not work out the exchange rate
|
14
|
+
def exchange(from, to)
|
15
|
+
CurrencySwitcher.exchange(self, from, to)
|
16
|
+
end
|
17
|
+
|
2
18
|
# Overriding method_missing to add CurrencySwitcher methods
|
3
19
|
#
|
4
20
|
# sym - standard method_missing argument
|
data/lib/currency_switcher.rb
CHANGED
@@ -52,11 +52,32 @@ module CurrencySwitcher
|
|
52
52
|
#
|
53
53
|
# Returns true if botch currencies are valid or false if one of them is invalid
|
54
54
|
def self.both_currencies_valid?
|
55
|
-
|
55
|
+
self.from_currency_valid? && self.to_currency_valid?
|
56
56
|
end
|
57
|
-
|
58
|
-
|
59
|
-
#
|
57
|
+
|
58
|
+
# Calculate the value from fixnum, from and to currency
|
59
|
+
#
|
60
|
+
# fixnum - The Fixnum representing how much should be converted
|
61
|
+
# from - From currency
|
62
|
+
# to - To currency
|
63
|
+
#
|
64
|
+
# Examples
|
65
|
+
# CurrencySwitcher.exchange(3,"usd", "gbp")
|
66
|
+
# # => 5.23
|
67
|
+
#
|
68
|
+
# Returns float value of fixnum multiplied by exchange rate
|
69
|
+
# Raises StandardError if currencies are not valid
|
70
|
+
def self.exchange(fixnum, from, to)
|
71
|
+
@from_currency = from.to_sym
|
72
|
+
@to_currency = to.to_sym
|
73
|
+
|
74
|
+
raise StandardError, "From currency #{from_currency} is invalid" unless self.from_currency_valid?
|
75
|
+
raise StandardError, "To currency #{to_currency} is invalid" unless self.to_currency_valid?
|
76
|
+
|
77
|
+
self.calculate_value(fixnum)
|
78
|
+
end
|
79
|
+
|
80
|
+
# Calculate the value from fixnum
|
60
81
|
#
|
61
82
|
# fixnum - The Fixnum representing how much should be converted
|
62
83
|
#
|
@@ -98,4 +119,20 @@ module CurrencySwitcher
|
|
98
119
|
def self.currencies
|
99
120
|
CURRENCIES.keys.sort.each { |symbol| puts "#{symbol} => #{CURRENCIES[symbol]}"}
|
100
121
|
end
|
122
|
+
|
123
|
+
private
|
124
|
+
|
125
|
+
# Check if from currency if valid
|
126
|
+
#
|
127
|
+
# Returns true if from currency if valid
|
128
|
+
def self.from_currency_valid?
|
129
|
+
CURRENCIES.has_key?(from_currency)
|
130
|
+
end
|
131
|
+
|
132
|
+
# Check if to currency is valid
|
133
|
+
#
|
134
|
+
# Returns true if to currency is valid
|
135
|
+
def self.to_currency_valid?
|
136
|
+
CURRENCIES.has_key?(to_currency)
|
137
|
+
end
|
101
138
|
end
|
@@ -43,12 +43,23 @@ class TestCurrencySwitcher < Test::Unit::TestCase
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_usd_to_gbp
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
46
|
+
assert_equal(format(2, 0.64539), 2.usd_to_gbp)
|
47
|
+
assert_equal(format(2, 0.64539), 2.exchange("usd","gbp"))
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
def test_eur_to_usd
|
52
|
+
assert_equal(format(3, 1.3171), 3.eur_to_usd)
|
53
|
+
assert_equal(format(3, 1.3171), 3.exchange("eur","usd"))
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_invalid_currency_error
|
57
|
+
assert_raise(StandardError) { 2.exchange("usd","invalid_currency") }
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_argument_error_for_exchange
|
61
|
+
assert_raise(ArgumentError) { 2.exchange("usd") }
|
62
|
+
end
|
52
63
|
|
53
64
|
def test_exchange_rate_error
|
54
65
|
Nokogiri.stubs(:HTML).returns(nil)
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: currency_switcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
version: 0.0.1
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.2
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Dominik Staskiewicz
|
@@ -35,7 +31,7 @@ cert_chain:
|
|
35
31
|
wYwJN5o4GnGcdg==
|
36
32
|
-----END CERTIFICATE-----
|
37
33
|
|
38
|
-
date: 2011-
|
34
|
+
date: 2011-10-09 00:00:00 +02:00
|
39
35
|
default_executable:
|
40
36
|
dependencies: []
|
41
37
|
|
@@ -51,6 +47,7 @@ extra_rdoc_files:
|
|
51
47
|
- lib/currency_switcher/currencies.rb
|
52
48
|
- lib/currency_switcher/ext/fixnum.rb
|
53
49
|
files:
|
50
|
+
- Manifest
|
54
51
|
- README.md
|
55
52
|
- Rakefile
|
56
53
|
- lib/currency_switcher.rb
|
@@ -60,7 +57,6 @@ files:
|
|
60
57
|
- test/html/eur_to_usd.html
|
61
58
|
- test/html/usd_to_gbp.html
|
62
59
|
- test/test_currency_switcher.rb
|
63
|
-
- Manifest
|
64
60
|
- currency_switcher.gemspec
|
65
61
|
has_rdoc: true
|
66
62
|
homepage: http://github.com/staskie/currency_switcher
|
@@ -81,22 +77,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
81
77
|
requirements:
|
82
78
|
- - ">="
|
83
79
|
- !ruby/object:Gem::Version
|
84
|
-
segments:
|
85
|
-
- 0
|
86
80
|
version: "0"
|
87
81
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
82
|
none: false
|
89
83
|
requirements:
|
90
84
|
- - ">="
|
91
85
|
- !ruby/object:Gem::Version
|
92
|
-
segments:
|
93
|
-
- 1
|
94
|
-
- 2
|
95
86
|
version: "1.2"
|
96
87
|
requirements: []
|
97
88
|
|
98
89
|
rubyforge_project: currency_switcher
|
99
|
-
rubygems_version: 1.
|
90
|
+
rubygems_version: 1.6.2
|
100
91
|
signing_key:
|
101
92
|
specification_version: 3
|
102
93
|
summary: Convert currencies using exchange rates from http://exchange-rates.org
|
metadata.gz.sig
CHANGED
Binary file
|