numero 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,50 @@
1
1
  # Numero
2
2
 
3
- This tiny gem contains helpers for validating US phone numbers.
3
+ This tiny gem contains helpers for validating North American phone numbers.
4
+
5
+ Add it to your `Gemfile`, or install as a plugin.
6
+
7
+
8
+ ## Usage
9
+
10
+ Ruby:
11
+
12
+ Numero.valid_number?('15554442222') #=> true
13
+ Numero.valid_number?('194512') #=> false
14
+
15
+
16
+ Rails Validations:
17
+
18
+ class User < ActiveRecord::Base
19
+ include Numero::Rails::Validations
20
+ end
21
+
22
+ u = User.new(:number => '1234')
23
+ u.valid? #=> false
24
+
25
+
26
+ ## The North American Numbering Plan
27
+
28
+ Numero validates phone numbers based on the
29
+ [North American Numbering Plan](http://en.wikipedia.org/wiki/North_American_Numbering_Plan).
30
+
31
+ The NANP breaks phone numbers into 4 components:
32
+
33
+ |A| B | C | D |
34
+ +1-555-444-2222
35
+
36
+ A. ITU country code
37
+ B. NPA - area code
38
+ C. NXX - Central Office code (exchange)
39
+ D. XXXX - Subscriber Number
40
+
41
+ Each section allows for a specific set of numbers:
42
+
43
+ * **ITU**: This is always `+1` for North American numbers, although, it is
44
+ most often written without the `+`.
45
+ * **NPA**: First digit must be in the range `[2-9]`, second and third digit
46
+ can be any number `[0-9]`.
47
+ * **NXX**: First digit must be in the range `[2-9]`, second and third digit
48
+ can be any number `[0-9]`.
49
+ * **XXXX**: [0-9] for each digit
50
+
@@ -1,9 +1,10 @@
1
1
  module Numero
2
- VERSION = Version = '0.0.1'
2
+ VERSION = Version = '0.0.2'
3
3
 
4
- VALID_US_NUMBER = /^1?([2-9][0-8][0-9])([2-9][0-9]{2})([0-9]{4})$/
4
+ # See http://en.wikipedia.org/wiki/North_American_Numbering_Plan
5
+ VALID_PHONE_NUMBER = /^1?([2-9][0-9]{2})([2-9][0-9]{2})([0-9]{4})$/
5
6
 
6
- def self.valid_us_number?(number)
7
- !! number.to_s.match(VALID_US_NUMBER)
7
+ def self.valid_number?(number)
8
+ !! number.to_s.match(VALID_PHONE_NUMBER)
8
9
  end
9
10
  end
@@ -8,14 +8,14 @@ module Numero
8
8
  if Numero::Rails.major < 3
9
9
  validates_presence_of :number
10
10
  validates_numericality_of :number, :allow_blank => true
11
- validates_format_of :number, :with => Numero::VALID_US_NUMBER
11
+ validates_format_of :number, :with => Numero::VALID_PHONE_NUMBER
12
12
 
13
13
  # Rails 3
14
14
  else
15
15
  validates :number,
16
16
  :presence => true,
17
17
  :numericality => { :allow_blank => true },
18
- :format => { :with => Numero::VALID_US_NUMBER }
18
+ :format => { :with => Numero::VALID_PHONE_NUMBER }
19
19
 
20
20
  end
21
21
  end
@@ -1,13 +1,13 @@
1
1
  require File.dirname(__FILE__) + '/test_helper.rb'
2
2
 
3
3
  context 'Numero' do
4
- test 'validates a US number' do
4
+ test 'validates a North American phone number' do
5
5
  valid_number = 15185554488
6
- valid_number10 = 15185554488
7
- invalid_number = 199999999999
6
+ valid_number10 = 5185554488
7
+ invalid_number = 11456581535
8
8
 
9
- assert Numero.valid_us_number?(valid_number)
10
- assert Numero.valid_us_number?(valid_number10)
11
- assert ! Numero.valid_us_number?(invalid_number)
9
+ assert Numero.valid_number?(valid_number)
10
+ assert Numero.valid_number?(valid_number10)
11
+ assert ! Numero.valid_number?(invalid_number)
12
12
  end
13
13
  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
  - Joshua Priddle