no_phone 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module NoPhone
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/no_phone.rb CHANGED
@@ -1,13 +1,32 @@
1
1
  module NoPhone
2
2
 
3
- def self.normalize(number)
4
- number ||= ""
5
- number = number.gsub(/[.\- \t\r\n\(\)]/, '')
6
- number.gsub!(/^(\+)(.*)/) { |m| $1 + $2.gsub(/\+/, '') }
7
- number.gsub!(/^00/, '+')
8
- number.gsub!(/^\+47/, '')
9
- number.gsub!(/^\+*0+/, '+')
10
- number.gsub!(/^47/, '') if number.size > 8
11
- number
3
+ class << self
4
+ def normalize(number)
5
+ number ||= ""
6
+ number = number.gsub(/[.\- \t\r\n\(\)]/, '')
7
+ number.gsub!(/^(\+)(.*)/) { |m| $1 + $2.gsub(/\+/, '') }
8
+ number.gsub!(/^00/, '+')
9
+ number.gsub!(/^\+47/, '')
10
+ number.gsub!(/^\+*0+/, '+')
11
+ number.gsub!(/^47/, '') if number.size > 8
12
+ number
13
+ end
14
+
15
+ def msisdnize(number)
16
+ number = normalize(number)
17
+ number = "47#{number}" unless number =~ /^\+/
18
+ number.gsub!(/^\+/, '')
19
+ number
20
+ end
21
+
22
+ def valid?(number)
23
+ return false if number.nil?
24
+ return false if number == ""
25
+ case number.strip
26
+ when /\A\+?[0-9[:space:]]+\z/
27
+ return true
28
+ end
29
+ false
30
+ end
12
31
  end
13
32
  end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe NoPhone, "#msisdnize" do
4
+ it "adds country code to naked norwegian-ish numbers" do
5
+ NoPhone.msisdnize("12345678").should eq("4712345678")
6
+ end
7
+
8
+ it "removes +sign from international number" do
9
+ NoPhone.msisdnize("+123456789").should eq("123456789")
10
+ end
11
+ end
@@ -21,9 +21,13 @@ describe NoPhone, "#normalize" do
21
21
  NoPhone.normalize("+47123456789").should == "#{number}9"
22
22
  end
23
23
 
24
- it "removes extraneous +signs" do
24
+ it "removes extraneous prepended +signs" do
25
25
  NoPhone.normalize("++4712345678").should == number
26
26
  end
27
+
28
+ it "strips interspersed +signs" do
29
+ NoPhone.normalize("+47123+45+678").should == number
30
+ end
27
31
  end
28
32
 
29
33
  context "without country code" do
@@ -52,6 +56,7 @@ describe NoPhone, "#normalize" do
52
56
  NoPhone.normalize("(123)45678").should == number
53
57
  end
54
58
 
59
+
55
60
  end
56
61
 
57
62
  context "International numbers" do
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe NoPhone, "#valid?" do
4
+ it "is invalid if nil" do
5
+ NoPhone.valid?(nil).should be_false
6
+ end
7
+
8
+ it "is invalid if blank" do
9
+ NoPhone.valid?("").should be_false
10
+ end
11
+
12
+ it "is invalid with letters" do
13
+ NoPhone.valid?("1abc2").should be_false
14
+ end
15
+
16
+ context "with funky characters" do
17
+ it "rejects parens" do
18
+ NoPhone.valid?("123(45)678").should be_false
19
+ end
20
+
21
+ it "rejects hyphens" do
22
+ NoPhone.valid?("123-45-678").should be_false
23
+ end
24
+
25
+ it "rejects periods" do
26
+ NoPhone.valid?("123.45.678").should be_false
27
+ end
28
+
29
+ it "rejects +sign in the middle" do
30
+ NoPhone.valid?("123+45+678").should be_false
31
+ end
32
+
33
+ it "accepts spaces" do
34
+ NoPhone.valid?("123 45 678").should be_true
35
+ end
36
+
37
+ it "accepts +sign in the beginning" do
38
+ NoPhone.valid?("+123 45 678").should be_true
39
+ end
40
+ end
41
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: 0.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Simen Svale Skogsrud, Katrina Owen
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-04-26 00:00:00 +02:00
17
+ date: 2011-05-05 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -48,8 +48,10 @@ files:
48
48
  - lib/no_phone.rb
49
49
  - lib/no_phone/version.rb
50
50
  - no_phone.gemspec
51
+ - spec/isdnize_spec.rb
51
52
  - spec/normalize_spec.rb
52
53
  - spec/spec_helper.rb
54
+ - spec/validation_spec.rb
53
55
  has_rdoc: true
54
56
  homepage: http://rubygems.org/gems/no_phone
55
57
  licenses: []
@@ -83,5 +85,7 @@ signing_key:
83
85
  specification_version: 3
84
86
  summary: Norwegian phone number scrubber
85
87
  test_files:
88
+ - spec/isdnize_spec.rb
86
89
  - spec/normalize_spec.rb
87
90
  - spec/spec_helper.rb
91
+ - spec/validation_spec.rb