sundawg_country_codes 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Manifest +6 -1
- data/README +6 -0
- data/Rakefile +1 -1
- data/lib/usa_state_translater.rb +27 -0
- data/lib/usa_states.yml +100 -0
- data/sundawg_country_codes.gemspec +5 -5
- data/test/country_iso_translater_test.rb +4 -24
- data/test/usa_translater_test.rb +44 -0
- metadata +11 -4
data/Manifest
CHANGED
@@ -1,6 +1,11 @@
|
|
1
|
+
Manifest
|
1
2
|
README
|
2
3
|
Rakefile
|
3
4
|
lib/countries.yml
|
4
5
|
lib/country_iso_translater.rb
|
6
|
+
lib/usa_state_translater.rb
|
7
|
+
lib/usa_states.yml
|
8
|
+
sundawg_country_codes.gemspec
|
5
9
|
test/country_iso_translater_test.rb
|
6
|
-
|
10
|
+
test/test_helper.rb
|
11
|
+
test/usa_translater_test.rb
|
data/README
CHANGED
@@ -64,6 +64,11 @@ To build the unicode HTML for a symbol:
|
|
64
64
|
currency = SunDawg::CountryIsoTranslater.get_iso4217_currency_by_iso3166_alpha2("UZ")
|
65
65
|
assert_equal SunDawg::CountryIsoTranslater.build_html_unicode(currency["unicode_hex"]), "лв"
|
66
66
|
|
67
|
+
To translate to and from USA state name and the 2-digit code:
|
68
|
+
|
69
|
+
SunDawg::USAStateTranslater.translate_name_to_code('New York')
|
70
|
+
SunDawg::USAStateTranslater.translate_code_to_name('NY')
|
71
|
+
|
67
72
|
DATA
|
68
73
|
----
|
69
74
|
All country code and names are stored in a countries.yml file that can be changed as you need. The latest codes and country names are derived from:
|
@@ -87,6 +92,7 @@ config.gem 'sundawg_country_codes', :lib => 'country_iso_translater'
|
|
87
92
|
|
88
93
|
VERSION HISTORY
|
89
94
|
---------------
|
95
|
+
v0.0.3 - Added USA State translater and cleaned up unit tests.
|
90
96
|
v0.0.2b - Completed all currency information, unicode HTML utility, and bug fixes. Gem version re-published as 0.0.2.
|
91
97
|
v0.0.2 - Added ISO 4217 currency information.
|
92
98
|
v0.0.1 - Allows basic ISO 3166 translation.
|
data/Rakefile
CHANGED
@@ -3,7 +3,7 @@ require 'rubygems'
|
|
3
3
|
require 'rake'
|
4
4
|
require 'echoe'
|
5
5
|
|
6
|
-
Echoe.new('sundawg_country_codes', '0.0.
|
6
|
+
Echoe.new('sundawg_country_codes', '0.0.3') do |p|
|
7
7
|
p.description = "Manage ISO 3166 Country Names and Codes."
|
8
8
|
p.url = "http://github.com/SunDawg/country_codes"
|
9
9
|
p.author = "Christopher Sun"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module SunDawg
|
4
|
+
module USAStateTranslater
|
5
|
+
# allows client application to override YAML hash
|
6
|
+
FILE = File.expand_path(File.join(File.dirname(__FILE__), 'usa_states.yml')) unless defined?(FILE)
|
7
|
+
USA_STATES = YAML.load_file(FILE) unless defined?(USA_STATES)
|
8
|
+
|
9
|
+
# O(N) translation from state name to 2-digit code
|
10
|
+
def self.translate_name_to_code(name)
|
11
|
+
USA_STATES.each_pair { |key, value|
|
12
|
+
return key if value["name"] == name
|
13
|
+
}
|
14
|
+
raise NoStateError.new("[#{name}] IS NOT VALID")
|
15
|
+
end
|
16
|
+
|
17
|
+
# O(1) translation of 2-digit code to name
|
18
|
+
def self.translate_code_to_name(code)
|
19
|
+
state = USA_STATES[code]
|
20
|
+
raise NoStateError.new("[#{code}] IS NOT VALID") if state.nil?
|
21
|
+
state["name"]
|
22
|
+
end
|
23
|
+
|
24
|
+
class NoStateError < StandardError
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/usa_states.yml
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
AL:
|
2
|
+
name: Alabama
|
3
|
+
AK:
|
4
|
+
name: Alaska
|
5
|
+
AZ:
|
6
|
+
name: Arizona
|
7
|
+
AR:
|
8
|
+
name: Arkansas
|
9
|
+
CA:
|
10
|
+
name: California
|
11
|
+
CO:
|
12
|
+
name: Colorado
|
13
|
+
CT:
|
14
|
+
name: Connecticut
|
15
|
+
DE:
|
16
|
+
name: Delaware
|
17
|
+
FL:
|
18
|
+
name: Florida
|
19
|
+
GA:
|
20
|
+
name: Georgia
|
21
|
+
HI:
|
22
|
+
name: Hawaii
|
23
|
+
ID:
|
24
|
+
name: Idaho
|
25
|
+
IL:
|
26
|
+
name: Illinois
|
27
|
+
IN:
|
28
|
+
name: Indiana
|
29
|
+
IA:
|
30
|
+
name: Iowa
|
31
|
+
KS:
|
32
|
+
name: Kansas
|
33
|
+
KY:
|
34
|
+
name: Kentucky
|
35
|
+
LA:
|
36
|
+
name: Louisiana
|
37
|
+
ME:
|
38
|
+
name: Maine
|
39
|
+
MD:
|
40
|
+
name: Maryland
|
41
|
+
MA:
|
42
|
+
name: Massachusetts
|
43
|
+
MI:
|
44
|
+
name: Michigan
|
45
|
+
MN:
|
46
|
+
name: Minnesota
|
47
|
+
MS:
|
48
|
+
name: Mississippi
|
49
|
+
MO:
|
50
|
+
name: Missouri
|
51
|
+
MT:
|
52
|
+
name: Montana
|
53
|
+
NE:
|
54
|
+
name: Nebraska
|
55
|
+
NV:
|
56
|
+
name: Nevada
|
57
|
+
NH:
|
58
|
+
name: New Hampshire
|
59
|
+
NJ:
|
60
|
+
name: New Jersey
|
61
|
+
NM:
|
62
|
+
name: New Mexico
|
63
|
+
NY:
|
64
|
+
name: New York
|
65
|
+
NC:
|
66
|
+
name: North Carolina
|
67
|
+
ND:
|
68
|
+
name: North Dakota
|
69
|
+
OH:
|
70
|
+
name: Ohio
|
71
|
+
OK:
|
72
|
+
name: Oklahoma
|
73
|
+
OR:
|
74
|
+
name: Oregon
|
75
|
+
PA:
|
76
|
+
name: Pennsylvania
|
77
|
+
RI:
|
78
|
+
name: Rhode Island
|
79
|
+
SC:
|
80
|
+
name: South Carolina
|
81
|
+
SD:
|
82
|
+
name: South Dakota
|
83
|
+
TN:
|
84
|
+
name: Tennessee
|
85
|
+
TX:
|
86
|
+
name: Texas
|
87
|
+
UT:
|
88
|
+
name: Utah
|
89
|
+
VT:
|
90
|
+
name: Vermont
|
91
|
+
VA:
|
92
|
+
name: Virginia
|
93
|
+
WA:
|
94
|
+
name: Washington
|
95
|
+
WV:
|
96
|
+
name: West Virginia
|
97
|
+
WI:
|
98
|
+
name: Wisconsin
|
99
|
+
WY:
|
100
|
+
name: Wyoming
|
@@ -2,22 +2,22 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{sundawg_country_codes}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Christopher Sun"]
|
9
|
-
s.date = %q{
|
9
|
+
s.date = %q{2010-01-11}
|
10
10
|
s.description = %q{Manage ISO 3166 Country Names and Codes.}
|
11
11
|
s.email = %q{christopher.sun@gmail.com}
|
12
|
-
s.extra_rdoc_files = ["README", "lib/countries.yml", "lib/country_iso_translater.rb"]
|
13
|
-
s.files = ["README", "Rakefile", "lib/countries.yml", "lib/country_iso_translater.rb", "
|
12
|
+
s.extra_rdoc_files = ["README", "lib/countries.yml", "lib/country_iso_translater.rb", "lib/usa_state_translater.rb", "lib/usa_states.yml"]
|
13
|
+
s.files = ["Manifest", "README", "Rakefile", "lib/countries.yml", "lib/country_iso_translater.rb", "lib/usa_state_translater.rb", "lib/usa_states.yml", "sundawg_country_codes.gemspec", "test/country_iso_translater_test.rb", "test/test_helper.rb", "test/usa_translater_test.rb"]
|
14
14
|
s.homepage = %q{http://github.com/SunDawg/country_codes}
|
15
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Sundawg_country_codes", "--main", "README"]
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
s.rubyforge_project = %q{sundawg_country_codes}
|
18
18
|
s.rubygems_version = %q{1.3.5}
|
19
19
|
s.summary = %q{Manage ISO 3166 Country Names and Codes.}
|
20
|
-
s.test_files = ["test/country_iso_translater_test.rb", "test/test_helper.rb"]
|
20
|
+
s.test_files = ["test/country_iso_translater_test.rb", "test/test_helper.rb", "test/usa_translater_test.rb"]
|
21
21
|
|
22
22
|
if s.respond_to? :specification_version then
|
23
23
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
@@ -90,44 +90,24 @@ class CountryIsoTranslaterTest < Test::Unit::TestCase
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def test_error_on_invalid_currency
|
93
|
-
|
93
|
+
assert_raise SunDawg::CountryIsoTranslater::NoCountryError do
|
94
94
|
client.get_iso4217_currency_by_iso3166_alpha2("XX")
|
95
|
-
fail "Expected client::NoCountryError"
|
96
|
-
rescue client::NoCountryError => e
|
97
|
-
assert_equal e.to_s, "[XX] IS NOT VALID"
|
98
|
-
rescue => e
|
99
|
-
fail "Expected client::NoCountryError"
|
100
95
|
end
|
101
96
|
|
102
|
-
|
97
|
+
assert_raise SunDawg::CountryIsoTranslater::NoCurrencyError do
|
103
98
|
client.get_iso4217_currency_by_iso3166_alpha2("AX")
|
104
|
-
fail "Expected client::NoCurrencyError"
|
105
|
-
rescue client::NoCurrencyError => e
|
106
|
-
assert_equal e.to_s, "[AX] HAS NO ISO4217 CURRENCY"
|
107
|
-
rescue => e
|
108
|
-
fail "Expected client::NoCurrencyError"
|
109
99
|
end
|
110
100
|
end
|
111
101
|
|
112
102
|
def test_error_on_invalid_country
|
113
|
-
|
103
|
+
assert_raise SunDawg::CountryIsoTranslater::NoCountryError do
|
114
104
|
client.translate_iso3166_name_to_alpha2("Candyland")
|
115
|
-
fail "Expected client::NoCountryError"
|
116
|
-
rescue client::NoCountryError => e
|
117
|
-
assert_equal e.to_s, "[Candyland] IS NOT VALID"
|
118
|
-
rescue => e
|
119
|
-
fail "Expected client::NoCountryError"
|
120
105
|
end
|
121
106
|
end
|
122
107
|
|
123
108
|
def test_error_on_invalid_alpha2
|
124
|
-
|
109
|
+
assert_raise SunDawg::CountryIsoTranslater::NoCountryError do
|
125
110
|
client.translate_iso3166_alpha2_to_name("XX")
|
126
|
-
fail "Expected client::NoCountryError"
|
127
|
-
rescue client::NoCountryError => e
|
128
|
-
assert_equal e.to_s, "[XX] IS NOT VALID"
|
129
|
-
rescue => e
|
130
|
-
fail "Expected client::NoCountryError"
|
131
111
|
end
|
132
112
|
end
|
133
113
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
# allows override of FILE
|
4
|
+
module SunDawg
|
5
|
+
module USAStateTranslater
|
6
|
+
FILE = "lib/usa_states.yml"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'usa_state_translater'
|
11
|
+
|
12
|
+
class USAStateTranslaterTest < Test::Unit::TestCase
|
13
|
+
def test_code_to_name
|
14
|
+
assert_equal 'California', client.translate_code_to_name('CA')
|
15
|
+
assert_equal 'New York', client.translate_code_to_name('NY')
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_name_to_code
|
19
|
+
assert_equal 'TX', client.translate_name_to_code('Texas')
|
20
|
+
assert_equal 'UT', client.translate_name_to_code('Utah')
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_data_integrity
|
24
|
+
assert_equal 50, SunDawg::USAStateTranslater::USA_STATES.size
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_error_on_invalid_name
|
28
|
+
assert_raise SunDawg::USAStateTranslater::NoStateError do
|
29
|
+
client.translate_name_to_code('Petertopia')
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_error_on_invalid_state
|
34
|
+
assert_raise SunDawg::USAStateTranslater::NoStateError do
|
35
|
+
client.translate_code_to_name('XX')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
protected
|
40
|
+
|
41
|
+
def client
|
42
|
+
SunDawg::USAStateTranslater
|
43
|
+
end
|
44
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sundawg_country_codes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Sun
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-11 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -23,14 +23,20 @@ extra_rdoc_files:
|
|
23
23
|
- README
|
24
24
|
- lib/countries.yml
|
25
25
|
- lib/country_iso_translater.rb
|
26
|
+
- lib/usa_state_translater.rb
|
27
|
+
- lib/usa_states.yml
|
26
28
|
files:
|
29
|
+
- Manifest
|
27
30
|
- README
|
28
31
|
- Rakefile
|
29
32
|
- lib/countries.yml
|
30
33
|
- lib/country_iso_translater.rb
|
31
|
-
-
|
32
|
-
-
|
34
|
+
- lib/usa_state_translater.rb
|
35
|
+
- lib/usa_states.yml
|
33
36
|
- sundawg_country_codes.gemspec
|
37
|
+
- test/country_iso_translater_test.rb
|
38
|
+
- test/test_helper.rb
|
39
|
+
- test/usa_translater_test.rb
|
34
40
|
has_rdoc: true
|
35
41
|
homepage: http://github.com/SunDawg/country_codes
|
36
42
|
licenses: []
|
@@ -67,3 +73,4 @@ summary: Manage ISO 3166 Country Names and Codes.
|
|
67
73
|
test_files:
|
68
74
|
- test/country_iso_translater_test.rb
|
69
75
|
- test/test_helper.rb
|
76
|
+
- test/usa_translater_test.rb
|