danwrong-iso_codes 0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ v0.1 Initial release
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2009 Massive Robot Ltd.
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,17 @@
1
+ CHANGELOG
2
+ lib/iso_codes/base.rb
3
+ lib/iso_codes/country.rb
4
+ lib/iso_codes/currency.rb
5
+ lib/iso_codes/data/countries.rb
6
+ lib/iso_codes/data/currencies.rb
7
+ lib/iso_codes/data/languages.rb
8
+ lib/iso_codes/language.rb
9
+ lib/iso_codes.rb
10
+ LICENSE
11
+ Manifest
12
+ Rakefile
13
+ README
14
+ test/country_test.rb
15
+ test/currency_test.rb
16
+ test/language_test.rb
17
+ test/test_helper.rb
data/README ADDED
@@ -0,0 +1,28 @@
1
+ ISO Codes
2
+ ---------
3
+
4
+ Dan Webb (dan@massiverobot.co.uk)
5
+
6
+ Small and simple Ruby gem that allows you to look up and list ISO codes for
7
+ countries, languages and currencies.
8
+
9
+ Each part of the library is lazily loaded so you only load the data you use.
10
+ If you'd like to add any other useful ISO code lookups then feel free to fork.
11
+
12
+ Source data from: http://www.commondatahub.com/ and will be kept up to date
13
+ periodically.
14
+
15
+ Usage
16
+ -----
17
+
18
+ require 'rubygems'
19
+ require 'iso_codes'
20
+
21
+ Language.all #=> An array of all language objects (for filling form selects etc)
22
+ Language.find_by_a2('en') #=> find the language with the 2 character code 'en'
23
+
24
+ Country.find_all_by_region('Europe') #=> returns all countries in Europe
25
+
26
+ Currency.find_by_country('GB') #=> returns Currency representing GBP
27
+
28
+ For more info check the tests.
@@ -0,0 +1,96 @@
1
+ require 'echoe'
2
+ require 'fastercsv'
3
+
4
+ Echoe.new("iso_codes") do |p|
5
+ p.author = "Dan Webb"
6
+ p.email = 'dan@danwebb.net'
7
+ p.summary = "Gem for finding and listing ISO codes for countries, currencies and languages"
8
+ p.url = "http://github.com/danwrong/iso_codes/"
9
+ p.retain_gemspec = true
10
+ p.development_dependencies = ['shoulda', 'fastercsv']
11
+ p.ignore_pattern = 'csv/*'
12
+ end
13
+
14
+ namespace :import do
15
+
16
+ desc 'Import data for countries'
17
+ task :countries do
18
+ countries = []
19
+ FasterCSV.foreach('csv/countries.csv') do |row|
20
+ countries << {
21
+ :name => row[0],
22
+ :a2 => row[1],
23
+ :a3 => row[2],
24
+ :numeric => row[3],
25
+ :region => row[4],
26
+ :subregion => row[5]
27
+ }
28
+ end
29
+
30
+ File.open('lib/iso_codes/data/countries.rb', 'w') do |f|
31
+ f.write("module ISOCodes\n module Data\n Countries = [\n")
32
+ countries.each do |c|
33
+ f.write(" #{c.inspect}")
34
+ f.write(",\n") unless c == countries.last
35
+ end
36
+ f.write("]\n end\nend")
37
+ end
38
+ end
39
+
40
+ def search(array, key, value)
41
+ array.each do |item|
42
+ return item if item[key] == value
43
+ end
44
+ nil
45
+ end
46
+
47
+ desc 'Import data for currencies'
48
+ task :currencies do
49
+ require 'time'
50
+
51
+ currencies = []
52
+ FasterCSV.foreach('csv/currencies.csv') do |row|
53
+ if row.last.nil? || Time.parse(row.last) > Time.now
54
+ if item = search(currencies, :code, row[2])
55
+ item[:country_a2] << row[1]
56
+ else
57
+ currencies << {
58
+ :name => row[0],
59
+ :country_a2 => [row[1]],
60
+ :code => row[2],
61
+ :numeric => row[3]
62
+ }
63
+ end
64
+ end
65
+ end
66
+
67
+ File.open('lib/iso_codes/data/currencies.rb', 'w') do |f|
68
+ f.write("module ISOCodes\n module Data\n Currencies = [\n")
69
+ currencies.each do |c|
70
+ f.write(" #{c.inspect}")
71
+ f.write(",\n") unless c == currencies.last
72
+ end
73
+ f.write("]\n end\nend")
74
+ end
75
+ end
76
+
77
+ desc 'Import data for languages'
78
+ task :languages do
79
+ languages = []
80
+ FasterCSV.foreach('csv/languages.csv') do |row|
81
+ languages << {
82
+ :name => row[0],
83
+ :a2 => row[1]
84
+ }
85
+ end
86
+
87
+ File.open('lib/iso_codes/data/languages.rb', 'w') do |f|
88
+ f.write("module ISOCodes\n module Data\n Languages = [\n")
89
+ languages.each do |c|
90
+ f.write(" #{c.inspect}")
91
+ f.write(",\n") unless c == languages.last
92
+ end
93
+ f.write("]\n end\nend")
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,37 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{iso_codes}
5
+ s.version = "0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Dan Webb"]
9
+ s.date = %q{2009-07-27}
10
+ s.description = %q{Gem for finding and listing ISO codes for countries, currencies and languages}
11
+ s.email = %q{dan@danwebb.net}
12
+ s.extra_rdoc_files = ["CHANGELOG", "lib/iso_codes/base.rb", "lib/iso_codes/country.rb", "lib/iso_codes/currency.rb", "lib/iso_codes/data/countries.rb", "lib/iso_codes/data/currencies.rb", "lib/iso_codes/data/languages.rb", "lib/iso_codes/language.rb", "lib/iso_codes.rb", "LICENSE", "README"]
13
+ s.files = ["CHANGELOG", "lib/iso_codes/base.rb", "lib/iso_codes/country.rb", "lib/iso_codes/currency.rb", "lib/iso_codes/data/countries.rb", "lib/iso_codes/data/currencies.rb", "lib/iso_codes/data/languages.rb", "lib/iso_codes/language.rb", "lib/iso_codes.rb", "LICENSE", "Manifest", "Rakefile", "README", "test/country_test.rb", "test/currency_test.rb", "test/language_test.rb", "test/test_helper.rb", "iso_codes.gemspec"]
14
+ s.homepage = %q{http://github.com/danwrong/iso_codes/}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Iso_codes", "--main", "README"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{iso_codes}
18
+ s.rubygems_version = %q{1.3.4}
19
+ s.summary = %q{Gem for finding and listing ISO codes for countries, currencies and languages}
20
+ s.test_files = ["test/country_test.rb", "test/currency_test.rb", "test/language_test.rb", "test/test_helper.rb"]
21
+
22
+ if s.respond_to? :specification_version then
23
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
+ s.specification_version = 3
25
+
26
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
28
+ s.add_development_dependency(%q<fastercsv>, [">= 0"])
29
+ else
30
+ s.add_dependency(%q<shoulda>, [">= 0"])
31
+ s.add_dependency(%q<fastercsv>, [">= 0"])
32
+ end
33
+ else
34
+ s.add_dependency(%q<shoulda>, [">= 0"])
35
+ s.add_dependency(%q<fastercsv>, [">= 0"])
36
+ end
37
+ end
@@ -0,0 +1,6 @@
1
+ module ISOCodes
2
+ autoload :Base, 'iso_codes/base'
3
+ autoload :Country, 'iso_codes/country'
4
+ autoload :Language, 'iso_codes/language'
5
+ autoload :Currency, 'iso_codes/currency'
6
+ end
@@ -0,0 +1,55 @@
1
+ module ISOCodes
2
+ class Base
3
+ class << self
4
+ def fields(*field_names)
5
+ field_names.each do |field|
6
+ attr_reader field
7
+ create_finder field
8
+ end
9
+ end
10
+
11
+ def find(field, val)
12
+ data.each do |item|
13
+ return self.new(item) if item[field.to_sym] == val
14
+ end
15
+
16
+ nil
17
+ end
18
+
19
+ def find_all(field, val)
20
+ data.collect do |item|
21
+ if item[field.to_sym] == val
22
+ self.new(item)
23
+ end
24
+ end.compact
25
+ end
26
+
27
+ def all
28
+ data.collect do |item|
29
+ self.new(item)
30
+ end
31
+ end
32
+
33
+ protected
34
+
35
+ def create_finder(field)
36
+ class_eval %{
37
+ def self.find_by_#{field}(val)
38
+ find(:#{field}, val)
39
+ end
40
+
41
+ def self.find_all_by_#{field}(val)
42
+ find_all(:#{field}, val)
43
+ end
44
+ }
45
+ end
46
+ end
47
+
48
+ def initialize(data)
49
+ data.each do |k, v|
50
+ instance_variable_set :"@#{k}", v
51
+ end
52
+ end
53
+
54
+ end
55
+ end
@@ -0,0 +1,18 @@
1
+ require 'iso_codes/data/countries'
2
+
3
+ module ISOCodes
4
+
5
+ class Country < Base
6
+ fields :name, :a2, :a3, :numeric, :region, :subregion
7
+
8
+ def self.data
9
+ Data::Countries
10
+ end
11
+
12
+ def currency
13
+ @currency ||= Currency.find_by_country(self)
14
+ end
15
+ end
16
+
17
+
18
+ end
@@ -0,0 +1,27 @@
1
+ require 'iso_codes/data/currencies'
2
+
3
+ module ISOCodes
4
+
5
+ class Currency < Base
6
+ fields :name, :code, :numeric, :country_a2
7
+
8
+ def self.data
9
+ Data::Currencies
10
+ end
11
+
12
+ def countries
13
+ country_a2.collect do |code|
14
+ Country.find_by_a2(code)
15
+ end
16
+ end
17
+
18
+ def self.find_by_country(country)
19
+ country = country.a2 if country.is_a?(Country)
20
+
21
+ data.each do |item|
22
+ return self.new(item) if item[:country_a2].include?(country)
23
+ end
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,251 @@
1
+ module ISOCodes
2
+ module Data
3
+ Countries = [
4
+ {:numeric=>"004", :region=>"Asia", :name=>"Afghanistan", :subregion=>"Southern Asia", :a2=>"AF", :a3=>"AFG"},
5
+ {:numeric=>"008", :region=>"Europe", :name=>"Albania", :subregion=>"Southern Europe", :a2=>"AL", :a3=>"ALB"},
6
+ {:numeric=>"012", :region=>"Africa", :name=>"Algeria", :subregion=>"Northern Africa", :a2=>"DZ", :a3=>"DZA"},
7
+ {:numeric=>"016", :region=>"Oceania", :name=>"American Samoa", :subregion=>"Polynesia", :a2=>"AS", :a3=>"ASM"},
8
+ {:numeric=>"020", :region=>"Europe", :name=>"Andorra", :subregion=>"Southern Europe", :a2=>"AD", :a3=>"AND"},
9
+ {:numeric=>"024", :region=>"Africa", :name=>"Angola", :subregion=>"Middle Africa", :a2=>"AO", :a3=>"AGO"},
10
+ {:numeric=>"660", :region=>"Americas", :name=>"Anguilla", :subregion=>"Caribbean", :a2=>"AI", :a3=>"AIA"},
11
+ {:numeric=>"010", :region=>nil, :name=>"Antarctica", :subregion=>nil, :a2=>"AQ", :a3=>"ATA"},
12
+ {:numeric=>"028", :region=>"Americas", :name=>"Antigua and Barbuda", :subregion=>"Caribbean", :a2=>"AG", :a3=>"ATG"},
13
+ {:numeric=>"032", :region=>"Americas", :name=>"Argentina", :subregion=>"South America", :a2=>"AR", :a3=>"ARG"},
14
+ {:numeric=>"051", :region=>"Asia", :name=>"Armenia", :subregion=>"Western Asia", :a2=>"AM", :a3=>"ARM"},
15
+ {:numeric=>"533", :region=>"Americas", :name=>"Aruba", :subregion=>"Caribbean", :a2=>"AW", :a3=>"ABW"},
16
+ {:numeric=>"036", :region=>"Oceania", :name=>"Australia", :subregion=>"Australia and New Zealand", :a2=>"AU", :a3=>"AUS"},
17
+ {:numeric=>"040", :region=>"Europe", :name=>"Austria", :subregion=>"Western Europe", :a2=>"AT", :a3=>"AUT"},
18
+ {:numeric=>"031", :region=>"Asia", :name=>"Azerbaijan", :subregion=>"Western Asia", :a2=>"AZ", :a3=>"AZE"},
19
+ {:numeric=>"044", :region=>"Americas", :name=>"Bahamas", :subregion=>"Caribbean", :a2=>"BS", :a3=>"BHS"},
20
+ {:numeric=>"048", :region=>"Asia", :name=>"Bahrain", :subregion=>"Western Asia", :a2=>"BH", :a3=>"BHR"},
21
+ {:numeric=>"050", :region=>"Asia", :name=>"Bangladesh", :subregion=>"Southern Asia", :a2=>"BD", :a3=>"BGD"},
22
+ {:numeric=>"052", :region=>"Americas", :name=>"Barbados", :subregion=>"Caribbean", :a2=>"BB", :a3=>"BRB"},
23
+ {:numeric=>"112", :region=>"Europe", :name=>"Belarus", :subregion=>"Eastern Europe", :a2=>"BY", :a3=>"BLR"},
24
+ {:numeric=>"056", :region=>"Europe", :name=>"Belgium", :subregion=>"Western Europe", :a2=>"BE", :a3=>"BEL"},
25
+ {:numeric=>"084", :region=>"Americas", :name=>"Belize", :subregion=>"Central America", :a2=>"BZ", :a3=>"BLZ"},
26
+ {:numeric=>"204", :region=>"Africa", :name=>"Benin", :subregion=>"Western Africa", :a2=>"BJ", :a3=>"BEN"},
27
+ {:numeric=>"060", :region=>"Americas", :name=>"Bermuda", :subregion=>"Northern America", :a2=>"BM", :a3=>"BMU"},
28
+ {:numeric=>"064", :region=>"Asia", :name=>"Bhutan", :subregion=>"Southern Asia", :a2=>"BT", :a3=>"BTN"},
29
+ {:numeric=>"068", :region=>"Americas", :name=>"Bolivia", :subregion=>"South America", :a2=>"BO", :a3=>"BOL"},
30
+ {:numeric=>"070", :region=>"Europe", :name=>"Bosnia and Herzegovina", :subregion=>"Southern Europe", :a2=>"BA", :a3=>"BIH"},
31
+ {:numeric=>"072", :region=>"Africa", :name=>"Botswana", :subregion=>"Southern Africa", :a2=>"BW", :a3=>"BWA"},
32
+ {:numeric=>"074", :region=>nil, :name=>"Bouvet Island", :subregion=>nil, :a2=>"BV", :a3=>"BVT"},
33
+ {:numeric=>"076", :region=>"Americas", :name=>"Brazil", :subregion=>"South America", :a2=>"BR", :a3=>"BRA"},
34
+ {:numeric=>"086", :region=>"Africa", :name=>"British Indian Ocean Territory", :subregion=>"Eastern Africa", :a2=>"IO", :a3=>"IOT"},
35
+ {:numeric=>"096", :region=>"Asia", :name=>"Brunei Darussalam", :subregion=>"South-Eastern Asia", :a2=>"BN", :a3=>"BRN"},
36
+ {:numeric=>"100", :region=>"Europe", :name=>"Bulgaria", :subregion=>"Eastern Europe", :a2=>"BG", :a3=>"BGR"},
37
+ {:numeric=>"854", :region=>"Africa", :name=>"Burkina Faso", :subregion=>"Western Africa", :a2=>"BF", :a3=>"BFA"},
38
+ {:numeric=>"108", :region=>"Africa", :name=>"Burundi", :subregion=>"Eastern Africa", :a2=>"BI", :a3=>"BDI"},
39
+ {:numeric=>"116", :region=>"Asia", :name=>"Cambodia", :subregion=>"South-Eastern Asia", :a2=>"KH", :a3=>"KHM"},
40
+ {:numeric=>"120", :region=>"Africa", :name=>"Cameroon", :subregion=>"Middle Africa", :a2=>"CM", :a3=>"CMR"},
41
+ {:numeric=>"124", :region=>"Americas", :name=>"Canada", :subregion=>"Northern America", :a2=>"CA", :a3=>"CAN"},
42
+ {:numeric=>"132", :region=>"Africa", :name=>"Cape Verde", :subregion=>"Western Africa", :a2=>"CV", :a3=>"CPV"},
43
+ {:numeric=>"136", :region=>"Americas", :name=>"Cayman Islands", :subregion=>"Caribbean", :a2=>"KY", :a3=>"CYM"},
44
+ {:numeric=>"140", :region=>"Africa", :name=>"Central African Republic", :subregion=>"Middle Africa", :a2=>"CF", :a3=>"CAF"},
45
+ {:numeric=>"148", :region=>"Africa", :name=>"Chad", :subregion=>"Middle Africa", :a2=>"TD", :a3=>"TCD"},
46
+ {:numeric=>"152", :region=>"Americas", :name=>"Chile", :subregion=>"South America", :a2=>"CL", :a3=>"CHL"},
47
+ {:numeric=>"156", :region=>"Asia", :name=>"China", :subregion=>"Eastern Asia", :a2=>"CN", :a3=>"CHN"},
48
+ {:numeric=>"162", :region=>"Oceania", :name=>"Christmas Island", :subregion=>"Australia and New Zealand", :a2=>"CX", :a3=>"CXR"},
49
+ {:numeric=>"166", :region=>"Oceania", :name=>"Cocos (Keeling) Islands", :subregion=>"Australia and New Zealand", :a2=>"CC", :a3=>"CCK"},
50
+ {:numeric=>"170", :region=>"Americas", :name=>"Colombia", :subregion=>"South America", :a2=>"CO", :a3=>"COL"},
51
+ {:numeric=>"174", :region=>"Africa", :name=>"Comoros", :subregion=>"Eastern Africa", :a2=>"KM", :a3=>"COM"},
52
+ {:numeric=>"178", :region=>"Africa", :name=>"Congo", :subregion=>"Middle Africa", :a2=>"CG", :a3=>"COG"},
53
+ {:numeric=>"180", :region=>"Africa", :name=>"Congo, The Democratic Republic Of The", :subregion=>"Middle Africa", :a2=>"CD", :a3=>"COD"},
54
+ {:numeric=>"184", :region=>"Oceania", :name=>"Cook Islands", :subregion=>"Polynesia", :a2=>"CK", :a3=>"COK"},
55
+ {:numeric=>"188", :region=>"Americas", :name=>"Costa Rica", :subregion=>"Central America", :a2=>"CR", :a3=>"CRI"},
56
+ {:numeric=>"191", :region=>"Europe", :name=>"Croatia", :subregion=>"Southern Europe", :a2=>"HR", :a3=>"HRV"},
57
+ {:numeric=>"192", :region=>"Americas", :name=>"Cuba", :subregion=>"Caribbean", :a2=>"CU", :a3=>"CUB"},
58
+ {:numeric=>"196", :region=>"Asia", :name=>"Cyprus", :subregion=>"Western Asia", :a2=>"CY", :a3=>"CYP"},
59
+ {:numeric=>"203", :region=>"Europe", :name=>"Czech Republic", :subregion=>"Eastern Europe", :a2=>"CZ", :a3=>"CZE"},
60
+ {:numeric=>"384", :region=>"Africa", :name=>"C\303\264te D'Ivoire", :subregion=>"Western Africa", :a2=>"CI", :a3=>"CIV"},
61
+ {:numeric=>"208", :region=>"Europe", :name=>"Denmark", :subregion=>"Northern Europe", :a2=>"DK", :a3=>"DNK"},
62
+ {:numeric=>"262", :region=>"Africa", :name=>"Djibouti", :subregion=>"Eastern Africa", :a2=>"DJ", :a3=>"DJI"},
63
+ {:numeric=>"212", :region=>"Americas", :name=>"Dominica", :subregion=>"Caribbean", :a2=>"DM", :a3=>"DMA"},
64
+ {:numeric=>"214", :region=>"Americas", :name=>"Dominican Republic", :subregion=>"Caribbean", :a2=>"DO", :a3=>"DOM"},
65
+ {:numeric=>"218", :region=>"Americas", :name=>"Ecuador", :subregion=>"South America", :a2=>"EC", :a3=>"ECU"},
66
+ {:numeric=>"818", :region=>"Africa", :name=>"Egypt", :subregion=>"Northern Africa", :a2=>"EG", :a3=>"EGY"},
67
+ {:numeric=>"222", :region=>"Americas", :name=>"El Salvador", :subregion=>"Central America", :a2=>"SV", :a3=>"SLV"},
68
+ {:numeric=>"226", :region=>"Africa", :name=>"Equatorial Guinea", :subregion=>"Middle Africa", :a2=>"GQ", :a3=>"GNQ"},
69
+ {:numeric=>"232", :region=>"Africa", :name=>"Eritrea", :subregion=>"Eastern Africa", :a2=>"ER", :a3=>"ERI"},
70
+ {:numeric=>"233", :region=>"Europe", :name=>"Estonia", :subregion=>"Northern Europe", :a2=>"EE", :a3=>"EST"},
71
+ {:numeric=>"231", :region=>"Africa", :name=>"Ethiopia", :subregion=>"Eastern Africa", :a2=>"ET", :a3=>"ETH"},
72
+ {:numeric=>"238", :region=>"Americas", :name=>"Falkland Islands (Malvinas)", :subregion=>"South America", :a2=>"FK", :a3=>"FLK"},
73
+ {:numeric=>"234", :region=>"Europe", :name=>"Faroe Islands", :subregion=>"Northern Europe", :a2=>"FO", :a3=>"FRO"},
74
+ {:numeric=>"242", :region=>"Oceania", :name=>"Fiji", :subregion=>"Melanesia", :a2=>"FJ", :a3=>"FJI"},
75
+ {:numeric=>"246", :region=>"Europe", :name=>"Finland", :subregion=>"Northern Europe", :a2=>"FI", :a3=>"FIN"},
76
+ {:numeric=>"250", :region=>"Europe", :name=>"France", :subregion=>"Western Europe", :a2=>"FR", :a3=>"FRA"},
77
+ {:numeric=>"254", :region=>"Americas", :name=>"French Guiana", :subregion=>"South America", :a2=>"GF", :a3=>"GUF"},
78
+ {:numeric=>"258", :region=>"Oceania", :name=>"French Polynesia", :subregion=>"Polynesia", :a2=>"PF", :a3=>"PYF"},
79
+ {:numeric=>"260", :region=>nil, :name=>"French Southern Territories", :subregion=>nil, :a2=>"TF", :a3=>"ATF"},
80
+ {:numeric=>"266", :region=>"Africa", :name=>"Gabon", :subregion=>"Middle Africa", :a2=>"GA", :a3=>"GAB"},
81
+ {:numeric=>"270", :region=>"Africa", :name=>"Gambia", :subregion=>"Western Africa", :a2=>"GM", :a3=>"GMB"},
82
+ {:numeric=>"268", :region=>"Asia", :name=>"Georgia", :subregion=>"Western Asia", :a2=>"GE", :a3=>"GEO"},
83
+ {:numeric=>"276", :region=>"Europe", :name=>"Germany", :subregion=>"Western Europe", :a2=>"DE", :a3=>"DEU"},
84
+ {:numeric=>"288", :region=>"Africa", :name=>"Ghana", :subregion=>"Western Africa", :a2=>"GH", :a3=>"GHA"},
85
+ {:numeric=>"292", :region=>"Europe", :name=>"Gibraltar", :subregion=>"Southern Europe", :a2=>"GI", :a3=>"GIB"},
86
+ {:numeric=>"300", :region=>"Europe", :name=>"Greece", :subregion=>"Southern Europe", :a2=>"GR", :a3=>"GRC"},
87
+ {:numeric=>"304", :region=>"Americas", :name=>"Greenland", :subregion=>"Northern America", :a2=>"GL", :a3=>"GRL"},
88
+ {:numeric=>"308", :region=>"Americas", :name=>"Grenada", :subregion=>"Caribbean", :a2=>"GD", :a3=>"GRD"},
89
+ {:numeric=>"312", :region=>"Americas", :name=>"Guadeloupe", :subregion=>"Caribbean", :a2=>"GP", :a3=>"GLP"},
90
+ {:numeric=>"316", :region=>"Oceania", :name=>"Guam", :subregion=>"Micronesia", :a2=>"GU", :a3=>"GUM"},
91
+ {:numeric=>"320", :region=>"Americas", :name=>"Guatemala", :subregion=>"Central America", :a2=>"GT", :a3=>"GTM"},
92
+ {:numeric=>"831", :region=>"Europe", :name=>"Guernsey", :subregion=>"Northern Europe", :a2=>"GG", :a3=>"GGY"},
93
+ {:numeric=>"324", :region=>"Africa", :name=>"Guinea", :subregion=>"Western Africa", :a2=>"GN", :a3=>"GIN"},
94
+ {:numeric=>"624", :region=>"Africa", :name=>"Guinea-Bissau", :subregion=>"Western Africa", :a2=>"GW", :a3=>"GNB"},
95
+ {:numeric=>"328", :region=>"Americas", :name=>"Guyana", :subregion=>"South America", :a2=>"GY", :a3=>"GUY"},
96
+ {:numeric=>"332", :region=>"Americas", :name=>"Haiti", :subregion=>"Caribbean", :a2=>"HT", :a3=>"HTI"},
97
+ {:numeric=>"334", :region=>nil, :name=>"Heard and McDonald Islands", :subregion=>nil, :a2=>"HM", :a3=>"HMD"},
98
+ {:numeric=>"336", :region=>"Europe", :name=>"Holy See (Vatican City State)", :subregion=>"Southern Europe", :a2=>"VA", :a3=>"VAT"},
99
+ {:numeric=>"340", :region=>"Americas", :name=>"Honduras", :subregion=>"Central America", :a2=>"HN", :a3=>"HND"},
100
+ {:numeric=>"344", :region=>"Asia", :name=>"Hong Kong", :subregion=>"Eastern Asia", :a2=>"HK", :a3=>"HKG"},
101
+ {:numeric=>"348", :region=>"Europe", :name=>"Hungary", :subregion=>"Eastern Europe", :a2=>"HU", :a3=>"HUN"},
102
+ {:numeric=>"352", :region=>"Europe", :name=>"Iceland", :subregion=>"Northern Europe", :a2=>"IS", :a3=>"ISL"},
103
+ {:numeric=>"356", :region=>"Asia", :name=>"India", :subregion=>"Southern Asia", :a2=>"IN", :a3=>"IND"},
104
+ {:numeric=>"360", :region=>"Asia", :name=>"Indonesia", :subregion=>"South-Eastern Asia", :a2=>"ID", :a3=>"IDN"},
105
+ {:numeric=>"364", :region=>"Asia", :name=>"Iran, Islamic Republic Of", :subregion=>"Southern Asia", :a2=>"IR", :a3=>"IRN"},
106
+ {:numeric=>"368", :region=>"Asia", :name=>"Iraq", :subregion=>"Western Asia", :a2=>"IQ", :a3=>"IRQ"},
107
+ {:numeric=>"372", :region=>"Europe", :name=>"Ireland", :subregion=>"Northern Europe", :a2=>"IE", :a3=>"IRL"},
108
+ {:numeric=>"833", :region=>"Europe", :name=>"Isle of Man", :subregion=>"Northern Europe", :a2=>"IM", :a3=>"IMN"},
109
+ {:numeric=>"376", :region=>"Asia", :name=>"Israel", :subregion=>"Western Asia", :a2=>"IL", :a3=>"ISR"},
110
+ {:numeric=>"380", :region=>"Europe", :name=>"Italy", :subregion=>"Southern Europe", :a2=>"IT", :a3=>"ITA"},
111
+ {:numeric=>"388", :region=>"Americas", :name=>"Jamaica", :subregion=>"Caribbean", :a2=>"JM", :a3=>"JAM"},
112
+ {:numeric=>"392", :region=>"Asia", :name=>"Japan", :subregion=>"Eastern Asia", :a2=>"JP", :a3=>"JPN"},
113
+ {:numeric=>"832", :region=>"Europe", :name=>"Jersey", :subregion=>"Northern Europe", :a2=>"JE", :a3=>"JEY"},
114
+ {:numeric=>"400", :region=>"Asia", :name=>"Jordan", :subregion=>"Western Asia", :a2=>"JO", :a3=>"JOR"},
115
+ {:numeric=>"398", :region=>"Asia", :name=>"Kazakhstan", :subregion=>"Central Asia", :a2=>"KZ", :a3=>"KAZ"},
116
+ {:numeric=>"404", :region=>"Africa", :name=>"Kenya", :subregion=>"Eastern Africa", :a2=>"KE", :a3=>"KEN"},
117
+ {:numeric=>"296", :region=>"Oceania", :name=>"Kiribati", :subregion=>"Micronesia", :a2=>"KI", :a3=>"KIR"},
118
+ {:numeric=>"408", :region=>"Asia", :name=>"Korea, Democratic People's Republic Of", :subregion=>"Eastern Asia", :a2=>"KP", :a3=>"PRK"},
119
+ {:numeric=>"410", :region=>"Asia", :name=>"Korea, Republic of", :subregion=>"Eastern Asia", :a2=>"KR", :a3=>"KOR"},
120
+ {:numeric=>"414", :region=>"Asia", :name=>"Kuwait", :subregion=>"Western Asia", :a2=>"KW", :a3=>"KWT"},
121
+ {:numeric=>"417", :region=>"Asia", :name=>"Kyrgyzstan", :subregion=>"Central Asia", :a2=>"KG", :a3=>"KGZ"},
122
+ {:numeric=>"418", :region=>"Asia", :name=>"Lao People's Democratic Republic", :subregion=>"South-Eastern Asia", :a2=>"LA", :a3=>"LAO"},
123
+ {:numeric=>"428", :region=>"Europe", :name=>"Latvia", :subregion=>"Northern Europe", :a2=>"LV", :a3=>"LVA"},
124
+ {:numeric=>"422", :region=>"Asia", :name=>"Lebanon", :subregion=>"Western Asia", :a2=>"LB", :a3=>"LBN"},
125
+ {:numeric=>"426", :region=>"Africa", :name=>"Lesotho", :subregion=>"Southern Africa", :a2=>"LS", :a3=>"LSO"},
126
+ {:numeric=>"430", :region=>"Africa", :name=>"Liberia", :subregion=>"Western Africa", :a2=>"LR", :a3=>"LBR"},
127
+ {:numeric=>"434", :region=>"Africa", :name=>"Libyan Arab Jamahiriya", :subregion=>"Northern Africa", :a2=>"LY", :a3=>"LBY"},
128
+ {:numeric=>"438", :region=>"Europe", :name=>"Liechtenstein", :subregion=>"Western Europe", :a2=>"LI", :a3=>"LIE"},
129
+ {:numeric=>"440", :region=>"Europe", :name=>"Lithuania", :subregion=>"Northern Europe", :a2=>"LT", :a3=>"LTU"},
130
+ {:numeric=>"442", :region=>"Europe", :name=>"Luxembourg", :subregion=>"Western Europe", :a2=>"LU", :a3=>"LUX"},
131
+ {:numeric=>"446", :region=>"Asia", :name=>"Macao", :subregion=>"Eastern Asia", :a2=>"MO", :a3=>"MAC"},
132
+ {:numeric=>"807", :region=>"Europe", :name=>"Macedonia, the Former Yugoslav Republic Of", :subregion=>"Southern Europe", :a2=>"MK", :a3=>"MKD"},
133
+ {:numeric=>"450", :region=>"Africa", :name=>"Madagascar", :subregion=>"Eastern Africa", :a2=>"MG", :a3=>"MDG"},
134
+ {:numeric=>"454", :region=>"Africa", :name=>"Malawi", :subregion=>"Eastern Africa", :a2=>"MW", :a3=>"MWI"},
135
+ {:numeric=>"458", :region=>"Asia", :name=>"Malaysia", :subregion=>"South-Eastern Asia", :a2=>"MY", :a3=>"MYS"},
136
+ {:numeric=>"462", :region=>"Asia", :name=>"Maldives", :subregion=>"Southern Asia", :a2=>"MV", :a3=>"MDV"},
137
+ {:numeric=>"466", :region=>"Africa", :name=>"Mali", :subregion=>"Western Africa", :a2=>"ML", :a3=>"MLI"},
138
+ {:numeric=>"470", :region=>"Europe", :name=>"Malta", :subregion=>"Southern Europe", :a2=>"MT", :a3=>"MLT"},
139
+ {:numeric=>"584", :region=>"Oceania", :name=>"Marshall Islands", :subregion=>"Micronesia", :a2=>"MH", :a3=>"MHL"},
140
+ {:numeric=>"474", :region=>"Americas", :name=>"Martinique", :subregion=>"Caribbean", :a2=>"MQ", :a3=>"MTQ"},
141
+ {:numeric=>"478", :region=>"Africa", :name=>"Mauritania", :subregion=>"Western Africa", :a2=>"MR", :a3=>"MRT"},
142
+ {:numeric=>"480", :region=>"Africa", :name=>"Mauritius", :subregion=>"Eastern Africa", :a2=>"MU", :a3=>"MUS"},
143
+ {:numeric=>"175", :region=>"Africa", :name=>"Mayotte", :subregion=>"Eastern Africa", :a2=>"YT", :a3=>"MYT"},
144
+ {:numeric=>"484", :region=>"Americas", :name=>"Mexico", :subregion=>"Central America", :a2=>"MX", :a3=>"MEX"},
145
+ {:numeric=>"583", :region=>"Oceania", :name=>"Micronesia, Federated States Of", :subregion=>"Micronesia", :a2=>"FM", :a3=>"FSM"},
146
+ {:numeric=>"498", :region=>"Europe", :name=>"Moldova, Republic of", :subregion=>"Eastern Europe", :a2=>"MD", :a3=>"MDA"},
147
+ {:numeric=>"492", :region=>"Europe", :name=>"Monaco", :subregion=>"Western Europe", :a2=>"MC", :a3=>"MCO"},
148
+ {:numeric=>"496", :region=>"Asia", :name=>"Mongolia", :subregion=>"Eastern Asia", :a2=>"MN", :a3=>"MNG"},
149
+ {:numeric=>"499", :region=>"Europe", :name=>"Montenegro", :subregion=>"Southern Europe", :a2=>"ME", :a3=>"MNE"},
150
+ {:numeric=>"500", :region=>"Americas", :name=>"Montserrat", :subregion=>"Caribbean", :a2=>"MS", :a3=>"MSR"},
151
+ {:numeric=>"504", :region=>"Africa", :name=>"Morocco", :subregion=>"Northern Africa", :a2=>"MA", :a3=>"MAR"},
152
+ {:numeric=>"508", :region=>"Africa", :name=>"Mozambique", :subregion=>"Eastern Africa", :a2=>"MZ", :a3=>"MOZ"},
153
+ {:numeric=>"104", :region=>"Asia", :name=>"Myanmar", :subregion=>"South-Eastern Asia", :a2=>"MM", :a3=>"MMR"},
154
+ {:numeric=>"516", :region=>"Africa", :name=>"Namibia", :subregion=>"Southern Africa", :a2=>"NA", :a3=>"NAM"},
155
+ {:numeric=>"520", :region=>"Oceania", :name=>"Nauru", :subregion=>"Micronesia", :a2=>"NR", :a3=>"NRU"},
156
+ {:numeric=>"524", :region=>"Asia", :name=>"Nepal", :subregion=>"Southern Asia", :a2=>"NP", :a3=>"NPL"},
157
+ {:numeric=>"528", :region=>"Europe", :name=>"Netherlands", :subregion=>"Western Europe", :a2=>"NL", :a3=>"NLD"},
158
+ {:numeric=>"530", :region=>"Americas", :name=>"Netherlands Antilles", :subregion=>"Caribbean", :a2=>"AN", :a3=>"ANT"},
159
+ {:numeric=>"540", :region=>"Oceania", :name=>"New Caledonia", :subregion=>"Melanesia", :a2=>"NC", :a3=>"NCL"},
160
+ {:numeric=>"554", :region=>"Oceania", :name=>"New Zealand", :subregion=>"Australia and New Zealand", :a2=>"NZ", :a3=>"NZL"},
161
+ {:numeric=>"558", :region=>"Americas", :name=>"Nicaragua", :subregion=>"Central America", :a2=>"NI", :a3=>"NIC"},
162
+ {:numeric=>"562", :region=>"Africa", :name=>"Niger", :subregion=>"Western Africa", :a2=>"NE", :a3=>"NER"},
163
+ {:numeric=>"566", :region=>"Africa", :name=>"Nigeria", :subregion=>"Western Africa", :a2=>"NG", :a3=>"NGA"},
164
+ {:numeric=>"570", :region=>"Oceania", :name=>"Niue", :subregion=>"Polynesia", :a2=>"NU", :a3=>"NIU"},
165
+ {:numeric=>"574", :region=>"Oceania", :name=>"Norfolk Island", :subregion=>"Australia and New Zealand", :a2=>"NF", :a3=>"NFK"},
166
+ {:numeric=>"580", :region=>"Oceania", :name=>"Northern Mariana Islands", :subregion=>"Micronesia", :a2=>"MP", :a3=>"MNP"},
167
+ {:numeric=>"578", :region=>"Europe", :name=>"Norway", :subregion=>"Northern Europe", :a2=>"NO", :a3=>"NOR"},
168
+ {:numeric=>"512", :region=>"Asia", :name=>"Oman", :subregion=>"Western Asia", :a2=>"OM", :a3=>"OMN"},
169
+ {:numeric=>"586", :region=>"Asia", :name=>"Pakistan", :subregion=>"Southern Asia", :a2=>"PK", :a3=>"PAK"},
170
+ {:numeric=>"585", :region=>"Oceania", :name=>"Palau", :subregion=>"Micronesia", :a2=>"PW", :a3=>"PLW"},
171
+ {:numeric=>"275", :region=>"Asia", :name=>"Palestinian Territory, Occupied", :subregion=>"Western Asia", :a2=>"PS", :a3=>"PSE"},
172
+ {:numeric=>"591", :region=>"Americas", :name=>"Panama", :subregion=>"Central America", :a2=>"PA", :a3=>"PAN"},
173
+ {:numeric=>"598", :region=>"Oceania", :name=>"Papua New Guinea", :subregion=>"Melanesia", :a2=>"PG", :a3=>"PNG"},
174
+ {:numeric=>"600", :region=>"Americas", :name=>"Paraguay", :subregion=>"South America", :a2=>"PY", :a3=>"PRY"},
175
+ {:numeric=>"604", :region=>"Americas", :name=>"Peru", :subregion=>"South America", :a2=>"PE", :a3=>"PER"},
176
+ {:numeric=>"608", :region=>"Asia", :name=>"Philippines", :subregion=>"South-Eastern Asia", :a2=>"PH", :a3=>"PHL"},
177
+ {:numeric=>"612", :region=>"Oceania", :name=>"Pitcairn", :subregion=>"Polynesia", :a2=>"PN", :a3=>"PCN"},
178
+ {:numeric=>"616", :region=>"Europe", :name=>"Poland", :subregion=>"Eastern Europe", :a2=>"PL", :a3=>"POL"},
179
+ {:numeric=>"620", :region=>"Europe", :name=>"Portugal", :subregion=>"Southern Europe", :a2=>"PT", :a3=>"PRT"},
180
+ {:numeric=>"630", :region=>"Americas", :name=>"Puerto Rico", :subregion=>"Caribbean", :a2=>"PR", :a3=>"PRI"},
181
+ {:numeric=>"634", :region=>"Asia", :name=>"Qatar", :subregion=>"Western Asia", :a2=>"QA", :a3=>"QAT"},
182
+ {:numeric=>"642", :region=>"Europe", :name=>"Romania", :subregion=>"Eastern Europe", :a2=>"RO", :a3=>"ROU"},
183
+ {:numeric=>"643", :region=>"Europe", :name=>"Russian Federation", :subregion=>"Eastern Europe", :a2=>"RU", :a3=>"RUS"},
184
+ {:numeric=>"646", :region=>"Africa", :name=>"Rwanda", :subregion=>"Eastern Africa", :a2=>"RW", :a3=>"RWA"},
185
+ {:numeric=>"638", :region=>"Africa", :name=>"R\303\251union", :subregion=>"Eastern Africa", :a2=>"RE", :a3=>"REU"},
186
+ {:numeric=>"652", :region=>"Americas", :name=>"Saint Barth\303\251lemy", :subregion=>"Caribbean", :a2=>"BL", :a3=>"BLM"},
187
+ {:numeric=>"654", :region=>"Africa", :name=>"Saint Helena", :subregion=>"Western Africa", :a2=>"SH", :a3=>"SHN"},
188
+ {:numeric=>"659", :region=>"Americas", :name=>"Saint Kitts And Nevis", :subregion=>"Caribbean", :a2=>"KN", :a3=>"KNA"},
189
+ {:numeric=>"662", :region=>"Americas", :name=>"Saint Lucia", :subregion=>"Caribbean", :a2=>"LC", :a3=>"LCA"},
190
+ {:numeric=>"663", :region=>"Americas", :name=>"Saint Martin", :subregion=>"Caribbean", :a2=>"MF", :a3=>"MAF"},
191
+ {:numeric=>"666", :region=>"Americas", :name=>"Saint Pierre And Miquelon", :subregion=>"Northern America", :a2=>"PM", :a3=>"SPM"},
192
+ {:numeric=>"670", :region=>"Americas", :name=>"Saint Vincent And The Grenedines", :subregion=>"Caribbean", :a2=>"VC", :a3=>"VCT"},
193
+ {:numeric=>"882", :region=>"Oceania", :name=>"Samoa", :subregion=>"Polynesia", :a2=>"WS", :a3=>"WSM"},
194
+ {:numeric=>"674", :region=>"Europe", :name=>"San Marino", :subregion=>"Southern Europe", :a2=>"SM", :a3=>"SMR"},
195
+ {:numeric=>"678", :region=>"Africa", :name=>"Sao Tome and Principe", :subregion=>"Middle Africa", :a2=>"ST", :a3=>"STP"},
196
+ {:numeric=>"682", :region=>"Asia", :name=>"Saudi Arabia", :subregion=>"Western Asia", :a2=>"SA", :a3=>"SAU"},
197
+ {:numeric=>"686", :region=>"Africa", :name=>"Senegal", :subregion=>"Western Africa", :a2=>"SN", :a3=>"SEN"},
198
+ {:numeric=>"688", :region=>"Europe", :name=>"Serbia", :subregion=>"Southern Europe", :a2=>"RS", :a3=>"SRB"},
199
+ {:numeric=>"690", :region=>"Africa", :name=>"Seychelles", :subregion=>"Eastern Africa", :a2=>"SC", :a3=>"SYC"},
200
+ {:numeric=>"694", :region=>"Africa", :name=>"Sierra Leone", :subregion=>"Western Africa", :a2=>"SL", :a3=>"SLE"},
201
+ {:numeric=>"702", :region=>"Asia", :name=>"Singapore", :subregion=>"South-Eastern Asia", :a2=>"SG", :a3=>"SGP"},
202
+ {:numeric=>"703", :region=>"Europe", :name=>"Slovakia", :subregion=>"Eastern Europe", :a2=>"SK", :a3=>"SVK"},
203
+ {:numeric=>"705", :region=>"Europe", :name=>"Slovenia", :subregion=>"Southern Europe", :a2=>"SI", :a3=>"SVN"},
204
+ {:numeric=>"090", :region=>"Oceania", :name=>"Solomon Islands", :subregion=>"Melanesia", :a2=>"SB", :a3=>"SLB"},
205
+ {:numeric=>"706", :region=>"Africa", :name=>"Somalia", :subregion=>"Eastern Africa", :a2=>"SO", :a3=>"SOM"},
206
+ {:numeric=>"710", :region=>"Africa", :name=>"South Africa", :subregion=>"Southern Africa", :a2=>"ZA", :a3=>"ZAF"},
207
+ {:numeric=>"239", :region=>"Americas", :name=>"South Georgia and the South Sandwich Islands", :subregion=>"South America", :a2=>"GS", :a3=>"SGS"},
208
+ {:numeric=>"724", :region=>"Europe", :name=>"Spain", :subregion=>"Southern Europe", :a2=>"ES", :a3=>"ESP"},
209
+ {:numeric=>"144", :region=>"Asia", :name=>"Sri Lanka", :subregion=>"Southern Asia", :a2=>"LK", :a3=>"LKA"},
210
+ {:numeric=>"736", :region=>"Africa", :name=>"Sudan", :subregion=>"Northern Africa", :a2=>"SD", :a3=>"SDN"},
211
+ {:numeric=>"740", :region=>"Americas", :name=>"Suriname", :subregion=>"South America", :a2=>"SR", :a3=>"SUR"},
212
+ {:numeric=>"744", :region=>"Europe", :name=>"Svalbard And Jan Mayen", :subregion=>"Northern Europe", :a2=>"SJ", :a3=>"SJM"},
213
+ {:numeric=>"748", :region=>"Africa", :name=>"Swaziland", :subregion=>"Southern Africa", :a2=>"SZ", :a3=>"SWZ"},
214
+ {:numeric=>"752", :region=>"Europe", :name=>"Sweden", :subregion=>"Northern Europe", :a2=>"SE", :a3=>"SWE"},
215
+ {:numeric=>"756", :region=>"Europe", :name=>"Switzerland", :subregion=>"Western Europe", :a2=>"CH", :a3=>"CHE"},
216
+ {:numeric=>"760", :region=>"Asia", :name=>"Syrian Arab Republic", :subregion=>"Western Asia", :a2=>"SY", :a3=>"SYR"},
217
+ {:numeric=>"158", :region=>"Asia", :name=>"Taiwan, Province Of China", :subregion=>"Eastern Asia", :a2=>"TW", :a3=>"TWN"},
218
+ {:numeric=>"762", :region=>"Asia", :name=>"Tajikistan", :subregion=>"Central Asia", :a2=>"TJ", :a3=>"TJK"},
219
+ {:numeric=>"834", :region=>"Africa", :name=>"Tanzania, United Republic of", :subregion=>"Eastern Africa", :a2=>"TZ", :a3=>"TZA"},
220
+ {:numeric=>"764", :region=>"Asia", :name=>"Thailand", :subregion=>"South-Eastern Asia", :a2=>"TH", :a3=>"THA"},
221
+ {:numeric=>"626", :region=>"Asia", :name=>"Timor-Leste", :subregion=>"South-Eastern Asia", :a2=>"TL", :a3=>"TLS"},
222
+ {:numeric=>"768", :region=>"Africa", :name=>"Togo", :subregion=>"Western Africa", :a2=>"TG", :a3=>"TGO"},
223
+ {:numeric=>"772", :region=>"Oceania", :name=>"Tokelau", :subregion=>"Polynesia", :a2=>"TK", :a3=>"TKL"},
224
+ {:numeric=>"776", :region=>"Oceania", :name=>"Tonga", :subregion=>"Polynesia", :a2=>"TO", :a3=>"TON"},
225
+ {:numeric=>"780", :region=>"Americas", :name=>"Trinidad and Tobago", :subregion=>"Caribbean", :a2=>"TT", :a3=>"TTO"},
226
+ {:numeric=>"788", :region=>"Africa", :name=>"Tunisia", :subregion=>"Northern Africa", :a2=>"TN", :a3=>"TUN"},
227
+ {:numeric=>"792", :region=>"Asia", :name=>"Turkey", :subregion=>"Western Asia", :a2=>"TR", :a3=>"TUR"},
228
+ {:numeric=>"795", :region=>"Asia", :name=>"Turkmenistan", :subregion=>"Central Asia", :a2=>"TM", :a3=>"TKM"},
229
+ {:numeric=>"796", :region=>"Americas", :name=>"Turks and Caicos Islands", :subregion=>"Caribbean", :a2=>"TC", :a3=>"TCA"},
230
+ {:numeric=>"798", :region=>"Oceania", :name=>"Tuvalu", :subregion=>"Polynesia", :a2=>"TV", :a3=>"TUV"},
231
+ {:numeric=>"800", :region=>"Africa", :name=>"Uganda", :subregion=>"Eastern Africa", :a2=>"UG", :a3=>"UGA"},
232
+ {:numeric=>"804", :region=>"Europe", :name=>"Ukraine", :subregion=>"Eastern Europe", :a2=>"UA", :a3=>"UKR"},
233
+ {:numeric=>"784", :region=>"Asia", :name=>"United Arab Emirates", :subregion=>"Western Asia", :a2=>"AE", :a3=>"ARE"},
234
+ {:numeric=>"826", :region=>"Europe", :name=>"United Kingdom", :subregion=>"Northern Europe", :a2=>"GB", :a3=>"GBR"},
235
+ {:numeric=>"840", :region=>"Americas", :name=>"United States", :subregion=>"Northern America", :a2=>"US", :a3=>"USA"},
236
+ {:numeric=>"581", :region=>"Americas", :name=>"United States Minor Outlying Islands", :subregion=>"Northern America", :a2=>"UM", :a3=>"UMI"},
237
+ {:numeric=>"858", :region=>"Americas", :name=>"Uruguay", :subregion=>"South America", :a2=>"UY", :a3=>"URY"},
238
+ {:numeric=>"860", :region=>"Asia", :name=>"Uzbekistan", :subregion=>"Central Asia", :a2=>"UZ", :a3=>"UZB"},
239
+ {:numeric=>"548", :region=>"Oceania", :name=>"Vanuatu", :subregion=>"Melanesia", :a2=>"VU", :a3=>"VUT"},
240
+ {:numeric=>"862", :region=>"Americas", :name=>"Venezuela, Bolivarian Republic of", :subregion=>"South America", :a2=>"VE", :a3=>"VEN"},
241
+ {:numeric=>"704", :region=>"Asia", :name=>"Viet Nam", :subregion=>"South-Eastern Asia", :a2=>"VN", :a3=>"VNM"},
242
+ {:numeric=>"092", :region=>"Americas", :name=>"Virgin Islands, British", :subregion=>"Caribbean", :a2=>"VG", :a3=>"VGB"},
243
+ {:numeric=>"850", :region=>"Americas", :name=>"Virgin Islands, U.S.", :subregion=>"Caribbean", :a2=>"VI", :a3=>"VIR"},
244
+ {:numeric=>"876", :region=>"Oceania", :name=>"Wallis and Futuna", :subregion=>"Polynesia", :a2=>"WF", :a3=>"WLF"},
245
+ {:numeric=>"732", :region=>"Africa", :name=>"Western Sahara", :subregion=>"Northern Africa", :a2=>"EH", :a3=>"ESH"},
246
+ {:numeric=>"887", :region=>"Asia", :name=>"Yemen", :subregion=>"Western Asia", :a2=>"YE", :a3=>"YEM"},
247
+ {:numeric=>"894", :region=>"Africa", :name=>"Zambia", :subregion=>"Eastern Africa", :a2=>"ZM", :a3=>"ZMB"},
248
+ {:numeric=>"716", :region=>"Africa", :name=>"Zimbabwe", :subregion=>"Eastern Africa", :a2=>"ZW", :a3=>"ZWE"},
249
+ {:numeric=>"248", :region=>"Europe", :name=>"\303\205land Islands", :subregion=>"Northern Europe", :a2=>"AX", :a3=>"ALA"}]
250
+ end
251
+ end
@@ -0,0 +1,174 @@
1
+ module ISOCodes
2
+ module Data
3
+ Currencies = [
4
+ {:code=>"AFN", :numeric=>"971", :name=>"Afghani", :country_a2=>["AF"]},
5
+ {:code=>"ALL", :numeric=>"008", :name=>"Lek", :country_a2=>["AL"]},
6
+ {:code=>"DZD", :numeric=>"012", :name=>"Algerian Dinar", :country_a2=>["DZ"]},
7
+ {:code=>"USD", :numeric=>"840", :name=>"US Dollar", :country_a2=>["AS", "IO", "EC", "SV", "GU", "HT", "MH", "FM", "MP", "PW", "PA", "PR", "TL", "TC", "US", "UM", "VG", "VI"]},
8
+ {:code=>"EUR", :numeric=>"978", :name=>"Euro", :country_a2=>["AD", "AT", "BE", "CY", "FI", "FR", "GF", "TF", "DE", "GR", "GP", "VA", "IE", "IT", "LU", "MT", "MQ", "YT", "MC", "ME", "NL", "PT", "RE", "BL", "MF", "PM", "SM", "SK", "SI", "ES", "AX"]},
9
+ {:code=>"AOA", :numeric=>"973", :name=>"Kwanza", :country_a2=>["AO"]},
10
+ {:code=>"XCD", :numeric=>"951", :name=>"East Caribbean Dollar", :country_a2=>["AI", "AG", "DM", "GD", "MS", "KN", "LC", "VC"]},
11
+ {:code=>"ARS", :numeric=>"032", :name=>"Argentine Peso", :country_a2=>["AR"]},
12
+ {:code=>"AMD", :numeric=>"051", :name=>"Armenian Dram", :country_a2=>["AM"]},
13
+ {:code=>"AWG", :numeric=>"533", :name=>"Aruban Guilder", :country_a2=>["AW"]},
14
+ {:code=>"AUD", :numeric=>"036", :name=>"Australian Dollar", :country_a2=>["AU", "CX", "CC", "HM", "KI", "NR", "NF", "TV"]},
15
+ {:code=>"AZN", :numeric=>"944", :name=>"Azerbaijanian Manat", :country_a2=>["AZ"]},
16
+ {:code=>"BSD", :numeric=>"044", :name=>"Bahamian Dollar", :country_a2=>["BS"]},
17
+ {:code=>"BHD", :numeric=>"048", :name=>"Bahraini Dinar", :country_a2=>["BH"]},
18
+ {:code=>"BDT", :numeric=>"050", :name=>"Taka", :country_a2=>["BD"]},
19
+ {:code=>"BBD", :numeric=>"052", :name=>"Barbados Dollar", :country_a2=>["BB"]},
20
+ {:code=>"BYR", :numeric=>"974", :name=>"Belarussian Ruble", :country_a2=>["BY"]},
21
+ {:code=>"BZD", :numeric=>"084", :name=>"Belize Dollar", :country_a2=>["BZ"]},
22
+ {:code=>"XOF", :numeric=>"952", :name=>"CFA Franc BCEAO", :country_a2=>["BJ", "BF", "CI", "GW", "ML", "NE", "SN", "TG"]},
23
+ {:code=>"BMD", :numeric=>"060", :name=>"Bermudian Dollar", :country_a2=>["BM"]},
24
+ {:code=>"INR", :numeric=>"356", :name=>"Indian Rupee", :country_a2=>["BT", "IN"]},
25
+ {:code=>"BTN", :numeric=>"064", :name=>"Ngultrum", :country_a2=>["BT"]},
26
+ {:code=>"BOB", :numeric=>"068", :name=>"Boliviano", :country_a2=>["BO"]},
27
+ {:code=>"BOV", :numeric=>"984", :name=>"Mvdol", :country_a2=>["BO"]},
28
+ {:code=>"BAM", :numeric=>"977", :name=>"Convertible Marks", :country_a2=>["BA"]},
29
+ {:code=>"BWP", :numeric=>"072", :name=>"Pula", :country_a2=>["BW"]},
30
+ {:code=>"NOK", :numeric=>"578", :name=>"Norwegian Krone", :country_a2=>["BV", "NO", "SJ"]},
31
+ {:code=>"BRL", :numeric=>"986", :name=>"Brazilian Real", :country_a2=>["BR"]},
32
+ {:code=>"BND", :numeric=>"096", :name=>"Brunei Dollar", :country_a2=>["BN"]},
33
+ {:code=>"BGN", :numeric=>"975", :name=>"Bulgarian Lev", :country_a2=>["BG"]},
34
+ {:code=>"BIF", :numeric=>"108", :name=>"Burundi Franc", :country_a2=>["BI"]},
35
+ {:code=>"KHR", :numeric=>"116", :name=>"Riel", :country_a2=>["KH"]},
36
+ {:code=>"XAF", :numeric=>"950", :name=>"CFA Franc BEAC", :country_a2=>["CM", "CF", "TD", "CG", "GQ", "GA"]},
37
+ {:code=>"CAD", :numeric=>"124", :name=>"Canadian Dollar", :country_a2=>["CA"]},
38
+ {:code=>"CVE", :numeric=>"132", :name=>"Cape Verde Escudo", :country_a2=>["CV"]},
39
+ {:code=>"KYD", :numeric=>"136", :name=>"Cayman Islands Dollar", :country_a2=>["KY"]},
40
+ {:code=>"CLP", :numeric=>"152", :name=>"Chilean Peso", :country_a2=>["CL"]},
41
+ {:code=>"CLF", :numeric=>"990", :name=>"Unidades de fomento", :country_a2=>["CL"]},
42
+ {:code=>"CNY", :numeric=>"156", :name=>"Yuan Renminbi", :country_a2=>["CN"]},
43
+ {:code=>"COP", :numeric=>"170", :name=>"Colombian Peso", :country_a2=>["CO"]},
44
+ {:code=>"COU", :numeric=>"970", :name=>"Unidad de Valor real", :country_a2=>["CO"]},
45
+ {:code=>"KMF", :numeric=>"174", :name=>"Comoro Franc", :country_a2=>["KM"]},
46
+ {:code=>"CDF", :numeric=>"976", :name=>"Franc Congolais", :country_a2=>["CD"]},
47
+ {:code=>"NZD", :numeric=>"554", :name=>"New Zealand Dollar", :country_a2=>["CK", "NZ", "NU", "PN", "TK"]},
48
+ {:code=>"CRC", :numeric=>"188", :name=>"Costa Rican Colon", :country_a2=>["CR"]},
49
+ {:code=>"HRK", :numeric=>"191", :name=>"Croatian Kuna", :country_a2=>["HR"]},
50
+ {:code=>"CUP", :numeric=>"192", :name=>"Cuban Peso", :country_a2=>["CU"]},
51
+ {:code=>"CUC", :numeric=>"931", :name=>"Peso Convertible ", :country_a2=>["CU"]},
52
+ {:code=>"CZK", :numeric=>"203", :name=>"Czech Koruna", :country_a2=>["CZ"]},
53
+ {:code=>"DKK", :numeric=>"208", :name=>"Danish Krone", :country_a2=>["DK", "FO", "GL"]},
54
+ {:code=>"DJF", :numeric=>"262", :name=>"Djibouti Franc", :country_a2=>["DJ"]},
55
+ {:code=>"DOP", :numeric=>"214", :name=>"Dominican Peso", :country_a2=>["DO"]},
56
+ {:code=>"EGP", :numeric=>"818", :name=>"Egyptian Pound", :country_a2=>["EG"]},
57
+ {:code=>"SVC", :numeric=>"222", :name=>"El Salvador Colon", :country_a2=>["SV"]},
58
+ {:code=>"ERN", :numeric=>"232", :name=>"Nakfa", :country_a2=>["ER"]},
59
+ {:code=>"EEK", :numeric=>"233", :name=>"Kroon", :country_a2=>["EE"]},
60
+ {:code=>"ETB", :numeric=>"230", :name=>"Ethiopian Birr", :country_a2=>["ET"]},
61
+ {:code=>"FKP", :numeric=>"238", :name=>"Falkland Island Pound", :country_a2=>["FK"]},
62
+ {:code=>"FJD", :numeric=>"242", :name=>"Fiji Dollar", :country_a2=>["FJ"]},
63
+ {:code=>"XPF", :numeric=>"953", :name=>"CFP Franc", :country_a2=>["PF", "NC", "WF"]},
64
+ {:code=>"GMD", :numeric=>"270", :name=>"Dalasi", :country_a2=>["GM"]},
65
+ {:code=>"GEL", :numeric=>"981", :name=>"Lari", :country_a2=>["GE"]},
66
+ {:code=>"GHS", :numeric=>"936", :name=>"Cedi", :country_a2=>["GH"]},
67
+ {:code=>"GIP", :numeric=>"292", :name=>"Gibraltar Pound", :country_a2=>["GI"]},
68
+ {:code=>"GTQ", :numeric=>"320", :name=>"Quetzal", :country_a2=>["GT"]},
69
+ {:code=>"GBP", :numeric=>"826", :name=>"Pound Sterling", :country_a2=>["GG", "JE", "GB"]},
70
+ {:code=>"GNF", :numeric=>"324", :name=>"Guinea Franc", :country_a2=>["GN"]},
71
+ {:code=>"GWP", :numeric=>"624", :name=>"Guinea-Bissau Peso", :country_a2=>["GW"]},
72
+ {:code=>"GYD", :numeric=>"328", :name=>"Guyana Dollar", :country_a2=>["GY"]},
73
+ {:code=>"HTG", :numeric=>"332", :name=>"Gourde", :country_a2=>["HT"]},
74
+ {:code=>"HNL", :numeric=>"340", :name=>"Lempira", :country_a2=>["HN"]},
75
+ {:code=>"HKD", :numeric=>"344", :name=>"Hong Kong Dollar", :country_a2=>["HK"]},
76
+ {:code=>"HUF", :numeric=>"348", :name=>"Forint", :country_a2=>["HU"]},
77
+ {:code=>"ISK", :numeric=>"352", :name=>"Iceland Krona", :country_a2=>["IS"]},
78
+ {:code=>"IDR", :numeric=>"360", :name=>"Rupiah", :country_a2=>["ID"]},
79
+ {:code=>"IRR", :numeric=>"364", :name=>"Iranian Rial", :country_a2=>["IR"]},
80
+ {:code=>"IQD", :numeric=>"368", :name=>"Iraqi Dinar", :country_a2=>["IQ"]},
81
+ {:code=>"ILS", :numeric=>"376", :name=>"New Israeli Sheqel", :country_a2=>["IL"]},
82
+ {:code=>"JMD", :numeric=>"388", :name=>"Jamaican Dollar", :country_a2=>["JM"]},
83
+ {:code=>"JPY", :numeric=>"392", :name=>"Yen", :country_a2=>["JP"]},
84
+ {:code=>"JOD", :numeric=>"400", :name=>"Jordanian Dinar", :country_a2=>["JO"]},
85
+ {:code=>"KZT", :numeric=>"398", :name=>"Tenge", :country_a2=>["KZ"]},
86
+ {:code=>"KES", :numeric=>"404", :name=>"Kenyan Shilling", :country_a2=>["KE"]},
87
+ {:code=>"KPW", :numeric=>"408", :name=>"North Korean Won", :country_a2=>["KP"]},
88
+ {:code=>"KRW", :numeric=>"410", :name=>"Won", :country_a2=>["KR"]},
89
+ {:code=>"KWD", :numeric=>"414", :name=>"Kuwaiti Dinar", :country_a2=>["KW"]},
90
+ {:code=>"KGS", :numeric=>"417", :name=>"Som", :country_a2=>["KG"]},
91
+ {:code=>"LAK", :numeric=>"418", :name=>"Kip", :country_a2=>["LA"]},
92
+ {:code=>"LVL", :numeric=>"428", :name=>"Latvian Lats", :country_a2=>["LV"]},
93
+ {:code=>"LBP", :numeric=>"422", :name=>"Lebanese Pound", :country_a2=>["LB"]},
94
+ {:code=>"LSL", :numeric=>"426", :name=>"Loti", :country_a2=>["LS"]},
95
+ {:code=>"ZAR", :numeric=>"710", :name=>"Rand", :country_a2=>["LS", "NA", "ZA"]},
96
+ {:code=>"LRD", :numeric=>"430", :name=>"Liberian Dollar", :country_a2=>["LR"]},
97
+ {:code=>"LYD", :numeric=>"434", :name=>"Libyan Dinar", :country_a2=>["LY"]},
98
+ {:code=>"CHF", :numeric=>"756", :name=>"Swiss Franc", :country_a2=>["LI", "CH"]},
99
+ {:code=>"LTL", :numeric=>"440", :name=>"Lithuanian Litas", :country_a2=>["LT"]},
100
+ {:code=>"MOP", :numeric=>"446", :name=>"Pataca", :country_a2=>["MO"]},
101
+ {:code=>"MKD", :numeric=>"807", :name=>"Denar", :country_a2=>["MK"]},
102
+ {:code=>"MGA", :numeric=>"969", :name=>"Malagasy Ariary", :country_a2=>["MG"]},
103
+ {:code=>"MWK", :numeric=>"454", :name=>"Kwacha", :country_a2=>["MW"]},
104
+ {:code=>"MYR", :numeric=>"458", :name=>"Malaysian Ringgit", :country_a2=>["MY"]},
105
+ {:code=>"MVR", :numeric=>"462", :name=>"Rufiyaa", :country_a2=>["MV"]},
106
+ {:code=>"MRO", :numeric=>"478", :name=>"Ouguiya", :country_a2=>["MR"]},
107
+ {:code=>"MUR", :numeric=>"480", :name=>"Mauritius Rupee", :country_a2=>["MU"]},
108
+ {:code=>"MXN", :numeric=>"484", :name=>"Mexican Peso", :country_a2=>["MX"]},
109
+ {:code=>"MXV", :numeric=>"979", :name=>"Mexican Unidad de Inversion (UDI)", :country_a2=>["MX"]},
110
+ {:code=>"MDL", :numeric=>"498", :name=>"Moldovan Leu", :country_a2=>["MD"]},
111
+ {:code=>"MNT", :numeric=>"496", :name=>"Tugrik", :country_a2=>["MN"]},
112
+ {:code=>"MAD", :numeric=>"504", :name=>"Moroccan Dirham", :country_a2=>["MA", "EH"]},
113
+ {:code=>"MZN", :numeric=>"943", :name=>"Metical", :country_a2=>["MZ"]},
114
+ {:code=>"MMK", :numeric=>"104", :name=>"Kyat", :country_a2=>["MM"]},
115
+ {:code=>"NAD", :numeric=>"516", :name=>"Namibia Dollar", :country_a2=>["NA"]},
116
+ {:code=>"NPR", :numeric=>"524", :name=>"Nepalese Rupee", :country_a2=>["NP"]},
117
+ {:code=>"ANG", :numeric=>"532", :name=>"Netherlands Antillian Guilder", :country_a2=>["AN"]},
118
+ {:code=>"NIO", :numeric=>"558", :name=>"Cordoba Oro", :country_a2=>["NI"]},
119
+ {:code=>"NGN", :numeric=>"566", :name=>"Naira", :country_a2=>["NG"]},
120
+ {:code=>"OMR", :numeric=>"512", :name=>"Rial Omani", :country_a2=>["OM"]},
121
+ {:code=>"PKR", :numeric=>"586", :name=>"Pakistan Rupee", :country_a2=>["PK"]},
122
+ {:code=>"PAB", :numeric=>"590", :name=>"Balboa", :country_a2=>["PA"]},
123
+ {:code=>"PGK", :numeric=>"598", :name=>"Kina", :country_a2=>["PG"]},
124
+ {:code=>"PYG", :numeric=>"600", :name=>"Guarani", :country_a2=>["PY"]},
125
+ {:code=>"PEN", :numeric=>"604", :name=>"Nuevo Sol", :country_a2=>["PE"]},
126
+ {:code=>"PHP", :numeric=>"608", :name=>"Philippine Peso", :country_a2=>["PH"]},
127
+ {:code=>"PLN", :numeric=>"985", :name=>"Zloty", :country_a2=>["PL"]},
128
+ {:code=>"QAR", :numeric=>"634", :name=>"Qatari Rial", :country_a2=>["QA"]},
129
+ {:code=>"RON", :numeric=>"946", :name=>"New Leu", :country_a2=>["RO"]},
130
+ {:code=>"RUB", :numeric=>"643", :name=>"Russian Ruble", :country_a2=>["RU"]},
131
+ {:code=>"RWF", :numeric=>"646", :name=>"Rwanda Franc", :country_a2=>["RW"]},
132
+ {:code=>"SHP", :numeric=>"654", :name=>"Saint Helena Pound", :country_a2=>["SH"]},
133
+ {:code=>"WST", :numeric=>"882", :name=>"Tala", :country_a2=>["WS"]},
134
+ {:code=>"STD", :numeric=>"678", :name=>"Dobra", :country_a2=>["ST"]},
135
+ {:code=>"SAR", :numeric=>"682", :name=>"Saudi Riyal", :country_a2=>["SA"]},
136
+ {:code=>"RSD", :numeric=>"941", :name=>"Serbian Dinar", :country_a2=>["RS"]},
137
+ {:code=>"SCR", :numeric=>"690", :name=>"Seychelles Rupee", :country_a2=>["SC"]},
138
+ {:code=>"SLL", :numeric=>"694", :name=>"Leone", :country_a2=>["SL"]},
139
+ {:code=>"SGD", :numeric=>"702", :name=>"Singapore Dollar", :country_a2=>["SG"]},
140
+ {:code=>"SBD", :numeric=>"090", :name=>"Solomon Islands Dollar", :country_a2=>["SB"]},
141
+ {:code=>"SOS", :numeric=>"706", :name=>"Somali Shilling", :country_a2=>["SO"]},
142
+ {:code=>"LKR", :numeric=>"144", :name=>"Sri Lanka Rupee", :country_a2=>["LK"]},
143
+ {:code=>"SDG", :numeric=>"938", :name=>"Sudanese Pound", :country_a2=>["SD"]},
144
+ {:code=>"SRD", :numeric=>"968", :name=>"Surinam Dollar", :country_a2=>["SR"]},
145
+ {:code=>"SZL", :numeric=>"748", :name=>"Lilangeni", :country_a2=>["SZ"]},
146
+ {:code=>"SEK", :numeric=>"752", :name=>"Swedish Krona", :country_a2=>["SE"]},
147
+ {:code=>"CHE", :numeric=>"947", :name=>"WIR Euro", :country_a2=>["CH"]},
148
+ {:code=>"CHW", :numeric=>"948", :name=>"WIR Franc", :country_a2=>["CH"]},
149
+ {:code=>"SYP", :numeric=>"760", :name=>"Syrian Pound", :country_a2=>["SY"]},
150
+ {:code=>"TWD", :numeric=>"901", :name=>"New Taiwan Dollar", :country_a2=>["TW"]},
151
+ {:code=>"TJS", :numeric=>"972", :name=>"Somoni", :country_a2=>["TJ"]},
152
+ {:code=>"TZS", :numeric=>"834", :name=>"Tanzanian Shilling", :country_a2=>["TZ"]},
153
+ {:code=>"THB", :numeric=>"764", :name=>"Baht", :country_a2=>["TH"]},
154
+ {:code=>"TOP", :numeric=>"776", :name=>"Pa'anga", :country_a2=>["TO"]},
155
+ {:code=>"TTD", :numeric=>"780", :name=>"Trinidata and Tobago Dollar", :country_a2=>["TT"]},
156
+ {:code=>"TND", :numeric=>"788", :name=>"Tunisian Dinar", :country_a2=>["TN"]},
157
+ {:code=>"TRY", :numeric=>"949", :name=>"Turkish Lira", :country_a2=>["TR"]},
158
+ {:code=>"TMT", :numeric=>"934", :name=>"Manat", :country_a2=>["TM"]},
159
+ {:code=>"UGX", :numeric=>"800", :name=>"Uganda Shilling", :country_a2=>["UG"]},
160
+ {:code=>"UAH", :numeric=>"980", :name=>"Hryvnia", :country_a2=>["UA"]},
161
+ {:code=>"AED", :numeric=>"784", :name=>"UAE Dirham", :country_a2=>["AE"]},
162
+ {:code=>"USN", :numeric=>"997", :name=>"US Dollar (Next Day)", :country_a2=>["US"]},
163
+ {:code=>"USS", :numeric=>"998", :name=>"US Dollar (Same Day)", :country_a2=>["US"]},
164
+ {:code=>"UYU", :numeric=>"858", :name=>"Peso Uruguayo", :country_a2=>["UY"]},
165
+ {:code=>"UYI", :numeric=>"940", :name=>"Uruguay Peso en Unidades Indexadas", :country_a2=>["UY"]},
166
+ {:code=>"UZS", :numeric=>"860", :name=>"Uzbekistan Sum", :country_a2=>["UZ"]},
167
+ {:code=>"VUV", :numeric=>"548", :name=>"Vatu", :country_a2=>["VU"]},
168
+ {:code=>"VEF", :numeric=>"937", :name=>"Bolivar Fuerte", :country_a2=>["VE"]},
169
+ {:code=>"VND", :numeric=>"704", :name=>"Dong", :country_a2=>["VN"]},
170
+ {:code=>"YER", :numeric=>"886", :name=>"Yemeni Rial", :country_a2=>["YE"]},
171
+ {:code=>"ZMK", :numeric=>"894", :name=>"Zambian Kwacha", :country_a2=>["ZM"]},
172
+ {:code=>"ZWL", :numeric=>"932", :name=>"Zimbabwe Dollar", :country_a2=>["ZW"]}]
173
+ end
174
+ end
@@ -0,0 +1,193 @@
1
+ module ISOCodes
2
+ module Data
3
+ Languages = [
4
+ {:name=>"Abkhazian", :a2=>"ab"},
5
+ {:name=>"Afar", :a2=>"aa"},
6
+ {:name=>"Afrikaans", :a2=>"af"},
7
+ {:name=>"Akan", :a2=>"ak"},
8
+ {:name=>"Albanian", :a2=>"sq"},
9
+ {:name=>"Amharic", :a2=>"am"},
10
+ {:name=>"Arabic", :a2=>"ar"},
11
+ {:name=>"Aragonese", :a2=>"an"},
12
+ {:name=>"Armenian", :a2=>"hy"},
13
+ {:name=>"Assamese", :a2=>"as"},
14
+ {:name=>"Avaric", :a2=>"av"},
15
+ {:name=>"Avestan", :a2=>"ae"},
16
+ {:name=>"Aymara", :a2=>"ay"},
17
+ {:name=>"Azerbaijani", :a2=>"az"},
18
+ {:name=>"Bambara", :a2=>"bm"},
19
+ {:name=>"Bashkir", :a2=>"ba"},
20
+ {:name=>"Basque", :a2=>"eu"},
21
+ {:name=>"Belarusian", :a2=>"be"},
22
+ {:name=>"Bengali", :a2=>"bn"},
23
+ {:name=>"Bihari", :a2=>"bh"},
24
+ {:name=>"Bislama", :a2=>"bi"},
25
+ {:name=>"Bosnian", :a2=>"bs"},
26
+ {:name=>"Breton", :a2=>"br"},
27
+ {:name=>"Bulgarian", :a2=>"bg"},
28
+ {:name=>"Burmese", :a2=>"my"},
29
+ {:name=>"Catalan", :a2=>"ca"},
30
+ {:name=>"Central Khmer", :a2=>"km"},
31
+ {:name=>"Chamorro", :a2=>"ch"},
32
+ {:name=>"Chechen", :a2=>"ce"},
33
+ {:name=>"Chichewa", :a2=>"ny"},
34
+ {:name=>"Chinese", :a2=>"zh"},
35
+ {:name=>"Church Slavic", :a2=>"cu"},
36
+ {:name=>"Chuvash", :a2=>"cv"},
37
+ {:name=>"Cornish", :a2=>"kw"},
38
+ {:name=>"Corsican", :a2=>"co"},
39
+ {:name=>"Cree", :a2=>"cr"},
40
+ {:name=>"Croatian", :a2=>"hr"},
41
+ {:name=>"Czech", :a2=>"cs"},
42
+ {:name=>"Danish", :a2=>"da"},
43
+ {:name=>"Divehi", :a2=>"dv"},
44
+ {:name=>"Dutch; Flemish", :a2=>"nl"},
45
+ {:name=>"Dzongkha", :a2=>"dz"},
46
+ {:name=>"English", :a2=>"en"},
47
+ {:name=>"Esperanto", :a2=>"eo"},
48
+ {:name=>"Estonian", :a2=>"et"},
49
+ {:name=>"Ewe", :a2=>"ee"},
50
+ {:name=>"Faroese", :a2=>"fo"},
51
+ {:name=>"Fijian", :a2=>"fj"},
52
+ {:name=>"Finnish", :a2=>"fi"},
53
+ {:name=>"French", :a2=>"fr"},
54
+ {:name=>"Fulah", :a2=>"ff"},
55
+ {:name=>"Galician", :a2=>"gl"},
56
+ {:name=>"Ganda", :a2=>"lg"},
57
+ {:name=>"Georgian", :a2=>"ka"},
58
+ {:name=>"German", :a2=>"de"},
59
+ {:name=>"Greek", :a2=>"el"},
60
+ {:name=>"Guarani", :a2=>"gn"},
61
+ {:name=>"Gujarati", :a2=>"gu"},
62
+ {:name=>"Haitian Creole", :a2=>"ht"},
63
+ {:name=>"Hausa", :a2=>"ha"},
64
+ {:name=>"Hebrew", :a2=>"he"},
65
+ {:name=>"Herero", :a2=>"hz"},
66
+ {:name=>"Hindi", :a2=>"hi"},
67
+ {:name=>"Hiri Motu", :a2=>"ho"},
68
+ {:name=>"Hungarian", :a2=>"hu"},
69
+ {:name=>"Icelandic", :a2=>"is"},
70
+ {:name=>"Ido", :a2=>"io"},
71
+ {:name=>"Igbo", :a2=>"ig"},
72
+ {:name=>"Indonesian", :a2=>"id"},
73
+ {:name=>"Interlingua (International Auxiliary Language Association)", :a2=>"ia"},
74
+ {:name=>"Interlingue", :a2=>"ie"},
75
+ {:name=>"Inuktitut", :a2=>"iu"},
76
+ {:name=>"Inupiaq", :a2=>"ik"},
77
+ {:name=>"Irish", :a2=>"ga"},
78
+ {:name=>"Italian", :a2=>"it"},
79
+ {:name=>"Japanese", :a2=>"ja"},
80
+ {:name=>"Javanese", :a2=>"jv"},
81
+ {:name=>"Kalaallisut", :a2=>"kl"},
82
+ {:name=>"Kannada", :a2=>"kn"},
83
+ {:name=>"Kanuri", :a2=>"kr"},
84
+ {:name=>"Kashmiri", :a2=>"ks"},
85
+ {:name=>"Kazakh", :a2=>"kk"},
86
+ {:name=>"Kikuyu; Gikuyu", :a2=>"ki"},
87
+ {:name=>"Kinyarwanda", :a2=>"rw"},
88
+ {:name=>"Kirghiz", :a2=>"ky"},
89
+ {:name=>"Komi", :a2=>"kv"},
90
+ {:name=>"Kongo", :a2=>"kg"},
91
+ {:name=>"Korean", :a2=>"ko"},
92
+ {:name=>"Kuanyama; Kwanyama", :a2=>"kj"},
93
+ {:name=>"Kurdish", :a2=>"ku"},
94
+ {:name=>"Lao", :a2=>"lo"},
95
+ {:name=>"Latin", :a2=>"la"},
96
+ {:name=>"Latvian", :a2=>"lv"},
97
+ {:name=>"Limburgish", :a2=>"li"},
98
+ {:name=>"Lingala", :a2=>"ln"},
99
+ {:name=>"Lithuanian", :a2=>"lt"},
100
+ {:name=>"Luba-Katanga", :a2=>"lu"},
101
+ {:name=>"Luxembourgish", :a2=>"lb"},
102
+ {:name=>"Luxembourgish", :a2=>"ib"},
103
+ {:name=>"Macedonian", :a2=>"mk"},
104
+ {:name=>"Malagasy", :a2=>"mg"},
105
+ {:name=>"Malay", :a2=>"ms"},
106
+ {:name=>"Malayalam", :a2=>"ml"},
107
+ {:name=>"Maltese", :a2=>"mt"},
108
+ {:name=>"Manx", :a2=>"gv"},
109
+ {:name=>"Maori", :a2=>"mi"},
110
+ {:name=>"Marathi", :a2=>"mr"},
111
+ {:name=>"Marshallese", :a2=>"mh"},
112
+ {:name=>"Moldavian", :a2=>"mo"},
113
+ {:name=>"Mongolian", :a2=>"mn"},
114
+ {:name=>"Nauru", :a2=>"na"},
115
+ {:name=>"Navajo; Navaho", :a2=>"nv"},
116
+ {:name=>"Ndonga", :a2=>"ng"},
117
+ {:name=>"Nepali", :a2=>"ne"},
118
+ {:name=>"North Ndebele", :a2=>"nd"},
119
+ {:name=>"Northern Sami", :a2=>"se"},
120
+ {:name=>"Norwegian", :a2=>"no"},
121
+ {:name=>"Norwegian Bokm\303\245l", :a2=>"nb"},
122
+ {:name=>"Norwegian Nynorsk", :a2=>"nn"},
123
+ {:name=>"Occitan", :a2=>"oc"},
124
+ {:name=>"Ojibwa", :a2=>"oj"},
125
+ {:name=>"Oriya", :a2=>"or"},
126
+ {:name=>"Oromo", :a2=>"om"},
127
+ {:name=>"Ossetian; Ossetic", :a2=>"os"},
128
+ {:name=>"Pali", :a2=>"pi"},
129
+ {:name=>"Panjabi; Punjabi", :a2=>"pa"},
130
+ {:name=>"Persian", :a2=>"fa"},
131
+ {:name=>"Polish", :a2=>"pl"},
132
+ {:name=>"Portuguese", :a2=>"pt"},
133
+ {:name=>"Pushto; Pashto", :a2=>"ps"},
134
+ {:name=>"Quechua", :a2=>"qu"},
135
+ {:name=>"Romanian", :a2=>"ro"},
136
+ {:name=>"Romansh", :a2=>"rm"},
137
+ {:name=>"Rundi", :a2=>"rn"},
138
+ {:name=>"Russian", :a2=>"ru"},
139
+ {:name=>"Rusyn", :a2=>"ry"},
140
+ {:name=>"Samoan", :a2=>"sm"},
141
+ {:name=>"Sango", :a2=>"sg"},
142
+ {:name=>"Sanskrit", :a2=>"sa"},
143
+ {:name=>"Sardinian", :a2=>"sc"},
144
+ {:name=>"Scottish Gaelic", :a2=>"gd"},
145
+ {:name=>"Serbian", :a2=>"sr"},
146
+ {:name=>"Serbo-Croatian", :a2=>"sh"},
147
+ {:name=>"Shona", :a2=>"sn"},
148
+ {:name=>"Sichuan Yi", :a2=>"ii"},
149
+ {:name=>"Sindhi", :a2=>"sd"},
150
+ {:name=>"Sinhalese", :a2=>"si"},
151
+ {:name=>"Slovak", :a2=>"sk"},
152
+ {:name=>"Slovenian", :a2=>"sl"},
153
+ {:name=>"Somali", :a2=>"so"},
154
+ {:name=>"Sotho, Southern", :a2=>"st"},
155
+ {:name=>"South Ndebele", :a2=>"nr"},
156
+ {:name=>"Spanish; Castilian", :a2=>"es"},
157
+ {:name=>"Sundanese", :a2=>"su"},
158
+ {:name=>"Swahili", :a2=>"sw"},
159
+ {:name=>"Swati", :a2=>"ss"},
160
+ {:name=>"Swedish", :a2=>"sv"},
161
+ {:name=>"Tagalog", :a2=>"tl"},
162
+ {:name=>"Tahitian", :a2=>"ty"},
163
+ {:name=>"Tajik", :a2=>"tg"},
164
+ {:name=>"Tamil", :a2=>"ta"},
165
+ {:name=>"Tatar", :a2=>"tt"},
166
+ {:name=>"Telugu", :a2=>"te"},
167
+ {:name=>"Thai", :a2=>"th"},
168
+ {:name=>"Tibetan", :a2=>"bo"},
169
+ {:name=>"Tigrinya", :a2=>"ti"},
170
+ {:name=>"Tonga", :a2=>"to"},
171
+ {:name=>"Tsonga", :a2=>"ts"},
172
+ {:name=>"Tswana", :a2=>"tn"},
173
+ {:name=>"Turkish", :a2=>"tr"},
174
+ {:name=>"Turkmen", :a2=>"tk"},
175
+ {:name=>"Twi", :a2=>"tw"},
176
+ {:name=>"Uighur", :a2=>"ug"},
177
+ {:name=>"Ukrainian", :a2=>"uk"},
178
+ {:name=>"Urdu", :a2=>"ur"},
179
+ {:name=>"Uzbek", :a2=>"uz"},
180
+ {:name=>"Venda", :a2=>"ve"},
181
+ {:name=>"Vietnamese", :a2=>"vi"},
182
+ {:name=>"Volap\303\274k", :a2=>"vo"},
183
+ {:name=>"Walloon", :a2=>"wa"},
184
+ {:name=>"Welsh", :a2=>"cy"},
185
+ {:name=>"Western Frisian", :a2=>"fy"},
186
+ {:name=>"Wolof", :a2=>"wo"},
187
+ {:name=>"Xhosa", :a2=>"xh"},
188
+ {:name=>"Yiddish", :a2=>"yi"},
189
+ {:name=>"Yoruba", :a2=>"yo"},
190
+ {:name=>"Zhuang; Chuang", :a2=>"za"},
191
+ {:name=>"Zulu", :a2=>"zu"}]
192
+ end
193
+ end
@@ -0,0 +1,13 @@
1
+ require 'iso_codes/data/languages'
2
+
3
+ module ISOCodes
4
+
5
+ class Language < Base
6
+ fields :name, :a2
7
+
8
+ def self.data
9
+ Data::Languages
10
+ end
11
+ end
12
+
13
+ end
@@ -0,0 +1,46 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+
3
+ class CountryTest < Test::Unit::TestCase
4
+ include ISOCodes
5
+
6
+ should 'have data' do
7
+ assert_instance_of Array, Country.data
8
+ end
9
+
10
+ should 'return first matching item for #find' do
11
+ country = Country.find(:a2, 'GB')
12
+ assert_instance_of Country, country
13
+ assert_equal 'GB', country.a2
14
+ end
15
+
16
+ should 'return all array of matching items for #find_all' do
17
+ countries = Country.find_all_by_region('Europe')
18
+ assert_instance_of Array, countries
19
+ assert(countries.all? { |c|
20
+ c.region == 'Europe'
21
+ })
22
+ end
23
+
24
+ should 'have auto generated find_by_x methods' do
25
+
26
+ %w(name a2 a3 region subregion).each do |field|
27
+ assert Country.respond_to?("find_by_#{field}")
28
+ end
29
+
30
+ end
31
+
32
+ should 'have auto generated find_all_by_x methods' do
33
+
34
+ %w(name a2 a3 region subregion).each do |field|
35
+ assert Country.respond_to?("find_all_by_#{field}")
36
+ end
37
+
38
+ end
39
+
40
+ should 'find the currency for a particular country' do
41
+ country = Country.find_by_a2('GB')
42
+ assert_instance_of Currency, country.currency
43
+ assert_equal 'GBP', country.currency.code
44
+ end
45
+
46
+ end
@@ -0,0 +1,44 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+
3
+ class CurrencyTest < Test::Unit::TestCase
4
+ include ISOCodes
5
+
6
+ should 'have data' do
7
+ assert_instance_of Array, Currency.data
8
+ end
9
+
10
+ should 'return first matching item for #find' do
11
+ currency = Currency.find(:code, 'GBP')
12
+ assert_instance_of Currency, currency
13
+ assert_equal 'GBP', currency.code
14
+ end
15
+
16
+ should 'have auto generated find_by_x methods' do
17
+
18
+ %w(name code numeric country_a2).each do |field|
19
+ assert Currency.respond_to?("find_by_#{field}")
20
+ end
21
+
22
+ end
23
+
24
+ should 'have auto generated find_all_by_x methods' do
25
+
26
+ %w(name code numeric country_a2).each do |field|
27
+ assert Currency.respond_to?("find_all_by_#{field}")
28
+ end
29
+
30
+ end
31
+
32
+ should 'return countries for #country' do
33
+ currency = Currency.find_by_code('USD')
34
+ assert_instance_of Array, currency.countries
35
+ assert_instance_of Country, currency.countries.first
36
+ assert(currency.countries.size > 1)
37
+ end
38
+
39
+ should 'find currency for a country given a Country object' do
40
+ country = Country.find_by_a2('GB')
41
+ currency = Currency.find_by_country(country)
42
+ assert_equal 'GBP', currency.code
43
+ end
44
+ end
@@ -0,0 +1,24 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+
3
+ class LanguageTest < Test::Unit::TestCase
4
+ include ISOCodes
5
+
6
+ should 'have data' do
7
+ assert_instance_of Array, Language.data
8
+ end
9
+
10
+ should 'return first matching item for #find' do
11
+ language = Language.find(:a2, 'en')
12
+ assert_instance_of Language, language
13
+ assert_equal 'en', language.a2
14
+ end
15
+
16
+ should 'have auto generated find_by_x methods' do
17
+
18
+ %w(name a2).each do |field|
19
+ assert Language.respond_to?("find_by_#{field}")
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -0,0 +1,6 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+
3
+ require 'rubygems'
4
+ require 'test/unit'
5
+ require 'shoulda'
6
+ require 'iso_codes'
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: danwrong-iso_codes
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - Dan Webb
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-07-27 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: shoulda
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: fastercsv
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ description: Gem for finding and listing ISO codes for countries, currencies and languages
36
+ email: dan@danwebb.net
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - CHANGELOG
43
+ - lib/iso_codes/base.rb
44
+ - lib/iso_codes/country.rb
45
+ - lib/iso_codes/currency.rb
46
+ - lib/iso_codes/data/countries.rb
47
+ - lib/iso_codes/data/currencies.rb
48
+ - lib/iso_codes/data/languages.rb
49
+ - lib/iso_codes/language.rb
50
+ - lib/iso_codes.rb
51
+ - LICENSE
52
+ - README
53
+ files:
54
+ - CHANGELOG
55
+ - lib/iso_codes/base.rb
56
+ - lib/iso_codes/country.rb
57
+ - lib/iso_codes/currency.rb
58
+ - lib/iso_codes/data/countries.rb
59
+ - lib/iso_codes/data/currencies.rb
60
+ - lib/iso_codes/data/languages.rb
61
+ - lib/iso_codes/language.rb
62
+ - lib/iso_codes.rb
63
+ - LICENSE
64
+ - Manifest
65
+ - Rakefile
66
+ - README
67
+ - test/country_test.rb
68
+ - test/currency_test.rb
69
+ - test/language_test.rb
70
+ - test/test_helper.rb
71
+ - iso_codes.gemspec
72
+ has_rdoc: false
73
+ homepage: http://github.com/danwrong/iso_codes/
74
+ licenses:
75
+ post_install_message:
76
+ rdoc_options:
77
+ - --line-numbers
78
+ - --inline-source
79
+ - --title
80
+ - Iso_codes
81
+ - --main
82
+ - README
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ version:
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: "1.2"
96
+ version:
97
+ requirements: []
98
+
99
+ rubyforge_project: iso_codes
100
+ rubygems_version: 1.3.5
101
+ signing_key:
102
+ specification_version: 3
103
+ summary: Gem for finding and listing ISO codes for countries, currencies and languages
104
+ test_files:
105
+ - test/country_test.rb
106
+ - test/currency_test.rb
107
+ - test/language_test.rb
108
+ - test/test_helper.rb