phone 1.1 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9927575529414f0e507e81c228a7c6106670a6ab
4
+ data.tar.gz: f8ac795cbf0043375ecdb6d100210cdfe6dc2198
5
+ SHA512:
6
+ metadata.gz: d21a6eb4e3e3e10e102b20dc63a9e477b85ba5a72761d996d36b5a61ac7880050d38b16458cf7b5897fe60604ae6f8abefeaa050495216eb1889f3a65b64f57c
7
+ data.tar.gz: a76493f7a957f556b3074cc3554da658793786de605e33b0b3c021abb0ba1c025e2b8f959e1f078760fd1c05763dc68f308a14a82adb613d10d54cad13ebd983
@@ -85,15 +85,6 @@ You can add your own custom named formats like so:
85
85
  Phoner::Phone.named_formats[:short] = '%A/%n1-%n2'
86
86
  pn.format(:short) # => 091/512-5486
87
87
 
88
- == Finding countries by their isocode
89
- If you don't have the country code, but you know from other sources what country a phone is from, you can retrieve the country using the country isocode (such as 'de', 'es', 'us', ...).
90
-
91
- if country = Phoner::Country.find_by_country_isocode(user_country_isocode)
92
- phone_number = Phoner::Phone.parse(user_input, :country_code => country.country_code)
93
- end
94
-
95
- You have to remember to run Phoner::Country.load method before though.
96
-
97
88
  = TODO
98
89
  Parse testing for different countries.
99
90
 
@@ -102,7 +93,6 @@ Currently tested on:
102
93
  [BA] Bosnia and Herzegovina
103
94
  [BE] Belgium
104
95
  [DE] Germany
105
- [ES] Spain
106
96
  [FR] France
107
97
  [GB] United Kingdom
108
98
  [HR] Croatia
@@ -116,11 +106,11 @@ Currently tested on:
116
106
  [ZA] South Africa
117
107
 
118
108
  = Known issues
119
- There's an issue with Germany and Spanish area codes.
109
+ There's an issue with Germany and area codes.
120
110
 
121
111
  = Author
122
112
  Copyright © 2010 Tomislav Car, {Infinum}[http://www.infinumdigital.com]
123
113
 
124
114
  = Contributors
125
- Don Morrison, Michael Squires, Todd Eichel (Fooala, Inc.), chipiga, Etienne Samson, Luke Randall, Jakob Hilden, Tieg Zaharia
115
+ Don Morrison, Michael Squires, Todd Eichel (Fooala, Inc.), chipiga, Etienne Samson, Luke Randall
126
116
 
@@ -572,7 +572,6 @@
572
572
  :char_3_code: ES
573
573
  :name: Spain
574
574
  :international_dialing_prefix: "0"
575
- :area_code: "6[0-9][0-9]|7[1-9][0-9]|9[0-9][0-9]"
576
575
  "232":
577
576
  :country_code: "232"
578
577
  :national_dialing_prefix: "0"
@@ -1,5 +1,5 @@
1
1
  module Phoner
2
- class Country < Struct.new(:name, :country_code, :char_2_code, :char_3_code, :area_code)
2
+ class Country < Struct.new(:name, :country_code, :char_2_code, :area_code)
3
3
  cattr_accessor :all
4
4
 
5
5
  def self.load
@@ -9,7 +9,7 @@ module Phoner
9
9
 
10
10
  @@all = {}
11
11
  YAML.load(File.read(data_file)).each_pair do |key, c|
12
- @@all[key] = Country.new(c[:name], c[:country_code], c[:char_2_code], c[:char_3_code], c[:area_code])
12
+ @@all[key] = Country.new(c[:name], c[:country_code], c[:char_2_code], c[:area_code])
13
13
  end
14
14
  @@all
15
15
  end
@@ -19,17 +19,12 @@ module Phoner
19
19
  end
20
20
 
21
21
  def self.find_by_country_code(code)
22
- @@all[code]
22
+ @@all[code]
23
23
  end
24
-
25
- def self.find_by_country_isocode(isocode)
26
- if country = @@all.detect{|c|c[1].char_3_code.downcase == isocode}
27
- country[1]
28
- end
29
- end
30
-
24
+
31
25
  def country_code_regexp
32
- Regexp.new("^[+]#{country_code}")
26
+ Regexp.new("^[+]#{country_code}")
33
27
  end
34
28
  end
35
- end
29
+
30
+ end
@@ -0,0 +1,6 @@
1
+ module Phoner
2
+ class PhoneError < RuntimeError;end
3
+ class BlankNumberError < PhoneError;end
4
+ class AreaCodeError < PhoneError;end
5
+ class CountryCodeError < PhoneError;end
6
+ end
@@ -11,11 +11,12 @@
11
11
  #
12
12
  require File.join(File.dirname(__FILE__), 'support') unless defined? ActiveSupport
13
13
  require File.join(File.dirname(__FILE__), 'country')
14
+ require File.join(File.dirname(__FILE__), 'errors')
14
15
 
15
16
  module Phoner
16
17
  class Phone
17
18
  NUMBER = '([0-9]{1,8})$'
18
- DEFAULT_AREA_CODE = '[0-9][0-9][0-9]' # any 3 digits
19
+ DEFAULT_AREA_CODE = '[2-9][0-8][0-9]' # USA
19
20
 
20
21
  attr_accessor :country_code, :area_code, :number, :extension
21
22
 
@@ -48,9 +49,9 @@ module Phoner
48
49
  self.country_code = hash_or_args[ keys[:country_code] ] || self.default_country_code
49
50
  self.extension = hash_or_args[ keys[:extension] ]
50
51
 
51
- raise "Must enter number" if self.number.blank?
52
- raise "Must enter area code or set default area code" if self.area_code.blank?
53
- raise "Must enter country code or set default country code" if self.country_code.blank?
52
+ raise NumberError, "Must enter number" if self.number.blank?
53
+ raise AreaCodeError, "Must enter area code or set default area code" if self.area_code.blank?
54
+ raise CountryCodeError, "Must enter country code or set default country code" if self.country_code.blank?
54
55
  end
55
56
 
56
57
  # create a new phone number by parsing a string
@@ -78,7 +79,8 @@ module Phoner
78
79
  def self.valid?(string)
79
80
  begin
80
81
  parse(string).present?
81
- rescue RuntimeError # if we encountered exceptions (missing country code, missing area code etc)
82
+ # if we encountered exceptions (missing country code, missing area code etc)
83
+ rescue PhoneError
82
84
  return false
83
85
  end
84
86
  end
@@ -98,9 +100,9 @@ module Phoner
98
100
 
99
101
  if country.nil?
100
102
  if options[:country_code].nil?
101
- raise "Must enter country code or set default country code"
103
+ raise CountryCodeError, "Must enter country code or set default country code"
102
104
  else
103
- raise "Could not find country with country code #{options[:country_code]}"
105
+ raise CountryCodeError, "Could not find country with country code #{options[:country_code]}"
104
106
  end
105
107
  end
106
108
 
@@ -157,7 +159,7 @@ module Phoner
157
159
 
158
160
  # fix string so it's easier to parse, remove extra characters etc.
159
161
  def self.normalize(string_with_number)
160
- string_with_number.gsub("(0)", "").gsub(/[^0-9+]/, '').gsub(/^00/, '+').gsub(/^\+00/, '+').gsub(/^\+0/, '+')
162
+ string_with_number.gsub("(0)", "").gsub(/[^0-9+]/, '').gsub(/^00/, '+')
161
163
  end
162
164
 
163
165
  # pull off anything that look like an extension
@@ -255,4 +257,4 @@ module Phoner
255
257
  return result
256
258
  end
257
259
  end
258
- end
260
+ end
@@ -4,17 +4,17 @@ class PhoneTest < Test::Unit::TestCase
4
4
 
5
5
  def test_number_without_country_code_initialize
6
6
  Phoner::Phone.default_country_code = nil
7
-
8
- assert_raise RuntimeError do
7
+
8
+ assert_raise Phoner::CountryCodeError do
9
9
  pn = Phoner::Phone.new '5125486', '91'
10
10
  end
11
11
  end
12
12
 
13
13
  def test_number_without_country_and_area_code_initialize
14
14
  Phoner::Phone.default_country_code = nil
15
- Phoner::Phone.default_area_code = nil
16
-
17
- assert_raise RuntimeError do
15
+ Phoner::Phone.default_area_code = nil
16
+
17
+ assert_raise Phoner::AreaCodeError do
18
18
  pn = Phoner::Phone.new '451588'
19
19
  end
20
20
  end
@@ -54,16 +54,16 @@ class PhoneTest < Test::Unit::TestCase
54
54
 
55
55
  def test_parse_short_without_special_characters_without_country
56
56
  Phoner::Phone.default_country_code = nil
57
-
58
- assert_raise RuntimeError do
57
+
58
+ assert_raise Phoner::CountryCodeError do
59
59
  pn = Phoner::Phone.parse "0915125486"
60
60
  end
61
61
  end
62
62
 
63
63
  def test_parse_short_with_special_characters_without_country
64
64
  Phoner::Phone.default_country_code = nil
65
-
66
- assert_raise RuntimeError do
65
+
66
+ assert_raise Phoner::CountryCodeError do
67
67
  pn = Phoner::Phone.parse "091/512-5486"
68
68
  end
69
69
  end
@@ -114,12 +114,4 @@ class PhoneTest < Test::Unit::TestCase
114
114
  pn2 = Phoner::Phone.new '1234567', '91', '385'
115
115
  assert pn1 != pn2
116
116
  end
117
-
118
- def test_find_by_country_isocode
119
- Phoner::Country.load
120
- assert_equal Phoner::Country.find_by_country_isocode('de').country_code, "49"
121
- assert_equal Phoner::Country.find_by_country_isocode('xx'), nil
122
- assert_equal Phoner::Country.find_by_country_isocode('bla'), nil
123
- end
124
-
125
117
  end
metadata CHANGED
@@ -1,42 +1,34 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: phone
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 1
8
- version: "1.1"
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.1
9
5
  platform: ruby
10
- authors:
6
+ authors:
11
7
  - Tomislav Car
12
8
  - Todd Eichel
13
9
  - Don Morrison
14
10
  autorequire:
15
11
  bindir: bin
16
12
  cert_chain: []
17
-
18
- date: 2011-06-24 00:00:00 +02:00
19
- default_executable:
13
+ date: 2013-10-24 00:00:00.000000000 Z
20
14
  dependencies: []
21
-
22
15
  description: Phone number parsing, validation and formatting.
23
- email:
16
+ email:
24
17
  - tomislav@infinum.hr
25
18
  - todd@toddeichel.com
26
19
  - elskwid@gmail.com
27
20
  executables: []
28
-
29
21
  extensions: []
30
-
31
- extra_rdoc_files:
22
+ extra_rdoc_files:
32
23
  - Readme.rdoc
33
24
  - LICENSE
34
- files:
25
+ files:
35
26
  - Readme.rdoc
36
27
  - LICENSE
37
28
  - data/phone_countries.yml
38
29
  - lib/phone.rb
39
30
  - lib/country.rb
31
+ - lib/errors.rb
40
32
  - lib/support.rb
41
33
  - test/extension_test.rb
42
34
  - test/phone_test.rb
@@ -45,7 +37,6 @@ files:
45
37
  - test/countries/ba_test.rb
46
38
  - test/countries/be_test.rb
47
39
  - test/countries/de_test.rb
48
- - test/countries/es_test.rb
49
40
  - test/countries/fr_test.rb
50
41
  - test/countries/gb_test.rb
51
42
  - test/countries/hr_test.rb
@@ -57,44 +48,35 @@ files:
57
48
  - test/countries/si_test.rb
58
49
  - test/countries/ua_test.rb
59
50
  - test/countries/us_test.rb
60
- - test/countries/uy_test.rb
61
51
  - test/countries/za_test.rb
62
- has_rdoc: true
63
52
  homepage: http://github.com/carr/phone
64
53
  licenses: []
65
-
54
+ metadata: {}
66
55
  post_install_message:
67
- rdoc_options:
68
- - --main
56
+ rdoc_options:
57
+ - "--main"
69
58
  - Readme.rdoc
70
- - --inline-source
71
- - --charset=UTF-8
72
- require_paths:
59
+ - "--inline-source"
60
+ - "--charset=UTF-8"
61
+ require_paths:
73
62
  - lib
74
- required_ruby_version: !ruby/object:Gem::Requirement
75
- none: false
76
- requirements:
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
77
65
  - - ">="
78
- - !ruby/object:Gem::Version
79
- segments:
80
- - 0
81
- version: "0"
82
- required_rubygems_version: !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
85
70
  - - ">="
86
- - !ruby/object:Gem::Version
87
- segments:
88
- - 0
89
- version: "0"
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
90
73
  requirements: []
91
-
92
74
  rubyforge_project:
93
- rubygems_version: 1.3.7
75
+ rubygems_version: 2.0.3
94
76
  signing_key:
95
- specification_version: 3
77
+ specification_version: 4
96
78
  summary: Phone number parsing, validation and formatting
97
- test_files:
79
+ test_files:
98
80
  - test/extension_test.rb
99
81
  - test/phone_test.rb
100
82
  - test/test_helper.rb
@@ -102,7 +84,6 @@ test_files:
102
84
  - test/countries/ba_test.rb
103
85
  - test/countries/be_test.rb
104
86
  - test/countries/de_test.rb
105
- - test/countries/es_test.rb
106
87
  - test/countries/fr_test.rb
107
88
  - test/countries/gb_test.rb
108
89
  - test/countries/hr_test.rb
@@ -114,5 +95,4 @@ test_files:
114
95
  - test/countries/si_test.rb
115
96
  - test/countries/ua_test.rb
116
97
  - test/countries/us_test.rb
117
- - test/countries/uy_test.rb
118
98
  - test/countries/za_test.rb
@@ -1,33 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
-
3
- ## Spain
4
- # http://en.wikipedia.org/wiki/Telephone_numbers_in_Spain
5
- # http://gospain.about.com/od/practicaltraveltips/f/area_codes.htm
6
-
7
- # A problem is that landline area codes can be 2 (92) as well as 3 digits (923)
8
- # right now the area_code_regexp is only finding 3 digit area_codes
9
-
10
- class ESTest < Test::Unit::TestCase
11
-
12
- def test_validates
13
- Phoner::Phone.default_country_code = nil
14
- assert_equal Phoner::Phone.valid?("+34-695-097-612"), true
15
- assert_equal Phoner::Phone.valid?("0034 91-3597426"), true
16
- assert_equal Phoner::Phone.valid?("+0034 91-3597426"), true
17
- assert_equal Phoner::Phone.valid?("+34 92-6563629"), true
18
- assert_equal Phoner::Phone.valid?("(+34) 606 275 213"), true
19
- assert_equal Phoner::Phone.valid?("+034 937 299 016"), true
20
- assert_equal Phoner::Phone.valid?("+34 93 487 32 93"), true
21
-
22
- Phoner::Phone.default_country_code = '34'
23
- assert_equal Phoner::Phone.valid?(" 607 65 05 01 "), true
24
- assert_equal Phoner::Phone.valid?(" 971 15 66 33"), true
25
- assert_equal Phoner::Phone.valid?(" 93-4559934"), true
26
- assert_equal Phoner::Phone.valid?("628 274 908"), true
27
- assert_equal Phoner::Phone.valid?("744 486 62 78"), true
28
- assert_equal Phoner::Phone.valid?("916754559"), true
29
- assert_equal Phoner::Phone.valid?("93.4327119"), true
30
- assert_equal Phoner::Phone.valid?("986300257"), true
31
- end
32
-
33
- end
@@ -1,22 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
-
3
- ## Uruguay
4
- # source: http://en.wikipedia.org/wiki/Telephone_numbers_in_Uruguay
5
- class UYTest < Test::Unit::TestCase
6
-
7
- # 02 Montevideo
8
- def test_montevideo
9
- parse_test('+598 2 1234567', '598', '2', '1234567')
10
- end
11
-
12
- # 042 Maldonado
13
- def test_maldonado
14
- parse_test('+598 42 123456', '598', '42', '123456')
15
- end
16
-
17
- # 09 Mobile phones
18
- def test_mobile_phones
19
- parse_test('+598 99 570110', '598', '99', '570110')
20
- end
21
-
22
- end