no_phone 0.0.1 → 0.0.2

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