danwrong-iso_codes 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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