public
Description: Demonstrates a reference implementation for handling phone numbers
Homepage: http://www.pluginaweek.org
Clone URL: git://github.com/pluginaweek/has_phone_numbers.git
obrie (author)
Fri May 01 18:21:44 -0700 2009
commit  4a02eadd91a8438f8a8b551064573e7ceb4d5e17
tree    30b7a4f90380da2835ef68f7d7e8688e1ecf65df
parent  db54eb8ffb91ca77f7b5ae98bde4ac92b5f6ab29
name age message
file .gitignore Fri Jul 04 15:48:18 -0700 2008 Ignore test/app_root/script [obrie]
file CHANGELOG.rdoc Sun Apr 19 11:48:17 -0700 2009 Tag 0.2.0 release [obrie]
file LICENSE Sat Apr 18 19:24:15 -0700 2009 Update license [obrie]
file README.rdoc Sun Apr 19 13:25:21 -0700 2009 More doc fixes [obrie]
file Rakefile Loading commit data...
directory app/ Sun Apr 19 13:25:54 -0700 2009 Fix invalid examples in PhoneNumber#content [obrie]
directory db/ Sun May 04 16:00:19 -0700 2008 Updated documentation [obrie]
file init.rb Sun May 04 16:00:19 -0700 2008 Updated documentation [obrie]
directory lib/ Sat Apr 18 19:49:56 -0700 2009 Style tweaks [obrie]
directory test/ Sun Apr 19 11:40:30 -0700 2009 Add the ability to parse raw values [mlightner]
README.rdoc

has_phone_numbers

has_phone_numbers demonstrates a reference implementation for handling phone numbers.

Resources

API

Bugs

Development

Source

  • git://github.com/pluginaweek/has_phone_numbers.git

Description

A phone number is a simple model whose data and functionality should be standardized across multiple applications. Phone numbers are minimalistic in terms of the type of data it represents. Both U.S. and international formats are supported.

Usage

Note that this is a reference implementation and, most likely, will be modified for your own usage.

Example

Building with individual segments:

  PhoneNumber.create(:phoneable => user, :country_code => '1', :number => '1234567890', :extension => '123')
  # #<PhoneNumber id: 1, phoneable_id: 1, phoneable_type: "User", country_code: "1", number: "1234567890", extension: "123", created_at: "2009-01-01 00:00:00", updated_at: "2009-01-01 00:00:00">

Parsing raw values:

  PhoneNumber.create(:phoneable => user, :content => '1 1234567890 ext. 123')
  # #<PhoneNumber id: 1, phoneable_id: 1, phoneable_type: "User", country_code: "1", number: "1234567890", extension: "123", created_at: "2009-01-01 00:00:00", updated_at: "2009-01-01 00:00:00">

  PhoneNumber.create(:phoneable => user, :content => '231 331 996 x4621')
  # #<PhoneNumber id: 1, phoneable_id: 1, phoneable_type: "User", country_code: "231", number: "331996", extension: "4621", created_at: "2009-01-01 00:00:00", updated_at: "2009-01-01 00:00:00">

  PhoneNumber.create(:phoneable => user, :content => '+ 386 1 5853 449')
  # #<PhoneNumber id: 1, phoneable_id: 1, phoneable_type: "User", country_code: "386", number: "15853449", extension: nil, created_at: "2009-01-01 00:00:00", updated_at: "2009-01-01 00:00:00">

  PhoneNumber.create(:phoneable => user, :content => '+39-02-4823001')
  # #<PhoneNumber id: 1, phoneable_id: 1, phoneable_type: "User", country_code: "39", number: "024823001", extension: nil, created_at: "2009-01-01 00:00:00", updated_at: "2009-01-01 00:00:00">

Testing

Before you can run any tests, the following gem must be installed:

To run against a specific version of Rails:

  rake test RAILS_FRAMEWORK_ROOT=/path/to/rails

Dependencies

  • Rails 2.3 or later

References