phone_number 1.0.0 → 1.1.0
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/VERSION +1 -1
- data/lib/phone_number/number.rb +12 -12
- data/phone_number.gemspec +4 -4
- data/spec/phone_number/number_spec.rb +42 -7
- metadata +36 -13
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.0
|
data/lib/phone_number/number.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module PhoneNumber
|
2
2
|
class Number
|
3
|
+
MATCH_REGEX = /^\+?(\d{0,2})[ \.\-]?\(?(\d{3})\)?[ \.\-]?(\d{3})[ \.\-]?(\d{4})[ x]?(\d*)$/
|
4
|
+
|
3
5
|
attr_reader :country_code, :area_code, :subscriber_number_prefix, :subscriber_number_postfix, :extension
|
4
6
|
|
5
7
|
def initialize( number )
|
@@ -10,18 +12,18 @@ module PhoneNumber
|
|
10
12
|
end
|
11
13
|
|
12
14
|
@@pattern_map = {
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
/%c/ => (@country_code || '').gsub( /0/, '' ) || "",
|
16
|
+
/%C/ => @country_code || "",
|
17
|
+
/%a/ => @area_code || "",
|
18
|
+
/%m/ => @subscriber_number_prefix || "",
|
19
|
+
/%p/ => @subscriber_number_postfix || "",
|
20
|
+
/%x/ => @extension || ""
|
19
21
|
}
|
20
22
|
|
21
23
|
@@patterns = {
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
:us => "%c (%a) %m-%p x %x",
|
25
|
+
:us_short => "(%a) %m-%p",
|
26
|
+
:nanp_short => "(%a) %m-%p"
|
25
27
|
}
|
26
28
|
|
27
29
|
self.freeze
|
@@ -29,7 +31,7 @@ module PhoneNumber
|
|
29
31
|
|
30
32
|
def self.parse( number )
|
31
33
|
number.gsub!( / x /, 'x' )
|
32
|
-
if m = number.match(
|
34
|
+
if m = number.match( MATCH_REGEX )
|
33
35
|
cntry_cd = m[1].size == 2 ? m[1] : "0#{m[1]}"
|
34
36
|
cntry_cd = '01' if cntry_cd.nil? || cntry_cd.empty? || cntry_cd == '0'
|
35
37
|
Number.new( :country_code => cntry_cd, :area_code => m[2], :subscriber_number_prefix => m[3], :subscriber_number_postfix => m[4],
|
@@ -62,8 +64,6 @@ module PhoneNumber
|
|
62
64
|
parse( number )
|
63
65
|
end
|
64
66
|
|
65
|
-
private
|
66
|
-
|
67
67
|
def raw
|
68
68
|
ext = (@extension.nil? || @extension.empty?) ? "" : "x#{@extension}"
|
69
69
|
"#{@country_code}#{@area_code}#{@subscriber_number_prefix}#{@subscriber_number_postfix}#{ext}"
|
data/phone_number.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{phone_number}
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["C. Jason Harrelson (midas)"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-11-10}
|
13
13
|
s.description = %q{Encapsulates the composed of pattern for phone numbers into any easy to use library.}
|
14
14
|
s.email = %q{jason@lookforwardenterprises.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
|
|
40
40
|
s.homepage = %q{http://github.com/midas/phone_number}
|
41
41
|
s.rdoc_options = ["--charset=UTF-8"]
|
42
42
|
s.require_paths = ["lib"]
|
43
|
-
s.rubygems_version = %q{1.3.
|
43
|
+
s.rubygems_version = %q{1.3.7}
|
44
44
|
s.summary = %q{Encapsulates the composed of pattern for phone numbers into any easy to use library.}
|
45
45
|
s.test_files = [
|
46
46
|
"spec/phone_number/number_parsing_shared_spec.rb",
|
@@ -53,7 +53,7 @@ Gem::Specification.new do |s|
|
|
53
53
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
54
54
|
s.specification_version = 3
|
55
55
|
|
56
|
-
if Gem::Version.new(Gem::
|
56
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
57
57
|
s.add_runtime_dependency(%q<activerecord>, [">= 2.3"])
|
58
58
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
59
59
|
else
|
@@ -3,6 +3,10 @@ require File.expand_path( File.dirname(__FILE__) + '/number_parsing_shared_spec'
|
|
3
3
|
|
4
4
|
|
5
5
|
describe "PhoneNumber::Number" do
|
6
|
+
it "should agree that the MATCH_REGEX is /^\+?(\d{0,2})[ \.\-]?\(?(\d{3})\)?[ \.\-]?(\d{3})[ \.\-]?(\d{4})[ x]?(\d*)$/" do
|
7
|
+
PhoneNumber::Number::MATCH_REGEX.should == /^\+?(\d{0,2})[ \.\-]?\(?(\d{3})\)?[ \.\-]?(\d{3})[ \.\-]?(\d{4})[ x]?(\d*)$/
|
8
|
+
end
|
9
|
+
|
6
10
|
describe "when initializing from a raw string with an extension" do
|
7
11
|
before :each do
|
8
12
|
@instance = PhoneNumber::Number.new( '012345678901x111' )
|
@@ -20,19 +24,50 @@ describe "PhoneNumber::Number" do
|
|
20
24
|
end
|
21
25
|
|
22
26
|
describe "when being set equal to a string if correctly parsing" do
|
23
|
-
numbers = ['012345678901',
|
24
|
-
'+
|
25
|
-
'
|
26
|
-
'
|
27
|
-
|
27
|
+
numbers = ['012345678901',
|
28
|
+
'+012345678901',
|
29
|
+
'12345678901',
|
30
|
+
'2345678901',
|
31
|
+
'01-234-567-8901',
|
32
|
+
'01.234.567.8901',
|
33
|
+
'01 234 567 8901',
|
34
|
+
'+01-234-567-8901',
|
35
|
+
'+01.234.567.8901',
|
36
|
+
'+01 234 567 8901',
|
37
|
+
'1-234-567-8901',
|
38
|
+
'1.234.567.8901',
|
39
|
+
'1 234 567 8901',
|
40
|
+
'+1-234-567-8901',
|
41
|
+
'+1.234.567.8901',
|
42
|
+
'+1 234 567 8901',
|
43
|
+
'1 (234) 567-8901',
|
44
|
+
'(234) 567-8901',
|
45
|
+
'1 (234) 567.8901',
|
46
|
+
'(234) 567.8901',
|
47
|
+
'(234) 567 8901',
|
48
|
+
'(234) 5678901',
|
49
|
+
'(234)5678901',
|
50
|
+
'1(234)5678901',
|
51
|
+
'01(234)5678901',
|
52
|
+
'+1(234)5678901',
|
53
|
+
'+01(234)5678901']
|
54
|
+
|
28
55
|
numbers.each do |number|
|
29
|
-
describe "'#{number}'" do
|
56
|
+
describe "when parsing '#{number}'" do
|
30
57
|
before :each do
|
31
58
|
@instance = PhoneNumber::Number.parse( number )
|
32
59
|
end
|
33
60
|
|
34
61
|
it_should_behave_like "The phone number 1-234-567-8901"
|
35
62
|
end
|
63
|
+
|
64
|
+
# describe "when initializing '#{number}'" do
|
65
|
+
# before :each do
|
66
|
+
# @instance = PhoneNumber::Number.new( number )
|
67
|
+
# end
|
68
|
+
#
|
69
|
+
# it_should_behave_like "The phone number 1-234-567-8901"
|
70
|
+
# end
|
36
71
|
end
|
37
72
|
|
38
73
|
numbers.map{ |n| n + 'x111' }.each do |number|
|
@@ -77,7 +112,7 @@ describe "PhoneNumber::Number" do
|
|
77
112
|
@instance.to_s( :us_short ).should eql( @instance.to_s )
|
78
113
|
end
|
79
114
|
end
|
80
|
-
|
115
|
+
|
81
116
|
it "should agree that a newly instantiated phone number is empty" do
|
82
117
|
PhoneNumber::Number.new( nil ).empty?.should be_true
|
83
118
|
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phone_number
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 19
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 1.1.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- C. Jason Harrelson (midas)
|
@@ -9,29 +15,40 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2010-11-10 00:00:00 -06:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: activerecord
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
20
26
|
requirements:
|
21
27
|
- - ">="
|
22
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 5
|
30
|
+
segments:
|
31
|
+
- 2
|
32
|
+
- 3
|
23
33
|
version: "2.3"
|
24
|
-
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: rspec
|
27
|
-
|
28
|
-
|
29
|
-
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
30
41
|
requirements:
|
31
42
|
- - ">="
|
32
43
|
- !ruby/object:Gem::Version
|
44
|
+
hash: 13
|
45
|
+
segments:
|
46
|
+
- 1
|
47
|
+
- 2
|
48
|
+
- 9
|
33
49
|
version: 1.2.9
|
34
|
-
|
50
|
+
type: :development
|
51
|
+
version_requirements: *id002
|
35
52
|
description: Encapsulates the composed of pattern for phone numbers into any easy to use library.
|
36
53
|
email: jason@lookforwardenterprises.com
|
37
54
|
executables: []
|
@@ -71,21 +88,27 @@ rdoc_options:
|
|
71
88
|
require_paths:
|
72
89
|
- lib
|
73
90
|
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
74
92
|
requirements:
|
75
93
|
- - ">="
|
76
94
|
- !ruby/object:Gem::Version
|
95
|
+
hash: 3
|
96
|
+
segments:
|
97
|
+
- 0
|
77
98
|
version: "0"
|
78
|
-
version:
|
79
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
80
101
|
requirements:
|
81
102
|
- - ">="
|
82
103
|
- !ruby/object:Gem::Version
|
104
|
+
hash: 3
|
105
|
+
segments:
|
106
|
+
- 0
|
83
107
|
version: "0"
|
84
|
-
version:
|
85
108
|
requirements: []
|
86
109
|
|
87
110
|
rubyforge_project:
|
88
|
-
rubygems_version: 1.3.
|
111
|
+
rubygems_version: 1.3.7
|
89
112
|
signing_key:
|
90
113
|
specification_version: 3
|
91
114
|
summary: Encapsulates the composed of pattern for phone numbers into any easy to use library.
|