phony 2.17.1 → 2.18.5

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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.textile +29 -5
  3. data/lib/phony.rb +62 -57
  4. data/lib/phony/config.rb +91 -0
  5. data/lib/phony/countries.rb +8 -13
  6. data/lib/phony/countries/argentina.rb +355 -0
  7. data/lib/phony/countries/austria.rb +2 -0
  8. data/lib/phony/countries/bangladesh.rb +2 -0
  9. data/lib/phony/countries/belarus.rb +2 -0
  10. data/lib/phony/countries/brazil.rb +2 -0
  11. data/lib/phony/countries/cambodia.rb +2 -0
  12. data/lib/phony/countries/china.rb +2 -0
  13. data/lib/phony/countries/croatia.rb +2 -0
  14. data/lib/phony/countries/georgia.rb +2 -0
  15. data/lib/phony/countries/germany.rb +4 -1
  16. data/lib/phony/countries/guinea.rb +8 -5
  17. data/lib/phony/countries/india.rb +2 -0
  18. data/lib/phony/countries/indonesia.rb +2 -0
  19. data/lib/phony/countries/ireland.rb +25 -23
  20. data/lib/phony/countries/italy.rb +6 -1
  21. data/lib/phony/countries/japan.rb +2 -0
  22. data/lib/phony/countries/kyrgyzstan.rb +2 -0
  23. data/lib/phony/countries/latvia.rb +2 -0
  24. data/lib/phony/countries/libya.rb +2 -0
  25. data/lib/phony/countries/malaysia.rb +2 -0
  26. data/lib/phony/countries/moldova.rb +2 -0
  27. data/lib/phony/countries/montenegro.rb +2 -0
  28. data/lib/phony/countries/myanmar.rb +2 -0
  29. data/lib/phony/countries/namibia.rb +2 -0
  30. data/lib/phony/countries/nepal.rb +2 -0
  31. data/lib/phony/countries/netherlands.rb +2 -0
  32. data/lib/phony/countries/pakistan.rb +2 -0
  33. data/lib/phony/countries/paraguay.rb +2 -0
  34. data/lib/phony/countries/russia_kazakhstan_abkhasia_south_ossetia.rb +2 -0
  35. data/lib/phony/countries/saudi_arabia.rb +2 -0
  36. data/lib/phony/countries/serbia.rb +2 -0
  37. data/lib/phony/countries/somalia.rb +2 -0
  38. data/lib/phony/countries/south_korea.rb +7 -2
  39. data/lib/phony/countries/sweden.rb +2 -0
  40. data/lib/phony/countries/taiwan.rb +2 -0
  41. data/lib/phony/countries/tajikistan.rb +2 -0
  42. data/lib/phony/countries/turkmenistan.rb +2 -0
  43. data/lib/phony/countries/ukraine.rb +2 -0
  44. data/lib/phony/countries/united_kingdom.rb +5 -2
  45. data/lib/phony/countries/uruguay.rb +2 -0
  46. data/lib/phony/countries/vietnam.rb +3 -1
  47. data/lib/phony/countries/zimbabwe.rb +2 -0
  48. data/lib/phony/country.rb +3 -1
  49. data/lib/phony/country_codes.rb +1 -1
  50. data/lib/phony/dsl.rb +3 -1
  51. data/spec/functional/config_spec.rb +44 -0
  52. data/spec/functional/plausibility_spec.rb +6 -1
  53. data/spec/lib/phony/countries_spec.rb +18 -15
  54. data/spec/lib/phony/dsl_spec.rb +2 -2
  55. data/spec/lib/phony/local_splitters/regex_spec.rb +7 -0
  56. metadata +6 -2
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+ #
3
+ describe 'Phony::Config' do
4
+ describe 'load' do
5
+ before do
6
+ # NOTE We redefine Phony as if it was not loaded for this set of tests.
7
+ Object.__send__(:remove_const, :Phony) if Object.constants.include?(:Phony)
8
+
9
+ load 'phony/config.rb'
10
+ end
11
+ after(:all) do
12
+ # After running this suite, we load all of Phony for the following tests.
13
+ load 'phony/config.rb'
14
+
15
+ Phony::Config.load
16
+ end
17
+
18
+ it 'does not fail when loading all' do
19
+ Phony::Config.load
20
+
21
+ Phony.split('15551115511').should == ['1', '555', '111', '5511']
22
+ end
23
+ it 'raises when a CC is used that has not been loaded.' do
24
+ Phony::Config.load('41')
25
+
26
+ expect { Phony.split('15551115511') }.to raise_error
27
+ end
28
+ it 'raises when a CC is used that has not been loaded.' do
29
+ Phony::Config.load(only: ['41'])
30
+
31
+ expect { Phony.split('15551115511') }.to raise_error
32
+ end
33
+ it 'raises when a CC is used that has not been loaded.' do
34
+ Phony::Config.load(except: ['1'])
35
+
36
+ expect { Phony.split('15551115511') }.to raise_error
37
+ end
38
+ it 'does not raise when a CC is used that has been loaded.' do
39
+ Phony::Config.load(except: ['41'])
40
+
41
+ Phony.split('15551115511').should == ['1', '555', '111', '5511']
42
+ end
43
+ end
44
+ end
@@ -251,7 +251,7 @@ describe 'plausibility' do
251
251
  it_is_correct_for 'Gabonese Republic', :samples => '+241 1 627 739'
252
252
  it_is_correct_for 'Gambia', :samples => '+220 989 5148'
253
253
  it_is_correct_for 'Germany', :samples => [
254
- '+49 157 753 6870'
254
+ '+49 1577 536 8701'
255
255
  ]
256
256
  it_is_correct_for 'Georgia', :samples => ['+995 220 123 45',
257
257
  '+995 32 123 4567',
@@ -598,6 +598,11 @@ describe 'plausibility' do
598
598
  Phony.plausible?('+81 120 123 123').should be_truthy
599
599
  Phony.plausible?('+81 800 123 1234').should be_truthy
600
600
  end
601
+
602
+ it 'is correct for Philippine' do
603
+ Phony.plausible?('+63 976 1234567').should be_truthy # mobile phone with area code 9
604
+ Phony.plausible?('+63 876 1234567').should be_truthy # mobile phone with area code 8
605
+ end
601
606
  end
602
607
  end
603
608
  end
@@ -33,13 +33,13 @@ describe 'country descriptions' do
33
33
  end
34
34
 
35
35
  describe 'Argentina' do
36
- it_splits '541112345678', ['54', '11', '1234', '5678']
37
- it_splits '542911234567', ['54', '291', '123', '4567']
38
- it_splits '542965123456', ['54', '2965', '12', '3456']
39
- it_splits '5491112345678', ['54', '911', '1234', '5678']
40
- it_splits '5492201234567', ['54', '9220', '123', '4567']
41
- it_splits '5492221123456', ['54', '92221', '12', '3456']
42
- it_splits '548001234567', ['54', '800', '123', '4567']
36
+ it_splits '541112345678', ['54', '11', '1234', '5678'] # 2-digit area code / landline
37
+ it_splits '542911234567', ['54', '291', '123', '4567'] # 3-digit area code / landline
38
+ it_splits '542903123456', ['54', '2903', '12', '3456'] # 4-digit area code / landline
39
+ it_splits '5491112345678', ['54', '911', '1234', '5678'] # 2-digit area code / international mobile
40
+ it_splits '5492201234567', ['54', '9220', '123', '4567'] # 3-digit area code / international mobile
41
+ it_splits '5492221123456', ['54', '92221', '12', '3456'] # 4-digit area code / international mobile
42
+ it_splits '548001234567', ['54', '800', '123', '4567'] # Non-geographic number
43
43
  end
44
44
 
45
45
  describe 'Austria' do
@@ -291,7 +291,7 @@ describe 'country descriptions' do
291
291
  it_splits '49800222340010', ['49', '800', '222', '340010'] # Service number
292
292
 
293
293
  it_splits '4915111231234', ['49', '151', '1123', '1234'] # Mobile number
294
- it_splits '4915771231234', ['49', '157', '7123', '1234'] # Mobile number
294
+ it_splits '4915771231234', ['49', '1577', '123', '1234'] # Mobile number
295
295
  it_splits '491601234567', ['49', '160', '1234', '567'] # Mobile number
296
296
  it_splits '4916312345678', ['49', '163', '1234', '5678'] # Mobile number
297
297
  it_splits '4915211231234', ['49', '1521', '123', '1234'] # Mobile number
@@ -401,6 +401,7 @@ describe 'country descriptions' do
401
401
  it_splits '35311234567', ['353', '1', '123', '4567'] # Dublin, 7 digit subscriber #
402
402
  it_splits '353539233333', ['353', '53', '923', '3333'] # Wexford, 7 digit subscriber
403
403
  it_splits '3532212345', ['353', '22', '12345'] # Mallow, 5 digit subscriber #
404
+ it_splits '353441234567', ['353', '44', '123', '4567'] # Mullingar, Castlepollard, Tyrellspass 7 digit subscriber #
404
405
  it_splits '35345123456', ['353', '45', '123456'] # Naas, 6 digit subscriber #
405
406
  it_splits '353801234567', ['353', '80', '123', '4567'] # Mobile
406
407
  it_splits '353761234567', ['353', '76', '123', '4567'] # VoIP
@@ -409,14 +410,16 @@ describe 'country descriptions' do
409
410
  end
410
411
 
411
412
  describe 'Israel (972)' do
412
- it_splits '972100', ['972', '1', '00'] # Police
413
- it_splits '97221231234', ['972', '2', '123', '1234'] # Jerusalem Area
414
- it_splits '97282411234', ['972', '8', '241', '1234'] # Gaza Strip (Palestine)
415
- it_splits '97291231234', ['972', '9', '123', '1234'] # Sharon Area
416
- it_splits '972501231234', ['972', '50', '123', '1234'] # Mobile (Pelephone)
417
- it_splits '972591231234', ['972', '59', '123', '1234'] # Mobile Jawwal (Palestine)
418
- it_splits '972771231234', ['972', '77', '123', '1234'] # Cable Phone Services
413
+ it_splits '972100', ['972', '1', '00'] # Police
414
+ it_splits '97221231234', ['972', '2', '123', '1234'] # Jerusalem Area
415
+ it_splits '97282411234', ['972', '8', '241', '1234'] # Gaza Strip (Palestine)
416
+ it_splits '97291231234', ['972', '9', '123', '1234'] # Sharon Area
417
+ it_splits '972501231234', ['972', '50', '123', '1234'] # Mobile (Pelephone)
418
+ it_splits '972591231234', ['972', '59', '123', '1234'] # Mobile Jawwal (Palestine)
419
+ it_splits '972771231234', ['972', '77', '123', '1234'] # Cable Phone Services
419
420
  it_splits '9721700123123', ['972', '1', '700', '123', '123'] # Cable Phone Services
421
+ it_splits '972511234567', ['972', '51', '123', '4567'] # Mobile (We4G)
422
+ it_splits '972791111111', ['972', '79', '111', '1111'] # Landline (Hallo, Cellact, Telzar)
420
423
  end
421
424
  describe 'Israel (970)' do
422
425
  it_splits '97021231234', ['970', '2', '123', '1234'] # Jerusalem Area
@@ -16,8 +16,8 @@ describe Phony::DSL do
16
16
  it 'checks for ( in regex' do
17
17
  expect { dsl.match(/123/) }.to raise_error("Regexp /123/ needs a group in it that defines which digits belong to the NDC.")
18
18
  end
19
- it 'checks for ( in regex' do
20
- dsl.match(/(123)/).should be_kind_of(Phony::NationalSplitters::Regex)
19
+ it 'should return a Phony::NationalSplitters::Regex' do
20
+ dsl.match(/(123)/).class.name.should == Phony::NationalSplitters::Regex.name
21
21
  end
22
22
  end
23
23
 
@@ -1,7 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
+ main = self
4
+
3
5
  describe Phony::LocalSplitters::Regex do
4
6
 
7
+ before do
8
+ load 'spec_helper_extensions.rb'
9
+ main.send :include, SpecHelperExtensions
10
+ end
11
+
5
12
  describe 'instance_for' do
6
13
  it 'does not cache' do
7
14
  described_class.instance_for({}).should_not equal(described_class.instance_for({}))
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.17.1
4
+ version: 2.18.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Hanke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-01 00:00:00.000000000 Z
11
+ date: 2019-06-28 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
@@ -21,7 +21,9 @@ extra_rdoc_files:
21
21
  files:
22
22
  - README.textile
23
23
  - lib/phony.rb
24
+ - lib/phony/config.rb
24
25
  - lib/phony/countries.rb
26
+ - lib/phony/countries/argentina.rb
25
27
  - lib/phony/countries/austria.rb
26
28
  - lib/phony/countries/bangladesh.rb
27
29
  - lib/phony/countries/belarus.rb
@@ -77,6 +79,7 @@ files:
77
79
  - lib/phony/national_splitters/variable.rb
78
80
  - lib/phony/trunk_code.rb
79
81
  - lib/phony/vanity.rb
82
+ - spec/functional/config_spec.rb
80
83
  - spec/functional/plausibility_spec.rb
81
84
  - spec/lib/phony/countries_spec.rb
82
85
  - spec/lib/phony/country_codes_spec.rb
@@ -132,4 +135,5 @@ test_files:
132
135
  - spec/lib/phony/local_splitters/regex_spec.rb
133
136
  - spec/lib/phony/local_splitters/fixed_spec.rb
134
137
  - spec/lib/phony/vanity_spec.rb
138
+ - spec/functional/config_spec.rb
135
139
  - spec/functional/plausibility_spec.rb