phony 2.5.1 → 2.5.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
- ZWMxM2MzZDlmZmI3ODE0MGM0YTkyM2YxMDhlZjllMWFmZGVlYjQxOA==
4
+ MjgyNzBkYTU1NDg4NDE3OWNjZjU3YzVmODc3MWY2MjBlNTRkY2E4NQ==
5
5
  data.tar.gz: !binary |-
6
- OTIzOTJkNzZmNjMxYWE0YjI2ZDJjOWNjMjk4MDllMDZkYjg0YWI5Yw==
6
+ M2U4YTMxNWM1NjA4ZTI4MjM0MWMxMzRlYTg4MDA0YmRmMzEyOGVkNg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NzEyMTA0MDJlNTVmNGFiYTUzYjU1M2Y1OWNlMGUxYjJiOGFjZTk1NjBhN2Jk
10
- YmIwNTQ4NDUxNjRkNzMzYmQ0M2JlMDI0NDY4YWIwZmFkNmM3OGY5NTIyNDZk
11
- MjNkZTFjYjg4ZmU2YTkwOWE4OTYwOWFmOWI0MjI2ZmZlZmFkMzU=
9
+ NWQ4YTI5Y2I0NDFhZDgyNjE5NDIyNjc0MWUyZjQyNTAwMzRlYWM4NmNkYmNi
10
+ MGE0ZThmOTk2NWM3YzRhZmEzNmZjYWFhZTZjY2ZjMzNlNzliOTk1MGE5MGNl
11
+ MjI0NjdiNDJiNjRjYzcxMjRhNGJmODUwNWIzMGYxZmQ1Yjg0ZDQ=
12
12
  data.tar.gz: !binary |-
13
- NTJlOTYzNjNjOGIxNzlkMTkzNjA2YjRiZWZlOWVlY2Y1OTNjZmM4NDJlY2Iy
14
- ZThhYzc3MTExYjQ2YWNlY2I0NzNhOWM5MTZlYmZhZjQxMWUxOWU1MmVkNTMw
15
- MTM2MDg1NjI2ODMxYWJmNGM5ZTdkNmY2OWUxMzRlMzg2MWJkNDU=
13
+ OGUzMmU1N2Q5NzAyMjQ0NmQyOTE3NzQxYjNjMjY3ZDNhYjc4ZTNiZmQ0MmI0
14
+ MGQ2MWZmMzc4ODVmMzFhM2M1M2E1NWRmOTFmM2U3YTE2ZjQ2MGI1MjUwYWUw
15
+ MWY4ZWQ4NDQ4ZDIzM2UzMWUzNDlhMzQ1YzVlMmJmNjcyNjcwZTY=
@@ -77,7 +77,7 @@ six_or_seven_digit_mobile_prefixes = [
77
77
  ]
78
78
 
79
79
  Phony.define do
80
- country '855', one_of(six_digit_mobile_prefixes) >> matched_split(/^[1-9]/ => [3, 3]) |
80
+ country '855', trunk('0') | one_of(six_digit_mobile_prefixes) >> matched_split(/^[1-9]/ => [3, 3]) |
81
81
  one_of(seven_digit_mobile_prefixes) >> matched_split(/^[2-9]/ => [3, 4]) |
82
82
  one_of(six_or_seven_digit_mobile_prefixes) >> matched_split(
83
83
  /^[2-9]\d{5}$/ => [3, 3], /^[1-9]\d{6}$/ => [3, 4]
@@ -1,9 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'Phony.normalize' do
3
+ describe 'Phony#normalize' do
4
4
 
5
5
  describe 'cases' do
6
6
 
7
+ describe 'regressions' do
8
+ it '#151' do
9
+ # Normalizes, but this is a non-real case.
10
+ #
11
+ Phony.normalize('1-111-111-1111').should == '1111111111'
12
+ Phony.normalize('111-111-1111', cc: '1').should == '1111111111'
13
+ end
14
+ end
15
+
7
16
  it 'handles the US (with cc) correctly' do
8
17
  Phony.normalize('+1 724 999 9999').should == '17249999999'
9
18
  end
@@ -22,6 +31,89 @@ describe 'Phony.normalize' do
22
31
  it 'handles a German number with extra 0' do
23
32
  Phony.normalize('+49 0 209 22 33 44 55').should == '4920922334455'
24
33
  end
34
+
35
+ it 'should normalize a too short number' do
36
+ Phony.normalize('+972').should eql '972'
37
+ end
38
+ it 'should normalize an already normalized number' do
39
+ Phony.normalize('41443643533').should eql '41443643533'
40
+ end
41
+ it 'should normalize a format number' do
42
+ Phony.normalize('+41 44 364 35 33').should eql '41443643533'
43
+ end
44
+ it 'should normalize a 00 number' do
45
+ Phony.normalize('0041 44 364 35 33').should eql '41443643533'
46
+ end
47
+ it 'should normalize a service number' do
48
+ Phony.normalize('+41 800 11 22 33').should eql '41800112233'
49
+ end
50
+ it 'should remove characters from the number' do
51
+ Phony.normalize('John: +41 44 364 35 33').should eql '41443643533'
52
+ end
53
+ it 'should normalize one of these crazy american numbers' do
54
+ Phony.normalize('1 (703) 451-5115').should eql '17034515115'
55
+ end
56
+ it 'should normalize another one of these crazy american numbers' do
57
+ Phony.normalize('1-888-407-4747').should eql '18884074747'
58
+ end
59
+ it 'should normalize a number with colons' do
60
+ Phony.normalize('1.906.387.1698').should eql '19063871698'
61
+ end
62
+ it 'should normalize a number with erroneous zero inside' do
63
+ Phony.normalize('+410443643533').should eql '41443643533'
64
+ end
65
+ it 'should not normalize a number with a correct zero inside' do
66
+ Phony.normalize('+390909709511').should eql '390909709511'
67
+ end
68
+
69
+ it "handles completely crazy 'numbers'" do
70
+ Phony.normalize('Hello, I am Cora, the 41th parrot, and 44 is my 364 times 35 funky number. 32.').should eql '41443643532'
71
+ end
72
+
73
+ context 'special trunk prefixes are not handled' do
74
+ it 'normalizes Hungary' do
75
+ Phony.normalize('36 0630245506').should eql '360630245506'
76
+ end
77
+ it 'normalizes Russia' do
78
+ Phony.normalize('7 8 342 1234567').should eql '783421234567'
79
+ end
80
+ it 'normalizes Lithuania' do
81
+ Phony.normalize('370 8 5 1234567').should eql '370851234567'
82
+ end
83
+ it 'normalizes Belarus' do
84
+ Phony.normalize('375 152450911').should eql '375152450911'
85
+ end
86
+ end
87
+
88
+ describe 'exceptions' do
89
+ it 'raises on nil' do
90
+ expect {
91
+ Phony.normalize nil
92
+ }.to raise_error(ArgumentError, 'Phone number cannot be nil. Use e.g. number && Phony.normalize(number).')
93
+ end
94
+ it 'raises if number starts with reserved zero code' do
95
+ expect do
96
+ Phony.normalize '+00 00 00 00 01'
97
+ end.to raise_error(Phony::NormalizationError, 'Phony could not normalize the given number. Is it a phone number?')
98
+ end
99
+ it 'raises a nice error message' do
100
+ expect do
101
+ Phony.normalize 'test'
102
+ end.to raise_error(Phony::NormalizationError, 'Phony could not normalize the given number. Is it a phone number?')
103
+ end
104
+ end
105
+
106
+ describe 'country-based' do
107
+ it 'normalizes the US correctly' do
108
+ Phony["1"].normalize("555 1234567890").should eql '5551234567890'
109
+ Phony["1"].normalize("+1 555 1234567890").should eql '5551234567890'
110
+ Phony["1"].normalize("+1 (0) 555 1234567890").should eql '5551234567890'
111
+ end
112
+ it 'normalizes Japan correctly' do
113
+ Phony["81"].normalize("80 1234 5634").should eql '8012345634'
114
+ Phony["81"].normalize("Hello 80 1234 5634").should eql '8012345634'
115
+ end
116
+ end
25
117
  end
26
118
 
27
119
  end
@@ -1,11 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Phony::CountryCodes do
4
-
4
+
5
5
  before(:all) do
6
6
  @countries = Phony::CountryCodes.instance
7
7
  end
8
-
8
+
9
9
  describe 'international_absolute_format=' do
10
10
  it 'formats correctly' do
11
11
  @countries.formatted('41443643532', :format => :international).should eql '+41 44 364 35 32'
@@ -13,9 +13,9 @@ describe Phony::CountryCodes do
13
13
  it 'formats correctly' do
14
14
  old_format = @countries.international_absolute_format
15
15
  @countries.international_absolute_format = '!!! %s%s%s'
16
-
16
+
17
17
  @countries.formatted('41443643532', :format => :international).should eql '!!! 41 44 364 35 32'
18
-
18
+
19
19
  @countries.international_absolute_format = old_format
20
20
  end
21
21
  end
@@ -26,9 +26,9 @@ describe Phony::CountryCodes do
26
26
  it 'formats correctly' do
27
27
  old_format = @countries.international_relative_format
28
28
  @countries.international_relative_format = '000 %s%s%s'
29
-
29
+
30
30
  @countries.formatted('41443643532', :format => :international_relative).should eql '000 41 44 364 35 32'
31
-
31
+
32
32
  @countries.international_relative_format = old_format
33
33
  end
34
34
  end
@@ -39,21 +39,21 @@ describe Phony::CountryCodes do
39
39
  it 'formats correctly' do
40
40
  old_format = @countries.national_format
41
41
  @countries.national_format = '%s%s'
42
-
42
+
43
43
  # Removes CC 1, but adds national call prefix 1.
44
44
  #
45
45
  @countries.formatted('11231231234', :format => :national).should eql '1123 123 1234'
46
-
46
+
47
47
  @countries.national_format = old_format
48
48
  end
49
49
  end
50
-
50
+
51
51
  describe 'split' do
52
52
  it 'splits correctly' do
53
53
  @countries.split('41443643532').should eql ['41', '0', '44', '364', '35', '32']
54
54
  end
55
55
  end
56
-
56
+
57
57
  describe 'formatted' do
58
58
  it 'formats correctly' do
59
59
  @countries.formatted('41443643532', :format => :international, :spaces => :-).should eql '+41-44-364-35-32'
@@ -74,6 +74,9 @@ describe Phony::CountryCodes do
74
74
  it 'formats Spain correctly' do
75
75
  @countries.formatted("34123456789", :format => :national).should eql '123 456 789'
76
76
  end
77
+ it 'formats Cambodia correctly' do
78
+ @countries.formatted('85512239123', :format => :national).should eql '012 239 123'
79
+ end
77
80
  end
78
81
  context 'default' do
79
82
  it "should format swiss numbers" do
@@ -187,5 +190,5 @@ describe Phony::CountryCodes do
187
190
  end
188
191
  end
189
192
  end
190
-
193
+
191
194
  end
@@ -5,12 +5,6 @@ require 'spec_helper'
5
5
  describe Phony do
6
6
 
7
7
  describe 'regression' do
8
- it '#151' do
9
- # Normalizes, but this is a non-real case.
10
- #
11
- described_class.normalize('1-111-111-1111').should == '1111111111'
12
- described_class.normalize('111-111-1111', cc: '1').should == '1111111111'
13
- end
14
8
  it 'best effort #152' do
15
9
  described_class.split('39694805123').should == ['39', '694805123', []]
16
10
  described_class.format('39694805123').should == '+39 694805123 '
@@ -27,87 +21,6 @@ describe Phony do
27
21
  end
28
22
  end
29
23
 
30
- describe 'normalize' do
31
- describe 'exceptions' do
32
- it 'raises on nil' do
33
- expect {
34
- Phony.normalize nil
35
- }.to raise_error(ArgumentError, 'Phone number cannot be nil. Use e.g. number && Phony.normalize(number).')
36
- end
37
- it 'raises if number starts with reserved zero code' do
38
- expect do
39
- Phony.normalize '+00 00 00 00 01'
40
- end.to raise_error(Phony::NormalizationError, 'Phony could not normalize the given number. Is it a phone number?')
41
- end
42
- it 'raises a nice error message' do
43
- expect do
44
- Phony.normalize 'test'
45
- end.to raise_error(Phony::NormalizationError, 'Phony could not normalize the given number. Is it a phone number?')
46
- end
47
- end
48
- describe 'some examples' do
49
- it 'should normalize a too short number' do
50
- Phony.normalize('+972').should eql '972'
51
- end
52
- it 'should normalize an already normalized number' do
53
- Phony.normalize('41443643533').should eql '41443643533'
54
- end
55
- it 'should normalize a format number' do
56
- Phony.normalize('+41 44 364 35 33').should eql '41443643533'
57
- end
58
- it 'should normalize a 00 number' do
59
- Phony.normalize('0041 44 364 35 33').should eql '41443643533'
60
- end
61
- it 'should normalize a service number' do
62
- Phony.normalize('+41 800 11 22 33').should eql '41800112233'
63
- end
64
- it 'should remove characters from the number' do
65
- Phony.normalize('John: +41 44 364 35 33').should eql '41443643533'
66
- end
67
- it 'should normalize one of these crazy american numbers' do
68
- Phony.normalize('1 (703) 451-5115').should eql '17034515115'
69
- end
70
- it 'should normalize another one of these crazy american numbers' do
71
- Phony.normalize('1-888-407-4747').should eql '18884074747'
72
- end
73
- it 'should normalize a number with colons' do
74
- Phony.normalize('1.906.387.1698').should eql '19063871698'
75
- end
76
- it 'should normalize a number with erroneous zero inside' do
77
- Phony.normalize('+410443643533').should eql '41443643533'
78
- end
79
- it 'should not normalize a number with a correct zero inside' do
80
- Phony.normalize('+390909709511').should eql '390909709511'
81
- end
82
-
83
- context 'special trunk prefixes are not handled' do
84
- it 'normalizes Hungary' do
85
- Phony.normalize('36 0630245506').should eql '360630245506'
86
- end
87
- it 'normalizes Russia' do
88
- Phony.normalize('7 8 342 1234567').should eql '783421234567'
89
- end
90
- it 'normalizes Lithuania' do
91
- Phony.normalize('370 8 5 1234567').should eql '370851234567'
92
- end
93
- it 'normalizes Belarus' do
94
- Phony.normalize('375 152450911').should eql '375152450911'
95
- end
96
- end
97
- end
98
- describe 'country-based' do
99
- it 'normalizes the US correctly' do
100
- Phony["1"].normalize("555 1234567890").should eql '5551234567890'
101
- Phony["1"].normalize("+1 555 1234567890").should eql '5551234567890'
102
- Phony["1"].normalize("+1 (0) 555 1234567890").should eql '5551234567890'
103
- end
104
- it 'normalizes Japan correctly' do
105
- Phony["81"].normalize("80 1234 5634").should eql '8012345634'
106
- Phony["81"].normalize("Hello 80 1234 5634").should eql '8012345634'
107
- end
108
- end
109
- end
110
-
111
24
  describe 'formatted' do
112
25
  it 'is an alias of format' do
113
26
  Phony.formatted('41443643532').should eql '+41 44 364 35 32'
@@ -275,11 +188,6 @@ describe Phony do
275
188
  end
276
189
 
277
190
  context 'minimal cases' do
278
- context 'normalizing' do
279
- it "handles completely crazy 'numbers'" do
280
- Phony.normalize('Hello, I am Cora, the 41th parrot, and 44 is my 364 times 35 funky number. 32.').should eql '41443643532'
281
- end
282
- end
283
191
  context 'splitting' do
284
192
  describe 'exceptions' do
285
193
  it 'should raise on split nil' do
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.5.1
4
+ version: 2.5.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-10-01 00:00:00.000000000 Z
11
+ date: 2014-10-04 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