exchange-rates-generator 0.0.8 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -0
- data/Gemfile.lock +46 -0
- data/README.rdoc +1 -1
- data/Rakefile +4 -30
- data/bin/generate_exchange_rates +5 -3
- data/exchange-rates-generator.gemspec +34 -0
- data/lib/exchange-rates-generator.rb +13 -13
- data/lib/{generate_exchange_rates → exchange-rates-generator}/cli.rb +6 -5
- data/lib/exchange-rates-generator/currencies.rb +39 -27
- data/lib/exchange-rates-generator/formatters/base.rb +7 -3
- data/lib/exchange-rates-generator/formatters/javascript.rb +2 -1
- data/lib/exchange-rates-generator/formatters/ruby.rb +1 -0
- data/lib/exchange-rates-generator/sources/base.rb +5 -1
- data/lib/exchange-rates-generator/version.rb +7 -0
- data/spec/exchange-rates-generator_spec.rb +1 -1
- data/spec/generate_exchange_rates_cli_spec.rb +6 -5
- data/spec/spec.opts +5 -1
- data/spec/spec_helper.rb +7 -7
- data/tasks/currency_codes.rake +28 -32
- data/tasks/rspec.rake +10 -6
- metadata +106 -56
- data/History.txt +0 -7
- data/Manifest.txt +0 -22
- data/tasks/yard.rake +0 -19
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
exchange-rates-generator (0.1.0)
|
5
|
+
activesupport (~> 3.0.3)
|
6
|
+
i18n (~> 0.4.2)
|
7
|
+
money (~> 3.1.5)
|
8
|
+
nokogiri (~> 1.4.4)
|
9
|
+
patron (~> 0.4.10)
|
10
|
+
|
11
|
+
GEM
|
12
|
+
remote: http://rubygems.org/
|
13
|
+
specs:
|
14
|
+
activesupport (3.0.3)
|
15
|
+
diff-lcs (1.1.2)
|
16
|
+
i18n (0.4.2)
|
17
|
+
money (3.1.5)
|
18
|
+
nokogiri (1.4.4)
|
19
|
+
patron (0.4.10)
|
20
|
+
rake (0.8.7)
|
21
|
+
rcov (0.9.9)
|
22
|
+
rspec (2.1.0)
|
23
|
+
rspec-core (~> 2.1.0)
|
24
|
+
rspec-expectations (~> 2.1.0)
|
25
|
+
rspec-mocks (~> 2.1.0)
|
26
|
+
rspec-core (2.1.0)
|
27
|
+
rspec-expectations (2.1.0)
|
28
|
+
diff-lcs (~> 1.1.2)
|
29
|
+
rspec-mocks (2.1.0)
|
30
|
+
yard (0.6.2)
|
31
|
+
|
32
|
+
PLATFORMS
|
33
|
+
ruby
|
34
|
+
|
35
|
+
DEPENDENCIES
|
36
|
+
activesupport (~> 3.0.3)
|
37
|
+
bundler (>= 1.0.7)
|
38
|
+
exchange-rates-generator!
|
39
|
+
i18n (~> 0.4.2)
|
40
|
+
money (~> 3.1.5)
|
41
|
+
nokogiri (~> 1.4.4)
|
42
|
+
patron (~> 0.4.10)
|
43
|
+
rake
|
44
|
+
rcov
|
45
|
+
rspec (= 2.1.0)
|
46
|
+
yard
|
data/README.rdoc
CHANGED
@@ -17,7 +17,7 @@ Partially sponsored by the kind folks at Intercity (http://www.intercity.co.nz).
|
|
17
17
|
|
18
18
|
== SYNOPSIS:
|
19
19
|
|
20
|
-
Generate a Ruby class for converting NZD
|
20
|
+
Generate a Ruby class for converting NZD amounts to other currencies, using the default ECB source.
|
21
21
|
|
22
22
|
<tt>generate_exchange_rates -c nzd -f ruby</tt>
|
23
23
|
|
data/Rakefile
CHANGED
@@ -1,30 +1,4 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require './lib/exchange-rates-generator'
|
6
|
-
|
7
|
-
Hoe.plugin :newgem
|
8
|
-
# Hoe.plugin :website
|
9
|
-
# Hoe.plugin :cucumberfeatures
|
10
|
-
|
11
|
-
# Generate all the Rake tasks
|
12
|
-
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
13
|
-
$hoe = Hoe.spec 'exchange-rates-generator' do
|
14
|
-
self.developer 'Rolly', 'rolly@luma.co.nz'
|
15
|
-
# self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
|
16
|
-
self.rubyforge_name = self.name # TODO this is default value
|
17
|
-
self.extra_deps = [
|
18
|
-
['patron','>= 0.4'],
|
19
|
-
['nokogiri','>= 1.4'],
|
20
|
-
['extlib','>= 0.9'],
|
21
|
-
['money', '>= 2.2.0']
|
22
|
-
]
|
23
|
-
end
|
24
|
-
|
25
|
-
require 'newgem/tasks'
|
26
|
-
Dir['tasks/**/*.rake'].each { |t| load t }
|
27
|
-
|
28
|
-
# TODO - want other tests/tasks run by default? Add them to the list
|
29
|
-
# remove_task :default
|
30
|
-
#task :default => [:spec, :generate_currency_codes]
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
Dir['tasks/**/*.rake'].each { |t| load t }
|
data/bin/generate_exchange_rates
CHANGED
@@ -4,7 +4,9 @@
|
|
4
4
|
# Copyright (c) 2010. All rights reserved.
|
5
5
|
|
6
6
|
require 'rubygems'
|
7
|
-
require File.expand_path(File.dirname(__FILE__) + "/../lib/exchange-rates-generator")
|
8
|
-
require "generate_exchange_rates/cli"
|
9
7
|
|
10
|
-
|
8
|
+
dir = File.expand_path(File.dirname(__FILE__) + '/../lib/')
|
9
|
+
require dir + "/exchange-rates-generator"
|
10
|
+
require dir + "/exchange-rates-generator/cli"
|
11
|
+
|
12
|
+
ExchangeRatesGenerator::CLI.execute(STDOUT, ARGV)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "exchange-rates-generator/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "exchange-rates-generator"
|
7
|
+
s.version = Exchange::Rates::Generator::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Rolly Fordham"]
|
10
|
+
s.email = ["rolly@luma.co.nz"]
|
11
|
+
s.homepage = ""
|
12
|
+
s.summary = %q{Generates a classes (or class like things) that can translate currency values in a specific currency to a number of other currencies.}
|
13
|
+
s.description = %q{Generates a classes (or class like things) that can translate currency values in a specific currency to a number of other currencies. Other currency sources and new formats can be added.}
|
14
|
+
|
15
|
+
s.rubyforge_project = "exchange-rates-generator"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.default_executable = 'bin/generate_exchange_rates'
|
20
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
|
23
|
+
s.add_dependency 'patron', '~> 0.4.10'
|
24
|
+
s.add_dependency 'nokogiri', '~> 1.4.4'
|
25
|
+
s.add_dependency 'money', '~> 3.1.5'
|
26
|
+
s.add_dependency 'i18n', '~> 0.4.2' # Required for activesupport
|
27
|
+
s.add_dependency 'activesupport', '~> 3.0.3'
|
28
|
+
|
29
|
+
s.add_development_dependency "bundler", ">= 1.0.7"
|
30
|
+
s.add_development_dependency "rake"
|
31
|
+
s.add_development_dependency "rspec", "2.1.0"
|
32
|
+
s.add_development_dependency "yard"
|
33
|
+
s.add_development_dependency "rcov"
|
34
|
+
end
|
@@ -1,14 +1,13 @@
|
|
1
|
-
|
2
|
-
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
1
|
+
# -*- encoding : utf-8 -*-
|
3
2
|
|
4
3
|
require 'patron'
|
5
4
|
require 'nokogiri'
|
6
|
-
require 'extlib'
|
7
5
|
require 'logger'
|
8
6
|
|
7
|
+
require 'active_support/core_ext/object/blank'
|
8
|
+
require 'active_support/inflector'
|
9
|
+
|
9
10
|
module ExchangeRatesGenerator
|
10
|
-
VERSION = '0.0.8'
|
11
|
-
|
12
11
|
def self.log_to=(l)
|
13
12
|
@log_to = l
|
14
13
|
end
|
@@ -30,14 +29,15 @@ module ExchangeRatesGenerator
|
|
30
29
|
end
|
31
30
|
end
|
32
31
|
|
33
|
-
|
32
|
+
dir = File.join(File.expand_path(File.dirname(__FILE__)), 'exchange-rates-generator')
|
33
|
+
require dir + '/errors'
|
34
34
|
|
35
|
-
require '
|
36
|
-
require '
|
35
|
+
require dir + '/currency'
|
36
|
+
require dir + '/currencies'
|
37
37
|
|
38
|
-
require '
|
39
|
-
require '
|
40
|
-
require '
|
38
|
+
require dir + '/formatters/base'
|
39
|
+
require dir + '/formatters/ruby'
|
40
|
+
require dir + '/formatters/javascript'
|
41
41
|
|
42
|
-
require '
|
43
|
-
require '
|
42
|
+
require dir + '/sources/base'
|
43
|
+
require dir + '/sources/ecb'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
|
3
|
-
module
|
3
|
+
module ExchangeRatesGenerator
|
4
4
|
class CLI
|
5
5
|
def self.execute(stdout, arguments=[])
|
6
6
|
|
@@ -15,7 +15,7 @@ module GenerateExchangeRates
|
|
15
15
|
|
16
16
|
parser = OptionParser.new do |opts|
|
17
17
|
opts.banner = <<-BANNER.gsub(/^ /,'')
|
18
|
-
This application
|
18
|
+
This application can generate helpful classes that can do currency exchange from a single target currency to numerous others.
|
19
19
|
|
20
20
|
Usage: #{File.basename($0)} [options]
|
21
21
|
|
@@ -39,8 +39,8 @@ module GenerateExchangeRates
|
|
39
39
|
"Default: ruby") { |arg| options[:format] = arg.upcase }
|
40
40
|
|
41
41
|
opts.on("-l", "--list", "List all available formats and sources") do
|
42
|
-
formatters = ExchangeRatesGenerator::Formatters::Base.formatters.collect {|f| "\s\s#{
|
43
|
-
sources = ExchangeRatesGenerator::Sources::Base.sources.collect {|s| "\s\s#{
|
42
|
+
formatters = ExchangeRatesGenerator::Formatters::Base.formatters.collect {|f| "\s\s#{f.to_s.demodulize}: #{f.description} (*.#{f.default_extension.to_s})" }.join("\n")
|
43
|
+
sources = ExchangeRatesGenerator::Sources::Base.sources.collect {|s| "\s\s#{s.to_s.demodulize}: #{s.description}" }.join("\n")
|
44
44
|
|
45
45
|
stdout.puts <<-EOS
|
46
46
|
Available Formats:
|
@@ -57,7 +57,8 @@ Available Sources:
|
|
57
57
|
opts.parse!(arguments)
|
58
58
|
|
59
59
|
if mandatory_options && mandatory_options.find { |option| options[option.to_sym].nil? }
|
60
|
-
stdout.puts opts
|
60
|
+
stdout.puts opts
|
61
|
+
return
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
@@ -1,26 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module ExchangeRatesGenerator
|
3
|
+
# Generated using "rake currency:generate_currency_codes" from within the exchange-rates-generator gem.
|
4
|
+
# Scraped from http://www.iso.org/iso/support/currency_codes_list-1.htm
|
5
|
+
# These are utf-8 so ensure that you correctly setup the necessary encodings in your app
|
6
|
+
module Currencies
|
7
|
+
def self.get(code)
|
8
|
+
return nil if RAW[noramalise_code(code)] == nil
|
9
|
+
name, entity = RAW[noramalise_code(code)]
|
10
|
+
Currency.new(noramalise_code(code).to_sym, name, entity)
|
11
|
+
end
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
def self.get_name(code)
|
14
|
+
return nil if RAW[noramalise_code(code)] == nil
|
15
|
+
RAW[noramalise_code(code)][0]
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
+
private
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
20
|
+
def self.noramalise_code(code)
|
21
|
+
code.to_s.upcase
|
22
|
+
end
|
22
23
|
|
23
|
-
|
24
|
+
RAW = {
|
24
25
|
'AED' => ["Uae Dirham", ["United Arab Emirates"]],
|
25
26
|
'AFN' => ["Afghani", ["Afghanistan"]],
|
26
27
|
'ALL' => ["Lek", ["Albania"]],
|
@@ -70,17 +71,16 @@
|
|
70
71
|
'EGP' => ["Egyptian Pound", ["Egypt"]],
|
71
72
|
'ERN' => ["Nakfa", ["Eritrea"]],
|
72
73
|
'ETB' => ["Ethiopian Birr", ["Ethiopia"]],
|
73
|
-
'EUR' => ["Euro", ["Åland Islands", "Andorra", "Austria", "Belgium", "Cyprus", "Finland", "France", "French Guiana", "French Southern Territories", "Germany", "Greece", "Guadeloupe", "Holy See (Vatican City State)", "Ireland", "Italy", "Luxembourg", "Malta", "Martinique", "Mayotte", "Monaco", "Montenegro", "Netherlands", "Portugal", "RÉunion", "Saint-BarthÉlemy", "Saint Martin", "Saint Pierre And Miquelon", "San Marino", "Slovakia", "Slovenia", "Spain"]],
|
74
|
+
'EUR' => ["Euro", ["Åland Islands", "Andorra", "Austria", "Belgium", "Cyprus", "Finland", "France", "French Guiana", "French Southern Territories", "Germany", "Greece", "Guadeloupe", "Holy See (Vatican City State)", "Ireland", "Italy", "Luxembourg", "Malta", "Martinique", "Mayotte", "Monaco", "Montenegro", "Netherlands", "Portugal", "RÉunion", "Saint-BarthÉlemy", "Saint Martin", "Saint Pierre And Miquelon", "San Marino", "Slovakia", "Slovenia", "Spain", "Vatican City State (Holy See)"]],
|
74
75
|
'FJD' => ["Fiji Dollar", ["Fiji"]],
|
75
76
|
'FKP' => ["Falkland Islands Pound", ["Falkland Islands (Malvinas)"]],
|
76
|
-
'GBP' => ["Pound Sterling", ["Guernsey", "Jersey", "United Kingdom"]],
|
77
|
+
'GBP' => ["Pound Sterling", ["Guernsey", "Isle Of Man", "Jersey", "United Kingdom"]],
|
77
78
|
'GEL' => ["Lari", ["Georgia"]],
|
78
79
|
'GHS' => ["Cedi", ["Ghana"]],
|
79
80
|
'GIP' => ["Gibraltar Pound", ["Gibraltar"]],
|
80
81
|
'GMD' => ["Dalasi", ["Gambia"]],
|
81
82
|
'GNF' => ["Guinea Franc", ["Guinea"]],
|
82
83
|
'GTQ' => ["Quetzal", ["Guatemala"]],
|
83
|
-
'GWP' => ["Guinea-Bissau Peso", ["Guinea-Bissau"]],
|
84
84
|
'GYD' => ["Guyana Dollar", ["Guyana"]],
|
85
85
|
'HKD' => ["Hong Kong Dollar", ["Hong Kong"]],
|
86
86
|
'HNL' => ["Lempira", ["Honduras"]],
|
@@ -153,7 +153,7 @@
|
|
153
153
|
'SDG' => ["Sudanese Pound", ["Sudan"]],
|
154
154
|
'SEK' => ["Swedish Krona", ["Sweden"]],
|
155
155
|
'SGD' => ["Singapore Dollar", ["Singapore"]],
|
156
|
-
'SHP' => ["Saint Helena Pound", ["Saint Helena"]],
|
156
|
+
'SHP' => ["Saint Helena Pound", ["Saint Helena, Ascension And Tristan Da Cunha"]],
|
157
157
|
'SLL' => ["Leone", ["Sierra Leone"]],
|
158
158
|
'SOS' => ["Somali Shilling", ["Somalia"]],
|
159
159
|
'SRD' => ["Surinam Dollar", ["Suriname"]],
|
@@ -183,15 +183,27 @@
|
|
183
183
|
'VUV' => ["Vatu", ["Vanuatu"]],
|
184
184
|
'WST' => ["Tala", ["Samoa"]],
|
185
185
|
'XAF' => ["Cfa Franc Beac", ["Cameroon", "Central African Republic", "Chad", "Congo", "Equatorial Guinea", "Gabon"]],
|
186
|
+
'XAG' => ["Silver", [" "]],
|
187
|
+
'XAU' => ["Gold", ["Entity Not Applicable"]],
|
188
|
+
'XBA' => ["Bond Markets Units European Composite Unit (Eurco)", [" "]],
|
189
|
+
'XBB' => ["European Monetary Unit (E.M.U.-6)", [" "]],
|
190
|
+
'XBC' => ["European Unit Of Account 9(E.U.A.-9)", [" "]],
|
191
|
+
'XBD' => ["European Unit Of Account 17(E.U.A.-17)", [" "]],
|
186
192
|
'XCD' => ["East Caribbean Dollar", ["Anguilla", "Antigua And Barbuda", "Dominica", "Grenada", "Montserrat", "Saint Kitts And Nevis", "Saint Lucia", "Saint Vincent And The Grenadines"]],
|
187
193
|
'XDR' => ["Sdr", ["International Monetary Fund (I.M.F)"]],
|
194
|
+
'XFU' => ["Uic-Franc", [" "]],
|
188
195
|
'XOF' => ["Cfa Franc Bceao", ["Benin", "Burkina Faso", "CÔte D'ivoire", "Guinea-Bissau", "Mali", "Niger", "Senegal", "Togo"]],
|
196
|
+
'XPD' => ["Palladium", [" "]],
|
189
197
|
'XPF' => ["Cfp Franc", ["French Polynesia", "New Caledonia", "Wallis And Futuna"]],
|
198
|
+
'XPT' => ["Platinum", [" "]],
|
199
|
+
'XTS' => ["Codes Specifically Reserved For Testing Purposes", [" "]],
|
200
|
+
'XXX' => ["The Codes Assigned For Transactions Where No Currency Is Involved Are:", [" "]],
|
190
201
|
'YER' => ["Yemeni Rial", ["Yemen"]],
|
191
202
|
'ZAR' => ["Rand", ["Lesotho", "Namibia", "South Africa"]],
|
192
203
|
'ZMK' => ["Zambian Kwacha", ["Zambia"]],
|
193
|
-
'ZWL' => ["Zimbabwe Dollar", ["Zimbabwe"]]
|
194
|
-
|
204
|
+
'ZWL' => ["Zimbabwe Dollar", ["Zimbabwe"]],
|
205
|
+
' ' => ["No Universal Currency", ["Antarctica", " "]]
|
206
|
+
}.freeze
|
195
207
|
|
196
|
-
|
197
|
-
|
208
|
+
end # module Currencies
|
209
|
+
end # module ExchangeRatesGenerator
|
@@ -1,9 +1,13 @@
|
|
1
1
|
module ExchangeRatesGenerator
|
2
2
|
module Formatters
|
3
3
|
def self.get(formatter_name)
|
4
|
-
|
4
|
+
begin
|
5
|
+
ExchangeRatesGenerator::Formatters.const_get( formatter_name.to_s.demodulize.camelize )
|
6
|
+
rescue NameError => e
|
7
|
+
nil
|
8
|
+
end
|
5
9
|
end
|
6
|
-
|
10
|
+
|
7
11
|
class Base
|
8
12
|
attr_reader :currency, :rates
|
9
13
|
|
@@ -35,7 +39,7 @@ module ExchangeRatesGenerator
|
|
35
39
|
protected
|
36
40
|
|
37
41
|
def formatter_classname
|
38
|
-
@formatter_classname ||=
|
42
|
+
@formatter_classname ||= @currency.to_s.camelize
|
39
43
|
end
|
40
44
|
end # class Base
|
41
45
|
end # module Formatters
|
@@ -26,11 +26,12 @@ module ExchangeRatesGenerator
|
|
26
26
|
protected
|
27
27
|
|
28
28
|
def formatter_classname
|
29
|
-
@formatter_classname ||=
|
29
|
+
@formatter_classname ||= @currency.to_s.underscore
|
30
30
|
end
|
31
31
|
|
32
32
|
def header
|
33
33
|
<<-EOS
|
34
|
+
// -*- encoding : utf-8 -*-
|
34
35
|
//
|
35
36
|
// THIS FILE IS AUTOMATICALLY GENERATED USING THE exchange-rates-generator RUBY GEM DO NOT EDIT IT.
|
36
37
|
//
|
@@ -1,7 +1,11 @@
|
|
1
1
|
module ExchangeRatesGenerator
|
2
2
|
module Sources
|
3
3
|
def self.get(source_name)
|
4
|
-
|
4
|
+
begin
|
5
|
+
ExchangeRatesGenerator::Sources.const_get( source_name.to_s.demodulize.camelize )
|
6
|
+
rescue NameError => e
|
7
|
+
nil
|
8
|
+
end
|
5
9
|
end
|
6
10
|
|
7
11
|
class Base
|
@@ -1,15 +1,16 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__)
|
2
|
-
require
|
1
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper.rb')
|
2
|
+
require "exchange-rates-generator"
|
3
|
+
require 'exchange-rates-generator/cli'
|
3
4
|
|
4
|
-
describe
|
5
|
+
describe ExchangeRatesGenerator::CLI, "execute" do
|
5
6
|
before(:each) do
|
6
7
|
@stdout_io = StringIO.new
|
7
|
-
|
8
|
+
ExchangeRatesGenerator::CLI.execute(@stdout_io, [])
|
8
9
|
@stdout_io.rewind
|
9
10
|
@stdout = @stdout_io.read
|
10
11
|
end
|
11
12
|
|
12
13
|
it "should print default output" do
|
13
|
-
@stdout.should =~ /
|
14
|
+
@stdout.should =~ /This application can generate helpful classes that can do currency exchange from a single target currency to numerous others./
|
14
15
|
end
|
15
16
|
end
|
data/spec/spec.opts
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
gem 'rspec'
|
6
|
-
require 'spec'
|
7
|
-
end
|
1
|
+
require "bundler"
|
2
|
+
Bundler.setup
|
3
|
+
|
4
|
+
require "rspec"
|
8
5
|
|
9
6
|
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
10
7
|
require 'exchange-rates-generator'
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
end
|
data/tasks/currency_codes.rake
CHANGED
@@ -1,10 +1,5 @@
|
|
1
|
-
|
2
|
-
require '
|
3
|
-
require 'activesupport' # <= Just for mb_chars (multibyte) support
|
4
|
-
require 'ruby-debug'
|
5
|
-
|
6
|
-
$KCODE = 'u'
|
7
|
-
require 'jcode'
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require 'exchange-rates-generator'
|
8
3
|
|
9
4
|
namespace :currency do
|
10
5
|
desc "Generate a new currency codes cache"
|
@@ -42,14 +37,14 @@ namespace :currency do
|
|
42
37
|
name = parse_field(name)
|
43
38
|
|
44
39
|
unless (entity.blank? || code.blank?)
|
45
|
-
entity =
|
40
|
+
entity = entity.humanize.gsub(/\b('?[a-z])/) { $1.capitalize }
|
46
41
|
|
47
42
|
# Handle multiple currency codes per entity (e.g. US Dollar, US Dollar (Same day), and US Dollar (Next day))
|
48
43
|
codes = code.split(/\n+/)
|
49
44
|
names = name.split(/\n+/)
|
50
45
|
|
51
46
|
0.upto(codes.length - 1) do |i|
|
52
|
-
name =
|
47
|
+
name = names[i].humanize.gsub(/\b('?[a-z])/) { $1.capitalize }
|
53
48
|
currency_hash[codes[i].to_s] ||= [name, []]
|
54
49
|
currency_hash[codes[i].to_s][1] << entity
|
55
50
|
end
|
@@ -69,34 +64,35 @@ namespace :currency do
|
|
69
64
|
end
|
70
65
|
|
71
66
|
currencies = <<-EOS
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
67
|
+
# -*- encoding : utf-8 -*-
|
68
|
+
module ExchangeRatesGenerator
|
69
|
+
# Generated using "rake currency:generate_currency_codes" from within the exchange-rates-generator gem.
|
70
|
+
# Scraped from http://www.iso.org/iso/support/currency_codes_list-1.htm
|
71
|
+
# These are utf-8 so ensure that you correctly setup the necessary encodings in your app
|
72
|
+
module Currencies
|
73
|
+
def self.get(code)
|
74
|
+
return nil if RAW[noramalise_code(code)] == nil
|
75
|
+
name, entity = RAW[noramalise_code(code)]
|
76
|
+
Currency.new(noramalise_code(code).to_sym, name, entity)
|
77
|
+
end
|
82
78
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
79
|
+
def self.get_name(code)
|
80
|
+
return nil if RAW[noramalise_code(code)] == nil
|
81
|
+
RAW[noramalise_code(code)][0]
|
82
|
+
end
|
87
83
|
|
88
|
-
|
84
|
+
private
|
89
85
|
|
90
|
-
|
91
|
-
|
92
|
-
|
86
|
+
def self.noramalise_code(code)
|
87
|
+
code.to_s.upcase
|
88
|
+
end
|
93
89
|
|
94
|
-
|
90
|
+
RAW = {
|
95
91
|
#{currencies.collect {|c| " #{c}" }.join(",\n")}
|
96
|
-
|
92
|
+
}.freeze
|
97
93
|
|
98
|
-
|
99
|
-
|
94
|
+
end # module Currencies
|
95
|
+
end # module ExchangeRatesGenerator
|
100
96
|
EOS
|
101
97
|
|
102
98
|
output_path = File.join(File.dirname(File.dirname(__FILE__)), 'lib/exchange-rates-generator/currencies.rb')
|
@@ -112,6 +108,6 @@ namespace :currency do
|
|
112
108
|
field.css('a').unlink
|
113
109
|
|
114
110
|
# Sanitise whats left...
|
115
|
-
field.inner_html.
|
111
|
+
field.inner_html.gsub(/<br\s*\/?>/i, "\n").strip
|
116
112
|
end
|
117
113
|
end
|
data/tasks/rspec.rake
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
begin
|
2
|
-
require '
|
2
|
+
require 'rspec'
|
3
3
|
rescue LoadError
|
4
4
|
require 'rubygems' unless ENV['NO_RUBYGEMS']
|
5
|
-
require '
|
5
|
+
require 'rspec'
|
6
6
|
end
|
7
7
|
begin
|
8
|
-
require '
|
8
|
+
require 'rspec/core/rake_task'
|
9
9
|
rescue LoadError
|
10
10
|
puts <<-EOS
|
11
11
|
To use rspec for testing you must install rspec gem:
|
@@ -15,7 +15,11 @@ EOS
|
|
15
15
|
end
|
16
16
|
|
17
17
|
desc "Run the specs under spec/models"
|
18
|
-
|
19
|
-
t.
|
20
|
-
t.
|
18
|
+
RSpec::Core::RakeTask.new do |t|
|
19
|
+
# t.rspec_opts = ["-c", "-f progress", "-r ./spec/spec_helper.rb"]
|
20
|
+
t.pattern = 'spec/**/*_spec.rb'
|
21
21
|
end
|
22
|
+
|
23
|
+
RSpec::Core::RakeTask.new(:rcov) do |t|
|
24
|
+
t.rcov_opts = %q[--exclude "spec"]
|
25
|
+
end
|
metadata
CHANGED
@@ -4,161 +4,207 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
+
- 1
|
7
8
|
- 0
|
8
|
-
|
9
|
-
version: 0.0.8
|
9
|
+
version: 0.1.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
|
-
- Rolly
|
12
|
+
- Rolly Fordham
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
18
|
-
default_executable:
|
17
|
+
date: 2010-11-20 00:00:00 +13:00
|
18
|
+
default_executable: bin/generate_exchange_rates
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: patron
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
24
25
|
requirements:
|
25
|
-
- -
|
26
|
+
- - ~>
|
26
27
|
- !ruby/object:Gem::Version
|
27
28
|
segments:
|
28
29
|
- 0
|
29
30
|
- 4
|
30
|
-
|
31
|
+
- 10
|
32
|
+
version: 0.4.10
|
31
33
|
type: :runtime
|
32
34
|
version_requirements: *id001
|
33
35
|
- !ruby/object:Gem::Dependency
|
34
36
|
name: nokogiri
|
35
37
|
prerelease: false
|
36
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
37
40
|
requirements:
|
38
|
-
- -
|
41
|
+
- - ~>
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
segments:
|
41
44
|
- 1
|
42
45
|
- 4
|
43
|
-
|
46
|
+
- 4
|
47
|
+
version: 1.4.4
|
44
48
|
type: :runtime
|
45
49
|
version_requirements: *id002
|
46
50
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
51
|
+
name: money
|
48
52
|
prerelease: false
|
49
53
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
50
55
|
requirements:
|
51
|
-
- -
|
56
|
+
- - ~>
|
52
57
|
- !ruby/object:Gem::Version
|
53
58
|
segments:
|
54
|
-
-
|
55
|
-
-
|
56
|
-
|
59
|
+
- 3
|
60
|
+
- 1
|
61
|
+
- 5
|
62
|
+
version: 3.1.5
|
57
63
|
type: :runtime
|
58
64
|
version_requirements: *id003
|
59
65
|
- !ruby/object:Gem::Dependency
|
60
|
-
name:
|
66
|
+
name: i18n
|
61
67
|
prerelease: false
|
62
68
|
requirement: &id004 !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
63
70
|
requirements:
|
64
|
-
- -
|
71
|
+
- - ~>
|
65
72
|
- !ruby/object:Gem::Version
|
66
73
|
segments:
|
67
|
-
- 2
|
68
|
-
- 2
|
69
74
|
- 0
|
70
|
-
|
75
|
+
- 4
|
76
|
+
- 2
|
77
|
+
version: 0.4.2
|
71
78
|
type: :runtime
|
72
79
|
version_requirements: *id004
|
73
80
|
- !ruby/object:Gem::Dependency
|
74
|
-
name:
|
81
|
+
name: activesupport
|
75
82
|
prerelease: false
|
76
83
|
requirement: &id005 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
77
85
|
requirements:
|
78
|
-
- -
|
86
|
+
- - ~>
|
79
87
|
- !ruby/object:Gem::Version
|
80
88
|
segments:
|
81
|
-
-
|
89
|
+
- 3
|
82
90
|
- 0
|
83
|
-
-
|
84
|
-
version:
|
85
|
-
type: :
|
91
|
+
- 3
|
92
|
+
version: 3.0.3
|
93
|
+
type: :runtime
|
86
94
|
version_requirements: *id005
|
87
95
|
- !ruby/object:Gem::Dependency
|
88
|
-
name:
|
96
|
+
name: bundler
|
89
97
|
prerelease: false
|
90
98
|
requirement: &id006 !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
91
100
|
requirements:
|
92
101
|
- - ">="
|
93
102
|
- !ruby/object:Gem::Version
|
94
103
|
segments:
|
104
|
+
- 1
|
95
105
|
- 0
|
96
|
-
-
|
97
|
-
|
98
|
-
version: 0.5.0
|
106
|
+
- 7
|
107
|
+
version: 1.0.7
|
99
108
|
type: :development
|
100
109
|
version_requirements: *id006
|
101
110
|
- !ruby/object:Gem::Dependency
|
102
|
-
name:
|
111
|
+
name: rake
|
103
112
|
prerelease: false
|
104
113
|
requirement: &id007 !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
105
115
|
requirements:
|
106
116
|
- - ">="
|
107
117
|
- !ruby/object:Gem::Version
|
108
118
|
segments:
|
109
|
-
- 2
|
110
|
-
- 5
|
111
119
|
- 0
|
112
|
-
version:
|
120
|
+
version: "0"
|
113
121
|
type: :development
|
114
122
|
version_requirements: *id007
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: rspec
|
125
|
+
prerelease: false
|
126
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - "="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
segments:
|
132
|
+
- 2
|
133
|
+
- 1
|
134
|
+
- 0
|
135
|
+
version: 2.1.0
|
136
|
+
type: :development
|
137
|
+
version_requirements: *id008
|
138
|
+
- !ruby/object:Gem::Dependency
|
139
|
+
name: yard
|
140
|
+
prerelease: false
|
141
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
142
|
+
none: false
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
segments:
|
147
|
+
- 0
|
148
|
+
version: "0"
|
149
|
+
type: :development
|
150
|
+
version_requirements: *id009
|
151
|
+
- !ruby/object:Gem::Dependency
|
152
|
+
name: rcov
|
153
|
+
prerelease: false
|
154
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
155
|
+
none: false
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
segments:
|
160
|
+
- 0
|
161
|
+
version: "0"
|
162
|
+
type: :development
|
163
|
+
version_requirements: *id010
|
164
|
+
description: Generates a classes (or class like things) that can translate currency values in a specific currency to a number of other currencies. Other currency sources and new formats can be added.
|
119
165
|
email:
|
120
166
|
- rolly@luma.co.nz
|
121
167
|
executables:
|
122
168
|
- generate_exchange_rates
|
123
169
|
extensions: []
|
124
170
|
|
125
|
-
extra_rdoc_files:
|
126
|
-
|
127
|
-
- Manifest.txt
|
171
|
+
extra_rdoc_files: []
|
172
|
+
|
128
173
|
files:
|
129
|
-
-
|
130
|
-
-
|
174
|
+
- Gemfile
|
175
|
+
- Gemfile.lock
|
131
176
|
- README.rdoc
|
132
177
|
- Rakefile
|
133
178
|
- bin/generate_exchange_rates
|
179
|
+
- exchange-rates-generator.gemspec
|
134
180
|
- lib/exchange-rates-generator.rb
|
135
|
-
- lib/exchange-rates-generator/
|
136
|
-
- lib/exchange-rates-generator/currency.rb
|
181
|
+
- lib/exchange-rates-generator/cli.rb
|
137
182
|
- lib/exchange-rates-generator/currencies.rb
|
183
|
+
- lib/exchange-rates-generator/currency.rb
|
184
|
+
- lib/exchange-rates-generator/errors.rb
|
138
185
|
- lib/exchange-rates-generator/formatters/base.rb
|
139
|
-
- lib/exchange-rates-generator/formatters/ruby.rb
|
140
186
|
- lib/exchange-rates-generator/formatters/javascript.rb
|
187
|
+
- lib/exchange-rates-generator/formatters/ruby.rb
|
141
188
|
- lib/exchange-rates-generator/sources/base.rb
|
142
189
|
- lib/exchange-rates-generator/sources/ecb.rb
|
143
|
-
- lib/
|
190
|
+
- lib/exchange-rates-generator/version.rb
|
144
191
|
- spec/exchange-rates-generator_spec.rb
|
145
192
|
- spec/generate_exchange_rates_cli_spec.rb
|
146
193
|
- spec/spec.opts
|
147
194
|
- spec/spec_helper.rb
|
148
|
-
- tasks/rspec.rake
|
149
|
-
- tasks/yard.rake
|
150
195
|
- tasks/currency_codes.rake
|
196
|
+
- tasks/rspec.rake
|
151
197
|
has_rdoc: true
|
152
|
-
homepage:
|
198
|
+
homepage: ""
|
153
199
|
licenses: []
|
154
200
|
|
155
201
|
post_install_message:
|
156
|
-
rdoc_options:
|
157
|
-
|
158
|
-
- README.rdoc
|
202
|
+
rdoc_options: []
|
203
|
+
|
159
204
|
require_paths:
|
160
205
|
- lib
|
161
206
|
required_ruby_version: !ruby/object:Gem::Requirement
|
207
|
+
none: false
|
162
208
|
requirements:
|
163
209
|
- - ">="
|
164
210
|
- !ruby/object:Gem::Version
|
@@ -166,6 +212,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
166
212
|
- 0
|
167
213
|
version: "0"
|
168
214
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
215
|
+
none: false
|
169
216
|
requirements:
|
170
217
|
- - ">="
|
171
218
|
- !ruby/object:Gem::Version
|
@@ -175,9 +222,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
222
|
requirements: []
|
176
223
|
|
177
224
|
rubyforge_project: exchange-rates-generator
|
178
|
-
rubygems_version: 1.3.
|
225
|
+
rubygems_version: 1.3.7
|
179
226
|
signing_key:
|
180
227
|
specification_version: 3
|
181
|
-
summary: Generates a classes (or class like things) that can translate currency values in a specific currency to a number of other currencies
|
182
|
-
test_files:
|
183
|
-
|
228
|
+
summary: Generates a classes (or class like things) that can translate currency values in a specific currency to a number of other currencies.
|
229
|
+
test_files:
|
230
|
+
- spec/exchange-rates-generator_spec.rb
|
231
|
+
- spec/generate_exchange_rates_cli_spec.rb
|
232
|
+
- spec/spec.opts
|
233
|
+
- spec/spec_helper.rb
|
data/History.txt
DELETED
data/Manifest.txt
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
History.txt
|
2
|
-
Manifest.txt
|
3
|
-
README.rdoc
|
4
|
-
Rakefile
|
5
|
-
bin/generate_exchange_rates
|
6
|
-
lib/exchange-rates-generator.rb
|
7
|
-
lib/exchange-rates-generator/errors.rb
|
8
|
-
lib/exchange-rates-generator/currency.rb
|
9
|
-
lib/exchange-rates-generator/currencies.rb
|
10
|
-
lib/exchange-rates-generator/formatters/base.rb
|
11
|
-
lib/exchange-rates-generator/formatters/ruby.rb
|
12
|
-
lib/exchange-rates-generator/formatters/javascript.rb
|
13
|
-
lib/exchange-rates-generator/sources/base.rb
|
14
|
-
lib/exchange-rates-generator/sources/ecb.rb
|
15
|
-
lib/generate_exchange_rates/cli.rb
|
16
|
-
spec/exchange-rates-generator_spec.rb
|
17
|
-
spec/generate_exchange_rates_cli_spec.rb
|
18
|
-
spec/spec.opts
|
19
|
-
spec/spec_helper.rb
|
20
|
-
tasks/rspec.rake
|
21
|
-
tasks/yard.rake
|
22
|
-
tasks/currency_codes.rake
|
data/tasks/yard.rake
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require 'yard'
|
3
|
-
|
4
|
-
YARD::Rake::YardocTask.new do |t|
|
5
|
-
t.files = ['lib/**/*.rb']
|
6
|
-
t.options = [
|
7
|
-
'--protected',
|
8
|
-
'--files', 'History.txt',
|
9
|
-
'--title', 'Generate Exchange Rates',
|
10
|
-
'-r', File.dirname(File.dirname(__FILE__)) / 'README.rdoc',
|
11
|
-
'--quiet'
|
12
|
-
]
|
13
|
-
end
|
14
|
-
|
15
|
-
rescue LoadError
|
16
|
-
task :yard do
|
17
|
-
abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
|
18
|
-
end
|
19
|
-
end
|