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 CHANGED
@@ -1 +1 @@
1
- 0.5.3
1
+ 0.6.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{countries}
8
- s.version = "0.5.3"
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 = ["hexorx"]
12
- s.date = %q{2011-07-12}
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 = ["lib"]
234
- s.rubygems_version = %q{1.6.2}
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
@@ -1,7 +1,9 @@
1
1
  module ISO3166; end
2
2
 
3
3
  class ISO3166::Country
4
- attr_reader :data
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
- Data = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'data', 'countries.yaml')) || {}
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
@@ -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: 13
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 5
9
- - 3
10
- version: 0.5.3
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-07-12 00:00:00 -06:00
19
- default_executable:
18
+ date: 2011-09-01 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- prerelease: false
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
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
33
+ type: :runtime
38
34
  prerelease: false
39
- type: :development
40
- requirement: &id002 !ruby/object:Gem::Requirement
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
- requirement: &id003 !ruby/object:Gem::Requirement
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
- requirement: &id004 !ruby/object:Gem::Requirement
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
- requirement: &id005 !ruby/object:Gem::Requirement
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
- version_requirements: *id005
99
- - !ruby/object:Gem::Dependency
95
+ type: :development
100
96
  prerelease: false
101
- type: :runtime
102
- requirement: &id006 !ruby/object:Gem::Requirement
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
- version_requirements: *id006
115
- - !ruby/object:Gem::Dependency
111
+ type: :runtime
116
112
  prerelease: false
117
- type: :development
118
- requirement: &id007 !ruby/object:Gem::Requirement
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
- requirement: &id008 !ruby/object:Gem::Requirement
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
- version_requirements: *id008
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.2
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.