msisdn 0.0.4 → 0.0.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.
- data/lib/msisdn.rb +13 -3
- data/test/test_msisdn.rb +8 -2
- metadata +24 -10
data/lib/msisdn.rb
CHANGED
@@ -2,7 +2,7 @@ $:.unshift(File.dirname(__FILE__)) unless
|
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
3
|
|
4
4
|
module MsisdnGem
|
5
|
-
VERSION = "0.0.
|
5
|
+
VERSION = "0.0.5"
|
6
6
|
end
|
7
7
|
|
8
8
|
class Msisdn
|
@@ -11,6 +11,14 @@ class Msisdn
|
|
11
11
|
INTERNATIONAL_COUNTRY_CODE = /^\+(1|2[1-689]\d|2[07]|3[0-469]|3[578]\d|4[0-13-9]|42\d|5[09]\d|5[1-8]|6[0-6]|6[7-9]\d|7|8[035789]\d|8[1246]|9[0-58]|9[679]\d)(\d+)/
|
12
12
|
INTERNATIONAL_COUNTRY_CODE_NO_PREFIX = /(1|2[1-689]\d|2[07]|3[0-469]|3[578]\d|4[0-13-9]|42\d|5[09]\d|5[1-8]|6[0-6]|6[7-9]\d|7|8[035789]\d|8[1246]|9[0-58]|9[679]\d)(\d+)/
|
13
13
|
EXACTLY_10_DIGITS = /^(\d{10})$/
|
14
|
+
|
15
|
+
# Some countries with trunk code requirement for local dialling
|
16
|
+
# See http://en.wikipedia.org/wiki/Telephone_numbering_plan
|
17
|
+
# TODO: Special case until I need another country which don't
|
18
|
+
# use trunk code and/or 10 digit number plan
|
19
|
+
SPECIAL_CASES = {
|
20
|
+
"995" => [9, '0']
|
21
|
+
}
|
14
22
|
|
15
23
|
def initialize(msisdn, default_country_code = nil)
|
16
24
|
msisdn.gsub!( /[\s()\-a-zA-Z]/, '')
|
@@ -49,7 +57,8 @@ class Msisdn
|
|
49
57
|
if @msisdn =~ INTERNATIONAL_COUNTRY_CODE
|
50
58
|
@country_code, @national_number = $1, $2
|
51
59
|
unless @national_number =~ /^0/
|
52
|
-
|
60
|
+
params = SPECIAL_CASES[@country_code] || [10, '0']
|
61
|
+
@national_number = @national_number.rjust(*params)
|
53
62
|
end
|
54
63
|
match_local @national_number
|
55
64
|
else
|
@@ -61,7 +70,8 @@ class Msisdn
|
|
61
70
|
if @msisdn =~ INTERNATIONAL_COUNTRY_CODE_NO_PREFIX
|
62
71
|
@country_code, @national_number = $1, $2
|
63
72
|
unless @national_number =~ /^0/
|
64
|
-
|
73
|
+
params = SPECIAL_CASES[@country_code] || [10, '0']
|
74
|
+
@national_number = @national_number.rjust(*params)
|
65
75
|
end
|
66
76
|
match_local @national_number
|
67
77
|
end
|
data/test/test_msisdn.rb
CHANGED
@@ -25,8 +25,8 @@ class MsisdnTest < Test::Unit::TestCase
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def test_three_digit_international_code
|
28
|
-
msisdn = Msisdn.new('+
|
29
|
-
assert_equal '
|
28
|
+
msisdn = Msisdn.new('+994825559629')
|
29
|
+
assert_equal '994', msisdn.country_code
|
30
30
|
assert_equal '0825559629', msisdn.national_number
|
31
31
|
end
|
32
32
|
|
@@ -51,6 +51,12 @@ class MsisdnTest < Test::Unit::TestCase
|
|
51
51
|
assert_equal '79261234567', msisdn.international
|
52
52
|
end
|
53
53
|
|
54
|
+
def test_georgian_international_number
|
55
|
+
msisdn = Msisdn.new('99577100060')
|
56
|
+
assert_equal '995', msisdn.country_code
|
57
|
+
assert_equal '077100060', msisdn.national_number
|
58
|
+
end
|
59
|
+
|
54
60
|
def test_valid_national_number
|
55
61
|
msisdn = Msisdn.new '0825559629'
|
56
62
|
assert msisdn.valid?
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: msisdn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Armand du Plessis
|
@@ -9,19 +14,24 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date:
|
17
|
+
date: 2010-08-07 00:00:00 +02:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: hoe
|
17
|
-
|
18
|
-
|
19
|
-
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
20
25
|
requirements:
|
21
26
|
- - ">="
|
22
27
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
28
|
+
segments:
|
29
|
+
- 2
|
30
|
+
- 6
|
31
|
+
- 1
|
32
|
+
version: 2.6.1
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
25
35
|
description: Basic msisdn processing and parsing
|
26
36
|
email:
|
27
37
|
- armanddp@agilisto.com
|
@@ -58,21 +68,25 @@ rdoc_options:
|
|
58
68
|
require_paths:
|
59
69
|
- lib
|
60
70
|
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
61
72
|
requirements:
|
62
73
|
- - ">="
|
63
74
|
- !ruby/object:Gem::Version
|
75
|
+
segments:
|
76
|
+
- 0
|
64
77
|
version: "0"
|
65
|
-
version:
|
66
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
67
80
|
requirements:
|
68
81
|
- - ">="
|
69
82
|
- !ruby/object:Gem::Version
|
83
|
+
segments:
|
84
|
+
- 0
|
70
85
|
version: "0"
|
71
|
-
version:
|
72
86
|
requirements: []
|
73
87
|
|
74
88
|
rubyforge_project: msisdn
|
75
|
-
rubygems_version: 1.3.
|
89
|
+
rubygems_version: 1.3.7
|
76
90
|
signing_key:
|
77
91
|
specification_version: 3
|
78
92
|
summary: Basic msisdn processing and parsing
|