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.
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