normalize_country 0.0.1 → 0.1.0
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.
- checksums.yaml +15 -0
- data/README.rdoc +49 -0
- data/bin/normalize_country +183 -0
- data/lib/normalize_country.rb +32 -5
- data/lib/normalize_country/countries/en.yml +726 -479
- data/spec/normalize_country_spec.rb +90 -4
- metadata +55 -71
- data/spec/normalize_country_spec.rb.x +0 -47
@@ -2,6 +2,8 @@ require "minitest/autorun"
|
|
2
2
|
require "normalize_country"
|
3
3
|
|
4
4
|
describe NormalizeCountry do
|
5
|
+
COUNTRY_COUNT = 247
|
6
|
+
|
5
7
|
it "normalizes to a country's ISO name by default" do
|
6
8
|
NormalizeCountry.convert("USA").must_equal("United States")
|
7
9
|
end
|
@@ -19,12 +21,12 @@ describe NormalizeCountry do
|
|
19
21
|
%w[America U.S. U.S.A.].each { |v| NormalizeCountry.convert(v).must_equal("United States") }
|
20
22
|
end
|
21
23
|
|
22
|
-
{:alpha2 => "US", :alpha3 => "USA", :ioc => "USA", :iso_name => "United States", :official => "United States of America", :fifa => "USA"}.each do |spec, expect|
|
24
|
+
{:alpha2 => "US", :alpha3 => "USA", :ioc => "USA", :iso_name => "United States", :numeric => "840", :official => "United States of America", :fifa => "USA"}.each do |spec, expect|
|
23
25
|
it "normalizes to #{spec}" do
|
24
26
|
NormalizeCountry.convert("America", :to => spec).must_equal(expect)
|
25
27
|
end
|
26
28
|
end
|
27
|
-
|
29
|
+
|
28
30
|
it "returns nil if the normalization target is unknown" do
|
29
31
|
NormalizeCountry.convert("USA", :to => :wtf).must_be_nil
|
30
32
|
end
|
@@ -32,8 +34,92 @@ describe NormalizeCountry do
|
|
32
34
|
it "has a function form" do
|
33
35
|
NormalizeCountry("USA", :to => :ioc).must_equal("USA")
|
34
36
|
end
|
35
|
-
|
36
|
-
describe "
|
37
|
+
|
38
|
+
describe ".to_h" do
|
39
|
+
before { NormalizeCountry.to = :numeric }
|
40
|
+
after { NormalizeCountry.to = :iso_name }
|
41
|
+
|
42
|
+
describe "without a :to option" do
|
43
|
+
it "uses the format option as the key and the default :to option as the value" do
|
44
|
+
hash = NormalizeCountry.to_h(:alpha3)
|
45
|
+
hash.must_be_instance_of Hash
|
46
|
+
hash["USA"].must_equal "840"
|
47
|
+
hash["GBR"].must_equal "826"
|
48
|
+
hash.size.must_equal COUNTRY_COUNT
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "with a :to option" do
|
53
|
+
it "uses the format option as the key and the :to option as the value" do
|
54
|
+
hash = NormalizeCountry.to_h(:alpha3, :to => :alpha2)
|
55
|
+
hash.must_be_instance_of Hash
|
56
|
+
hash["USA"].must_equal "US"
|
57
|
+
hash["GBR"].must_equal "GB"
|
58
|
+
hash.size.must_equal COUNTRY_COUNT
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "with an unknown format argument" do
|
63
|
+
it "returns an empty Hash" do
|
64
|
+
hash = NormalizeCountry.to_h(:wtf)
|
65
|
+
hash.must_be_instance_of Hash
|
66
|
+
hash.must_be_empty
|
67
|
+
|
68
|
+
hash = NormalizeCountry.to_h(:alpha2, :to => :wtf)
|
69
|
+
hash.must_be_instance_of Hash
|
70
|
+
hash.must_be_empty
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe ".to_a" do
|
76
|
+
describe "without a format argument" do
|
77
|
+
before { NormalizeCountry.to = :numeric }
|
78
|
+
after { NormalizeCountry.to = :iso_name }
|
79
|
+
|
80
|
+
it "returns an Array of countries in the default format" do
|
81
|
+
list = NormalizeCountry.to_a
|
82
|
+
list.must_be_instance_of Array
|
83
|
+
list.must_include "840" # US
|
84
|
+
list.must_include "826" # GB
|
85
|
+
list.size.must_equal COUNTRY_COUNT
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe "with a format argument" do
|
90
|
+
it "returns an Array of countries in the given format" do
|
91
|
+
list = NormalizeCountry.to_a(:alpha3)
|
92
|
+
list.must_be_instance_of Array
|
93
|
+
list.must_include "USA"
|
94
|
+
list.must_include "GBR"
|
95
|
+
list.size.must_equal COUNTRY_COUNT
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe "with an unknown format argument" do
|
100
|
+
it "returns an empty Array" do
|
101
|
+
list = NormalizeCountry.to_a(:wtf)
|
102
|
+
list.must_be_instance_of Array
|
103
|
+
list.must_be_empty
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe ".formats" do
|
109
|
+
it "returns a list of supported formats" do
|
110
|
+
expected = [:alpha2, :alpha3, :fifa, :ioc, :iso_name, :numeric, :official, :short, :simple]
|
111
|
+
formats = NormalizeCountry.formats
|
112
|
+
|
113
|
+
# Ugh, support this in 1.8.7 for a least one version
|
114
|
+
if Symbol < Comparable
|
115
|
+
formats.sort.must_equal(expected.sort)
|
116
|
+
else
|
117
|
+
formats.sort_by { |f| f.to_s }.must_equal(expected.sort_by { |f| f.to_s })
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
describe "when a default is set" do
|
37
123
|
before { NormalizeCountry.to = :alpha2 }
|
38
124
|
after { NormalizeCountry.to = :iso_name }
|
39
125
|
|
metadata
CHANGED
@@ -1,99 +1,83 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: normalize_country
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 1
|
10
|
-
version: 0.0.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Skye Shaw
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2013-11-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
21
14
|
name: rake
|
22
|
-
|
23
|
-
|
24
|
-
none: false
|
25
|
-
requirements:
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
26
17
|
- - ~>
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
- 9
|
32
|
-
- 2
|
33
|
-
version: 0.9.2
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.9'
|
34
20
|
type: :development
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: minitest
|
38
21
|
prerelease: false
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.9'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
48
34
|
type: :development
|
49
|
-
|
50
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: ! " Converts country names and codes from standardized and non-standardized
|
42
|
+
names and abbreviations to one of the following:\n ISO 3166-1 (code/name/number),
|
43
|
+
FIFA, IOC, a country's official name or shortened name.\n\n Includes a small
|
44
|
+
script to convert names/codes in a DB, XML or CSV file.\n"
|
51
45
|
email: skye.shaw@gmail.com
|
52
|
-
executables:
|
53
|
-
|
46
|
+
executables:
|
47
|
+
- normalize_country
|
54
48
|
extensions: []
|
55
|
-
|
56
|
-
extra_rdoc_files:
|
49
|
+
extra_rdoc_files:
|
57
50
|
- README.rdoc
|
58
|
-
files:
|
51
|
+
files:
|
59
52
|
- lib/normalize_country.rb
|
60
53
|
- lib/normalize_country/countries/en.yml
|
61
54
|
- spec/normalize_country_spec.rb
|
62
|
-
- spec/normalize_country_spec.rb.x
|
63
55
|
- README.rdoc
|
56
|
+
- bin/normalize_country
|
64
57
|
homepage: http://github.com/sshaw/normalize_country
|
65
|
-
licenses:
|
58
|
+
licenses:
|
66
59
|
- MIT
|
60
|
+
metadata: {}
|
67
61
|
post_install_message:
|
68
62
|
rdoc_options: []
|
69
|
-
|
70
|
-
require_paths:
|
63
|
+
require_paths:
|
71
64
|
- lib
|
72
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
none: false
|
83
|
-
requirements:
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
hash: 3
|
87
|
-
segments:
|
88
|
-
- 0
|
89
|
-
version: "0"
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
90
75
|
requirements: []
|
91
|
-
|
92
76
|
rubyforge_project:
|
93
|
-
rubygems_version:
|
77
|
+
rubygems_version: 2.0.7
|
94
78
|
signing_key:
|
95
|
-
specification_version:
|
79
|
+
specification_version: 4
|
96
80
|
summary: Convert country names and codes to a standard
|
97
|
-
test_files:
|
81
|
+
test_files:
|
98
82
|
- spec/normalize_country_spec.rb
|
99
|
-
|
83
|
+
has_rdoc:
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "tempfile"
|
3
|
-
require "yaml"
|
4
|
-
|
5
|
-
temp = Tempfile.new "normalize_country"
|
6
|
-
targets = %w[alpha2 alpha3 ioc iso_name official fifa short]
|
7
|
-
data = Hash[*targets*2]
|
8
|
-
data["aliases"] = ["the first alias", "2nd alias"]
|
9
|
-
temp.puts(YAML.dump("US" => data))
|
10
|
-
ENV["NORMALIZE_COUNTRY_DATAFILE"] = temp.path
|
11
|
-
|
12
|
-
require "normalize_country"
|
13
|
-
|
14
|
-
describe NormalizeCountry do
|
15
|
-
it "normalizes to a country's ISO name by default" do
|
16
|
-
NormalizeCountry.normalize("alpha2").must_equal("iso_name")
|
17
|
-
end
|
18
|
-
|
19
|
-
it "is case insensitive" do
|
20
|
-
NormalizeCountry.normalize("ALPHA2").must_equal("iso_name")
|
21
|
-
NormalizeCountry.normalize("alpha2").must_equal("iso_name")
|
22
|
-
end
|
23
|
-
|
24
|
-
it "ignores extra spaces" do
|
25
|
-
NormalizeCountry.normalize(" the first alias ").must_equal("iso_name")
|
26
|
-
end
|
27
|
-
|
28
|
-
%w[alpha2 alpha3 ioc iso_name official fifa short].each do |spec|
|
29
|
-
it "normalizes to #{spec}" do
|
30
|
-
NormalizeCountry.normalize("2nd alias", :to => spec).must_equal(spec)
|
31
|
-
NormalizeCountry.normalize("the first alias", :to => spec).must_equal(spec)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context "when a default to value is set" do
|
36
|
-
before { NormalizeCountry.to = :alpha2 }
|
37
|
-
after { NormalizeCountry.to = :iso_name }
|
38
|
-
|
39
|
-
it "normalizes to the default when no target is given" do
|
40
|
-
NormalizeCountry.normalize("iso_name").must_equal("alpha2")
|
41
|
-
end
|
42
|
-
|
43
|
-
it "normalizes to the target when one is given" do
|
44
|
-
NormalizeCountry.normalize("iso_name", :to => :short).must_equal("short")
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|