phony 2.1.0 → 2.1.2

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OTIxZGU3ZmFlODE0ZGE2ZDAwYWVlODk5N2VhZWJkNDgxNDdlYzg1ZQ==
4
+ NTI2YjZiNDBhODQ4NWQ1NTIzNmNlODllOTY3N2UyZTRhM2MxNmM1MQ==
5
5
  data.tar.gz: !binary |-
6
- ODZmM2Q4MDE2YTQ1NGZjZjg0N2EyZTAwNzc2NDUyNTY1NzA3ZWY5Mw==
7
- SHA512:
6
+ M2UwYmM0ZmNjMjMwNWE1YTE5ZTY5YjNiOWY4ZjU4ZGI4ZDM4Y2Q5Mw==
7
+ !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZTA0OWFmMzAzYzVmZjU1ZGZmYjcxMjI5YjljMGE1NTY0ZjU1ZDk4ZjgzNzc5
10
- ZTY0ZTFhMWIwYjI1ZTUyNWUxZWM1M2Q2NTVjNWI0OWM3MGI4ZGY5ODRhZjc3
11
- MjM5MzEzNDc3ZmEzMmQwZmVlZGVhNjg0ZmJiZGIxZDIyODBjMTE=
9
+ ZjM2MzVlMGU3ODM4NmFmMmM0MGFjZjc5ZTk2Y2UxMmI0NjBjNDQzN2E3MWVh
10
+ ZmU1Y2NjMDE1ZTU2YWY3ZGM4MzI5ZDJlMjY0YTBhYjUwNDk4NDQ3Zjc4Zjcz
11
+ NDE4NmQ2MGJhYzk3N2RlNDEzNzUwYmNlOGRiYjE4Y2JiNGUxODA=
12
12
  data.tar.gz: !binary |-
13
- OWM1NTM1YTE5ZDQ3NjQ2NWNiNzQzNzIxMjM1NGY5MTc4NjMyNzZiZDg0ZjI4
14
- ZjUwOTQ1OWM4NmM4MjJiYzM0MDQwNTVkMDdkZjY2NjdlMzMzYzEyMmMzM2Vm
15
- YjJmMmEyOWZhMzI5ZGU0NmU4NTkyZTgxMmVjNTU5ZjQyYTI0ZGY=
13
+ MjM0NjU1MDNkYjA2YTU2MjBmYTU4ZmM4ZTMxYmUxNTNiNjgwOGViYjE2ODM3
14
+ MjNlZmJiZTE4YTk3ZTkwNjUwYjYzOThkODRkM2E3ZjNjMDVhZTkwYzg0Zjkx
15
+ YzJlZmU0ZDRjOGQzNzVlNDMyZTY1NmM3NTI0OTU5NWQ1N2YwOWM=
@@ -67,10 +67,10 @@ Phony.define do
67
67
 
68
68
  # Belgium.
69
69
  #
70
- country '32', match(/^(70|800|90\d)\d+$/) >> split(3,3) | # Service
71
- match(/^(4[789]\d)\d{6}$/) >> split(6) | # Mobile
72
- one_of('2','3','4','9') >> split(3,5) | # Short NDCs
73
- fixed(2) >> split(3,5) # 2-digit NDCs
70
+ country '32', match(/^(70|800|90\d)\d+$/) >> split(3,3) | # Service
71
+ match(/^(4[789]\d)\d{6}$/) >> split(6) | # Mobile
72
+ one_of('2','3','4','9') >> split(3,2,2) | # Short NDCs
73
+ fixed(2) >> split(2,2,2) # 2-digit NDCs
74
74
 
75
75
  # France.
76
76
  #
@@ -45,15 +45,17 @@ module Phony
45
45
  end
46
46
  end
47
47
 
48
- # TODO This is now in country_codes and country.
48
+ # Cleans all non-numeric characters.
49
+ #
50
+ @@basic_cleaning_pattern = /\(0\)|\D/
51
+ # Clean number of all non-numeric characters and return a copy.
49
52
  #
50
- @@basic_cleaning_pattern = /\D/
51
53
  def clean number
52
54
  clean! number && number.dup
53
55
  end
56
+ # Clean number of all non-numeric characters and return it.
57
+ #
54
58
  def clean! number
55
- # Remove non-digit chars.
56
- #
57
59
  number.gsub!(@@basic_cleaning_pattern, EMPTY_STRING) || number
58
60
  end
59
61
 
@@ -66,7 +68,7 @@ module Phony
66
68
  countrify! number || number
67
69
  end
68
70
  def countrify! number
69
- number.sub! /\A(?!#{@cc})?/, @cc
71
+ number.sub! /\A(?!#{@cc})/, @cc
70
72
  end
71
73
 
72
74
  # Removes 0s from partially normalized numbers
@@ -79,7 +81,7 @@ module Phony
79
81
  #
80
82
  def normalize national_number
81
83
  clean! national_number
82
- normalized = @codes.reduce(national_number) do |number, code|
84
+ normalized = @codes.reduce national_number do |number, code|
83
85
  result = code.normalize number
84
86
  break result if result
85
87
  number
@@ -27,15 +27,17 @@ module Phony
27
27
  countries[cc.size][cc]
28
28
  end
29
29
 
30
- # TODO This is now in country_codes and country.
30
+ # Clean number of all non-numeric characters, initial zeros or (0).
31
31
  #
32
32
  @@basic_cleaning_pattern = /\A00?|\(0\)|\D/
33
+ # Clean number of all non-numeric characters, initial zeros or (0) and return it.
34
+ #
33
35
  def clean number
34
36
  clean! number && number.dup
35
37
  end
38
+ # Clean number of all non-numeric characters, initial zeros or (0) and return a copy.
39
+ #
36
40
  def clean! number
37
- # Remove non-digit chars.
38
- #
39
41
  number.gsub!(@@basic_cleaning_pattern, EMPTY_STRING) || number
40
42
  end
41
43
 
@@ -122,6 +122,12 @@ describe 'plausibility' do
122
122
  Phony.plausible?('+41 44 111 22 334').should be_false
123
123
  Phony.plausible?('+41 44 111 22').should be_false
124
124
  end
125
+
126
+ it "is correct for Belgian numbers" do
127
+ Phony.plausible?('+32 3 241 11 32').should be_true
128
+ Phony.plausible?('0032 3 241 11 32').should be_true
129
+ Phony.plausible?('0032 (0) 3 241 11 32').should be_true
130
+ end
125
131
 
126
132
  it "is correct for Danish numbers" do
127
133
  Phony.plausible?('+45 44 11 12 23 34').should be_false
@@ -70,12 +70,12 @@ describe 'country descriptions' do
70
70
  end
71
71
 
72
72
  describe 'Belgium' do
73
- it_splits '3235551212', ['32', '3', '555', '1212'] # Antwerpen
74
- it_splits '32505551212', ['32', '50', '555', '1212'] # Brugge
75
- it_splits '3225551212', ['32', '2', '555', '1212'] # Brussels
76
- it_splits '3295551914', ['32', '9', '555', '1914'] # Gent
77
- it_splits '3245551414', ['32', '4', '555', '1414'] # Liège
78
- it_splits '3216473200', ['32', '16', '473', '200'] # Leuven
73
+ it_splits '3235551212', ['32', '3', '555', '12', '12'] # Antwerpen
74
+ it_splits '3250551212', ['32', '50', '55', '12', '12'] # Brugge
75
+ it_splits '3225551212', ['32', '2', '555', '12', '12'] # Brussels
76
+ it_splits '3295551914', ['32', '9', '555', '19', '14'] # Gent
77
+ it_splits '3245551414', ['32', '4', '555', '14', '14'] # Liège
78
+ it_splits '3216473200', ['32', '16', '47', '32', '00'] # Leuven
79
79
  it_splits '32475279584', ['32', '475', '279584'] # mobile
80
80
  it_splits '3270123123', ['32', '70', '123', '123'] # Bus Service?
81
81
  end
@@ -75,9 +75,21 @@ describe Phony do
75
75
  it 'normalizes Lithuania' do
76
76
  Phony.normalize('370 8 5 1234567').should == '37051234567'
77
77
  end
78
- it 'normalizes Belarus'
78
+ it 'normalizes Belarus' do
79
+ Phony.normalize('375 152450911').should == '375152450911'
80
+ end
81
+ end
82
+ end
83
+ describe 'country-based' do
84
+ it 'normalizes the US correctly' do
85
+ Phony["1"].normalize("555 1234567890").should == '15551234567890'
86
+ Phony["1"].normalize("+1 555 1234567890").should == '15551234567890'
87
+ Phony["1"].normalize("+1 (0) 555 1234567890").should == '15551234567890'
88
+ end
89
+ it 'normalizes Japan correctly' do
90
+ Phony["81"].normalize("80 1234 5634").should == '818012345634'
91
+ Phony["81"].normalize("+81 80 1234 5634").should == '818012345634'
79
92
  end
80
-
81
93
  end
82
94
  end
83
95
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phony
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Hanke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-06 00:00:00.000000000 Z
11
+ date: 2014-01-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ! 'Fast international phone number (E164 standard) normalizing, splitting
14
14
  and formatting. Lots of formatting options: International (+.., 00..), national
@@ -19,9 +19,6 @@ extensions: []
19
19
  extra_rdoc_files:
20
20
  - README.textile
21
21
  files:
22
- - README.textile
23
- - lib/phony.rb
24
- - lib/phony/countries.rb
25
22
  - lib/phony/countries/austria.rb
26
23
  - lib/phony/countries/bangladesh.rb
27
24
  - lib/phony/countries/belarus.rb
@@ -58,6 +55,7 @@ files:
58
55
  - lib/phony/countries/united_kingdom.rb
59
56
  - lib/phony/countries/uruguay.rb
60
57
  - lib/phony/countries/zimbabwe.rb
58
+ - lib/phony/countries.rb
61
59
  - lib/phony/country.rb
62
60
  - lib/phony/country_codes.rb
63
61
  - lib/phony/dsl.rb
@@ -72,6 +70,8 @@ files:
72
70
  - lib/phony/national_splitters/variable.rb
73
71
  - lib/phony/trunk_code.rb
74
72
  - lib/phony/vanity.rb
73
+ - lib/phony.rb
74
+ - README.textile
75
75
  - spec/functional/normalize_spec.rb
76
76
  - spec/functional/plausibility_spec.rb
77
77
  - spec/lib/phony/countries_spec.rb
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.2.0
110
+ rubygems_version: 2.0.3
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Fast international phone number (E164 standard) normalizing, splitting and