countries 0.5.3 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/countries.gemspec +5 -5
- data/lib/countries/country.rb +30 -18
- data/spec/country_spec.rb +38 -1
- metadata +38 -40
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/countries.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{countries}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.6.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date = %q{2011-
|
11
|
+
s.authors = [%q{hexorx}]
|
12
|
+
s.date = %q{2011-09-01}
|
13
13
|
s.description = %q{All sorts of useful information about every country packaged as pretty little country objects. It includes data from ISO 3166 (countries and subdivisions), ISO 4217 (currency), and E.164 (phone numbers). As a bonus it even adds a country_select helper to rails projects.}
|
14
14
|
s.email = %q{hexorx@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -230,8 +230,8 @@ Gem::Specification.new do |s|
|
|
230
230
|
"spec/spec_helper.rb"
|
231
231
|
]
|
232
232
|
s.homepage = %q{http://github.com/hexorx/countries}
|
233
|
-
s.require_paths = [
|
234
|
-
s.rubygems_version = %q{1.6
|
233
|
+
s.require_paths = [%q{lib}]
|
234
|
+
s.rubygems_version = %q{1.8.6}
|
235
235
|
s.summary = %q{Gives you a country object full of all sorts of useful information.}
|
236
236
|
|
237
237
|
if s.respond_to? :specification_version then
|
data/lib/countries/country.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
module ISO3166; end
|
2
2
|
|
3
3
|
class ISO3166::Country
|
4
|
-
|
4
|
+
Data = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'data', 'countries.yaml')) || {}
|
5
|
+
Names = Data.map {|k,v| [v['name'],k]}.sort
|
6
|
+
NameIndex = Hash[*Names.flatten]
|
5
7
|
|
6
8
|
AttrReaders = [
|
7
9
|
:number,
|
@@ -27,32 +29,20 @@ class ISO3166::Country
|
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
30
|
-
|
31
|
-
Names = Data.map {|k,v| [v['name'],k]}.sort
|
32
|
-
NameIndex = Hash[*Names.flatten]
|
32
|
+
attr_reader :data
|
33
33
|
|
34
34
|
def initialize(country_code)
|
35
35
|
@data = Data[country_code]
|
36
36
|
end
|
37
|
+
|
38
|
+
def valid?
|
39
|
+
!!@data
|
40
|
+
end
|
37
41
|
|
38
42
|
def currency
|
39
43
|
ISO4217::Currency.from_code(@data['currency'])
|
40
44
|
end
|
41
45
|
|
42
|
-
def self.search(query)
|
43
|
-
self.new(query)
|
44
|
-
end
|
45
|
-
|
46
|
-
def self.[](query)
|
47
|
-
self.search(query)
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.find_by_name(name)
|
51
|
-
Data.select do |k,v|
|
52
|
-
v["name"] == name || v["names"].include?(name)
|
53
|
-
end.first
|
54
|
-
end
|
55
|
-
|
56
46
|
def subdivisions
|
57
47
|
@subdivisions ||= subdivisions? ? YAML.load_file(File.join(File.dirname(__FILE__), '..', 'data', 'subdivisions', "#{alpha2}.yaml")) : {}
|
58
48
|
end
|
@@ -63,4 +53,26 @@ class ISO3166::Country
|
|
63
53
|
File.exist?(File.join(File.dirname(__FILE__), '..', 'data', 'subdivisions', "#{alpha2}.yaml"))
|
64
54
|
end
|
65
55
|
|
56
|
+
class << self
|
57
|
+
def all
|
58
|
+
Data.map { |country,data| [data['name'],country] }
|
59
|
+
end
|
60
|
+
|
61
|
+
alias :countries :all
|
62
|
+
|
63
|
+
def search(query)
|
64
|
+
country = self.new(query.to_s.upcase)
|
65
|
+
country.valid? ? country : false
|
66
|
+
end
|
67
|
+
|
68
|
+
def [](query)
|
69
|
+
self.search(query)
|
70
|
+
end
|
71
|
+
|
72
|
+
def find_by_name(name)
|
73
|
+
Data.select do |k,v|
|
74
|
+
v["name"] == name || v["names"].include?(name)
|
75
|
+
end.first
|
76
|
+
end
|
77
|
+
end
|
66
78
|
end
|
data/spec/country_spec.rb
CHANGED
@@ -75,11 +75,48 @@ describe ISO3166::Country do
|
|
75
75
|
country.states.should have(57).states
|
76
76
|
end
|
77
77
|
end
|
78
|
+
|
79
|
+
describe 'valid?' do
|
80
|
+
it 'should return true if country is valid' do
|
81
|
+
ISO3166::Country.new('US').should be_valid
|
82
|
+
end
|
78
83
|
|
84
|
+
it 'should return false if country is invalid' do
|
85
|
+
ISO3166::Country.new('fubar').should_not be_valid
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe 'all' do
|
90
|
+
it 'should return an arry list of all countries' do
|
91
|
+
countries = ISO3166::Country.all
|
92
|
+
countries.should be_an(Array)
|
93
|
+
countries.first.should be_an(Array)
|
94
|
+
countries.should have(246).countries
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe 'countries' do
|
99
|
+
it 'should be the same as all' do
|
100
|
+
ISO3166::Country.countries.should == ISO3166::Country.all
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
79
104
|
describe 'search' do
|
80
|
-
it 'should return new country object when a valid alpha2 is passed' do
|
105
|
+
it 'should return new country object when a valid alpha2 string is passed' do
|
81
106
|
ISO3166::Country.search('US').should be_a(ISO3166::Country)
|
82
107
|
end
|
108
|
+
|
109
|
+
it 'should return fals when an invalid alpha2 string is passed' do
|
110
|
+
ISO3166::Country.search('fubar').should be_false
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'should return new country object when a valid alpha2 symbol is passed' do
|
114
|
+
ISO3166::Country.search(:us).should be_a(ISO3166::Country)
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'should return false when an invalid alpha2 symbol is passed' do
|
118
|
+
ISO3166::Country.search(:fubar).should be_false
|
119
|
+
end
|
83
120
|
end
|
84
121
|
|
85
122
|
describe 'currency' do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: countries
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 6
|
9
|
+
- 0
|
10
|
+
version: 0.6.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- hexorx
|
@@ -15,13 +15,10 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-09-01 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
23
|
-
type: :runtime
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
25
22
|
none: false
|
26
23
|
requirements:
|
27
24
|
- - "="
|
@@ -33,11 +30,11 @@ dependencies:
|
|
33
30
|
- 0
|
34
31
|
version: 0.4.0
|
35
32
|
name: currencies
|
36
|
-
|
37
|
-
- !ruby/object:Gem::Dependency
|
33
|
+
type: :runtime
|
38
34
|
prerelease: false
|
39
|
-
|
40
|
-
|
35
|
+
requirement: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
41
38
|
none: false
|
42
39
|
requirements:
|
43
40
|
- - ">="
|
@@ -49,11 +46,11 @@ dependencies:
|
|
49
46
|
- 4
|
50
47
|
version: 1.6.4
|
51
48
|
name: jeweler
|
52
|
-
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
prerelease: false
|
55
49
|
type: :development
|
56
|
-
|
50
|
+
prerelease: false
|
51
|
+
requirement: *id002
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
57
54
|
none: false
|
58
55
|
requirements:
|
59
56
|
- - "="
|
@@ -65,11 +62,11 @@ dependencies:
|
|
65
62
|
- 1
|
66
63
|
version: 1.3.1
|
67
64
|
name: rspec
|
68
|
-
version_requirements: *id003
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
prerelease: false
|
71
65
|
type: :development
|
72
|
-
|
66
|
+
prerelease: false
|
67
|
+
requirement: *id003
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
73
70
|
none: false
|
74
71
|
requirements:
|
75
72
|
- - ">="
|
@@ -79,11 +76,11 @@ dependencies:
|
|
79
76
|
- 0
|
80
77
|
version: "0"
|
81
78
|
name: rake
|
82
|
-
version_requirements: *id004
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
prerelease: false
|
85
79
|
type: :development
|
86
|
-
|
80
|
+
prerelease: false
|
81
|
+
requirement: *id004
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
87
84
|
none: false
|
88
85
|
requirements:
|
89
86
|
- - "="
|
@@ -95,11 +92,11 @@ dependencies:
|
|
95
92
|
- 4
|
96
93
|
version: 0.6.4
|
97
94
|
name: yard
|
98
|
-
|
99
|
-
- !ruby/object:Gem::Dependency
|
95
|
+
type: :development
|
100
96
|
prerelease: false
|
101
|
-
|
102
|
-
|
97
|
+
requirement: *id005
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
103
100
|
none: false
|
104
101
|
requirements:
|
105
102
|
- - ">="
|
@@ -111,11 +108,11 @@ dependencies:
|
|
111
108
|
- 0
|
112
109
|
version: 0.2.0
|
113
110
|
name: currencies
|
114
|
-
|
115
|
-
- !ruby/object:Gem::Dependency
|
111
|
+
type: :runtime
|
116
112
|
prerelease: false
|
117
|
-
|
118
|
-
|
113
|
+
requirement: *id006
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
119
116
|
none: false
|
120
117
|
requirements:
|
121
118
|
- - ">="
|
@@ -125,11 +122,11 @@ dependencies:
|
|
125
122
|
- 0
|
126
123
|
version: "0"
|
127
124
|
name: rspec
|
128
|
-
version_requirements: *id007
|
129
|
-
- !ruby/object:Gem::Dependency
|
130
|
-
prerelease: false
|
131
125
|
type: :development
|
132
|
-
|
126
|
+
prerelease: false
|
127
|
+
requirement: *id007
|
128
|
+
- !ruby/object:Gem::Dependency
|
129
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
133
130
|
none: false
|
134
131
|
requirements:
|
135
132
|
- - ">="
|
@@ -139,7 +136,9 @@ dependencies:
|
|
139
136
|
- 0
|
140
137
|
version: "0"
|
141
138
|
name: yard
|
142
|
-
|
139
|
+
type: :development
|
140
|
+
prerelease: false
|
141
|
+
requirement: *id008
|
143
142
|
description: All sorts of useful information about every country packaged as pretty little country objects. It includes data from ISO 3166 (countries and subdivisions), ISO 4217 (currency), and E.164 (phone numbers). As a bonus it even adds a country_select helper to rails projects.
|
144
143
|
email: hexorx@gmail.com
|
145
144
|
executables: []
|
@@ -361,7 +360,6 @@ files:
|
|
361
360
|
- lib/iso3166.rb
|
362
361
|
- spec/country_spec.rb
|
363
362
|
- spec/spec_helper.rb
|
364
|
-
has_rdoc: true
|
365
363
|
homepage: http://github.com/hexorx/countries
|
366
364
|
licenses: []
|
367
365
|
|
@@ -391,7 +389,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
391
389
|
requirements: []
|
392
390
|
|
393
391
|
rubyforge_project:
|
394
|
-
rubygems_version: 1.6
|
392
|
+
rubygems_version: 1.8.6
|
395
393
|
signing_key:
|
396
394
|
specification_version: 3
|
397
395
|
summary: Gives you a country object full of all sorts of useful information.
|