msisdn 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/msisdn.rb +13 -3
  2. data/test/test_msisdn.rb +8 -2
  3. metadata +24 -10
@@ -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.4"
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
- @national_number = @national_number.rjust(10, '0')
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
- @national_number = @national_number.rjust(10, '0')
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
@@ -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('+995825559629')
29
- assert_equal '995', msisdn.country_code
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
- version: 0.0.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: 2009-11-16 00:00:00 +02:00
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
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
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
- version: 2.3.2
24
- version:
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.5
89
+ rubygems_version: 1.3.7
76
90
  signing_key:
77
91
  specification_version: 3
78
92
  summary: Basic msisdn processing and parsing