numero 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,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